{"version":3,"file":"static/js/main.4583bbb7.js","mappings":"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","sources":["../node_modules/@antv/algorithm/lib/adjacent-matrix.js","../node_modules/@antv/algorithm/lib/asyncIndex.js","../node_modules/@antv/algorithm/lib/bfs.js","../node_modules/@antv/algorithm/lib/connected-component.js","../node_modules/@antv/algorithm/lib/constants/time.js","../node_modules/@antv/algorithm/lib/degree.js","../node_modules/@antv/algorithm/lib/detect-cycle.js","../node_modules/@antv/algorithm/lib/dfs.js","../node_modules/@antv/algorithm/lib/dijkstra.js","../node_modules/@antv/algorithm/lib/find-path.js","../node_modules/@antv/algorithm/lib/floydWarshall.js","../node_modules/@antv/algorithm/lib/gSpan/gSpan.js","../node_modules/@antv/algorithm/lib/gSpan/struct.js","../node_modules/@antv/algorithm/lib/gaddi.js","../node_modules/@antv/algorithm/lib/label-propagation.js","../node_modules/@antv/algorithm/lib/louvain.js","../node_modules/@antv/algorithm/lib/mts.js","../node_modules/@antv/algorithm/lib/pageRank.js","../node_modules/@antv/algorithm/lib/structs/binary-heap.js","../node_modules/@antv/algorithm/lib/structs/linked-list.js","../node_modules/@antv/algorithm/lib/structs/queue.js","../node_modules/@antv/algorithm/lib/structs/union-find.js","../node_modules/@antv/algorithm/lib/types.js","../node_modules/@antv/algorithm/lib/util.js","../node_modules/@antv/algorithm/lib/utils/data-preprocessing.js","../node_modules/@antv/algorithm/lib/utils/node-properties.js","../node_modules/@antv/algorithm/lib/utils/vector.js","../node_modules/@antv/algorithm/lib/workers/algorithm.js","../node_modules/@antv/algorithm/lib/workers/constant.js","../node_modules/@antv/algorithm/lib/workers/createWorker.js","../node_modules/@antv/algorithm/lib/workers/index.js","../node_modules/@antv/algorithm/lib/workers/index.worker.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@antv/g-webgpu-core/src/Entity.ts","../node_modules/@antv/g-webgpu-core/src/ComponentManager.ts","../node_modules/@antv/g-webgpu-core/src/components/renderer/gl.ts","../node_modules/@antv/g-webgpu-core/src/services/config/ConfigService.ts","../node_modules/@antv/g-webgpu-core/src/index.ts","../node_modules/@antv/g-webgpu-core/src/utils/isSafari.ts","../node_modules/@antv/g-webgpu/src/utils/canvas.ts","../node_modules/@antv/g-webgpu/src/Kernel.ts","../node_modules/@antv/g-webgpu-engine/src/webgl/ReglAttribute.ts","../node_modules/@antv/g-webgpu-engine/src/webgl/constants.ts","../node_modules/@antv/g-webgpu-engine/src/webgl/ReglBuffer.ts","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@antv/g-webgpu-engine/src/webgl/ReglComputeModel.ts","../node_modules/@antv/g-webgpu-engine/src/webgl/ReglElements.ts","../node_modules/@antv/g-webgpu-engine/src/webgl/ReglFramebuffer.ts","../node_modules/@antv/g-webgpu-engine/src/utils/uniform.ts","../node_modules/@antv/g-webgpu-engine/src/webgl/ReglModel.ts","../node_modules/@antv/g-webgpu-engine/src/webgl/ReglTexture2D.ts","../node_modules/@antv/g-webgpu-engine/src/webgl/index.ts","../node_modules/@antv/g-webgpu/src/World.ts","../node_modules/@antv/graphlib/es/Graph/enum.js","../node_modules/@antv/graphlib/es/util.js","../node_modules/@antv/graphlib/es/Graph/toJSON.js","../node_modules/@antv/graphlib/es/Graph/index.js","../node_modules/@antv/graphlib/es/Graph/event.js","../node_modules/@antv/graphlib/es/algorithm/PriorityQueue/index.js","../node_modules/@antv/graphlib/es/algorithm/prim.js","../node_modules/@antv/graphlib/es/algorithm/components.js","../node_modules/@antv/graphlib/es/algorithm/dfs.js","../node_modules/@antv/graphlib/es/algorithm/dijkstra.js","../node_modules/@antv/graphlib/es/algorithm/dijkstra-all.js","../node_modules/@antv/graphlib/es/algorithm/tarjan.js","../node_modules/@antv/graphlib/es/algorithm/find-cycles.js","../node_modules/@antv/graphlib/es/algorithm/topsort.js","../node_modules/@antv/graphlib/es/algorithm/is-acyclic.js","../node_modules/@antv/graphlib/es/algorithm/postorder.js","../node_modules/@antv/graphlib/es/algorithm/preorder.js","../node_modules/@antv/graphlib/es/algorithm/floyd-warshall.js","../node_modules/@antv/graphlib/es/comparision/contain.js","../node_modules/@antv/graphlib/es/essence/index.js","../node_modules/@antv/graphlib/es/comparision/complement.js","../node_modules/@antv/graphlib/es/generate/compelement.js","../../../../../../webpack/universalModuleDefinition","../../../../../../webpack/bootstrap 4fd512329b599d5b36c3","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-array.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-array-like.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/each.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-function.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-type.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-number.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-nil.js","../../../../../../src/util.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-string.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-plain-object.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/to-string.js","../../../../../../src/layout/base.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/contains.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-object.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/filter.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-object-like.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/mix.js","../../../../../../src/layout/do-layout.js","../../../../../../src/layout/hierarchy.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-match.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/keys.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/pull-at.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/uniq.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/group-to-map.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/group-by.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/has.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/values.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/get-type.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-prototype.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-equal.js","../../../../../../src/layout/separate-root.js","../../../../../../src/index.js","../../../../../../src/compact-box.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/index.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/difference.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/find.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/find-index.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/first-value.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/flatten.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/flatten-deep.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/get-range.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/pull.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/reduce.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/remove.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/sort-by.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/union.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/values-of-key.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/head.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/last.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/starts-with.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/ends-with.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/every.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/some.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/group.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/get-wrap-behavior.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/wrap-behavior.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/number2color.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/parse-radius.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/clamp.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/fixed-base.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-decimal.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-even.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-integer.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-negative.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-number-equal.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-odd.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-positive.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/max-by.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/min-by.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/mod.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/to-degree.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/to-integer.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/to-radian.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/for-in.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/has-key.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/has-value.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/lower-case.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/lower-first.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/substitute.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/upper-case.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/upper-first.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-arguments.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-boolean.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-date.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-error.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-finite.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-null.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-reg-exp.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-undefined.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-element.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/request-animation-frame.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/clear-animation-frame.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/augment.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/clone.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/debounce.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/memoize.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/deep-mix.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/extend.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/index-of.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-empty.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/is-equal-with.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/map.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/map-values.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/get.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/set.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/pick.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/throttle.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/to-array.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/unique-id.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/noop.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/identity.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/size.js","../../../../../../node_modules/_@antv_util@2.0.7@@antv/util/esm/cache.js","../../../../../../src/layout/non-layered-tidy.js","../../../../../../src/dendrogram.js","../../../../../../src/layout/dendrogram.js","../../../../../../src/indented.js","../../../../../../src/layout/indented.js","../../../../../../src/mindmap.js","../../../../../../src/layout/mindmap.js","../node_modules/@antv/layout/src/index.ts","../node_modules/@antv/layout/src/layout/base.ts","../node_modules/@antv/layout/src/layout/circular.ts","../node_modules/@antv/layout/src/layout/comboCombined.ts","../node_modules/@antv/layout/src/layout/comboForce.ts","../node_modules/@antv/layout/src/layout/concentric.ts","../node_modules/@antv/layout/src/layout/constants.ts","../node_modules/@antv/layout/src/layout/dagre.ts","../node_modules/@antv/layout/src/layout/dagre/graph.ts","../node_modules/@antv/layout/src/layout/dagre/index.ts","../node_modules/@antv/layout/src/layout/dagre/src/acyclic.ts","../node_modules/@antv/layout/src/layout/dagre/src/add-border-segments.ts","../node_modules/@antv/layout/src/layout/dagre/src/coordinate-system.ts","../node_modules/@antv/layout/src/layout/dagre/src/data/list.ts","../node_modules/@antv/layout/src/layout/dagre/src/greedy-fas.ts","../node_modules/@antv/layout/src/layout/dagre/src/layout.ts","../node_modules/@antv/layout/src/layout/dagre/src/nesting-graph.ts","../node_modules/@antv/layout/src/layout/dagre/src/normalize.ts","../node_modules/@antv/layout/src/layout/dagre/src/order/add-subgraph-constraints.ts","../node_modules/@antv/layout/src/layout/dagre/src/order/barycenter.ts","../node_modules/@antv/layout/src/layout/dagre/src/order/build-layer-graph.ts","../node_modules/@antv/layout/src/layout/dagre/src/order/cross-count.ts","../node_modules/@antv/layout/src/layout/dagre/src/order/index.ts","../node_modules/@antv/layout/src/layout/dagre/src/order/init-data-order.ts","../node_modules/@antv/layout/src/layout/dagre/src/order/init-order.ts","../node_modules/@antv/layout/src/layout/dagre/src/order/resolve-conflicts.ts","../node_modules/@antv/layout/src/layout/dagre/src/order/sort-subgraph.ts","../node_modules/@antv/layout/src/layout/dagre/src/order/sort.ts","../node_modules/@antv/layout/src/layout/dagre/src/parent-dummy-chains.ts","../node_modules/@antv/layout/src/layout/dagre/src/position/bk.ts","../node_modules/@antv/layout/src/layout/dagre/src/position/index.ts","../node_modules/@antv/layout/src/layout/dagre/src/rank/feasible-tree.ts","../node_modules/@antv/layout/src/layout/dagre/src/rank/index.ts","../node_modules/@antv/layout/src/layout/dagre/src/rank/network-simplex.ts","../node_modules/@antv/layout/src/layout/dagre/src/rank/util.ts","../node_modules/@antv/layout/src/layout/dagre/src/util.ts","../node_modules/@antv/layout/src/layout/dagreCompound.ts","../node_modules/@antv/layout/src/layout/er/core.ts","../node_modules/@antv/layout/src/layout/er/forceGrid.ts","../node_modules/@antv/layout/src/layout/er/grid.ts","../node_modules/@antv/layout/src/layout/er/index.ts","../node_modules/@antv/layout/src/layout/er/mysqlWorkbench.ts","../node_modules/@antv/layout/src/layout/force/force-in-a-box.ts","../node_modules/@antv/layout/src/layout/force/force.ts","../node_modules/@antv/layout/src/layout/force/index.ts","../node_modules/@antv/layout/src/layout/force2/ForceNBody.ts","../node_modules/@antv/layout/src/layout/force2/index.ts","../node_modules/@antv/layout/src/layout/forceAtlas2/body.ts","../node_modules/@antv/layout/src/layout/forceAtlas2/index.ts","../node_modules/@antv/layout/src/layout/forceAtlas2/quad.ts","../node_modules/@antv/layout/src/layout/forceAtlas2/quadTree.ts","../node_modules/@antv/layout/src/layout/fruchterman.ts","../node_modules/@antv/layout/src/layout/gForce.ts","../node_modules/@antv/layout/src/layout/gpu/fruchterman.ts","../node_modules/@antv/layout/src/layout/gpu/fruchtermanShader.ts","../node_modules/@antv/layout/src/layout/gpu/gForce.ts","../node_modules/@antv/layout/src/layout/gpu/gForceShader.ts","../node_modules/@antv/layout/src/layout/grid.ts","../node_modules/@antv/layout/src/layout/index.ts","../node_modules/@antv/layout/src/layout/layout.ts","../node_modules/@antv/layout/src/layout/mds.ts","../node_modules/@antv/layout/src/layout/radial/index.ts","../node_modules/@antv/layout/src/layout/radial/mds.ts","../node_modules/@antv/layout/src/layout/radial/radial.ts","../node_modules/@antv/layout/src/layout/radial/radialNonoverlapForce.ts","../node_modules/@antv/layout/src/layout/random.ts","../node_modules/@antv/layout/src/registy/index.ts","../node_modules/@antv/layout/src/util/array.ts","../node_modules/@antv/layout/src/util/function.ts","../node_modules/@antv/layout/src/util/gpu.ts","../node_modules/@antv/layout/src/util/index.ts","../node_modules/@antv/layout/src/util/math.ts","../node_modules/@antv/layout/src/util/number.ts","../node_modules/@antv/layout/src/util/object.ts","../node_modules/@antv/layout/src/util/string.ts","../node_modules/@antv/matrix-util/src/ext.ts","../node_modules/@antv/util/src/is-array-like.ts","../node_modules/@antv/util/src/contains.ts","../node_modules/@antv/util/src/filter.ts","../node_modules/@antv/util/src/difference.ts","../node_modules/@antv/util/src/is-type.ts","../node_modules/@antv/util/src/is-function.ts","../node_modules/@antv/util/src/is-nil.ts","../node_modules/@antv/util/src/is-array.ts","../node_modules/@antv/util/src/is-object.ts","../node_modules/@antv/util/src/each.ts","../node_modules/@antv/util/src/keys.ts","../node_modules/@antv/util/src/is-match.ts","../node_modules/@antv/util/src/is-object-like.ts","../node_modules/@antv/util/src/is-plain-object.ts","../node_modules/@antv/util/src/find.ts","../node_modules/@antv/util/src/find-index.ts","../node_modules/@antv/util/src/first-value.ts","../node_modules/@antv/util/src/flatten.ts","../node_modules/@antv/util/src/flatten-deep.ts","../node_modules/@antv/util/src/max.ts","../node_modules/@antv/util/src/min.ts","../node_modules/@antv/util/src/get-range.ts","../node_modules/@antv/util/src/pull.ts","../node_modules/@antv/util/src/pull-at.ts","../node_modules/@antv/util/src/reduce.ts","../node_modules/@antv/util/src/remove.ts","../node_modules/@antv/util/src/is-string.ts","../node_modules/@antv/util/src/sort-by.ts","../node_modules/@antv/util/src/uniq.ts","../node_modules/@antv/util/src/union.ts","../node_modules/@antv/util/src/values-of-key.ts","../node_modules/@antv/util/src/head.ts","../node_modules/@antv/util/src/last.ts","../node_modules/@antv/util/src/starts-with.ts","../node_modules/@antv/util/src/ends-with.ts","../node_modules/@antv/util/src/every.ts","../node_modules/@antv/util/src/some.ts","../node_modules/@antv/util/src/group-by.ts","../node_modules/@antv/util/src/group-to-map.ts","../node_modules/@antv/util/src/group.ts","../node_modules/@antv/util/src/get-wrap-behavior.ts","../node_modules/@antv/util/src/wrap-behavior.ts","../node_modules/@antv/util/src/number2color.ts","../node_modules/@antv/util/src/parse-radius.ts","../node_modules/@antv/util/src/clamp.ts","../node_modules/@antv/util/src/fixed-base.ts","../node_modules/@antv/util/src/is-number.ts","../node_modules/@antv/util/src/is-decimal.ts","../node_modules/@antv/util/src/is-even.ts","../node_modules/@antv/util/src/is-integer.ts","../node_modules/@antv/util/src/is-negative.ts","../node_modules/@antv/util/src/is-number-equal.ts","../node_modules/@antv/util/src/is-odd.ts","../node_modules/@antv/util/src/is-positive.ts","../node_modules/@antv/util/src/max-by.ts","../node_modules/@antv/util/src/min-by.ts","../node_modules/@antv/util/src/mod.ts","../node_modules/@antv/util/src/to-degree.ts","../node_modules/@antv/util/src/to-integer.ts","../node_modules/@antv/util/src/to-radian.ts","../node_modules/@antv/util/src/for-in.ts","../node_modules/@antv/util/src/has.ts","../node_modules/@antv/util/src/has-key.ts","../node_modules/@antv/util/src/values.ts","../node_modules/@antv/util/src/has-value.ts","../node_modules/@antv/util/src/to-string.ts","../node_modules/@antv/util/src/lower-case.ts","../node_modules/@antv/util/src/lower-first.ts","../node_modules/@antv/util/src/substitute.ts","../node_modules/@antv/util/src/upper-case.ts","../node_modules/@antv/util/src/upper-first.ts","../node_modules/@antv/util/src/get-type.ts","../node_modules/@antv/util/src/is-arguments.ts","../node_modules/@antv/util/src/is-boolean.ts","../node_modules/@antv/util/src/is-date.ts","../node_modules/@antv/util/src/is-error.ts","../node_modules/@antv/util/src/is-finite.ts","../node_modules/@antv/util/src/is-null.ts","../node_modules/@antv/util/src/is-prototype.ts","../node_modules/@antv/util/src/is-reg-exp.ts","../node_modules/@antv/util/src/is-undefined.ts","../node_modules/@antv/util/src/is-element.ts","../node_modules/@antv/util/src/request-animation-frame.ts","../node_modules/@antv/util/src/clear-animation-frame.ts","../node_modules/@antv/util/src/mix.ts","../node_modules/@antv/util/src/augment.ts","../node_modules/@antv/util/src/clone.ts","../node_modules/@antv/util/src/debounce.ts","../node_modules/@antv/util/src/memoize.ts","../node_modules/@antv/util/src/deep-mix.ts","../node_modules/@antv/util/src/extend.ts","../node_modules/@antv/util/src/index-of.ts","../node_modules/@antv/util/src/is-empty.ts","../node_modules/@antv/util/src/is-equal.ts","../node_modules/@antv/util/src/is-equal-with.ts","../node_modules/@antv/util/src/map.ts","../node_modules/@antv/util/src/map-values.ts","../node_modules/@antv/util/src/get.ts","../node_modules/@antv/util/src/set.ts","../node_modules/@antv/util/src/pick.ts","../node_modules/@antv/util/src/omit.ts","../node_modules/@antv/util/src/throttle.ts","../node_modules/@antv/util/src/to-array.ts","../node_modules/@antv/util/src/unique-id.ts","../node_modules/@antv/util/src/noop.ts","../node_modules/@antv/util/src/identity.ts","../node_modules/@antv/util/src/size.ts","../node_modules/@antv/util/src/measure-text-width.ts","../node_modules/@antv/util/src/get-ellipsis-text.ts","../node_modules/@antv/util/src/cache.ts","../node_modules/@aws-amplify/analytics/node_modules/uuid/index.js","../node_modules/@aws-amplify/analytics/node_modules/uuid/lib/bytesToUuid.js","../node_modules/@aws-amplify/analytics/node_modules/uuid/lib/rng-browser.js","../node_modules/@aws-amplify/analytics/node_modules/uuid/v1.js","../node_modules/@aws-amplify/analytics/node_modules/uuid/v4.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/index.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/adapters/xhr.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/axios.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/cancel/Cancel.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/cancel/CancelToken.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/cancel/isCancel.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/Axios.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/InterceptorManager.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/buildFullPath.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/createError.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/dispatchRequest.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/enhanceError.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/mergeConfig.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/settle.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/transformData.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/defaults.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/env/data.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/bind.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/buildURL.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/combineURLs.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/cookies.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/spread.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/validator.js","../node_modules/@aws-amplify/api-rest/node_modules/axios/lib/utils.js","../node_modules/@aws-amplify/core/node_modules/@aws-crypto/sha256-js/src/RawSha256.ts","../node_modules/@aws-amplify/core/node_modules/@aws-crypto/sha256-js/src/constants.ts","../node_modules/@aws-amplify/core/node_modules/@aws-crypto/sha256-js/src/index.ts","../node_modules/@aws-amplify/core/node_modules/@aws-crypto/sha256-js/src/jsSha256.ts","../node_modules/@aws-amplify/core/node_modules/@aws-sdk/util-utf8-browser/src/index.ts","../node_modules/@aws-amplify/core/node_modules/@aws-sdk/util-utf8-browser/src/whatwgEncodingApi.ts","../node_modules/@aws-amplify/core/node_modules/@aws-sdk/util-utf8-browser/src/pureJs.ts","../node_modules/@aws-amplify/core/node_modules/tslib/tslib.es6.js","../node_modules/@aws-amplify/pubsub/node_modules/uuid/index.js","../node_modules/@aws-amplify/pubsub/node_modules/uuid/lib/bytesToUuid.js","../node_modules/@aws-amplify/pubsub/node_modules/uuid/lib/rng-browser.js","../node_modules/@aws-amplify/pubsub/node_modules/uuid/v1.js","../node_modules/@aws-amplify/pubsub/node_modules/uuid/v4.js","../node_modules/@aws-amplify/storage/node_modules/axios/index.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/adapters/xhr.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/axios.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/cancel/Cancel.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/cancel/CancelToken.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/cancel/isCancel.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/core/Axios.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/core/InterceptorManager.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/core/buildFullPath.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/core/createError.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/core/dispatchRequest.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/core/enhanceError.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/core/mergeConfig.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/core/settle.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/core/transformData.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/defaults.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/env/data.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/helpers/bind.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/helpers/buildURL.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/helpers/combineURLs.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/helpers/cookies.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/helpers/spread.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/helpers/validator.js","../node_modules/@aws-amplify/storage/node_modules/axios/lib/utils.js","../node_modules/@aws-amplify/storage/node_modules/events/events.js","../../../../../../webpack/bootstrap","../../../../../../src/index.ts","../aws_amplify_ui/src/Anchor.css?a212","../aws_amplify_ui/src/Button.css?3605","../aws_amplify_ui/src/Form.css?0c1e","../aws_amplify_ui/src/Hint.css?8415","../aws_amplify_ui/src/Input.css?6c63","../aws_amplify_ui/src/Nav.css?2528","../aws_amplify_ui/src/PhotoPicker.css?07be","../aws_amplify_ui/src/Section.css?9b19","../aws_amplify_ui/src/SelectInput.css?12a6","../aws_amplify_ui/src/Strike.css?fcd8","../aws_amplify_ui/src/Toast.css?b30c","../aws_amplify_ui/src/Totp.css?55f1","../aws_amplify_ui/src/XR.css?528c","../node_modules/@aws-crypto/ie11-detection/src/MsWindow.ts","../node_modules/@aws-crypto/ie11-detection/src/index.ts","../node_modules/@aws-crypto/ie11-detection/node_modules/tslib/tslib.es6.js","../node_modules/@aws-crypto/sha256-browser/src/constants.ts","../node_modules/@aws-crypto/sha256-browser/src/crossPlatformSha256.ts","../node_modules/@aws-crypto/sha256-browser/src/ie11Sha256.ts","../node_modules/@aws-crypto/sha256-browser/src/index.ts","../node_modules/@aws-crypto/sha256-browser/src/isEmptyData.ts","../node_modules/@aws-crypto/sha256-browser/src/webCryptoSha256.ts","../node_modules/@aws-crypto/sha256-browser/node_modules/tslib/tslib.es6.js","../node_modules/@aws-crypto/sha256-js/src/RawSha256.ts","../node_modules/@aws-crypto/sha256-js/src/constants.ts","../node_modules/@aws-crypto/sha256-js/src/index.ts","../node_modules/@aws-crypto/sha256-js/src/jsSha256.ts","../node_modules/@aws-crypto/sha256-js/node_modules/tslib/tslib.es6.js","../node_modules/@aws-crypto/supports-web-crypto/src/index.ts","../node_modules/@aws-crypto/supports-web-crypto/src/supportsWebCrypto.ts","../node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib/tslib.es6.js","../node_modules/@aws-crypto/util/src/convertToBuffer.ts","../node_modules/@aws-crypto/util/src/index.ts","../node_modules/@aws-crypto/util/src/isEmptyData.ts","../node_modules/@aws-crypto/util/src/numToUint8.ts","../node_modules/@aws-crypto/util/src/uint32ArrayFrom.ts","../node_modules/@aws-sdk/eventstream-marshaller/node_modules/@aws-crypto/crc32/src/aws_crc32.ts","../node_modules/@aws-sdk/eventstream-marshaller/node_modules/@aws-crypto/crc32/src/index.ts","../node_modules/@aws-sdk/eventstream-marshaller/node_modules/@aws-crypto/util/src/convertToBuffer.ts","../node_modules/@aws-sdk/eventstream-marshaller/node_modules/@aws-crypto/util/src/index.ts","../node_modules/@aws-sdk/eventstream-marshaller/node_modules/@aws-crypto/util/src/isEmptyData.ts","../node_modules/@aws-sdk/eventstream-marshaller/node_modules/@aws-crypto/util/src/numToUint8.ts","../node_modules/@aws-sdk/eventstream-marshaller/node_modules/@aws-crypto/util/src/uint32ArrayFrom.ts","../node_modules/@aws-sdk/eventstream-marshaller/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/middleware-retry/node_modules/uuid/index.js","../node_modules/@aws-sdk/middleware-retry/node_modules/uuid/lib/bytesToUuid.js","../node_modules/@aws-sdk/middleware-retry/node_modules/uuid/lib/rng-browser.js","../node_modules/@aws-sdk/middleware-retry/node_modules/uuid/v1.js","../node_modules/@aws-sdk/middleware-retry/node_modules/uuid/v4.js","../node_modules/@aws-sdk/util-locate-window/dist-es/index.js","../node_modules/@aws-sdk/util-utf8-browser/src/index.ts","../node_modules/@aws-sdk/util-utf8-browser/src/whatwgEncodingApi.ts","../node_modules/@aws-sdk/util-utf8-browser/src/pureJs.ts","../node_modules/autobind-decorator/lib/index.js","../node_modules/axios/index.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/defaults.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/utils.js","../node_modules/base64-js/index.js","../node_modules/bowser/es5.js","../node_modules/buffer/index.js","../node_modules/buffer/node_modules/isarray/index.js","../node_modules/color-convert/conversions.js","../node_modules/color-convert/index.js","../node_modules/color-convert/node_modules/color-name/index.js","../node_modules/color-convert/route.js","../node_modules/color-name/index.js","../node_modules/color-string/index.js","../node_modules/color/index.js","../node_modules/crypto-js/core.js","../node_modules/crypto-js/enc-base64.js","../node_modules/crypto-js/hmac-sha256.js","../node_modules/crypto-js/hmac.js","../node_modules/crypto-js/lib-typedarrays.js","../node_modules/crypto-js/sha256.js","../node_modules/d3-force/src/center.js","../node_modules/d3-force/src/constant.js","../node_modules/d3-force/src/jiggle.js","../node_modules/d3-force/src/collide.js","../node_modules/d3-force/src/link.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-force/src/lcg.js","../node_modules/d3-force/src/simulation.js","../node_modules/d3-force/src/manyBody.js","../node_modules/d3-force/src/radial.js","../node_modules/d3-force/src/x.js","../node_modules/d3-force/src/y.js","../node_modules/d3-quadtree/src/add.js","../node_modules/d3-quadtree/src/quad.js","../node_modules/d3-quadtree/src/x.js","../node_modules/d3-quadtree/src/y.js","../node_modules/d3-quadtree/src/quadtree.js","../node_modules/d3-quadtree/src/cover.js","../node_modules/d3-quadtree/src/data.js","../node_modules/d3-quadtree/src/extent.js","../node_modules/d3-quadtree/src/find.js","../node_modules/d3-quadtree/src/remove.js","../node_modules/d3-quadtree/src/root.js","../node_modules/d3-quadtree/src/size.js","../node_modules/d3-quadtree/src/visit.js","../node_modules/d3-quadtree/src/visitAfter.js","../node_modules/d3-timer/src/timer.js","../../src/core/config.ts","../../src/core/util.ts","../../src/interfaces/common.ts","../../src/interfaces/graph.ts","../../src/interfaces/hierarchy.ts","../node_modules/dagre-compound/node_modules/lodash/_listCacheClear.js","../node_modules/dagre-compound/node_modules/lodash/eq.js","../node_modules/dagre-compound/node_modules/lodash/_assocIndexOf.js","../node_modules/dagre-compound/node_modules/lodash/_listCacheDelete.js","../node_modules/dagre-compound/node_modules/lodash/_ListCache.js","../node_modules/dagre-compound/node_modules/lodash/_listCacheGet.js","../node_modules/dagre-compound/node_modules/lodash/_listCacheHas.js","../node_modules/dagre-compound/node_modules/lodash/_listCacheSet.js","../node_modules/dagre-compound/node_modules/lodash/_isMasked.js","../node_modules/dagre-compound/node_modules/lodash/_stackHas.js","../node_modules/dagre-compound/node_modules/lodash/_freeGlobal.js","../node_modules/dagre-compound/node_modules/lodash/_root.js","../node_modules/dagre-compound/node_modules/lodash/_Symbol.js","../node_modules/dagre-compound/node_modules/lodash/_getRawTag.js","../node_modules/dagre-compound/node_modules/lodash/_objectToString.js","../node_modules/dagre-compound/node_modules/lodash/_baseGetTag.js","../node_modules/dagre-compound/node_modules/lodash/isObject.js","../node_modules/dagre-compound/node_modules/lodash/isFunction.js","../node_modules/dagre-compound/node_modules/lodash/_coreJsData.js","../node_modules/dagre-compound/node_modules/lodash/_toSource.js","../node_modules/dagre-compound/node_modules/lodash/_baseIsNative.js","../node_modules/dagre-compound/node_modules/lodash/_getNative.js","../node_modules/dagre-compound/node_modules/lodash/_getValue.js","../node_modules/dagre-compound/node_modules/lodash/_Map.js","../node_modules/dagre-compound/node_modules/lodash/_nativeCreate.js","../node_modules/dagre-compound/node_modules/lodash/_hashGet.js","../node_modules/dagre-compound/node_modules/lodash/_hashHas.js","../node_modules/dagre-compound/node_modules/lodash/_Hash.js","../node_modules/dagre-compound/node_modules/lodash/_hashClear.js","../node_modules/dagre-compound/node_modules/lodash/_hashDelete.js","../node_modules/dagre-compound/node_modules/lodash/_hashSet.js","../node_modules/dagre-compound/node_modules/lodash/_getMapData.js","../node_modules/dagre-compound/node_modules/lodash/_isKeyable.js","../node_modules/dagre-compound/node_modules/lodash/_MapCache.js","../node_modules/dagre-compound/node_modules/lodash/_mapCacheClear.js","../node_modules/dagre-compound/node_modules/lodash/_mapCacheDelete.js","../node_modules/dagre-compound/node_modules/lodash/_mapCacheGet.js","../node_modules/dagre-compound/node_modules/lodash/_mapCacheHas.js","../node_modules/dagre-compound/node_modules/lodash/_mapCacheSet.js","../node_modules/dagre-compound/node_modules/lodash/_Stack.js","../node_modules/dagre-compound/node_modules/lodash/_stackClear.js","../node_modules/dagre-compound/node_modules/lodash/_stackDelete.js","../node_modules/dagre-compound/node_modules/lodash/_stackGet.js","../node_modules/dagre-compound/node_modules/lodash/_stackSet.js","../node_modules/dagre-compound/node_modules/lodash/_arrayEach.js","../node_modules/dagre-compound/node_modules/lodash/_defineProperty.js","../node_modules/dagre-compound/node_modules/lodash/_baseAssignValue.js","../node_modules/dagre-compound/node_modules/lodash/_assignValue.js","../node_modules/dagre-compound/node_modules/lodash/_copyObject.js","../node_modules/dagre-compound/node_modules/lodash/isObjectLike.js","../node_modules/dagre-compound/node_modules/lodash/_baseIsArguments.js","../node_modules/dagre-compound/node_modules/lodash/isArguments.js","../node_modules/dagre-compound/node_modules/lodash/isArray.js","../node_modules/dagre-compound/node_modules/lodash/stubFalse.js","../node_modules/dagre-compound/node_modules/lodash/isBuffer.js","../node_modules/dagre-compound/node_modules/lodash/_isIndex.js","../node_modules/dagre-compound/node_modules/lodash/isLength.js","../node_modules/dagre-compound/node_modules/lodash/_baseIsTypedArray.js","../node_modules/dagre-compound/node_modules/lodash/_baseUnary.js","../node_modules/dagre-compound/node_modules/lodash/_nodeUtil.js","../node_modules/dagre-compound/node_modules/lodash/isTypedArray.js","../node_modules/dagre-compound/node_modules/lodash/_arrayLikeKeys.js","../node_modules/dagre-compound/node_modules/lodash/_baseTimes.js","../node_modules/dagre-compound/node_modules/lodash/_isPrototype.js","../node_modules/dagre-compound/node_modules/lodash/_overArg.js","../node_modules/dagre-compound/node_modules/lodash/_nativeKeys.js","../node_modules/dagre-compound/node_modules/lodash/_baseKeys.js","../node_modules/dagre-compound/node_modules/lodash/isArrayLike.js","../node_modules/dagre-compound/node_modules/lodash/keys.js","../node_modules/dagre-compound/node_modules/lodash/_baseKeysIn.js","../node_modules/dagre-compound/node_modules/lodash/_nativeKeysIn.js","../node_modules/dagre-compound/node_modules/lodash/keysIn.js","../node_modules/dagre-compound/node_modules/lodash/_baseAssignIn.js","../node_modules/dagre-compound/node_modules/lodash/_cloneBuffer.js","../node_modules/dagre-compound/node_modules/lodash/_copyArray.js","../node_modules/dagre-compound/node_modules/lodash/_arrayFilter.js","../node_modules/dagre-compound/node_modules/lodash/stubArray.js","../node_modules/dagre-compound/node_modules/lodash/_getSymbols.js","../node_modules/dagre-compound/node_modules/lodash/_arrayPush.js","../node_modules/dagre-compound/node_modules/lodash/_getPrototype.js","../node_modules/dagre-compound/node_modules/lodash/_getSymbolsIn.js","../node_modules/dagre-compound/node_modules/lodash/_baseGetAllKeys.js","../node_modules/dagre-compound/node_modules/lodash/_getAllKeys.js","../node_modules/dagre-compound/node_modules/lodash/_getAllKeysIn.js","../node_modules/dagre-compound/node_modules/lodash/_DataView.js","../node_modules/dagre-compound/node_modules/lodash/_Promise.js","../node_modules/dagre-compound/node_modules/lodash/_Set.js","../node_modules/dagre-compound/node_modules/lodash/_WeakMap.js","../node_modules/dagre-compound/node_modules/lodash/_getTag.js","../node_modules/dagre-compound/node_modules/lodash/_initCloneArray.js","../node_modules/dagre-compound/node_modules/lodash/_Uint8Array.js","../node_modules/dagre-compound/node_modules/lodash/_cloneArrayBuffer.js","../node_modules/dagre-compound/node_modules/lodash/_cloneRegExp.js","../node_modules/dagre-compound/node_modules/lodash/_cloneSymbol.js","../node_modules/dagre-compound/node_modules/lodash/_cloneTypedArray.js","../node_modules/dagre-compound/node_modules/lodash/_initCloneByTag.js","../node_modules/dagre-compound/node_modules/lodash/_cloneDataView.js","../node_modules/dagre-compound/node_modules/lodash/_baseCreate.js","../node_modules/dagre-compound/node_modules/lodash/_initCloneObject.js","../node_modules/dagre-compound/node_modules/lodash/isMap.js","../node_modules/dagre-compound/node_modules/lodash/_baseIsMap.js","../node_modules/dagre-compound/node_modules/lodash/isSet.js","../node_modules/dagre-compound/node_modules/lodash/_baseIsSet.js","../node_modules/dagre-compound/node_modules/lodash/_baseClone.js","../node_modules/dagre-compound/node_modules/lodash/_copySymbolsIn.js","../node_modules/dagre-compound/node_modules/lodash/_copySymbols.js","../node_modules/dagre-compound/node_modules/lodash/_baseAssign.js","../node_modules/dagre-compound/node_modules/lodash/constant.js","../node_modules/dagre-compound/node_modules/lodash/_createBaseFor.js","../node_modules/dagre-compound/node_modules/lodash/_baseForOwn.js","../node_modules/dagre-compound/node_modules/lodash/_createBaseEach.js","../node_modules/dagre-compound/node_modules/lodash/_baseEach.js","../node_modules/dagre-compound/node_modules/lodash/identity.js","../node_modules/dagre-compound/node_modules/lodash/_castFunction.js","../node_modules/dagre-compound/node_modules/lodash/forEach.js","../node_modules/dagre-compound/node_modules/lodash/each.js","../node_modules/dagre-compound/node_modules/lodash/_baseFilter.js","../node_modules/dagre-compound/node_modules/lodash/_SetCache.js","../node_modules/dagre-compound/node_modules/lodash/_setCacheAdd.js","../node_modules/dagre-compound/node_modules/lodash/_setCacheHas.js","../node_modules/dagre-compound/node_modules/lodash/_arraySome.js","../node_modules/dagre-compound/node_modules/lodash/_cacheHas.js","../node_modules/dagre-compound/node_modules/lodash/_equalArrays.js","../node_modules/dagre-compound/node_modules/lodash/_mapToArray.js","../node_modules/dagre-compound/node_modules/lodash/_setToArray.js","../node_modules/dagre-compound/node_modules/lodash/_equalByTag.js","../node_modules/dagre-compound/node_modules/lodash/_equalObjects.js","../node_modules/dagre-compound/node_modules/lodash/_baseIsEqualDeep.js","../node_modules/dagre-compound/node_modules/lodash/_baseIsEqual.js","../node_modules/dagre-compound/node_modules/lodash/_isStrictComparable.js","../node_modules/dagre-compound/node_modules/lodash/_matchesStrictComparable.js","../node_modules/dagre-compound/node_modules/lodash/_baseMatches.js","../node_modules/dagre-compound/node_modules/lodash/_getMatchData.js","../node_modules/dagre-compound/node_modules/lodash/_baseIsMatch.js","../node_modules/dagre-compound/node_modules/lodash/isSymbol.js","../node_modules/dagre-compound/node_modules/lodash/_isKey.js","../node_modules/dagre-compound/node_modules/lodash/memoize.js","../node_modules/dagre-compound/node_modules/graphlib/lib/lodash.js","../node_modules/dagre-compound/node_modules/lodash/_stringToPath.js","../node_modules/dagre-compound/node_modules/lodash/_memoizeCapped.js","../node_modules/dagre-compound/node_modules/lodash/_arrayMap.js","../node_modules/dagre-compound/node_modules/lodash/_baseToString.js","../node_modules/dagre-compound/node_modules/lodash/toString.js","../node_modules/dagre-compound/node_modules/lodash/_castPath.js","../node_modules/dagre-compound/node_modules/lodash/_toKey.js","../node_modules/dagre-compound/node_modules/lodash/_baseGet.js","../node_modules/dagre-compound/node_modules/lodash/_baseHasIn.js","../node_modules/dagre-compound/node_modules/lodash/_hasPath.js","../node_modules/dagre-compound/node_modules/lodash/hasIn.js","../node_modules/dagre-compound/node_modules/lodash/_baseMatchesProperty.js","../node_modules/dagre-compound/node_modules/lodash/get.js","../node_modules/dagre-compound/node_modules/lodash/_baseProperty.js","../node_modules/dagre-compound/node_modules/lodash/property.js","../node_modules/dagre-compound/node_modules/lodash/_basePropertyDeep.js","../node_modules/dagre-compound/node_modules/lodash/_baseIteratee.js","../node_modules/dagre-compound/node_modules/lodash/filter.js","../node_modules/dagre-compound/node_modules/lodash/_baseHas.js","../node_modules/dagre-compound/node_modules/lodash/has.js","../node_modules/dagre-compound/node_modules/lodash/isEmpty.js","../node_modules/dagre-compound/node_modules/lodash/isUndefined.js","../node_modules/dagre-compound/node_modules/lodash/_baseMap.js","../node_modules/dagre-compound/node_modules/lodash/map.js","../node_modules/dagre-compound/node_modules/lodash/_arrayReduce.js","../node_modules/dagre-compound/node_modules/lodash/_baseReduce.js","../node_modules/dagre-compound/node_modules/lodash/reduce.js","../node_modules/dagre-compound/node_modules/lodash/isString.js","../node_modules/dagre-compound/node_modules/lodash/_asciiSize.js","../node_modules/dagre-compound/node_modules/lodash/_hasUnicode.js","../node_modules/dagre-compound/node_modules/lodash/_unicodeSize.js","../node_modules/dagre-compound/node_modules/lodash/_stringSize.js","../node_modules/dagre-compound/node_modules/lodash/_isFlattenable.js","../node_modules/dagre-compound/node_modules/lodash/_baseFlatten.js","../node_modules/dagre-compound/node_modules/lodash/_apply.js","../node_modules/dagre-compound/node_modules/lodash/_overRest.js","../node_modules/dagre-compound/node_modules/lodash/_baseSetToString.js","../node_modules/dagre-compound/node_modules/lodash/_shortOut.js","../node_modules/dagre-compound/node_modules/lodash/_setToString.js","../node_modules/dagre-compound/node_modules/lodash/_baseRest.js","../node_modules/dagre-compound/node_modules/lodash/_baseFindIndex.js","../node_modules/dagre-compound/node_modules/lodash/_baseIsNaN.js","../node_modules/dagre-compound/node_modules/lodash/_arrayIncludes.js","../node_modules/dagre-compound/node_modules/lodash/_baseIndexOf.js","../node_modules/dagre-compound/node_modules/lodash/_strictIndexOf.js","../node_modules/dagre-compound/node_modules/lodash/_arrayIncludesWith.js","../node_modules/dagre-compound/node_modules/lodash/noop.js","../node_modules/dagre-compound/node_modules/lodash/_createSet.js","../node_modules/dagre-compound/node_modules/lodash/isArrayLikeObject.js","../node_modules/dagre-compound/node_modules/lodash/union.js","../node_modules/dagre-compound/node_modules/lodash/_baseUniq.js","../node_modules/dagre-compound/node_modules/lodash/values.js","../node_modules/dagre-compound/node_modules/lodash/_baseValues.js","../node_modules/dagre-compound/node_modules/lodash/clone.js","../node_modules/dagre-compound/node_modules/lodash/size.js","../node_modules/dagre-compound/node_modules/lodash/transform.js","../node_modules/dagre-compound/node_modules/graphlib/lib/graph.js","../node_modules/dagre-compound/node_modules/graphlib/lib/version.js","../node_modules/dagre-compound/node_modules/graphlib/lib/index.js","../node_modules/dagre-compound/node_modules/graphlib/lib/json.js","../node_modules/dagre-compound/node_modules/graphlib/lib/alg/components.js","../node_modules/dagre-compound/node_modules/graphlib/lib/data/priority-queue.js","../node_modules/dagre-compound/node_modules/graphlib/lib/alg/dijkstra.js","../node_modules/dagre-compound/node_modules/graphlib/lib/alg/tarjan.js","../node_modules/dagre-compound/node_modules/graphlib/lib/alg/floyd-warshall.js","../node_modules/dagre-compound/node_modules/graphlib/lib/alg/topsort.js","../node_modules/dagre-compound/node_modules/graphlib/lib/alg/dfs.js","../node_modules/dagre-compound/node_modules/graphlib/lib/alg/index.js","../node_modules/dagre-compound/node_modules/dagre/lib/graphlib.js","../node_modules/dagre-compound/node_modules/graphlib/index.js","../node_modules/dagre-compound/node_modules/graphlib/lib/alg/dijkstra-all.js","../node_modules/dagre-compound/node_modules/graphlib/lib/alg/find-cycles.js","../node_modules/dagre-compound/node_modules/graphlib/lib/alg/is-acyclic.js","../node_modules/dagre-compound/node_modules/graphlib/lib/alg/postorder.js","../node_modules/dagre-compound/node_modules/graphlib/lib/alg/preorder.js","../node_modules/dagre-compound/node_modules/graphlib/lib/alg/prim.js","../node_modules/dagre-compound/node_modules/dagre/lib/lodash.js","../node_modules/dagre-compound/node_modules/lodash/_isIterateeCall.js","../node_modules/dagre-compound/node_modules/lodash/defaults.js","../node_modules/dagre-compound/node_modules/lodash/toNumber.js","../node_modules/dagre-compound/node_modules/lodash/toFinite.js","../node_modules/dagre-compound/node_modules/lodash/findIndex.js","../node_modules/dagre-compound/node_modules/lodash/_createFind.js","../node_modules/dagre-compound/node_modules/lodash/find.js","../node_modules/dagre-compound/node_modules/lodash/toInteger.js","../node_modules/dagre-compound/node_modules/lodash/flatten.js","../node_modules/dagre-compound/node_modules/lodash/_baseExtremum.js","../node_modules/dagre-compound/node_modules/lodash/_baseGt.js","../node_modules/dagre-compound/node_modules/lodash/_assignMergeValue.js","../node_modules/dagre-compound/node_modules/lodash/isPlainObject.js","../node_modules/dagre-compound/node_modules/lodash/_safeGet.js","../node_modules/dagre-compound/node_modules/lodash/_baseMergeDeep.js","../node_modules/dagre-compound/node_modules/lodash/toPlainObject.js","../node_modules/dagre-compound/node_modules/lodash/_baseMerge.js","../node_modules/dagre-compound/node_modules/lodash/_createAssigner.js","../node_modules/dagre-compound/node_modules/lodash/merge.js","../node_modules/dagre-compound/node_modules/lodash/_baseLt.js","../node_modules/dagre-compound/node_modules/lodash/_baseSet.js","../node_modules/dagre-compound/node_modules/lodash/_basePick.js","../node_modules/dagre-compound/node_modules/lodash/_basePickBy.js","../node_modules/dagre-compound/node_modules/lodash/_flatRest.js","../node_modules/dagre-compound/node_modules/lodash/pick.js","../node_modules/dagre-compound/node_modules/lodash/_baseRange.js","../node_modules/dagre-compound/node_modules/lodash/_createRange.js","../node_modules/dagre-compound/node_modules/lodash/_compareAscending.js","../node_modules/dagre-compound/node_modules/lodash/_baseOrderBy.js","../node_modules/dagre-compound/node_modules/lodash/_baseSortBy.js","../node_modules/dagre-compound/node_modules/lodash/_compareMultiple.js","../node_modules/dagre-compound/node_modules/lodash/sortBy.js","../node_modules/dagre-compound/node_modules/lodash/uniqueId.js","../node_modules/dagre-compound/node_modules/lodash/cloneDeep.js","../node_modules/dagre-compound/node_modules/lodash/forIn.js","../node_modules/dagre-compound/node_modules/lodash/last.js","../node_modules/dagre-compound/node_modules/lodash/mapValues.js","../node_modules/dagre-compound/node_modules/lodash/max.js","../node_modules/dagre-compound/node_modules/lodash/min.js","../node_modules/dagre-compound/node_modules/lodash/minBy.js","../node_modules/dagre-compound/node_modules/lodash/now.js","../node_modules/dagre-compound/node_modules/lodash/zipObject.js","../node_modules/dagre-compound/node_modules/lodash/_baseZipObject.js","../node_modules/dagre-compound/node_modules/dagre/lib/data/list.js","../node_modules/dagre-compound/node_modules/dagre/lib/greedy-fas.js","../node_modules/dagre-compound/node_modules/dagre/lib/acyclic.js","../node_modules/dagre-compound/node_modules/dagre/lib/util.js","../node_modules/dagre-compound/node_modules/dagre/lib/normalize.js","../node_modules/dagre-compound/node_modules/dagre/lib/rank/util.js","../node_modules/dagre-compound/node_modules/dagre/lib/rank/feasible-tree.js","../node_modules/dagre-compound/node_modules/dagre/lib/rank/network-simplex.js","../node_modules/dagre-compound/node_modules/dagre/lib/rank/index.js","../node_modules/dagre-compound/node_modules/dagre/lib/parent-dummy-chains.js","../node_modules/dagre-compound/node_modules/dagre/lib/nesting-graph.js","../node_modules/dagre-compound/node_modules/dagre/lib/add-border-segments.js","../node_modules/dagre-compound/node_modules/dagre/lib/coordinate-system.js","../node_modules/dagre-compound/node_modules/dagre/lib/order/init-order.js","../node_modules/dagre-compound/node_modules/dagre/lib/order/cross-count.js","../node_modules/dagre-compound/node_modules/dagre/lib/order/sort.js","../node_modules/dagre-compound/node_modules/dagre/lib/order/sort-subgraph.js","../node_modules/dagre-compound/node_modules/dagre/lib/order/barycenter.js","../node_modules/dagre-compound/node_modules/dagre/lib/order/resolve-conflicts.js","../node_modules/dagre-compound/node_modules/dagre/lib/order/build-layer-graph.js","../node_modules/dagre-compound/node_modules/dagre/lib/order/index.js","../node_modules/dagre-compound/node_modules/dagre/lib/order/add-subgraph-constraints.js","../node_modules/dagre-compound/node_modules/dagre/lib/position/bk.js","../node_modules/dagre-compound/node_modules/dagre/lib/position/index.js","../node_modules/dagre-compound/node_modules/dagre/lib/layout.js","../node_modules/dagre-compound/node_modules/dagre/lib/debug.js","../node_modules/dagre-compound/node_modules/dagre/lib/version.js","../node_modules/dagre-compound/node_modules/dagre/index.js","../../src/core/graph.ts","../../src/core/hierarchy.ts","../../src/core/render-info.ts","../../src/core/layout.ts","../../src/dagre-compound.ts","../node_modules/docx/build/index.js","../node_modules/fast-xml-parser/src/json2xml.js","../node_modules/fast-xml-parser/src/nimndata.js","../node_modules/fast-xml-parser/src/node2json.js","../node_modules/fast-xml-parser/src/node2json_str.js","../node_modules/fast-xml-parser/src/parser.js","../node_modules/fast-xml-parser/src/util.js","../node_modules/fast-xml-parser/src/validator.js","../node_modules/fast-xml-parser/src/xmlNode.js","../node_modules/fast-xml-parser/src/xmlstr2xmlnode.js","../node_modules/file-saver/src/FileSaver.js","../node_modules/gl-matrix/esm/common.js","../node_modules/gl-matrix/esm/mat2.js","../node_modules/gl-matrix/esm/mat2d.js","../node_modules/gl-matrix/esm/mat4.js","../node_modules/gl-matrix/esm/vec4.js","../node_modules/gl-matrix/esm/quat.js","../node_modules/gl-matrix/esm/quat2.js","../node_modules/gl-matrix/esm/mat3.js","../node_modules/gl-matrix/esm/vec2.js","../node_modules/gl-matrix/esm/vec3.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/ieee754/index.js","../node_modules/insert-css/index.js","../node_modules/is-retry-allowed/index.js","../node_modules/isarray/index.js","../node_modules/isomorphic-unfetch/browser.js","../node_modules/js-cookie/src/js.cookie.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_root.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isNumber.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isPlainObject.js","../node_modules/lodash/isTypedArray.js","../node_modules/is-any-array/src/index.js","../node_modules/ml-array-max/lib-es6/index.js","../node_modules/ml-array-min/lib-es6/index.js","../node_modules/ml-array-rescale/lib-es6/index.js","../node_modules/ml-matrix/src/inspect.js","../node_modules/ml-matrix/src/util.js","../node_modules/ml-matrix/src/matrix.js","../node_modules/ml-matrix/src/stat.js","../node_modules/ml-matrix/src/mathOperations.js","../node_modules/ml-matrix/src/views/base.js","../node_modules/ml-matrix/src/views/column.js","../node_modules/ml-matrix/src/views/columnSelection.js","../node_modules/ml-matrix/src/views/flipColumn.js","../node_modules/ml-matrix/src/views/flipRow.js","../node_modules/ml-matrix/src/views/row.js","../node_modules/ml-matrix/src/views/rowSelection.js","../node_modules/ml-matrix/src/views/selection.js","../node_modules/ml-matrix/src/views/sub.js","../node_modules/ml-matrix/src/views/transpose.js","../node_modules/ml-matrix/src/wrap/WrapperMatrix1D.js","../node_modules/ml-matrix/src/wrap/WrapperMatrix2D.js","../node_modules/ml-matrix/src/wrap/wrap.js","../node_modules/ml-matrix/src/dc/lu.js","../node_modules/ml-matrix/src/dc/util.js","../node_modules/ml-matrix/src/dc/qr.js","../node_modules/ml-matrix/src/dc/svd.js","../node_modules/ml-matrix/src/decompositions.js","../node_modules/ml-matrix/src/determinant.js","../node_modules/ml-matrix/src/linearDependencies.js","../node_modules/ml-matrix/src/pseudoInverse.js","../node_modules/ml-matrix/src/covariance.js","../node_modules/ml-matrix/src/correlation.js","../node_modules/ml-matrix/src/dc/evd.js","../node_modules/ml-matrix/src/dc/cholesky.js","../node_modules/ml-matrix/src/dc/nipals.js","../node_modules/object-assign/index.js","../node_modules/paho-mqtt/paho-mqtt.js","../node_modules/path-to-regexp/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/querystring/decode.js","../node_modules/querystring/encode.js","../node_modules/querystring/index.js","../node_modules/react-csv/index.js","../node_modules/react-csv/lib/components/Download.js","../node_modules/react-csv/lib/components/Link.js","../node_modules/react-csv/lib/core.js","../node_modules/react-csv/lib/index.js","../node_modules/react-csv/lib/metaProps.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-input-range/src/js/index.js","../node_modules/react-input-range/src/js/input-range/default-class-names.js","../node_modules/react-input-range/src/js/input-range/input-range.jsx","../node_modules/react-input-range/src/js/input-range/key-codes.js","../node_modules/react-input-range/src/js/input-range/label.jsx","../node_modules/react-input-range/src/js/input-range/range-prop-type.js","../node_modules/react-input-range/src/js/input-range/slider.jsx","../node_modules/react-input-range/src/js/input-range/track.jsx","../node_modules/react-input-range/src/js/input-range/value-prop-type.js","../node_modules/react-input-range/src/js/input-range/value-transformer.js","../node_modules/react-input-range/src/js/utils/captialize.js","../node_modules/react-input-range/src/js/utils/clamp.js","../node_modules/react-input-range/src/js/utils/distance-to.js","../node_modules/react-input-range/src/js/utils/index.js","../node_modules/react-input-range/src/js/utils/is-defined.js","../node_modules/react-input-range/src/js/utils/is-number.js","../node_modules/react-input-range/src/js/utils/is-object.js","../node_modules/react-input-range/src/js/utils/length.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/simple-swizzle/index.js","../node_modules/simple-swizzle/node_modules/is-arrayish/index.js","../node_modules/strnum/strnum.js","../node_modules/tslib/tslib.es6.js","../node_modules/unfetch/src/index.mjs","../node_modules/universal-cookie/node_modules/cookie/index.js","../node_modules/url/node_modules/punycode/punycode.js","../node_modules/url/url.js","../node_modules/zen-observable/index.js","../node_modules/zen-observable/lib/Observable.js","../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/regenerator/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/history/esm/history.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-router/modules/miniCreateReactContext.js","../node_modules/react-router/modules/createContext.js","../node_modules/react-router/modules/createNamedContext.js","../node_modules/react-router/modules/HistoryContext.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/generatePath.js","../node_modules/react-router/modules/Redirect.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/hooks.js","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","../node_modules/@aws-amplify/auth/src/types/Auth.ts","../node_modules/@aws-amplify/core/src/Util/Constants.ts","../node_modules/@aws-amplify/core/src/Logger/ConsoleLogger.ts","../node_modules/@aws-amplify/core/src/Hub.ts","../node_modules/@aws-amplify/core/src/StorageHelper/index.ts","../node_modules/@aws-amplify/core/src/JS.ts","../node_modules/@aws-amplify/core/src/Util/Retry.ts","../node_modules/@aws-amplify/core/src/OAuthHelper/GoogleOAuth.ts","../node_modules/@aws-amplify/core/src/OAuthHelper/FacebookOAuth.ts","../node_modules/@aws-amplify/core/src/OAuthHelper/index.ts","../node_modules/@aws-amplify/core/src/Amplify.ts","../node_modules/@aws-sdk/credential-provider-cognito-identity/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/client-cognito-identity/models/models_0.ts","../node_modules/@aws-sdk/protocol-http/src/httpResponse.ts","../node_modules/@aws-sdk/protocol-http/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/protocol-http/src/httpRequest.ts","../node_modules/@aws-sdk/client-cognito-identity/protocols/Aws_json1_1.ts","../node_modules/@aws-sdk/middleware-serde/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/middleware-serde/src/deserializerMiddleware.ts","../node_modules/@aws-sdk/middleware-serde/src/serdePlugin.ts","../node_modules/@aws-sdk/middleware-serde/src/serializerMiddleware.ts","../node_modules/@aws-sdk/middleware-stack/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/middleware-stack/src/MiddlewareStack.ts","../node_modules/@aws-sdk/smithy-client/src/client.ts","../node_modules/@aws-sdk/smithy-client/src/command.ts","../node_modules/@aws-sdk/smithy-client/src/extended-encode-uri-component.ts","../node_modules/@aws-sdk/smithy-client/src/get-array-if-single-item.ts","../node_modules/@aws-sdk/smithy-client/src/get-value-from-text-node.ts","../node_modules/@aws-sdk/smithy-client/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/smithy-client/src/lazy-json.ts","../node_modules/@aws-sdk/smithy-client/src/date-utils.ts","../node_modules/@aws-sdk/smithy-client/src/constants.ts","../node_modules/@aws-sdk/client-cognito-identity/commands/GetCredentialsForIdentityCommand.ts","../node_modules/@aws-sdk/credential-provider-cognito-identity/node_modules/@aws-sdk/property-provider/src/ProviderError.ts","../node_modules/@aws-sdk/credential-provider-cognito-identity/src/resolveLogins.ts","../node_modules/@aws-sdk/credential-provider-cognito-identity/src/fromCognitoIdentity.ts","../node_modules/@aws-sdk/client-cognito-identity/commands/GetIdCommand.ts","../node_modules/@aws-sdk/credential-provider-cognito-identity/src/IndexedDbStorage.ts","../node_modules/@aws-sdk/credential-provider-cognito-identity/src/InMemoryStorage.ts","../node_modules/@aws-sdk/credential-provider-cognito-identity/src/localStorage.ts","../node_modules/@aws-sdk/credential-provider-cognito-identity/src/fromCognitoIdentityPool.ts","../node_modules/@aws-sdk/fetch-http-handler/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/querystring-builder/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/querystring-builder/node_modules/@aws-sdk/util-uri-escape/src/escape-uri.ts","../node_modules/@aws-sdk/querystring-builder/src/index.ts","../node_modules/@aws-sdk/util-base64-browser/src/index.ts","../node_modules/@aws-sdk/fetch-http-handler/src/fetch-http-handler.ts","../node_modules/@aws-sdk/fetch-http-handler/src/request-timeout.ts","../node_modules/@aws-sdk/fetch-http-handler/src/stream-collector.ts","../node_modules/@aws-sdk/invalid-dependency/src/invalidProvider.ts","../node_modules/@aws-sdk/middleware-retry/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/middleware-retry/src/retryMiddleware.ts","../node_modules/@aws-sdk/service-error-classification/src/constants.ts","../node_modules/@aws-sdk/service-error-classification/src/index.ts","../node_modules/@aws-sdk/middleware-retry/src/delayDecider.ts","../node_modules/@aws-sdk/middleware-retry/src/constants.ts","../node_modules/@aws-sdk/middleware-retry/src/retryDecider.ts","../node_modules/@aws-sdk/middleware-retry/src/defaultStrategy.ts","../node_modules/@aws-sdk/middleware-retry/src/defaultRetryQuota.ts","../node_modules/@aws-sdk/middleware-retry/src/configurations.ts","../node_modules/@aws-sdk/util-body-length-browser/src/index.ts","../node_modules/@aws-sdk/util-user-agent-browser/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/util-user-agent-browser/src/index.ts","../node_modules/@aws-sdk/client-cognito-identity/endpoints.ts","../node_modules/@aws-sdk/querystring-parser/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/url-parser/src/index.ts","../node_modules/@aws-sdk/querystring-parser/src/index.ts","../node_modules/@aws-sdk/client-cognito-identity/runtimeConfig.shared.ts","../node_modules/@aws-sdk/client-cognito-identity/runtimeConfig.browser.ts","../node_modules/@aws-sdk/config-resolver/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/config-resolver/src/EndpointsConfig.ts","../node_modules/@aws-sdk/config-resolver/src/RegionConfig.ts","../node_modules/@aws-sdk/middleware-content-length/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/middleware-content-length/src/index.ts","../node_modules/@aws-sdk/middleware-host-header/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/middleware-host-header/src/index.ts","../node_modules/@aws-sdk/middleware-logger/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/middleware-logger/src/loggerMiddleware.ts","../node_modules/@aws-sdk/middleware-signing/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/util-hex-encoding/src/index.ts","../node_modules/@aws-sdk/middleware-signing/node_modules/@aws-sdk/signature-v4/src/constants.ts","../node_modules/@aws-sdk/middleware-signing/node_modules/@aws-sdk/signature-v4/src/credentialDerivation.ts","../node_modules/@aws-sdk/middleware-signing/node_modules/@aws-sdk/signature-v4/src/getCanonicalHeaders.ts","../node_modules/@aws-sdk/middleware-signing/node_modules/@aws-sdk/util-uri-escape/src/escape-uri.ts","../node_modules/@aws-sdk/is-array-buffer/src/index.ts","../node_modules/@aws-sdk/middleware-signing/node_modules/@aws-sdk/signature-v4/src/getPayloadHash.ts","../node_modules/@aws-sdk/middleware-signing/node_modules/@aws-sdk/signature-v4/src/cloneRequest.ts","../node_modules/@aws-sdk/middleware-signing/node_modules/@aws-sdk/signature-v4/src/prepareRequest.ts","../node_modules/@aws-sdk/middleware-signing/node_modules/@aws-sdk/signature-v4/src/utilDate.ts","../node_modules/@aws-sdk/middleware-signing/node_modules/@aws-sdk/signature-v4/src/SignatureV4.ts","../node_modules/@aws-sdk/middleware-signing/node_modules/@aws-sdk/signature-v4/src/moveHeadersToQuery.ts","../node_modules/@aws-sdk/middleware-signing/node_modules/@aws-sdk/signature-v4/src/hasHeader.ts","../node_modules/@aws-sdk/middleware-signing/node_modules/@aws-sdk/signature-v4/src/getCanonicalQuery.ts","../node_modules/@aws-sdk/middleware-signing/src/configurations.ts","../node_modules/@aws-sdk/middleware-signing/src/middleware.ts","../node_modules/@aws-sdk/middleware-user-agent/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/middleware-user-agent/src/configurations.ts","../node_modules/@aws-sdk/middleware-user-agent/src/constants.ts","../node_modules/@aws-sdk/middleware-user-agent/src/user-agent-middleware.ts","../node_modules/@aws-sdk/client-cognito-identity/CognitoIdentityClient.ts","../node_modules/@aws-amplify/core/src/Platform/index.ts","../node_modules/@aws-amplify/core/src/Util/CognitoIdentityClient.ts","../node_modules/@aws-amplify/core/src/Credentials.ts","../node_modules/@aws-amplify/core/src/Parser.ts","../node_modules/universal-cookie/es6/utils.js","../node_modules/universal-cookie/es6/Cookies.js","../node_modules/universal-cookie/es6/index.js","../node_modules/@aws-amplify/core/src/UniversalStorage/index.ts","../node_modules/amazon-cognito-identity-js/es/AuthenticationDetails.js","../node_modules/amazon-cognito-identity-js/es/utils/cryptoSecureRandomInt.web.js","../node_modules/amazon-cognito-identity-js/es/utils/WordArray.js","../node_modules/amazon-cognito-identity-js/es/BigInteger.js","../node_modules/amazon-cognito-identity-js/es/AuthenticationHelper.js","../node_modules/amazon-cognito-identity-js/es/CognitoJwtToken.js","../node_modules/amazon-cognito-identity-js/es/CognitoAccessToken.js","../node_modules/amazon-cognito-identity-js/es/CognitoIdToken.js","../node_modules/amazon-cognito-identity-js/es/CognitoRefreshToken.js","../node_modules/amazon-cognito-identity-js/es/CognitoUserSession.js","../node_modules/amazon-cognito-identity-js/es/DateHelper.js","../node_modules/amazon-cognito-identity-js/es/CognitoUserAttribute.js","../node_modules/amazon-cognito-identity-js/es/StorageHelper.js","../node_modules/amazon-cognito-identity-js/es/CognitoUser.js","../node_modules/amazon-cognito-identity-js/es/Platform/index.js","../node_modules/amazon-cognito-identity-js/es/UserAgent.js","../node_modules/amazon-cognito-identity-js/es/Client.js","../node_modules/amazon-cognito-identity-js/es/CognitoUserPool.js","../node_modules/amazon-cognito-identity-js/es/CookieStorage.js","../node_modules/@aws-amplify/auth/src/OAuth/urlOpener.ts","../node_modules/@aws-amplify/auth/src/OAuth/OAuth.ts","../node_modules/@aws-amplify/core/src/Util/StringUtils.ts","../node_modules/@aws-amplify/auth/src/OAuth/oauthStorage.ts","../node_modules/@aws-amplify/auth/src/common/AuthErrorStrings.ts","../node_modules/@aws-amplify/auth/src/Errors.ts","../node_modules/@aws-amplify/auth/src/Auth.ts","../node_modules/@aws-amplify/auth/src/urlListener.ts","../node_modules/@aws-amplify/core/src/ClientDevice/browser.ts","../node_modules/@aws-amplify/core/src/ClientDevice/index.ts","../node_modules/@aws-amplify/core/src/Util/DateUtils.ts","../node_modules/@aws-amplify/core/src/Signer.ts","../node_modules/@aws-sdk/client-pinpoint/models/models_1.ts","../node_modules/@aws-sdk/client-pinpoint/protocols/Aws_restJson1.ts","../node_modules/@aws-sdk/client-pinpoint/commands/PutEventsCommand.ts","../node_modules/@aws-sdk/client-pinpoint/commands/UpdateEndpointCommand.ts","../node_modules/@aws-sdk/client-pinpoint/endpoints.ts","../node_modules/@aws-sdk/client-pinpoint/runtimeConfig.shared.ts","../node_modules/@aws-sdk/client-pinpoint/runtimeConfig.browser.ts","../node_modules/@aws-sdk/client-pinpoint/PinpointClient.ts","../node_modules/@aws-amplify/cache/src/Utils/CacheUtils.ts","../node_modules/@aws-amplify/cache/src/StorageCache.ts","../node_modules/@aws-amplify/cache/src/BrowserStorageCache.ts","../node_modules/@aws-amplify/cache/src/index.ts","../node_modules/@aws-amplify/analytics/src/Providers/EventBuffer.ts","../node_modules/@aws-amplify/analytics/src/Providers/AWSPinpointProvider.ts","../node_modules/@aws-amplify/analytics/src/utils/MethodEmbed.ts","../node_modules/@aws-amplify/analytics/src/trackers/PageViewTracker.ts","../node_modules/@aws-amplify/analytics/src/vendor/dom-utils/matches.ts","../node_modules/@aws-amplify/analytics/src/vendor/dom-utils/delegate.ts","../node_modules/@aws-amplify/analytics/src/vendor/dom-utils/closest.ts","../node_modules/@aws-amplify/analytics/src/vendor/dom-utils/parents.ts","../node_modules/@aws-amplify/analytics/src/trackers/EventTracker.ts","../node_modules/@aws-amplify/analytics/src/trackers/SessionTracker.ts","../node_modules/@aws-amplify/analytics/src/Analytics.ts","services/AuthProvider.tsx","../node_modules/clsx/dist/clsx.m.js","../node_modules/react-toastify/src/utils/propValidator.ts","../node_modules/react-toastify/src/utils/constant.ts","../node_modules/react-toastify/src/utils/cssTransition.tsx","../node_modules/react-toastify/src/utils/collapseToast.ts","../node_modules/react-toastify/src/core/eventManager.ts","../node_modules/react-toastify/src/hooks/useKeeper.ts","../node_modules/react-toastify/src/hooks/toastContainerReducer.ts","../node_modules/react-toastify/src/hooks/useToastContainer.ts","../node_modules/react-toastify/src/hooks/useToast.ts","../node_modules/react-toastify/src/components/CloseButton.tsx","../node_modules/react-toastify/src/components/ProgressBar.tsx","../node_modules/react-toastify/src/components/Toast.tsx","../node_modules/react-toastify/src/components/Transitions.tsx","../node_modules/react-toastify/src/components/ToastContainer.tsx","../node_modules/react-toastify/src/core/toast.tsx","helpers/functions/toasts.tsx","services/AuthHooks.tsx","components/NavBar.tsx","components/header/GraphTitle.tsx","../node_modules/@aws-amplify/api-rest/src/RestClient.ts","../node_modules/@aws-amplify/api-rest/src/RestAPI.ts","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/jsutils/isObjectLike.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/polyfills/symbols.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/location.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/printLocation.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/error/GraphQLError.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/error/syntaxError.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/kinds.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/jsutils/nodejsCustomInspectSymbol.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/jsutils/defineInspect.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/jsutils/invariant.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/ast.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/tokenKind.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/jsutils/inspect.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/jsutils/devAssert.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/jsutils/instanceOf.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/source.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/directiveLocation.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/blockString.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/lexer.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/parser.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/visitor.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/printer.mjs","../node_modules/@aws-amplify/core/src/constants.ts","../node_modules/zen-observable-ts/src/zenObservable.ts","../node_modules/@aws-amplify/pubsub/src/types/PubSub.ts","../node_modules/@aws-amplify/pubsub/src/Providers/PubSubProvider.ts","../node_modules/@aws-amplify/core/src/Util/Reachability.ts","../node_modules/@aws-amplify/pubsub/src/utils/ReachabilityMonitor/index.ts","../node_modules/@aws-amplify/pubsub/src/Providers/constants.ts","../node_modules/@aws-amplify/pubsub/src/utils/ConnectionStateMonitor.ts","../node_modules/@aws-amplify/pubsub/src/Providers/MqttOverWSProvider.ts","../node_modules/@aws-amplify/pubsub/src/Providers/AWSAppSyncProvider.ts","../node_modules/@aws-amplify/pubsub/node_modules/graphql/jsutils/isObjectLike.mjs","../node_modules/@aws-amplify/pubsub/node_modules/graphql/polyfills/symbols.mjs","../node_modules/@aws-amplify/pubsub/node_modules/graphql/language/location.mjs","../node_modules/@aws-amplify/pubsub/node_modules/graphql/language/printLocation.mjs","../node_modules/@aws-amplify/pubsub/node_modules/graphql/error/GraphQLError.mjs","../node_modules/@aws-amplify/core/src/I18n/I18n.ts","../node_modules/@aws-amplify/core/src/I18n/index.ts","../node_modules/@aws-amplify/core/src/index.ts","../node_modules/@aws-amplify/auth/src/index.ts","../node_modules/@aws-amplify/api-graphql/src/types/index.ts","../node_modules/@aws-amplify/pubsub/src/Providers/AWSAppSyncRealTimeProvider/index.ts","../node_modules/@aws-amplify/pubsub/src/PubSub.ts","../node_modules/@aws-amplify/api-graphql/src/GraphQLAPI.ts","../node_modules/@aws-amplify/api/src/API.ts","helpers/functions/getDatePages.ts","helpers/hooks/ComponentVisibleHooks.tsx","components/DatePicker.tsx","dataHandlers/versionHandler.tsx","../node_modules/axios-retry/dist/esm/index.js","services/spotifyService.ts","components/SearchSuggestion.tsx","components/header/InputBox.tsx","components/OuterTogger.tsx","helpers/functions/arrayOfObjects.ts","views/Mapping/Connection/ConnectionAddTargets.tsx","views/Mapping/Connection/ConnectionSearch.tsx","views/Mapping/Community/CommunitySearch.tsx","views/Mapping/Nettwerk/NettwerkSearch.tsx","views/Mapping/Genre/GenreSearch.tsx","dataHandlers/genresHandler.tsx","components/header/InputSearch.tsx","components/header/ArtistGraphHeader.tsx","components/Loading.tsx","components/settings/GenreItem.tsx","components/settings/ArtistDetail.tsx","components/settings/Checkbox.tsx","components/settings/FilterFollowerRange.js","components/settings/FilterContainer.tsx","components/settings/SettingsContainer.tsx","components/summary/SummaryPoint.tsx","components/summary/SummaryTitle.tsx","components/summary/Overview.tsx","components/toolTip/ToolTip.tsx","helpers/functions/graphHelpers.ts","components/summary/TopArtists.tsx","components/summary/TopGenres.tsx","components/summary/SummaryContainer.tsx","helpers/functions/filterHelpers.ts","components/graph/GraphHooks.tsx","components/settings/FilterHooks.tsx","dataHandlers/graphHandler.tsx","../node_modules/@antv/g6-core/es/behavior/behaviorOption.js","../node_modules/@antv/g6-core/es/behavior/behavior.js","../node_modules/@antv/g6-core/es/behavior/index.js","../node_modules/@antv/event-emitter/src/index.ts","../node_modules/@antv/algorithm/es/adjacent-matrix.js","../node_modules/@antv/algorithm/es/structs/linked-list.js","../node_modules/@antv/algorithm/es/structs/queue.js","../node_modules/@antv/algorithm/es/util.js","../node_modules/@antv/algorithm/es/bfs.js","../node_modules/@antv/algorithm/es/connected-component.js","../node_modules/@antv/algorithm/es/degree.js","../node_modules/@antv/algorithm/es/dfs.js","../node_modules/@antv/algorithm/es/detect-cycle.js","../node_modules/@antv/algorithm/es/dijkstra.js","../node_modules/@antv/algorithm/es/find-path.js","../node_modules/@antv/algorithm/es/floydWarshall.js","../node_modules/@antv/algorithm/es/label-propagation.js","../node_modules/@antv/algorithm/es/utils/vector.js","../node_modules/@antv/algorithm/es/constants/time.js","../node_modules/@antv/algorithm/es/utils/node-properties.js","../node_modules/@antv/algorithm/es/types.js","../node_modules/@antv/algorithm/es/utils/data-preprocessing.js","../node_modules/@antv/algorithm/es/louvain.js","../node_modules/@antv/algorithm/es/i-louvain.js","../node_modules/@antv/algorithm/es/k-core.js","../node_modules/@antv/algorithm/es/k-means.js","../node_modules/@antv/algorithm/es/cosine-similarity.js","../node_modules/@antv/algorithm/es/nodes-cosine-similarity.js","../node_modules/@antv/algorithm/es/structs/union-find.js","../node_modules/@antv/algorithm/es/structs/binary-heap.js","../node_modules/@antv/algorithm/es/mts.js","../node_modules/@antv/algorithm/es/pageRank.js","../node_modules/@antv/algorithm/es/gSpan/struct.js","../node_modules/@antv/algorithm/es/gSpan/gSpan.js","../node_modules/@antv/algorithm/es/gaddi.js","../node_modules/@antv/algorithm/es/structs/stack.js","../node_modules/@antv/algorithm/es/index.js","../node_modules/@antv/g6-core/es/util/math.js","../node_modules/@antv/g6-core/es/global.js","../node_modules/@antv/g6-core/es/util/letterAspectRatio.js","../node_modules/@antv/g6-core/es/util/graphic.js","../node_modules/@antv/g6-core/es/util/validation.js","../node_modules/@antv/g6-core/es/graph/controller/mode.js","../node_modules/@antv/g-base/src/util/path.ts","../node_modules/@antv/g-base/src/event/graph-event.ts","../node_modules/@antv/g-base/src/util/util.ts","../node_modules/@antv/g-base/src/abstract/base.ts","../node_modules/detect-browser/es/index.js","../node_modules/@antv/g-base/src/util/matrix.ts","../node_modules/@antv/g-base/src/abstract/element.ts","../node_modules/@antv/g-base/src/abstract/container.ts","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/@antv/g-base/node_modules/d3-interpolate/src/basis.js","../node_modules/@antv/g-base/node_modules/d3-interpolate/src/constant.js","../node_modules/@antv/g-base/node_modules/d3-interpolate/src/color.js","../node_modules/@antv/g-base/node_modules/d3-interpolate/src/rgb.js","../node_modules/@antv/g-base/node_modules/d3-interpolate/src/basisClosed.js","../node_modules/@antv/g-base/node_modules/d3-interpolate/src/numberArray.js","../node_modules/@antv/g-base/node_modules/d3-interpolate/src/array.js","../node_modules/@antv/g-base/node_modules/d3-interpolate/src/date.js","../node_modules/@antv/g-base/node_modules/d3-interpolate/src/number.js","../node_modules/@antv/g-base/node_modules/d3-interpolate/src/object.js","../node_modules/@antv/g-base/node_modules/d3-interpolate/src/string.js","../node_modules/@antv/g-base/node_modules/d3-interpolate/src/value.js","../node_modules/d3-ease/src/linear.js","../node_modules/d3-ease/src/quad.js","../node_modules/d3-ease/src/cubic.js","../node_modules/d3-ease/src/poly.js","../node_modules/d3-ease/src/sin.js","../node_modules/d3-ease/src/math.js","../node_modules/d3-ease/src/exp.js","../node_modules/d3-ease/src/circle.js","../node_modules/d3-ease/src/bounce.js","../node_modules/d3-ease/src/back.js","../node_modules/d3-ease/src/elastic.js","../node_modules/@antv/g-base/src/animate/register.ts","../node_modules/@antv/g-base/src/util/color.ts","../node_modules/@antv/g-base/src/animate/timeline.ts","../node_modules/@antv/g-base/src/event/event-contoller.ts","../node_modules/@antv/g-base/src/abstract/canvas.ts","../node_modules/@antv/g-base/src/abstract/group.ts","../node_modules/@antv/g-base/src/abstract/shape.ts","../node_modules/@antv/g-base/src/bbox/register.ts","../node_modules/@antv/g-base/src/bbox/rect.ts","../node_modules/@antv/g-base/src/bbox/circle.ts","../node_modules/@antv/g-math/src/util.ts","../node_modules/@antv/g-math/src/line.ts","../node_modules/@antv/g-math/src/bezier.ts","../node_modules/@antv/g-math/src/quadratic.ts","../node_modules/@antv/g-math/src/cubic.ts","../node_modules/@antv/g-math/src/arc.ts","../node_modules/@antv/g-math/src/segments.ts","../node_modules/@antv/g-math/src/polyline.ts","../node_modules/@antv/g-base/src/bbox/util.ts","../node_modules/@antv/g-base/src/util/offscreen.ts","../node_modules/@antv/g-base/src/util/text.ts","../node_modules/@antv/path-util/src/parse-path.ts","../node_modules/@antv/path-util/src/catmull-rom-2-bezier.ts","../node_modules/@antv/path-util/src/parse-path-string.ts","../node_modules/@antv/path-util/src/path-2-absolute.ts","../node_modules/@antv/path-util/src/process/arc-2-cubic.ts","../node_modules/@antv/path-util/src/get-arc-params.ts","../node_modules/@antv/path-util/src/path-2-segments.ts","../node_modules/@antv/g-base/src/bbox/path.ts","../node_modules/@antv/g-base/src/bbox/index.ts","../node_modules/@antv/g-base/src/bbox/polyline.ts","../node_modules/@antv/g-base/src/bbox/polygon.ts","../node_modules/@antv/g-base/src/bbox/text.ts","../node_modules/@antv/g-base/src/bbox/line.ts","../node_modules/@antv/g-base/src/bbox/ellipse.ts","../node_modules/@antv/g-base/src/index.ts","../node_modules/@antv/g6-core/es/interface/behavior.js","../node_modules/@antv/g6-core/es/util/base.js","../node_modules/@antv/g6-core/es/graph/controller/view.js","../node_modules/@antv/g6-core/es/element/xml.js","../node_modules/@antv/g6-core/es/element/shape.js","../node_modules/@antv/g6-core/es/item/item.js","../node_modules/@antv/g6-core/es/item/edge.js","../node_modules/@antv/g6-core/es/item/node.js","../node_modules/@antv/g6-core/es/item/combo.js","../node_modules/@antv/g6-core/es/graph/controller/item.js","../node_modules/@antv/g6-core/es/graph/controller/state.js","../node_modules/@antv/g6-core/es/util/path.js","../node_modules/@antv/g6-core/es/element/hull/convexHull.js","../node_modules/@antv/g6-core/es/element/hull/bubbleset.js","../node_modules/@antv/g6-core/es/item/hull.js","../node_modules/@antv/g6-core/es/graph/graph.js","../node_modules/@antv/g6-core/es/element/shapeBase.js","../node_modules/@antv/g6-core/es/element/node.js","../node_modules/@antv/g6-core/es/element/edge.js","../node_modules/@antv/g6-core/es/element/combo.js","../node_modules/@antv/g6-core/es/element/combos/circle.js","../node_modules/@antv/g6-core/es/element/combos/rect.js","../node_modules/@antv/g6-core/es/element/nodes/simple-circle.js","../node_modules/@antv/g6-core/es/element/nodes/simple-rect.js","../node_modules/@antv/g6-core/es/element/nodes/image.js","../node_modules/@antv/g6-core/es/element/arrow.js","../node_modules/@antv/g6-core/es/element/marker.js","../node_modules/@antv/g6-core/es/element/index.js","../node_modules/@antv/g6-core/es/util/color.js","../node_modules/@antv/g6-core/es/util/layout.js","../node_modules/@antv/g6-core/es/util/index.js","../node_modules/@antv/g6-core/es/graph/controller/layout.js","../node_modules/@antv/g6-core/es/graph/controller/event.js","../node_modules/@antv/g6-core/es/index.js","../node_modules/@antv/g-canvas/src/util/util.ts","../node_modules/@antv/g-canvas/src/util/parse.ts","../node_modules/@antv/g-canvas/src/util/arc-params.ts","../node_modules/@antv/g-canvas/src/util/arrow.ts","../node_modules/@antv/g-canvas/src/util/draw.ts","../node_modules/@antv/g-canvas/src/group.ts","../node_modules/@antv/g-canvas/src/shape/base.ts","../node_modules/@antv/g-canvas/src/shape/circle.ts","../node_modules/@antv/g-canvas/src/shape/ellipse.ts","../node_modules/@antv/g-canvas/src/shape/image.ts","../node_modules/@antv/g-canvas/src/util/in-stroke/line.ts","../node_modules/@antv/g-canvas/src/shape/line.ts","../node_modules/@antv/g-canvas/src/shape/marker.ts","../node_modules/@antv/g-canvas/src/util/in-path/point-in-path.ts","../node_modules/@antv/g-canvas/src/util/in-path/polygon.ts","../node_modules/@antv/g-canvas/src/util/in-stroke/arc.ts","../node_modules/@antv/g-canvas/src/util/path.ts","../node_modules/@antv/g-canvas/src/shape/path.ts","../node_modules/@antv/g-canvas/src/util/in-stroke/polyline.ts","../node_modules/@antv/g-canvas/src/shape/polygon.ts","../node_modules/@antv/g-canvas/src/shape/polyline.ts","../node_modules/@antv/g-canvas/src/shape/rect.ts","../node_modules/@antv/g-canvas/src/util/in-stroke/rect-radius.ts","../node_modules/@antv/g-canvas/src/util/in-stroke/rect.ts","../node_modules/@antv/g-canvas/src/shape/text.ts","../node_modules/@antv/g-canvas/src/util/hit.ts","../node_modules/@antv/g-canvas/src/canvas.ts","../node_modules/@antv/g-canvas/src/index.ts","../node_modules/@antv/g-svg/src/constant.ts","../node_modules/@antv/g-svg/src/util/dom.ts","../node_modules/@antv/g-svg/src/util/svg.ts","../node_modules/@antv/g-svg/src/util/draw.ts","../node_modules/@antv/g-svg/src/group.ts","../node_modules/@antv/g-svg/src/shape/base.ts","../node_modules/@antv/g-svg/src/shape/circle.ts","../node_modules/@antv/g-svg/src/shape/dom.ts","../node_modules/@antv/g-svg/src/shape/ellipse.ts","../node_modules/@antv/g-svg/src/shape/image.ts","../node_modules/@antv/g-svg/src/shape/line.ts","../node_modules/@antv/g-svg/src/shape/marker/symbols.ts","../node_modules/@antv/g-svg/src/shape/marker/index.ts","../node_modules/@antv/g-svg/src/shape/path.ts","../node_modules/@antv/g-svg/src/shape/polygon.ts","../node_modules/@antv/g-svg/src/shape/polyline.ts","../node_modules/@antv/g-svg/src/shape/rect.ts","../node_modules/@antv/g-svg/src/util/format.ts","../node_modules/@antv/g-svg/src/shape/text.ts","../node_modules/@antv/g-svg/src/defs/gradient.ts","../node_modules/@antv/g-svg/src/defs/shadow.ts","../node_modules/@antv/g-svg/src/defs/arrow.ts","../node_modules/@antv/g-svg/src/defs/clip.ts","../node_modules/@antv/g-svg/src/defs/pattern.ts","../node_modules/@antv/g-svg/src/defs/index.ts","../node_modules/@antv/g-svg/src/canvas.ts","../node_modules/@antv/g-svg/src/index.ts","../node_modules/tinycolor2/esm/tinycolor.js","../node_modules/@ant-design/colors/dist/index.esm.js","../node_modules/@antv/g6-pc/es/util/color.js","../node_modules/@antv/g6-pc/es/global.js","../node_modules/@antv/dom-util/src/add-event-listener.ts","../node_modules/@antv/g6-pc/es/graph/controller/event.js","../node_modules/@antv/g6-pc/es/util/layout.js","../node_modules/@antv/g6-pc/es/util/gpu.js","../node_modules/@antv/g6-pc/es/util/index.js","../node_modules/@antv/g6-pc/es/layout/tree-layout.js","../node_modules/@antv/g6-pc/es/layout/index.js","../node_modules/@antv/g6-pc/es/layout/worker/work.js","../node_modules/@antv/g6-pc/es/layout/worker/layout.js","../node_modules/@antv/g6-pc/es/layout/worker/layoutConst.js","../node_modules/@antv/g6-pc/es/graph/controller/layout.js","../node_modules/@antv/dom-util/src/create-dom.ts","../node_modules/@antv/g6-pc/es/graph/graph.js","../node_modules/@antv/g6-pc/es/graph/tree-graph.js","../node_modules/@antv/dom-util/src/modify-css.ts","../node_modules/@antv/g6-plugin/es/base.js","../node_modules/@antv/g6-plugin/es/grid/index.js","../node_modules/@antv/g6-plugin/es/menu/index.js","../node_modules/@antv/g6-plugin/es/minimap/index.js","../node_modules/@antv/g6-plugin/es/bundling/index.js","../node_modules/@antv/g6-plugin/es/fisheye/index.js","../node_modules/@antv/g6-plugin/es/toolBar/index.js","../node_modules/@antv/g6-plugin/es/tooltip/index.js","../node_modules/@antv/scale/src/tick-method/register.ts","../node_modules/@antv/scale/src/base.ts","../node_modules/@antv/scale/src/category/base.ts","../node_modules/fecha/src/fecha.ts","../node_modules/@antv/scale/src/util/time.ts","../node_modules/@antv/scale/src/util/bisector.ts","../node_modules/@antv/scale/src/category/time.ts","../node_modules/@antv/scale/src/continuous/base.ts","../node_modules/@antv/scale/src/continuous/linear.ts","../node_modules/@antv/scale/src/util/math.ts","../node_modules/@antv/scale/src/continuous/log.ts","../node_modules/@antv/scale/src/continuous/pow.ts","../node_modules/@antv/scale/src/continuous/time.ts","../node_modules/@antv/scale/src/continuous/quantize.ts","../node_modules/@antv/scale/src/continuous/quantile.ts","../node_modules/@antv/scale/src/factory.ts","../node_modules/@antv/scale/src/identity/index.ts","../node_modules/@antv/scale/src/tick-method/cat.ts","../node_modules/@antv/scale/src/util/d3-linear.ts","../node_modules/@antv/scale/src/util/interval.ts","../node_modules/@antv/scale/src/util/strict-limit.ts","../node_modules/@antv/scale/src/util/pretty-number.ts","../node_modules/@antv/scale/src/util/extended.ts","../node_modules/@antv/scale/src/util/pretty.ts","../node_modules/@antv/scale/src/tick-method/quantile.ts","../node_modules/@antv/scale/src/tick-method/time-pretty.ts","../node_modules/@antv/scale/src/tick-method/index.ts","../node_modules/@antv/scale/src/tick-method/time-cat.ts","../node_modules/@antv/scale/src/tick-method/linear.ts","../node_modules/@antv/scale/src/tick-method/r-prettry.ts","../node_modules/@antv/scale/src/tick-method/time.ts","../node_modules/@antv/scale/src/tick-method/log.ts","../node_modules/@antv/scale/src/tick-method/pow.ts","../node_modules/@antv/scale/src/tick-method/d3-linear.ts","../node_modules/@antv/scale/src/index.ts","../node_modules/@antv/g6-plugin/es/timeBar/path.js","../node_modules/@antv/g6-plugin/es/timeBar/trend.js","../node_modules/@antv/g6-plugin/es/timeBar/handler.js","../node_modules/@antv/g6-plugin/es/timeBar/constant.js","../node_modules/@antv/g6-plugin/es/timeBar/timeButton.js","../node_modules/@antv/g6-plugin/es/timeBar/controllerBtn.js","../node_modules/@antv/g6-plugin/es/timeBar/trendTimeBar.js","../node_modules/@antv/g6-plugin/es/timeBar/timeBarTooltip.js","../node_modules/@antv/g6-plugin/es/timeBar/timeBarSlice.js","../node_modules/@antv/g6-plugin/es/timeBar/index.js","../node_modules/@antv/g6-plugin/es/imageMinimap/index.js","../node_modules/@antv/g6-plugin/es/edgeFilterLens/index.js","../node_modules/@antv/g6-plugin/es/snapline/index.js","../node_modules/@antv/g6-plugin/es/legend/index.js","../node_modules/@antv/g6-plugin/es/annotation/index.js","../node_modules/@antv/g6-plugin/es/index.js","../node_modules/@antv/g6-pc/es/plugin/index.js","../node_modules/@antv/g6-element/es/nodes/circle.js","../node_modules/@antv/g6-element/es/nodes/rect.js","../node_modules/@antv/g6-element/es/nodes/ellipse.js","../node_modules/@antv/g6-element/es/nodes/diamond.js","../node_modules/@antv/g6-element/es/nodes/triangle.js","../node_modules/@antv/g6-element/es/nodes/modelRect.js","../node_modules/@antv/g6-element/es/nodes/star.js","../node_modules/@antv/g6-element/es/nodes/donut.js","../node_modules/@antv/g6-element/es/edges/polyline-util.js","../node_modules/@antv/g6-element/es/edges/router.js","../node_modules/@antv/g6-element/es/edges/polyline.js","../node_modules/@antv/g6-pc/es/behavior/drag-canvas.js","../node_modules/@antv/g6-pc/es/behavior/drag-node.js","../node_modules/@antv/g6-pc/es/behavior/activate-relations.js","../node_modules/@antv/g6-pc/es/behavior/brush-select.js","../node_modules/@antv/g6-pc/es/behavior/click-select.js","../node_modules/@antv/g6-pc/es/behavior/zoom-canvas.js","../node_modules/@antv/g6-pc/es/behavior/tooltip-base.js","../node_modules/@antv/g6-pc/es/behavior/tooltip.js","../node_modules/@antv/g6-pc/es/behavior/edge-tooltip.js","../node_modules/@antv/g6-pc/es/behavior/collapse-expand.js","../node_modules/@antv/g6-pc/es/behavior/drag-combo.js","../node_modules/@antv/g6-pc/es/behavior/collapse-expand-combo.js","../node_modules/@antv/g6-pc/es/behavior/lasso-select.js","../node_modules/@antv/g6-pc/es/behavior/create-edge.js","../node_modules/@antv/g6-pc/es/behavior/shortcuts-call.js","../node_modules/@antv/g6-pc/es/behavior/scroll-canvas.js","../node_modules/@antv/g6-pc/es/behavior/index.js","../node_modules/@antv/g6-pc/es/index.js","../node_modules/@antv/g6/es/index.js","helpers/functions/graphDataTransform.ts","components/graph/ExpandGraph.tsx","components/graph/GraphLegend.tsx","components/graph/Graph.tsx","components/graph/ArtistGraphContainer.tsx","constants/global.ts","views/Mapping/Community/CommunityContainer.tsx","views/Mapping/Genre/GenreContainer.tsx","views/Mapping/Connection/ConnectionContainer.tsx","views/Mapping/Nettwerk/NettwerkContainer.tsx","../node_modules/@aws-amplify/core/src/ServiceWorker/ServiceWorker.ts","../node_modules/@aws-sdk/client-s3/models/models_0.ts","../node_modules/@aws-sdk/xml-builder/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/xml-builder/src/escape-attribute.ts","../node_modules/@aws-sdk/xml-builder/src/XmlNode.ts","../node_modules/@aws-sdk/xml-builder/src/XmlText.ts","../node_modules/@aws-sdk/xml-builder/src/escape-element.ts","../node_modules/@aws-sdk/client-s3/protocols/Aws_restXml.ts","../node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/util-arn-parser/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/util-arn-parser/src/index.ts","../node_modules/@aws-sdk/middleware-bucket-endpoint/src/bucketHostnameUtils.ts","../node_modules/@aws-sdk/middleware-bucket-endpoint/src/bucketHostname.ts","../node_modules/@aws-sdk/middleware-bucket-endpoint/src/bucketEndpointMiddleware.ts","../node_modules/@aws-sdk/middleware-sdk-s3/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/middleware-sdk-s3/src/validate-bucket-name.ts","../node_modules/@aws-sdk/middleware-sdk-s3/src/use-regional-endpoint.ts","../node_modules/@aws-sdk/middleware-sdk-s3/src/throw-200-exceptions.ts","../node_modules/@aws-sdk/middleware-ssec/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/middleware-ssec/src/index.ts","../node_modules/@aws-sdk/client-s3/commands/CopyObjectCommand.ts","../node_modules/@aws-sdk/client-s3/commands/GetObjectCommand.ts","../node_modules/@aws-sdk/client-s3/commands/DeleteObjectCommand.ts","../node_modules/@aws-sdk/client-s3/commands/ListObjectsV2Command.ts","../node_modules/@aws-sdk/util-format-url/src/index.ts","../node_modules/@aws-sdk/util-create-request/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/util-create-request/src/index.ts","../node_modules/@aws-sdk/s3-request-presigner/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/s3-request-presigner/node_modules/@aws-sdk/signature-v4/src/constants.ts","../node_modules/@aws-sdk/s3-request-presigner/node_modules/@aws-sdk/signature-v4/src/credentialDerivation.ts","../node_modules/@aws-sdk/s3-request-presigner/node_modules/@aws-sdk/signature-v4/src/getCanonicalHeaders.ts","../node_modules/@aws-sdk/s3-request-presigner/node_modules/@aws-sdk/util-uri-escape/src/escape-uri.ts","../node_modules/@aws-sdk/s3-request-presigner/node_modules/@aws-sdk/signature-v4/src/getPayloadHash.ts","../node_modules/@aws-sdk/s3-request-presigner/node_modules/@aws-sdk/signature-v4/src/cloneRequest.ts","../node_modules/@aws-sdk/s3-request-presigner/node_modules/@aws-sdk/signature-v4/src/prepareRequest.ts","../node_modules/@aws-sdk/s3-request-presigner/node_modules/@aws-sdk/signature-v4/src/utilDate.ts","../node_modules/@aws-sdk/s3-request-presigner/node_modules/@aws-sdk/signature-v4/src/SignatureV4.ts","../node_modules/@aws-amplify/storage/src/common/StorageErrorStrings.ts","../node_modules/@aws-sdk/s3-request-presigner/node_modules/@aws-sdk/signature-v4/src/moveHeadersToQuery.ts","../node_modules/@aws-sdk/s3-request-presigner/node_modules/@aws-sdk/signature-v4/src/hasHeader.ts","../node_modules/@aws-sdk/s3-request-presigner/node_modules/@aws-sdk/signature-v4/src/getCanonicalQuery.ts","../node_modules/@aws-sdk/s3-request-presigner/src/presigner.ts","../node_modules/@aws-sdk/s3-request-presigner/src/constants.ts","../node_modules/@aws-amplify/storage/src/providers/axios-http-handler.ts","../node_modules/@aws-amplify/storage/src/common/StorageConstants.ts","../node_modules/@aws-amplify/storage/src/common/StorageUtils.ts","../node_modules/@aws-sdk/eventstream-marshaller/src/Int64.ts","../node_modules/@aws-sdk/eventstream-marshaller/src/HeaderMarshaller.ts","../node_modules/@aws-sdk/eventstream-marshaller/src/EventStreamMarshaller.ts","../node_modules/@aws-sdk/eventstream-marshaller/src/splitMessage.ts","../node_modules/@aws-sdk/eventstream-serde-browser/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/eventstream-serde-browser/node_modules/@aws-sdk/eventstream-serde-universal/src/EventStreamMarshaller.ts","../node_modules/@aws-sdk/eventstream-serde-browser/node_modules/@aws-sdk/eventstream-serde-universal/src/getChunkedStream.ts","../node_modules/@aws-sdk/eventstream-serde-browser/node_modules/@aws-sdk/eventstream-serde-universal/src/getUnmarshalledStream.ts","../node_modules/@aws-sdk/eventstream-serde-browser/src/EventStreamMarshaller.ts","../node_modules/@aws-sdk/eventstream-serde-browser/src/utils.ts","../node_modules/@aws-sdk/hash-blob-browser/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/chunked-blob-reader/src/index.ts","../node_modules/@aws-sdk/md5-js/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/md5-js/src/constants.ts","../node_modules/@aws-sdk/md5-js/src/index.ts","../node_modules/@aws-sdk/client-s3/endpoints.ts","../node_modules/@aws-sdk/client-s3/runtimeConfig.shared.ts","../node_modules/@aws-sdk/client-s3/runtimeConfig.browser.ts","../node_modules/@aws-sdk/eventstream-serde-browser/src/provider.ts","../node_modules/@aws-sdk/hash-blob-browser/src/index.ts","../node_modules/@aws-sdk/eventstream-serde-config-resolver/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/middleware-expect-continue/node_modules/tslib/tslib.es6.js","../node_modules/@aws-sdk/middleware-expect-continue/src/index.ts","../node_modules/@aws-sdk/client-s3/models/models_1.ts","../node_modules/@aws-sdk/client-s3/S3Client.ts","../node_modules/@aws-sdk/eventstream-serde-config-resolver/src/EventStreamSerdeConfig.ts","../node_modules/@aws-sdk/middleware-bucket-endpoint/src/configurations.ts","../node_modules/@aws-amplify/storage/src/common/S3ClientUtils.ts","../node_modules/@aws-sdk/client-s3/commands/PutObjectCommand.ts","../node_modules/@aws-sdk/client-s3/commands/CreateMultipartUploadCommand.ts","../node_modules/@aws-sdk/client-s3/commands/UploadPartCommand.ts","../node_modules/@aws-amplify/storage/src/providers/AWSS3UploadTask.ts","../node_modules/@aws-sdk/client-s3/commands/CompleteMultipartUploadCommand.ts","../node_modules/@aws-sdk/client-s3/commands/AbortMultipartUploadCommand.ts","../node_modules/@aws-sdk/client-s3/commands/ListPartsCommand.ts","../node_modules/@aws-amplify/storage/src/providers/AWSS3ProviderManagedUpload.ts","../node_modules/@aws-amplify/storage/src/providers/AWSS3Provider.ts","../node_modules/@aws-amplify/storage/src/Storage.ts","../node_modules/@aws-amplify/storage/src/index.ts","../node_modules/aws-amplify/src/index.ts","aws-exports.js","components/MappingTitle.tsx","views/Auth/SignupForm.tsx","views/Auth/LoginForm.tsx","views/Auth/HomeFooter.tsx","views/Auth/Home.tsx","services/PrivateRoute.jsx","components/UnknownPage.tsx","dataHandlers/scheduleAHandler.tsx","helpers/functions/JSONToCSVConvertor.js","helpers/functions/spotifyHelpers.ts","views/AnR/ScheduleA/ScheduleADocx.ts","views/AnR/ScheduleA/ScheduleAHooks.tsx","views/AnR/ScheduleA/ScheduleASearchArtist.tsx","components/Modal.tsx","views/AnR/ScheduleA/Explanation.tsx","../node_modules/@headlessui/react/dist/utils/env.js","../node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js","../node_modules/@headlessui/react/dist/hooks/use-event.js","../node_modules/@headlessui/react/dist/hooks/use-latest-value.js","../node_modules/@headlessui/react/dist/hooks/use-id.js","../node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js","../node_modules/@headlessui/react/dist/hooks/use-resolve-button-type.js","../node_modules/@headlessui/react/dist/hooks/use-sync-refs.js","../node_modules/@headlessui/react/dist/internal/open-closed.js","../node_modules/@headlessui/react/dist/utils/bugs.js","../node_modules/@headlessui/react/dist/utils/match.js","../node_modules/@headlessui/react/dist/utils/owner.js","../node_modules/@headlessui/react/dist/utils/class-names.js","../node_modules/@headlessui/react/dist/utils/render.js","../node_modules/@headlessui/react/dist/utils/start-transition.js","../node_modules/@headlessui/react/dist/components/keyboard.js","../node_modules/@headlessui/react/dist/components/disclosure/disclosure.js","views/AnR/ScheduleA/ScheduleABuilderContainer.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar adjMatrix = function adjMatrix(graphData, directed) {\n var nodes = graphData.nodes,\n edges = graphData.edges;\n var matrix = []; // map node with index in data.nodes\n\n var nodeMap = {};\n\n if (!nodes) {\n throw new Error(\"invalid nodes data!\");\n }\n\n if (nodes) {\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = i;\n var row = [];\n matrix.push(row);\n });\n }\n\n if (edges) {\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sIndex = nodeMap[source];\n var tIndex = nodeMap[target];\n if (!sIndex && sIndex !== 0 || !tIndex && tIndex !== 0) return;\n matrix[sIndex][tIndex] = 1;\n\n if (!directed) {\n matrix[tIndex][sIndex] = 1;\n }\n });\n }\n\n return matrix;\n};\n\nvar _default = adjMatrix;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"GADDIAsync\", {\n enumerable: true,\n get: function get() {\n return _index.GADDIAsync;\n }\n});\nObject.defineProperty(exports, \"connectedComponentAsync\", {\n enumerable: true,\n get: function get() {\n return _index.connectedComponentAsync;\n }\n});\nexports.default = void 0;\nObject.defineProperty(exports, \"detectAllCyclesAsync\", {\n enumerable: true,\n get: function get() {\n return _index.detectAllCyclesAsync;\n }\n});\nObject.defineProperty(exports, \"detectAllDirectedCycleAsync\", {\n enumerable: true,\n get: function get() {\n return _index.detectAllDirectedCycleAsync;\n }\n});\nObject.defineProperty(exports, \"detectAllUndirectedCycleAsync\", {\n enumerable: true,\n get: function get() {\n return _index.detectAllUndirectedCycleAsync;\n }\n});\nObject.defineProperty(exports, \"detectCycleAsync\", {\n enumerable: true,\n get: function get() {\n return _index.detectCycleAsync;\n }\n});\nexports.detectDirectedCycleAsync = void 0;\nObject.defineProperty(exports, \"dijkstraAsync\", {\n enumerable: true,\n get: function get() {\n return _index.dijkstraAsync;\n }\n});\nObject.defineProperty(exports, \"findAllPathAsync\", {\n enumerable: true,\n get: function get() {\n return _index.findAllPathAsync;\n }\n});\nObject.defineProperty(exports, \"findShortestPathAsync\", {\n enumerable: true,\n get: function get() {\n return _index.findShortestPathAsync;\n }\n});\nObject.defineProperty(exports, \"floydWarshallAsync\", {\n enumerable: true,\n get: function get() {\n return _index.floydWarshallAsync;\n }\n});\nObject.defineProperty(exports, \"getAdjMatrixAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getAdjMatrixAsync;\n }\n});\nObject.defineProperty(exports, \"getDegreeAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getDegreeAsync;\n }\n});\nObject.defineProperty(exports, \"getInDegreeAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getInDegreeAsync;\n }\n});\nObject.defineProperty(exports, \"getNeighborsAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getNeighborsAsync;\n }\n});\nObject.defineProperty(exports, \"getOutDegreeAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getOutDegreeAsync;\n }\n});\nObject.defineProperty(exports, \"labelPropagationAsync\", {\n enumerable: true,\n get: function get() {\n return _index.labelPropagationAsync;\n }\n});\nObject.defineProperty(exports, \"louvainAsync\", {\n enumerable: true,\n get: function get() {\n return _index.louvainAsync;\n }\n});\nObject.defineProperty(exports, \"minimumSpanningTreeAsync\", {\n enumerable: true,\n get: function get() {\n return _index.minimumSpanningTreeAsync;\n }\n});\nObject.defineProperty(exports, \"pageRankAsync\", {\n enumerable: true,\n get: function get() {\n return _index.pageRankAsync;\n }\n});\n\nvar _index = require(\"./workers/index\");\n\nvar detectDirectedCycleAsync = _index.detectCycleAsync;\nexports.detectDirectedCycleAsync = detectDirectedCycleAsync;\nvar _default = {\n getAdjMatrixAsync: _index.getAdjMatrixAsync,\n connectedComponentAsync: _index.connectedComponentAsync,\n getDegreeAsync: _index.getDegreeAsync,\n getInDegreeAsync: _index.getInDegreeAsync,\n getOutDegreeAsync: _index.getOutDegreeAsync,\n detectCycleAsync: _index.detectCycleAsync,\n detectDirectedCycleAsync: detectDirectedCycleAsync,\n detectAllCyclesAsync: _index.detectAllCyclesAsync,\n detectAllDirectedCycleAsync: _index.detectAllDirectedCycleAsync,\n detectAllUndirectedCycleAsync: _index.detectAllUndirectedCycleAsync,\n dijkstraAsync: _index.dijkstraAsync,\n findAllPathAsync: _index.findAllPathAsync,\n findShortestPathAsync: _index.findShortestPathAsync,\n floydWarshallAsync: _index.floydWarshallAsync,\n labelPropagationAsync: _index.labelPropagationAsync,\n louvainAsync: _index.louvainAsync,\n minimumSpanningTreeAsync: _index.minimumSpanningTreeAsync,\n pageRankAsync: _index.pageRankAsync,\n getNeighborsAsync: _index.getNeighborsAsync,\n GADDIAsync: _index.GADDIAsync\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _queue = _interopRequireDefault(require(\"./structs/queue\"));\n\nvar _util = require(\"./util\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n *\n * @param callbacks\n * allowTraversal: 确定 BFS 是否从顶点沿着边遍历到其邻居,默认情况下,同一个节点只能遍历一次\n * enterNode: 当 BFS 访问某个节点时调用\n * leaveNode: 当 BFS 访问访问结束某个节点时调用\n */\nfunction initCallbacks(callbacks) {\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n var initiatedCallback = callbacks;\n\n var stubCallback = function stubCallback() {};\n\n var allowTraversalCallback = function () {\n var seen = {};\n return function (_a) {\n var next = _a.next;\n var id = next;\n\n if (!seen[id]) {\n seen[id] = true;\n return true;\n }\n\n return false;\n };\n }();\n\n initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback;\n initiatedCallback.enter = callbacks.enter || stubCallback;\n initiatedCallback.leave = callbacks.leave || stubCallback;\n return initiatedCallback;\n}\n/**\n * 广度优先遍历图\n * @param graph Graph 图实例\n * @param startNode 开始遍历的节点\n * @param originalCallbacks 回调\n */\n\n\nvar breadthFirstSearch = function breadthFirstSearch(graphData, startNodeId, originalCallbacks, directed) {\n if (directed === void 0) {\n directed = true;\n }\n\n var callbacks = initCallbacks(originalCallbacks);\n var nodeQueue = new _queue.default();\n var _a = graphData.edges,\n edges = _a === void 0 ? [] : _a; // 初始化队列元素\n\n nodeQueue.enqueue(startNodeId);\n var previousNode = '';\n\n var _loop_1 = function _loop_1() {\n var currentNode = nodeQueue.dequeue();\n callbacks.enter({\n current: currentNode,\n previous: previousNode\n }); // 将所有邻居添加到队列中以便遍历\n\n (0, _util.getNeighbors)(currentNode, edges, directed ? 'target' : undefined).forEach(function (nextNode) {\n if (callbacks.allowTraversal({\n previous: previousNode,\n current: currentNode,\n next: nextNode\n })) {\n nodeQueue.enqueue(nextNode);\n }\n });\n callbacks.leave({\n current: currentNode,\n previous: previousNode\n }); // 下一次循环之前存储当前顶点\n\n previousNode = currentNode;\n }; // 遍历队列中的所有顶点\n\n\n while (!nodeQueue.isEmpty()) {\n _loop_1();\n }\n};\n\nvar _default = breadthFirstSearch;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getConnectedComponents;\nexports.detectStrongConnectComponents = exports.detectConnectedComponents = void 0;\n\nvar _util = require(\"./util\");\n\n/**\n * Generate all connected components for an undirected graph\n * @param graph\n */\nvar detectConnectedComponents = function detectConnectedComponents(graphData) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var allComponents = [];\n var visited = {};\n var nodeStack = [];\n\n var getComponent = function getComponent(node) {\n nodeStack.push(node);\n visited[node.id] = true;\n var neighbors = (0, _util.getNeighbors)(node.id, edges);\n\n var _loop_1 = function _loop_1(i) {\n var neighbor = neighbors[i];\n\n if (!visited[neighbor]) {\n var targetNode = nodes.filter(function (node) {\n return node.id === neighbor;\n });\n\n if (targetNode.length > 0) {\n getComponent(targetNode[0]);\n }\n }\n };\n\n for (var i = 0; i < neighbors.length; ++i) {\n _loop_1(i);\n }\n };\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n\n if (!visited[node.id]) {\n // 对于无向图进行dfs遍历,每一次调用后都得到一个连通分量\n getComponent(node);\n var component = [];\n\n while (nodeStack.length > 0) {\n component.push(nodeStack.pop());\n }\n\n allComponents.push(component);\n }\n }\n\n return allComponents;\n};\n/**\n * Tarjan's Algorithm 复杂度 O(|V|+|E|)\n * For directed graph only\n * a directed graph is said to be strongly connected if \"every vertex is reachable from every other vertex\".\n * refer: http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n * @param graph\n * @return a list of strongly connected components\n */\n\n\nexports.detectConnectedComponents = detectConnectedComponents;\n\nvar detectStrongConnectComponents = function detectStrongConnectComponents(graphData) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodeStack = [];\n var inStack = {}; // 辅助判断是否已经在stack中,减少查找开销\n\n var indices = {};\n var lowLink = {};\n var allComponents = [];\n var index = 0;\n\n var getComponent = function getComponent(node) {\n // Set the depth index for v to the smallest unused index\n indices[node.id] = index;\n lowLink[node.id] = index;\n index += 1;\n nodeStack.push(node);\n inStack[node.id] = true; // 考虑每个邻接点\n\n var neighbors = (0, _util.getNeighbors)(node.id, edges, 'target').filter(function (n) {\n return nodes.map(function (node) {\n return node.id;\n }).indexOf(n) > -1;\n });\n\n var _loop_2 = function _loop_2(i) {\n var targetNodeID = neighbors[i];\n\n if (!indices[targetNodeID] && indices[targetNodeID] !== 0) {\n var targetNode = nodes.filter(function (node) {\n return node.id === targetNodeID;\n });\n\n if (targetNode.length > 0) {\n getComponent(targetNode[0]);\n } // tree edge\n\n\n lowLink[node.id] = Math.min(lowLink[node.id], lowLink[targetNodeID]);\n } else if (inStack[targetNodeID]) {\n // back edge, target node is in the current SCC\n lowLink[node.id] = Math.min(lowLink[node.id], indices[targetNodeID]);\n }\n };\n\n for (var i = 0; i < neighbors.length; i++) {\n _loop_2(i);\n } // If node is a root node, generate an SCC\n\n\n if (lowLink[node.id] === indices[node.id]) {\n var component = [];\n\n while (nodeStack.length > 0) {\n var tmpNode = nodeStack.pop();\n inStack[tmpNode.id] = false;\n component.push(tmpNode);\n if (tmpNode === node) break;\n }\n\n if (component.length > 0) {\n allComponents.push(component);\n }\n }\n };\n\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var node = nodes_1[_i];\n\n if (!indices[node.id] && indices[node.id] !== 0) {\n getComponent(node);\n }\n }\n\n return allComponents;\n};\n\nexports.detectStrongConnectComponents = detectStrongConnectComponents;\n\nfunction getConnectedComponents(graphData, directed) {\n if (directed) return detectStrongConnectComponents(graphData);\n return detectConnectedComponents(graphData);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.secondReg = exports.dateReg = void 0;\nvar secondReg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/;\nexports.secondReg = secondReg;\nvar dateReg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2}) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})$/;\nexports.dateReg = dateReg;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getOutDegree = exports.getInDegree = exports.default = void 0;\n\nvar degree = function degree(graphData) {\n var degrees = {};\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n nodes.forEach(function (node) {\n degrees[node.id] = {\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n });\n edges.forEach(function (edge) {\n degrees[edge.source].degree++;\n degrees[edge.source].outDegree++;\n degrees[edge.target].degree++;\n degrees[edge.target].inDegree++;\n });\n return degrees;\n};\n\nvar _default = degree;\n/**\n * 获取指定节点的入度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\nexports.default = _default;\n\nvar getInDegree = function getInDegree(graphData, nodeId) {\n var nodeDegree = degree(graphData);\n\n if (nodeDegree[nodeId]) {\n return degree(graphData)[nodeId].inDegree;\n }\n\n return 0;\n};\n/**\n * 获取指定节点的出度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\n\nexports.getInDegree = getInDegree;\n\nvar getOutDegree = function getOutDegree(graphData, nodeId) {\n var nodeDegree = degree(graphData);\n\n if (nodeDegree[nodeId]) {\n return degree(graphData)[nodeId].outDegree;\n }\n\n return 0;\n};\n\nexports.getOutDegree = getOutDegree;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.detectAllUndirectedCycle = exports.detectAllDirectedCycle = exports.detectAllCycles = exports.default = void 0;\n\nvar _dfs = _interopRequireDefault(require(\"./dfs\"));\n\nvar _connectedComponent = _interopRequireWildcard(require(\"./connected-component\"));\n\nvar _util = require(\"./util\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar detectDirectedCycle = function detectDirectedCycle(graphData) {\n var cycle = null;\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a;\n var dfsParentMap = {}; // 所有没有被访问的节点集合\n\n var unvisitedSet = {}; // 正在被访问的节点集合\n\n var visitingSet = {}; // 所有已经被访问过的节点集合\n\n var visitedSet = {}; // 初始化 unvisitedSet\n\n nodes.forEach(function (node) {\n unvisitedSet[node.id] = node;\n });\n var callbacks = {\n enter: function enter(_a) {\n var currentNode = _a.current,\n previousNode = _a.previous;\n\n if (visitingSet[currentNode]) {\n // 如果当前节点正在访问中,则说明检测到环路了\n cycle = {};\n var currentCycleNode = currentNode;\n var previousCycleNode = previousNode;\n\n while (previousCycleNode !== currentNode) {\n cycle[currentCycleNode] = previousCycleNode;\n currentCycleNode = previousCycleNode;\n previousCycleNode = dfsParentMap[previousCycleNode];\n }\n\n cycle[currentCycleNode] = previousCycleNode;\n } else {\n // 如果不存在正在访问集合中,则将其放入正在访问集合,并从未访问集合中删除\n visitingSet[currentNode] = currentNode;\n delete unvisitedSet[currentNode]; // 更新 DSF parents 列表\n\n dfsParentMap[currentNode] = previousNode;\n }\n },\n leave: function leave(_a) {\n var currentNode = _a.current; // 如果所有的节点的子节点都已经访问过了,则从正在访问集合中删除掉,并将其移入到已访问集合中,\n // 同时也意味着当前节点的所有邻居节点都被访问过了\n\n visitedSet[currentNode] = currentNode;\n delete visitingSet[currentNode];\n },\n allowTraversal: function allowTraversal(_a) {\n var nextNode = _a.next; // 如果检测到环路则需要终止所有进一步的遍历,否则会导致无限循环遍历\n\n if (cycle) {\n return false;\n } // 仅允许遍历没有访问的节点,visitedSet 中的都已经访问过了\n\n\n return !visitedSet[nextNode];\n }\n }; // 开始遍历节点\n\n while (Object.keys(unvisitedSet).length) {\n // 从第一个节点开始进行 DFS 遍历\n var firsetUnVisitedKey = Object.keys(unvisitedSet)[0];\n (0, _dfs.default)(graphData, firsetUnVisitedKey, callbacks);\n }\n\n return cycle;\n};\n/**\n * 检测无向图中的所有Base cycles\n * refer: https://www.codeproject.com/Articles/1158232/Enumerating-All-Cycles-in-an-Undirected-Graph\n * @param graph\n * @param nodeIds 节点 ID 的数组\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: INode}] 返回一组base cycles\n */\n\n\nvar detectAllUndirectedCycle = function detectAllUndirectedCycle(graphData, nodeIds, include) {\n var _a, _b;\n\n if (include === void 0) {\n include = true;\n }\n\n var allCycles = [];\n var components = (0, _connectedComponent.default)(graphData, false); // loop through all connected components\n\n for (var _i = 0, components_1 = components; _i < components_1.length; _i++) {\n var component = components_1[_i];\n if (!component.length) continue;\n var root = component[0];\n var rootId = root.id;\n var stack = [root];\n var parent_1 = (_a = {}, _a[rootId] = root, _a);\n var used = (_b = {}, _b[rootId] = new Set(), _b); // walk a spanning tree to find cycles\n\n while (stack.length > 0) {\n var curNode = stack.pop();\n var curNodeId = curNode.id;\n var neighbors = (0, _util.getNeighbors)(curNodeId, graphData.edges);\n\n var _loop_1 = function _loop_1(i) {\n var _c;\n\n var neighborId = neighbors[i];\n var neighbor = graphData.nodes.find(function (node) {\n return node.id === neighborId;\n }); // const neighborId = neighbor.get('id');\n\n if (neighborId === curNodeId) {\n // 自环\n allCycles.push((_c = {}, _c[neighborId] = curNode, _c));\n } else if (!(neighborId in used)) {\n // visit a new node\n parent_1[neighborId] = curNode;\n stack.push(neighbor);\n used[neighborId] = new Set([curNode]);\n } else if (!used[curNodeId].has(neighbor)) {\n // a cycle found\n var cycleValid = true;\n var cyclePath = [neighbor, curNode];\n var p = parent_1[curNodeId];\n\n while (used[neighborId].size && !used[neighborId].has(p)) {\n cyclePath.push(p);\n if (p === parent_1[p.id]) break;else p = parent_1[p.id];\n }\n\n cyclePath.push(p);\n\n if (nodeIds && include) {\n // 如果有指定包含的节点\n cycleValid = false;\n\n if (cyclePath.findIndex(function (node) {\n return nodeIds.indexOf(node.id) > -1;\n }) > -1) {\n cycleValid = true;\n }\n } else if (nodeIds && !include) {\n // 如果有指定不包含的节点\n if (cyclePath.findIndex(function (node) {\n return nodeIds.indexOf(node.id) > -1;\n }) > -1) {\n cycleValid = false;\n }\n } // 把 node list 形式转换为 cycle 的格式\n\n\n if (cycleValid) {\n var cycle = {};\n\n for (var index = 1; index < cyclePath.length; index += 1) {\n cycle[cyclePath[index - 1].id] = cyclePath[index];\n }\n\n if (cyclePath.length) {\n cycle[cyclePath[cyclePath.length - 1].id] = cyclePath[0];\n }\n\n allCycles.push(cycle);\n }\n\n used[neighborId].add(curNode);\n }\n };\n\n for (var i = 0; i < neighbors.length; i += 1) {\n _loop_1(i);\n }\n }\n }\n\n return allCycles;\n};\n/**\n * Johnson's algorithm, 时间复杂度 O((V + E)(C + 1))$ and space bounded by O(V + E)\n * refer: https://www.cs.tufts.edu/comp/150GA/homeworks/hw1/Johnson%2075.PDF\n * refer: https://networkx.github.io/documentation/stable/_modules/networkx/algorithms/cycles.html#simple_cycles\n * @param graph\n * @param nodeIds 节点 ID 的数组\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: INode}] 返回所有的 simple cycles\n */\n\n\nexports.detectAllUndirectedCycle = detectAllUndirectedCycle;\n\nvar detectAllDirectedCycle = function detectAllDirectedCycle(graphData, nodeIds, include) {\n if (include === void 0) {\n include = true;\n }\n\n var path = []; // stack of nodes in current path\n\n var blocked = new Set();\n var B = []; // remember portions of the graph that yield no elementary circuit\n\n var allCycles = [];\n var idx2Node = {};\n var node2Idx = {}; // 辅助函数: unblock all blocked nodes\n\n var unblock = function unblock(thisNode) {\n var stack = [thisNode];\n\n while (stack.length > 0) {\n var node = stack.pop();\n\n if (blocked.has(node)) {\n blocked.delete(node);\n B[node.id].forEach(function (n) {\n stack.push(n);\n });\n B[node.id].clear();\n }\n }\n };\n\n var circuit = function circuit(node, start, adjList) {\n var closed = false; // whether a path is closed\n\n if (nodeIds && include === false && nodeIds.indexOf(node.id) > -1) return closed;\n path.push(node);\n blocked.add(node);\n var neighbors = adjList[node.id];\n\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = idx2Node[neighbors[i]];\n\n if (neighbor === start) {\n var cycle = {};\n\n for (var index = 1; index < path.length; index += 1) {\n cycle[path[index - 1].id] = path[index];\n }\n\n if (path.length) {\n cycle[path[path.length - 1].id] = path[0];\n }\n\n allCycles.push(cycle);\n closed = true;\n } else if (!blocked.has(neighbor)) {\n if (circuit(neighbor, start, adjList)) {\n closed = true;\n }\n }\n }\n\n if (closed) {\n unblock(node);\n } else {\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = idx2Node[neighbors[i]];\n\n if (!B[neighbor.id].has(node)) {\n B[neighbor.id].add(node);\n }\n }\n }\n\n path.pop();\n return closed;\n };\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a; // Johnson's algorithm 要求给节点赋顺序,先按节点在数组中的顺序\n\n for (var i = 0; i < nodes.length; i += 1) {\n var node = nodes[i];\n var nodeId = node.id;\n node2Idx[nodeId] = i;\n idx2Node[i] = node;\n } // 如果有指定包含的节点,则把指定节点排序在前,以便提早结束搜索\n\n\n if (nodeIds && include) {\n var _loop_2 = function _loop_2(i) {\n var nodeId = nodeIds[i];\n node2Idx[nodes[i].id] = node2Idx[nodeId];\n node2Idx[nodeId] = 0;\n idx2Node[0] = nodes.find(function (node) {\n return node.id === nodeId;\n });\n idx2Node[node2Idx[nodes[i].id]] = nodes[i];\n };\n\n for (var i = 0; i < nodeIds.length; i++) {\n _loop_2(i);\n }\n } // 返回 节点顺序 >= nodeOrder 的强连通分量的adjList\n\n\n var getMinComponentAdj = function getMinComponentAdj(components) {\n var _a;\n\n var minCompIdx;\n var minIdx = Infinity; // Find least component and the lowest node\n\n for (var i = 0; i < components.length; i += 1) {\n var comp = components[i];\n\n for (var j = 0; j < comp.length; j++) {\n var nodeIdx_1 = node2Idx[comp[j].id];\n\n if (nodeIdx_1 < minIdx) {\n minIdx = nodeIdx_1;\n minCompIdx = i;\n }\n }\n }\n\n var component = components[minCompIdx];\n var adjList = [];\n\n for (var i = 0; i < component.length; i += 1) {\n var node = component[i];\n adjList[node.id] = [];\n\n for (var _i = 0, _b = (0, _util.getNeighbors)(node.id, graphData.edges, 'target').filter(function (n) {\n return component.map(function (c) {\n return c.id;\n }).indexOf(n) > -1;\n }); _i < _b.length; _i++) {\n var neighbor = _b[_i]; // 对自环情况 (点连向自身) 特殊处理:记录自环,但不加入adjList\n\n if (neighbor === node.id && !(include === false && nodeIds.indexOf(node.id) > -1)) {\n allCycles.push((_a = {}, _a[node.id] = node, _a));\n } else {\n adjList[node.id].push(node2Idx[neighbor]);\n }\n }\n }\n\n return {\n component: component,\n adjList: adjList,\n minIdx: minIdx\n };\n };\n\n var nodeIdx = 0;\n\n while (nodeIdx < nodes.length) {\n var subgraphNodes = nodes.filter(function (n) {\n return node2Idx[n.id] >= nodeIdx;\n });\n var sccs = (0, _connectedComponent.detectStrongConnectComponents)({\n nodes: subgraphNodes,\n edges: graphData.edges\n }).filter(function (component) {\n return component.length > 1;\n });\n if (sccs.length === 0) break;\n var scc = getMinComponentAdj(sccs);\n var minIdx = scc.minIdx,\n adjList = scc.adjList,\n component = scc.component;\n\n if (component.length > 1) {\n component.forEach(function (node) {\n B[node.id] = new Set();\n });\n var startNode = idx2Node[minIdx]; // startNode 不在指定要包含的节点中,提前结束搜索\n\n if (nodeIds && include && nodeIds.indexOf(startNode.id) === -1) return allCycles;\n circuit(startNode, startNode, adjList);\n nodeIdx = minIdx + 1;\n } else {\n break;\n }\n }\n\n return allCycles;\n};\n/**\n * 查找图中所有满足要求的圈\n * @param graph\n * @param directed 是否为有向图\n * @param nodeIds 节点 ID 的数组,若不指定,则返回图中所有的圈\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: Node}] 包含所有环的数组,每个环用一个Object表示,其中key为节点id,value为该节点在环中指向的下一个节点\n */\n\n\nexports.detectAllDirectedCycle = detectAllDirectedCycle;\n\nvar detectAllCycles = function detectAllCycles(graphData, directed, nodeIds, include) {\n if (include === void 0) {\n include = true;\n }\n\n if (directed) return detectAllDirectedCycle(graphData, nodeIds, include);\n return detectAllUndirectedCycle(graphData, nodeIds, include);\n};\n\nexports.detectAllCycles = detectAllCycles;\nvar _default = detectDirectedCycle;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = depthFirstSearch;\n\nvar _util = require(\"./util\");\n\nfunction initCallbacks(callbacks) {\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n var initiatedCallback = callbacks;\n\n var stubCallback = function stubCallback() {};\n\n var allowTraversalCallback = function () {\n var seen = {};\n return function (_a) {\n var next = _a.next;\n\n if (!seen[next]) {\n seen[next] = true;\n return true;\n }\n\n return false;\n };\n }();\n\n initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback;\n initiatedCallback.enter = callbacks.enter || stubCallback;\n initiatedCallback.leave = callbacks.leave || stubCallback;\n return initiatedCallback;\n}\n/**\n * @param {Graph} graph\n * @param {GraphNode} currentNode\n * @param {GraphNode} previousNode\n * @param {Callbacks} callbacks\n */\n\n\nfunction depthFirstSearchRecursive(graphData, currentNode, previousNode, callbacks) {\n callbacks.enter({\n current: currentNode,\n previous: previousNode\n });\n var _a = graphData.edges,\n edges = _a === void 0 ? [] : _a;\n (0, _util.getNeighbors)(currentNode, edges, 'target').forEach(function (nextNode) {\n if (callbacks.allowTraversal({\n previous: previousNode,\n current: currentNode,\n next: nextNode\n })) {\n depthFirstSearchRecursive(graphData, nextNode, currentNode, callbacks);\n }\n });\n callbacks.leave({\n current: currentNode,\n previous: previousNode\n });\n}\n/**\n * 深度优先遍历图\n * @param data GraphData 图数据\n * @param startNodeId 开始遍历的节点的 ID\n * @param originalCallbacks 回调\n */\n\n\nfunction depthFirstSearch(graphData, startNodeId, callbacks) {\n depthFirstSearchRecursive(graphData, startNodeId, '', initCallbacks(callbacks));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _tslib = require(\"tslib\");\n\nvar _util = require(\"@antv/util\");\n\nvar _util2 = require(\"./util\");\n\nvar minVertex = function minVertex(D, nodes, marks) {\n // 找出最小的点\n var minDis = Infinity;\n var minNode;\n\n for (var i = 0; i < nodes.length; i++) {\n var nodeId = nodes[i].id;\n\n if (!marks[nodeId] && D[nodeId] <= minDis) {\n minDis = D[nodeId];\n minNode = nodes[i];\n }\n }\n\n return minNode;\n};\n\nvar dijkstra = function dijkstra(graphData, source, directed, weightPropertyName) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodeIds = [];\n var marks = {};\n var D = {};\n var prevs = {}; // key: 顶点, value: 顶点的前驱点数组(可能有多条等长的最短路径)\n\n nodes.forEach(function (node, i) {\n var id = node.id;\n nodeIds.push(id);\n D[id] = Infinity;\n if (id === source) D[id] = 0;\n });\n var nodeNum = nodes.length;\n\n var _loop_1 = function _loop_1(i) {\n // Process the vertices\n var minNode = minVertex(D, nodes, marks);\n var minNodeId = minNode.id;\n marks[minNodeId] = true;\n if (D[minNodeId] === Infinity) return \"continue\"; // Unreachable vertices cannot be the intermediate point\n\n var relatedEdges = [];\n if (directed) relatedEdges = (0, _util2.getOutEdgesNodeId)(minNodeId, edges);else relatedEdges = (0, _util2.getEdgesByNodeId)(minNodeId, edges);\n relatedEdges.forEach(function (edge) {\n var edgeTarget = edge.target;\n var edgeSource = edge.source;\n var w = edgeTarget === minNodeId ? edgeSource : edgeTarget;\n var weight = weightPropertyName && edge[weightPropertyName] ? edge[weightPropertyName] : 1;\n\n if (D[w] > D[minNode.id] + weight) {\n D[w] = D[minNode.id] + weight;\n prevs[w] = [minNode.id];\n } else if (D[w] === D[minNode.id] + weight) {\n prevs[w].push(minNode.id);\n }\n });\n };\n\n for (var i = 0; i < nodeNum; i++) {\n _loop_1(i);\n }\n\n prevs[source] = [source]; // 每个节点存可能存在多条最短路径\n\n var paths = {};\n\n for (var target in D) {\n if (D[target] !== Infinity) {\n findAllPaths(source, target, prevs, paths);\n }\n } // 兼容之前单路径\n\n\n var path = {};\n\n for (var target in paths) {\n path[target] = paths[target][0];\n }\n\n return {\n length: D,\n path: path,\n allPath: paths\n };\n};\n\nvar _default = dijkstra;\nexports.default = _default;\n\nfunction findAllPaths(source, target, prevs, foundPaths) {\n if (source === target) {\n return [source];\n }\n\n if (foundPaths[target]) {\n return foundPaths[target];\n }\n\n var paths = [];\n\n for (var _i = 0, _a = prevs[target]; _i < _a.length; _i++) {\n var prev = _a[_i];\n var prevPaths = findAllPaths(source, prev, prevs, foundPaths);\n if (!prevPaths) return;\n\n for (var _b = 0, prevPaths_1 = prevPaths; _b < prevPaths_1.length; _b++) {\n var prePath = prevPaths_1[_b];\n if ((0, _util.isArray)(prePath)) paths.push((0, _tslib.__spreadArray)((0, _tslib.__spreadArray)([], prePath, true), [target], false));else paths.push([prePath, target]);\n }\n }\n\n foundPaths[target] = paths;\n return foundPaths[target];\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.findShortestPath = exports.findAllPath = void 0;\n\nvar _dijkstra = _interopRequireDefault(require(\"./dijkstra\"));\n\nvar _util = require(\"./util\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar findShortestPath = function findShortestPath(graphData, start, end, directed, weightPropertyName) {\n var _a = (0, _dijkstra.default)(graphData, start, directed, weightPropertyName),\n length = _a.length,\n path = _a.path,\n allPath = _a.allPath;\n\n return {\n length: length[end],\n path: path[end],\n allPath: allPath[end]\n };\n};\n\nexports.findShortestPath = findShortestPath;\n\nvar findAllPath = function findAllPath(graphData, start, end, directed) {\n var _a;\n\n if (start === end) return [[start]];\n var _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var visited = [start];\n var isVisited = (_a = {}, _a[start] = true, _a);\n var stack = []; // 辅助栈,用于存储访问过的节点的邻居节点\n\n var allPath = [];\n var neighbors = directed ? (0, _util.getNeighbors)(start, edges, 'target') : (0, _util.getNeighbors)(start, edges);\n stack.push(neighbors);\n\n while (visited.length > 0 && stack.length > 0) {\n var children = stack[stack.length - 1];\n\n if (children.length) {\n var child = children.shift();\n\n if (child) {\n visited.push(child);\n isVisited[child] = true;\n neighbors = directed ? (0, _util.getNeighbors)(child, edges, 'target') : (0, _util.getNeighbors)(child, edges);\n stack.push(neighbors.filter(function (neighbor) {\n return !isVisited[neighbor];\n }));\n }\n } else {\n var node = visited.pop();\n isVisited[node] = false;\n stack.pop();\n continue;\n }\n\n if (visited[visited.length - 1] === end) {\n var path = visited.map(function (node) {\n return node;\n });\n allPath.push(path);\n var node = visited.pop();\n isVisited[node] = false;\n stack.pop();\n }\n }\n\n return allPath;\n};\n\nexports.findAllPath = findAllPath;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _adjacentMatrix = _interopRequireDefault(require(\"./adjacent-matrix\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar floydWarshall = function floydWarshall(graphData, directed) {\n var adjacentMatrix = (0, _adjacentMatrix.default)(graphData, directed);\n var dist = [];\n var size = adjacentMatrix.length;\n\n for (var i = 0; i < size; i += 1) {\n dist[i] = [];\n\n for (var j = 0; j < size; j += 1) {\n if (i === j) {\n dist[i][j] = 0;\n } else if (adjacentMatrix[i][j] === 0 || !adjacentMatrix[i][j]) {\n dist[i][j] = Infinity;\n } else {\n dist[i][j] = adjacentMatrix[i][j];\n }\n }\n } // floyd\n\n\n for (var k = 0; k < size; k += 1) {\n for (var i = 0; i < size; i += 1) {\n for (var j = 0; j < size; j += 1) {\n if (dist[i][j] > dist[i][k] + dist[k][j]) {\n dist[i][j] = dist[i][k] + dist[k][j];\n }\n }\n }\n }\n\n return dist;\n};\n\nvar _default = floydWarshall;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = require(\"@antv/util\");\n\nvar _struct = require(\"./struct\");\n\nvar DFSedge =\n/** @class */\nfunction () {\n function DFSedge(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) {\n this.fromNode = fromNode;\n this.toNode = toNode;\n this.nodeEdgeNodeLabel = {\n nodeLabel1: fromNodeLabel || _struct.VACANT_NODE_LABEL,\n edgeLabel: edgeLabel || _struct.VACANT_EDGE_LABEL,\n nodeLabel2: toNodeLabel || _struct.VACANT_NODE_LABEL\n };\n }\n\n DFSedge.prototype.equalTo = function (other) {\n return this.fromNode === other.formNode && this.toNode === other.toNode && this.nodeEdgeNodeLabel === other.nodeEdgeNodeLabel;\n };\n\n DFSedge.prototype.notEqualTo = function (other) {\n return !this.equalTo(other);\n };\n\n return DFSedge;\n}(); // DFScode 是 DESedge 的数组\n\n\nvar DFScode =\n/** @class */\nfunction () {\n function DFScode() {\n this.rmpath = [];\n this.dfsEdgeList = [];\n }\n\n DFScode.prototype.equalTo = function (other) {\n var aLength = this.dfsEdgeList.length;\n var bLength = other.length;\n if (aLength !== bLength) return false;\n\n for (var i = 0; i < aLength; i++) {\n if (this.dfsEdgeList[i] !== other[i]) return false;\n }\n\n return true;\n };\n\n DFScode.prototype.notEqualTo = function (other) {\n return !this.equalTo(other);\n };\n /** 增加一条 edge 到 DFScode */\n\n\n DFScode.prototype.pushBack = function (fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) {\n this.dfsEdgeList.push(new DFSedge(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel));\n return this.dfsEdgeList;\n };\n /** 根据 dfs 构建图 */\n\n\n DFScode.prototype.toGraph = function (graphId, directed) {\n if (graphId === void 0) {\n graphId = _struct.VACANT_GRAPH_ID;\n }\n\n if (directed === void 0) {\n directed = false;\n }\n\n var graph = new _struct.Graph(graphId, true, directed);\n this.dfsEdgeList.forEach(function (dfsEdge) {\n var fromNodeId = dfsEdge.fromNode;\n var toNodeId = dfsEdge.toNode;\n var _a = dfsEdge.nodeEdgeNodeLabel,\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n if (nodeLabel1 !== _struct.VACANT_NODE_LABEL) graph.addNode(fromNodeId, nodeLabel1);\n if (nodeLabel2 !== _struct.VACANT_NODE_LABEL) graph.addNode(toNodeId, nodeLabel2);\n if (nodeLabel1 !== _struct.VACANT_NODE_LABEL && nodeLabel2 !== nodeLabel1) graph.addEdge(undefined, fromNodeId, toNodeId, edgeLabel);\n });\n return graph;\n }; // 建立 rightmost path\n\n\n DFScode.prototype.buildRmpath = function () {\n this.rmpath = [];\n var oldFrom = undefined;\n var selfLength = this.dfsEdgeList.length;\n\n for (var i = selfLength - 1; i >= 0; i--) {\n var dfsEdge = this.dfsEdgeList[i];\n var fromNodeIdx = dfsEdge.fromNode;\n var toNodeIdx = dfsEdge.toNode;\n\n if (fromNodeIdx < toNodeIdx && (oldFrom === undefined || toNodeIdx === oldFrom)) {\n this.rmpath.push(i);\n oldFrom = fromNodeIdx;\n }\n }\n\n return this.rmpath;\n };\n\n DFScode.prototype.getNodeNum = function () {\n var nodeMap = {};\n this.dfsEdgeList.forEach(function (dfsEdge) {\n if (!nodeMap[dfsEdge.fromNode]) nodeMap[dfsEdge.fromNode] = true;\n if (!nodeMap[dfsEdge.toNode]) nodeMap[dfsEdge.toNode] = true;\n });\n return Object.keys(nodeMap).length;\n };\n\n return DFScode;\n}();\n\nvar History =\n/** @class */\nfunction () {\n function History(pdfs) {\n this.his = {};\n this.nodesUsed = {};\n this.edgesUsed = {};\n this.edges = [];\n if (!pdfs) return;\n\n while (pdfs) {\n var e = pdfs.edge;\n this.edges.push(e);\n this.nodesUsed[e.from] = 1;\n this.nodesUsed[e.to] = 1;\n this.edgesUsed[e.id] = 1;\n pdfs = pdfs.preNode;\n } // 倒序\n\n\n this.edges = this.edges.reverse();\n }\n\n History.prototype.hasNode = function (node) {\n return this.nodesUsed[node.id] === 1;\n };\n\n History.prototype.hasEdge = function (edge) {\n return this.edgesUsed[edge.id] === 1;\n };\n\n return History;\n}();\n\nvar GSpan =\n/** @class */\nfunction () {\n function GSpan(_a) {\n var graphs = _a.graphs,\n _b = _a.minSupport,\n minSupport = _b === void 0 ? 2 : _b,\n _c = _a.minNodeNum,\n minNodeNum = _c === void 0 ? 1 : _c,\n _d = _a.maxNodeNum,\n maxNodeNum = _d === void 0 ? 4 : _d,\n _e = _a.top,\n top = _e === void 0 ? 10 : _e,\n _f = _a.directed,\n directed = _f === void 0 ? false : _f,\n _g = _a.verbose,\n verbose = _g === void 0 ? false : _g; // -------- 第零步,初始化-------\n\n this.graphs = graphs;\n this.dfsCode = new DFScode();\n this.support = 0;\n this.frequentSize1Subgraphs = [];\n this.frequentSubgraphs = [];\n this.minSupport = minSupport;\n this.top = top;\n this.directed = directed;\n this.counter = 0; // TODO? timestamp = {}\n\n this.maxNodeNum = maxNodeNum;\n this.minNodeNum = minNodeNum;\n this.verbose = verbose;\n if (this.maxNodeNum < this.minNodeNum) this.maxNodeNum = this.minNodeNum;\n this.reportDF = []; // matrix\n } // Line 352\n\n\n GSpan.prototype.findForwardRootEdges = function (graph, fromNode) {\n var _this = this;\n\n var result = [];\n var nodeMap = graph.nodeMap;\n fromNode.edges.forEach(function (edge) {\n if (_this.directed || fromNode.label <= nodeMap[edge.to].label) result.push(edge);\n });\n return result;\n };\n\n GSpan.prototype.findBackwardEdge = function (graph, edge1, edge2, history) {\n if (!this.directed && edge1 === edge2) return null;\n var nodeMap = graph.nodeMap;\n var edge2To = nodeMap[edge2.to];\n var edge2ToEdges = edge2To.edges;\n var edgeLength = edge2ToEdges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edge2ToEdges[i];\n if (history.hasEdge(edge) || edge.to !== edge1.from) continue;\n\n if (!this.directed) {\n if (edge1.label < edge.label || edge1.label === edge.label && nodeMap[edge1.to].label <= nodeMap[edge2.to].label) {\n return edge;\n }\n } else {\n if (nodeMap[edge1.from].label < nodeMap[edge2.to].label || nodeMap[edge1.from].label === nodeMap[edge2.to].label && edge1.label <= edge.label) {\n return edge;\n }\n }\n }\n\n return null;\n };\n\n GSpan.prototype.findForwardPureEdges = function (graph, rightmostEdge, minNodeLabel, history) {\n var result = [];\n var rightmostEdgeToId = rightmostEdge.to;\n var edges = graph.nodeMap[rightmostEdgeToId].edges;\n var edgeLength = edges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var toNode = graph.nodeMap[edge.to];\n\n if (minNodeLabel <= toNode.label && !history.hasNode(toNode)) {\n result.push(edge);\n }\n }\n\n return result;\n };\n\n GSpan.prototype.findForwardRmpathEdges = function (graph, rightmostEdge, minNodeLabel, history) {\n var result = [];\n var nodeMap = graph.nodeMap;\n var toNodeLabel = nodeMap[rightmostEdge.to].label;\n var fromNode = nodeMap[rightmostEdge.from];\n var edges = fromNode.edges;\n var edgeLength = edges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var newToNodeLabel = nodeMap[edge.to].label;\n\n if (rightmostEdge.to === edge.to || minNodeLabel > newToNodeLabel || history.hasNode(nodeMap[edge.to])) {\n continue;\n }\n\n if (rightmostEdge.label < edge.label || rightmostEdge.label === edge.label && toNodeLabel <= newToNodeLabel) {\n result.push(edge);\n }\n }\n\n return result;\n };\n\n GSpan.prototype.getSupport = function (projected) {\n var graphMap = {};\n projected.forEach(function (pro) {\n if (!graphMap[pro.graphId]) graphMap[pro.graphId] = true;\n });\n return Object.keys(graphMap).length;\n };\n\n GSpan.prototype.findMinLabel = function (obj) {\n var minLabel = undefined;\n Object.keys(obj).forEach(function (nodeEdgeNodeLabel) {\n var _a = obj[nodeEdgeNodeLabel],\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n if (!minLabel) {\n minLabel = {\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n return;\n }\n\n if (nodeLabel1 < minLabel.nodeLabel1 || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel < minLabel.edgeLabel || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel === minLabel.edgeLabel && nodeLabel2 < minLabel.nodeLabel2) {\n minLabel = {\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n }\n });\n return minLabel;\n };\n\n GSpan.prototype.isMin = function () {\n var _this = this;\n\n var dfsCode = this.dfsCode;\n if (this.verbose) console.log(\"isMin checking\", dfsCode);\n if (dfsCode.dfsEdgeList.length === 1) return true;\n var directed = this.directed;\n var graph = dfsCode.toGraph(_struct.VACANT_GRAPH_ID, directed);\n var nodeMap = graph.nodeMap;\n var dfsCodeMin = new DFScode();\n var root = {};\n graph.nodes.forEach(function (node) {\n var forwardEdges = _this.findForwardRootEdges(graph, node);\n\n forwardEdges.forEach(function (edge) {\n var otherNode = nodeMap[edge.to];\n var nodeEdgeNodeLabel = \"\".concat(node.label, \"-\").concat(edge.label, \"-\").concat(otherNode.label);\n if (!root[nodeEdgeNodeLabel]) root[nodeEdgeNodeLabel] = {\n projected: [],\n nodeLabel1: node.label,\n edgeLabel: edge.label,\n nodeLabel2: otherNode.label\n };\n var pdfs = {\n graphId: graph.id,\n edge: edge,\n preNode: null\n };\n root[nodeEdgeNodeLabel].projected.push(pdfs);\n });\n }); // 比较 root 中每一项的 nodeEdgeNodeLabel 大小,按照 nodeLabel1、edgeLabe、nodeLabel2 的顺序比较\n\n var minLabel = this.findMinLabel(root); // line 419\n\n if (!minLabel) return;\n dfsCodeMin.dfsEdgeList.push(new DFSedge(0, 1, minLabel.nodeLabel1, minLabel.edgeLabel, minLabel.nodeLabel2)); // line 423\n\n var projectIsMin = function projectIsMin(projected) {\n // right most path\n var rmpath = dfsCodeMin.buildRmpath();\n var minNodeLabel = dfsCodeMin.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1;\n var maxToC = dfsCodeMin.dfsEdgeList[rmpath[0]].toNode; // node id\n\n var backwardRoot = {};\n var flag = false,\n newTo = 0;\n var end = directed ? -1 : 0; // 遍历到 1 还是到 0\n\n var _loop_1 = function _loop_1(i) {\n if (flag) return \"break\"; // line 435\n\n projected.forEach(function (p) {\n var history = new History(p);\n\n var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i]], history.edges[rmpath[0]], history);\n\n if (backwardEdge) {\n // Line 441\n if (!backwardRoot[backwardEdge.label]) {\n backwardRoot[backwardEdge.label] = {\n projected: [],\n edgeLabel: backwardEdge.label\n };\n }\n\n backwardRoot[backwardEdge.label].projected.push({\n graphId: graph.id,\n edge: backwardRoot,\n preNode: p\n });\n newTo = dfsCodeMin.dfsEdgeList[rmpath[i]].fromNode;\n flag = true;\n }\n });\n };\n\n for (var i = rmpath.length - 1; i > end; i--) {\n var state_1 = _loop_1(i);\n\n if (state_1 === \"break\") break;\n }\n\n if (flag) {\n var minBackwardEdgeLabel = _this.findMinLabel(backwardRoot);\n\n dfsCodeMin.dfsEdgeList.push(new DFSedge(maxToC, newTo, _struct.VACANT_NODE_LABEL, minBackwardEdgeLabel.edgeLabel, _struct.VACANT_NODE_LABEL));\n var idx_1 = dfsCodeMin.dfsEdgeList.length - 1;\n if (_this.dfsCode.dfsEdgeList[idx_1] !== dfsCodeMin.dfsEdgeList[idx_1]) return false;\n return projectIsMin(backwardRoot[minBackwardEdgeLabel.edgeLabel].projected);\n }\n\n var forwardRoot = {};\n flag = false;\n var newFrom = 0;\n projected.forEach(function (p) {\n var history = new History(p);\n\n var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history);\n\n if (forwardPureEdges.length > 0) {\n flag = true;\n newFrom = maxToC;\n forwardPureEdges.forEach(function (edge) {\n var key = \"\".concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: graph.id,\n edge: edge,\n preNode: p\n });\n });\n }\n });\n var pathLength = rmpath.length;\n\n var _loop_2 = function _loop_2(i) {\n if (flag) return \"break\";\n var value = rmpath[i];\n projected.forEach(function (p) {\n var history = new History(p);\n\n var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[value], minNodeLabel, history);\n\n if (forwardRmpathEdges.length > 0) {\n flag = true;\n newFrom = dfsCodeMin.dfsEdgeList[value].fromNode;\n forwardRmpathEdges.forEach(function (edge) {\n var key = \"\".concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: graph.id,\n edge: edge,\n preNode: p\n });\n });\n }\n });\n };\n\n for (var i = 0; i < pathLength; i++) {\n var state_2 = _loop_2(i);\n\n if (state_2 === \"break\") break;\n }\n\n if (!flag) return true;\n\n var forwardMinEdgeNodeLabel = _this.findMinLabel(forwardRoot);\n\n dfsCodeMin.dfsEdgeList.push(new DFSedge(newFrom, maxToC + 1, _struct.VACANT_NODE_LABEL, forwardMinEdgeNodeLabel.edgeLabel, forwardMinEdgeNodeLabel.nodeLabel2));\n var idx = dfsCodeMin.dfsEdgeList.length - 1;\n if (dfsCode.dfsEdgeList[idx] !== dfsCodeMin.dfsEdgeList[idx]) return false;\n return projectIsMin(forwardRoot[\"\".concat(forwardMinEdgeNodeLabel.edgeLabel, \"-\").concat(forwardMinEdgeNodeLabel.nodeLabel2)].projected);\n };\n\n var key = \"\".concat(minLabel.nodeLabel1, \"-\").concat(minLabel.edgeLabel, \"-\").concat(minLabel.nodeLabel2);\n return projectIsMin(root[key].projected);\n };\n\n GSpan.prototype.report = function () {\n if (this.dfsCode.getNodeNum() < this.minNodeNum) return;\n this.counter++;\n var graph = this.dfsCode.toGraph(this.counter, this.directed);\n this.frequentSubgraphs.push((0, _util.clone)(graph));\n };\n\n GSpan.prototype.subGraphMining = function (projected) {\n var _this = this;\n\n var support = this.getSupport(projected);\n if (support < this.minSupport) return;\n if (!this.isMin()) return;\n this.report();\n var nodeNum = this.dfsCode.getNodeNum();\n var rmpath = this.dfsCode.buildRmpath();\n var maxToC = this.dfsCode.dfsEdgeList[rmpath[0]].toNode;\n var minNodeLabel = this.dfsCode.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1;\n var forwardRoot = {};\n var backwardRoot = {};\n projected.forEach(function (p) {\n var graph = _this.graphs[p.graphId];\n var nodeMap = graph.nodeMap;\n var history = new History(p); // backward Line 526\n\n for (var i = rmpath.length - 1; i >= 0; i--) {\n var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i]], history.edges[rmpath[0]], history);\n\n if (backwardEdge) {\n var key = \"\".concat(_this.dfsCode.dfsEdgeList[rmpath[i]].fromNode, \"-\").concat(backwardEdge.label);\n if (!backwardRoot[key]) backwardRoot[key] = {\n projected: [],\n toNodeId: _this.dfsCode.dfsEdgeList[rmpath[i]].fromNode,\n edgeLabel: backwardEdge.label\n };\n backwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: backwardEdge,\n preNode: p\n });\n }\n } // pure forward\n\n\n if (nodeNum >= _this.maxNodeNum) return;\n\n var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history);\n\n forwardPureEdges.forEach(function (edge) {\n var key = \"\".concat(maxToC, \"-\").concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n fromNodeId: maxToC,\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: edge,\n preNode: p\n });\n });\n\n var _loop_3 = function _loop_3(i) {\n var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[rmpath[i]], minNodeLabel, history);\n\n forwardRmpathEdges.forEach(function (edge) {\n var key = \"\".concat(_this.dfsCode.dfsEdgeList[rmpath[i]].fromNode, \"-\").concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n fromNodeId: _this.dfsCode.dfsEdgeList[rmpath[i]].fromNode,\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: edge,\n preNode: p\n });\n });\n }; // rmpath forward\n\n\n for (var i = 0; i < rmpath.length; i++) {\n _loop_3(i);\n }\n }); // backward\n\n Object.keys(backwardRoot).forEach(function (key) {\n var _a = backwardRoot[key],\n toNodeId = _a.toNodeId,\n edgeLabel = _a.edgeLabel;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(maxToC, toNodeId, \"-1\", edgeLabel, \"-1\"));\n\n _this.subGraphMining(backwardRoot[key].projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n }); // forward\n\n Object.keys(forwardRoot).forEach(function (key) {\n var _a = forwardRoot[key],\n fromNodeId = _a.fromNodeId,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(fromNodeId, maxToC + 1, _struct.VACANT_NODE_LABEL, edgeLabel, nodeLabel2));\n\n _this.subGraphMining(forwardRoot[key].projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n });\n };\n\n GSpan.prototype.generate1EdgeFrequentSubGraphs = function () {\n var graphs = this.graphs;\n var directed = this.directed;\n var minSupport = this.minSupport;\n var frequentSize1Subgraphs = this.frequentSize1Subgraphs;\n var nodeLabelCounter = {},\n nodeEdgeNodeCounter = {}; // 保存各个图和各自节点的关系 map,key 格式为 graphKey-node类型\n\n var nodeLableCounted = {}; // 保存各个图和各自边的关系 map,key 格式为 graphKey-fromNode类型-edge类型-toNode类型\n\n var nodeEdgeNodeLabelCounted = {};\n Object.keys(graphs).forEach(function (key) {\n // Line 271\n var graph = graphs[key];\n var nodeMap = graph.nodeMap; // 遍历节点,记录对应图 与 每个节点的 label 到 nodeLableCounted\n\n graph.nodes.forEach(function (node, i) {\n // Line 272\n var nodeLabel = node.label;\n var graphNodeKey = \"\".concat(key, \"-\").concat(nodeLabel);\n\n if (!nodeLableCounted[graphNodeKey]) {\n var counter = nodeLabelCounter[nodeLabel] || 0;\n counter++;\n nodeLabelCounter[nodeLabel] = counter;\n }\n\n nodeLableCounted[graphNodeKey] = {\n graphKey: key,\n label: nodeLabel\n }; // 遍历该节点的所有边,记录各个图和各自边的关系到 nodeEdgeNodeLabelCounted. Line 276\n\n node.edges.forEach(function (edge) {\n var nodeLabel1 = nodeLabel;\n var nodeLabel2 = nodeMap[edge.to].label;\n\n if (!directed && nodeLabel1 > nodeLabel2) {\n var tmp = nodeLabel2;\n nodeLabel2 = nodeLabel1;\n nodeLabel1 = tmp;\n }\n\n var edgeLabel = edge.label;\n var graphNodeEdgeNodeKey = \"\".concat(key, \"-\").concat(nodeLabel1, \"-\").concat(edgeLabel, \"-\").concat(nodeLabel2);\n var nodeEdgeNodeKey = \"\".concat(nodeLabel1, \"-\").concat(edgeLabel, \"-\").concat(nodeLabel2);\n\n if (!nodeEdgeNodeCounter[nodeEdgeNodeKey]) {\n var counter = nodeEdgeNodeCounter[nodeEdgeNodeKey] || 0;\n counter++;\n nodeEdgeNodeCounter[nodeEdgeNodeKey] = counter; // Line281\n }\n\n nodeEdgeNodeLabelCounted[graphNodeEdgeNodeKey] = {\n graphId: key,\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n });\n });\n }); // 计算频繁的节点\n\n Object.keys(nodeLabelCounter).forEach(function (label) {\n var count = nodeLabelCounter[label];\n if (count < minSupport) return;\n var g = {\n nodes: [],\n edges: []\n };\n g.nodes.push({\n id: \"0\",\n label: label\n });\n frequentSize1Subgraphs.push(g); // if (minNodeNum <= 1) reportSize1 TODO\n });\n return frequentSize1Subgraphs;\n };\n\n GSpan.prototype.run = function () {\n var _this = this; // -------- 第一步, _generate_1edge_frequent_subgraphs:频繁的单个节点-------\n\n\n this.frequentSize1Subgraphs = this.generate1EdgeFrequentSubGraphs();\n if (this.maxNodeNum < 2) return;\n var graphs = this.graphs;\n var directed = this.directed; // PDFS 数组的 map Line 304\n\n var root = {};\n Object.keys(graphs).forEach(function (graphId) {\n var graph = graphs[graphId];\n var nodeMap = graph.nodeMap; // Line 306\n\n graph.nodes.forEach(function (node) {\n var forwardRootEdges = _this.findForwardRootEdges(graph, node); // Line 308\n\n\n forwardRootEdges.forEach(function (edge) {\n var toNode = nodeMap[edge.to];\n var nodeEdgeNodeLabel = \"\".concat(node.label, \"-\").concat(edge.label, \"-\").concat(toNode.label);\n if (!root[nodeEdgeNodeLabel]) root[nodeEdgeNodeLabel] = {\n projected: [],\n nodeLabel1: node.label,\n edgeLabel: edge.label,\n nodeLabel2: toNode.label\n };\n var pdfs = {\n graphId: graphId,\n edge: edge,\n preNode: null\n };\n root[nodeEdgeNodeLabel].projected.push(pdfs);\n });\n });\n }); // Line 313\n\n Object.keys(root).forEach(function (nodeEdgeNodeLabel) {\n var _a = root[nodeEdgeNodeLabel],\n projected = _a.projected,\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(0, 1, nodeLabel1, edgeLabel, nodeLabel2));\n\n _this.subGraphMining(projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n });\n };\n\n return GSpan;\n}();\n\nvar formatGraphs = function formatGraphs(graphs, directed, nodeLabelProp, edgeLabelProp) {\n var result = {};\n Object.keys(graphs).forEach(function (key, i) {\n var graph = graphs[key];\n var fGraph = new _struct.Graph(i, true, directed);\n var nodeIdxMap = {};\n graph.nodes.forEach(function (node, j) {\n fGraph.addNode(j, node[nodeLabelProp]);\n nodeIdxMap[node.id] = j;\n });\n graph.edges.forEach(function (edge, k) {\n var sourceIdx = nodeIdxMap[edge.source];\n var targetIdx = nodeIdxMap[edge.target];\n fGraph.addEdge(-1, sourceIdx, targetIdx, edge[edgeLabelProp]);\n });\n if (fGraph && fGraph.getNodeNum()) result[fGraph.id] = fGraph;\n });\n return result;\n};\n\nvar toGraphDatas = function toGraphDatas(graphs, nodeLabelProp, edgeLabelProp) {\n var result = [];\n graphs.forEach(function (graph) {\n var graphData = {\n nodes: [],\n edges: []\n };\n graph.nodes.forEach(function (node) {\n var _a;\n\n graphData.nodes.push((_a = {\n id: \"\".concat(node.id)\n }, _a[nodeLabelProp] = node.label, _a));\n });\n graph.edges.forEach(function (edge) {\n var _a;\n\n graphData.edges.push((_a = {\n source: \"\".concat(edge.from),\n target: \"\".concat(edge.to)\n }, _a[edgeLabelProp] = edge.label, _a));\n });\n result.push(graphData);\n });\n return result;\n};\n\nvar DEFAULT_LABEL_NAME = \"cluster\";\n/**\n * gSpan 频繁子图计算算法(frequent graph mining)\n * @param params 参数\n */\n\nvar gSpan = function gSpan(params) {\n // ------- 将图数据 GraphData 的 map 转换为格式 -------\n var graphs = params.graphs,\n _a = params.directed,\n directed = _a === void 0 ? false : _a,\n _b = params.nodeLabelProp,\n nodeLabelProp = _b === void 0 ? DEFAULT_LABEL_NAME : _b,\n _c = params.edgeLabelProp,\n edgeLabelProp = _c === void 0 ? DEFAULT_LABEL_NAME : _c;\n var formattedGraphs = formatGraphs(graphs, directed, nodeLabelProp, edgeLabelProp);\n var minSupport = params.minSupport,\n maxNodeNum = params.maxNodeNum,\n minNodeNum = params.minNodeNum,\n verbose = params.verbose,\n top = params.top; // ------- 初始化与执行算法 -------\n\n var algoParams = {\n graphs: formattedGraphs,\n minSupport: minSupport,\n maxNodeNum: maxNodeNum,\n minNodeNum: minNodeNum,\n top: top,\n verbose: verbose,\n directed: directed\n };\n var calculator = new GSpan(algoParams);\n calculator.run();\n var result = toGraphDatas(calculator.frequentSubgraphs, nodeLabelProp, edgeLabelProp);\n return result;\n};\n\nvar _default = gSpan;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VACANT_NODE_LABEL = exports.VACANT_NODE_ID = exports.VACANT_GRAPH_ID = exports.VACANT_EDGE_LABEL = exports.VACANT_EDGE_ID = exports.Node = exports.Graph = exports.Edge = exports.AUTO_EDGE_ID = void 0;\nvar VACANT_EDGE_ID = -1;\nexports.VACANT_EDGE_ID = VACANT_EDGE_ID;\nvar VACANT_NODE_ID = -1;\nexports.VACANT_NODE_ID = VACANT_NODE_ID;\nvar VACANT_EDGE_LABEL = \"-1\";\nexports.VACANT_EDGE_LABEL = VACANT_EDGE_LABEL;\nvar VACANT_NODE_LABEL = \"-1\";\nexports.VACANT_NODE_LABEL = VACANT_NODE_LABEL;\nvar VACANT_GRAPH_ID = -1;\nexports.VACANT_GRAPH_ID = VACANT_GRAPH_ID;\nvar AUTO_EDGE_ID = \"-1\";\nexports.AUTO_EDGE_ID = AUTO_EDGE_ID;\n\nvar Edge =\n/** @class */\nfunction () {\n function Edge(id, from, to, label) {\n if (id === void 0) {\n id = VACANT_EDGE_ID;\n }\n\n if (from === void 0) {\n from = VACANT_NODE_ID;\n }\n\n if (to === void 0) {\n to = VACANT_NODE_ID;\n }\n\n if (label === void 0) {\n label = VACANT_EDGE_LABEL;\n }\n\n this.id = id;\n this.from = from;\n this.to = to;\n this.label = label;\n }\n\n return Edge;\n}();\n\nexports.Edge = Edge;\n\nvar Node =\n/** @class */\nfunction () {\n function Node(id, label) {\n if (id === void 0) {\n id = VACANT_NODE_ID;\n }\n\n if (label === void 0) {\n label = VACANT_NODE_LABEL;\n }\n\n this.id = id;\n this.label = label;\n this.edges = [];\n this.edgeMap = {};\n }\n\n Node.prototype.addEdge = function (edge) {\n this.edges.push(edge);\n this.edgeMap[edge.id] = edge;\n };\n\n return Node;\n}();\n\nexports.Node = Node;\n\nvar Graph =\n/** @class */\nfunction () {\n function Graph(id, edgeIdAutoIncrease, directed) {\n if (id === void 0) {\n id = VACANT_NODE_ID;\n }\n\n if (edgeIdAutoIncrease === void 0) {\n edgeIdAutoIncrease = true;\n }\n\n if (directed === void 0) {\n directed = false;\n }\n\n this.id = id;\n this.edgeIdAutoIncrease = edgeIdAutoIncrease;\n this.edges = [];\n this.nodes = [];\n this.nodeMap = {};\n this.edgeMap = {};\n this.nodeLabelMap = {};\n this.edgeLabelMap = {};\n this.counter = 0;\n this.directed = directed;\n }\n\n Graph.prototype.getNodeNum = function () {\n return this.nodes.length;\n };\n\n Graph.prototype.addNode = function (id, label) {\n if (this.nodeMap[id]) return;\n var node = new Node(id, label);\n this.nodes.push(node);\n this.nodeMap[id] = node;\n if (!this.nodeLabelMap[label]) this.nodeLabelMap[label] = [];\n this.nodeLabelMap[label].push(id);\n };\n\n Graph.prototype.addEdge = function (id, from, to, label) {\n if (this.edgeIdAutoIncrease || id === undefined) id = this.counter++;\n if (this.nodeMap[from] && this.nodeMap[to] && this.nodeMap[to].edgeMap[id]) return;\n var edge = new Edge(id, from, to, label);\n this.edges.push(edge);\n this.edgeMap[id] = edge;\n this.nodeMap[from].addEdge(edge);\n if (!this.edgeLabelMap[label]) this.edgeLabelMap[label] = [];\n this.edgeLabelMap[label].push(edge);\n\n if (!this.directed) {\n var rEdge = new Edge(id, to, from, label);\n this.nodeMap[to].addEdge(rEdge);\n this.edgeLabelMap[label].push(rEdge);\n }\n };\n\n return Graph;\n}();\n\nexports.Graph = Graph;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _tslib = require(\"tslib\");\n\nvar _floydWarshall = _interopRequireDefault(require(\"./floydWarshall\"));\n\nvar _gSpan = _interopRequireDefault(require(\"./gSpan/gSpan\"));\n\nvar _dijkstra = _interopRequireDefault(require(\"./dijkstra\"));\n\nvar _util = require(\"./util\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 为 graphData 中每个节点生成邻居单元数组\n * @param graphData\n * @param spm\n * @param nodeLabelProp\n * @param k k-近邻\n */\nvar findKNeighborUnits = function findKNeighborUnits(graphData, spm, nodeLabelProp, k) {\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (k === void 0) {\n k = 2;\n }\n\n var units = [];\n var nodes = graphData.nodes;\n spm.forEach(function (row, i) {\n units.push(findKNeighborUnit(nodes, row, i, nodeLabelProp, k));\n });\n return units;\n};\n\nvar findKNeighborUnit = function findKNeighborUnit(nodes, row, i, nodeLabelProp, k) {\n var unitNodeIdxs = [i];\n var neighbors = [];\n var labelCountMap = {};\n row.forEach(function (v, j) {\n if (v <= k && i !== j) {\n unitNodeIdxs.push(j);\n neighbors.push(nodes[j]);\n var label = nodes[j][nodeLabelProp];\n if (!labelCountMap[label]) labelCountMap[label] = {\n count: 1,\n dists: [v]\n };else {\n labelCountMap[label].count++;\n labelCountMap[label].dists.push(v);\n }\n }\n }); // 将 labelCountMap 中的 dists 按照从小到大排序,方便后面使用\n\n Object.keys(labelCountMap).forEach(function (label) {\n labelCountMap[label].dists = labelCountMap[label].dists.sort(function (a, b) {\n return a - b;\n });\n });\n return {\n nodeIdx: i,\n nodeId: nodes[i].id,\n nodeIdxs: unitNodeIdxs,\n neighbors: neighbors,\n neighborNum: unitNodeIdxs.length - 1,\n nodeLabelCountMap: labelCountMap\n };\n};\n/**\n * 随机寻找点对,满足距离小于 k\n * @param k 参数 k,表示 k-近邻\n * @param nodeNum 参数 length\n * @param maxNodePairNum 寻找点对的数量不超过 maxNodePairNum\n * @param spm 最短路径矩阵\n */\n\n\nvar findNodePairsRandomly = function findNodePairsRandomly(k, nodeNum, maxNodePairNum, kNeighborUnits, spm) {\n // 每个节点需要随机找出的点对数\n var nodePairNumEachNode = Math.ceil(maxNodePairNum / nodeNum);\n var nodePairMap = {};\n var foundNodePairCount = 0; // 遍历节点,为每个节点随机找出 nodePairNumEachNode 个点对,满足距离小于 k。找到的点对数量超过 maxNodePairNum 或所有节点遍历结束时终止\n\n kNeighborUnits.forEach(function (unit, i) {\n // 若未达到 nodePairNumEachNode,或循环次数小于最大循环次数(2 * nodeNum),继续循环\n var nodePairForICount = 0;\n var outerLoopCount = 0;\n var neighbors = unit.nodeIdxs; // the first one is the center node\n\n var neighborNum = unit.neighborNum - 1;\n\n while (nodePairForICount < nodePairNumEachNode) {\n // 另一端节点在节点数组中的的 index\n var oidx = neighbors[1 + Math.floor(Math.random() * neighborNum)];\n var innerLoopCount = 0; // 若随机得到的另一端 idx 不符合条件,则继续 random。条件是不是同一个节点、这个点对没有被记录过、距离小于 k\n\n while (nodePairMap[\"\".concat(i, \"-\").concat(oidx)] || nodePairMap[\"\".concat(oidx, \"-\").concat(i)]) {\n oidx = Math.floor(Math.random() * nodeNum);\n innerLoopCount++;\n if (innerLoopCount > 2 * nodeNum) break; // 循环次数大于最大循环次数(2 * nodeNum)跳出循环,避免死循环\n }\n\n if (innerLoopCount < 2 * nodeNum) {\n // 未达到最大循环次数,说明找到了合适的另一端\n nodePairMap[\"\".concat(i, \"-\").concat(oidx)] = {\n start: i,\n end: oidx,\n distance: spm[i][oidx]\n };\n nodePairForICount++;\n foundNodePairCount++; // 如果当前找到的点对数量达到了上限,返回结果\n\n if (foundNodePairCount >= maxNodePairNum) return nodePairMap;\n }\n\n outerLoopCount++;\n if (outerLoopCount > 2 * nodeNum) break; // 循环次数大于最大循环次数(2 * nodeNum)跳出循环,避免死循环\n } // 这个节点没有找到足够 nodePairNumEachNode 的点对。更新 nodePairNumEachNode,让后续节点找更多的点对\n\n\n if (nodePairForICount < nodePairNumEachNode) {\n var gap = nodePairNumEachNode - nodePairForICount;\n nodePairNumEachNode = (nodePairNumEachNode + gap) / (nodeNum - i - 1);\n }\n });\n return nodePairMap;\n};\n/**\n * 计算所有 nodePairMap 中节点对的相交邻居诱导子图\n * @param nodePairMap 节点对 map,key 为 node1.id-node2.id,value 为 { startNodeIdx, endNodeIdx, distance }\n * @param neighborUnits 每个节点的邻居元数组\n * @param graphData 原图数据\n * @param edgeMap 边的 map,方便检索\n * @param cachedInducedGraphMap 缓存的结果,下次进入该函数将继续更新该缓存,若 key 在缓存中存在则不需要重复计算\n */\n\n\nvar getIntersectNeighborInducedGraph = function getIntersectNeighborInducedGraph(nodePairMap, neighborUnits, graphData, cachedInducedGraphMap) {\n var nodes = graphData.nodes;\n if (!cachedInducedGraphMap) cachedInducedGraphMap = {};\n Object.keys(nodePairMap).forEach(function (key) {\n var _a, _b;\n\n if (cachedInducedGraphMap && cachedInducedGraphMap[key]) return;\n cachedInducedGraphMap[key] = {\n nodes: [],\n edges: []\n };\n var pair = nodePairMap[key];\n var startUnitNodeIds = (_a = neighborUnits[pair.start]) === null || _a === void 0 ? void 0 : _a.nodeIdxs;\n var endUnitNodeIds = (_b = neighborUnits[pair.end]) === null || _b === void 0 ? void 0 : _b.nodeIdxs;\n if (!startUnitNodeIds || !endUnitNodeIds) return; // 不存在邻元,返回空图\n\n var endSet = new Set(endUnitNodeIds);\n var intersect = startUnitNodeIds.filter(function (x) {\n return endSet.has(x);\n }); // 可能会爆栈(在 1580 + 6 nodes full-connected 时出现)\n\n if (!intersect || !intersect.length) return; // 没有交集,返回空图\n\n var intersectIdMap = {};\n var intersectLength = intersect.length;\n\n for (var i = 0; i < intersectLength; i++) {\n var node = nodes[intersect[i]];\n cachedInducedGraphMap[key].nodes.push(node); // 将交集中的点加入诱导子图\n\n intersectIdMap[node.id] = true;\n } // 遍历所有边数据,如果边的两端都在交集中,将该边加入诱导子图\n\n\n graphData.edges.forEach(function (edge) {\n if (intersectIdMap[edge.source] && intersectIdMap[edge.target]) cachedInducedGraphMap[key].edges.push(edge);\n });\n });\n return cachedInducedGraphMap;\n};\n/**\n * 计算 strcutre 在 graph 上的匹配数量\n * @param graph 图数据\n * @param structure 目前支持只有两个节点一条边的最简单结构\n * @param nodeLabelProp 节点类型字段名\n * @param edgeLabelProp 边类型字段名\n */\n\n\nvar getMatchedCount = function getMatchedCount(graph, structure, nodeLabelProp, edgeLabelProp) {\n var _a, _b;\n\n var nodeMap = {};\n graph.nodes.forEach(function (node) {\n nodeMap[node.id] = node;\n });\n var count = 0;\n if (!((_a = structure === null || structure === void 0 ? void 0 : structure.edges) === null || _a === void 0 ? void 0 : _a.length) || ((_b = structure === null || structure === void 0 ? void 0 : structure.nodes) === null || _b === void 0 ? void 0 : _b.length) < 2) return 0;\n graph.edges.forEach(function (e) {\n var sourceLabel = nodeMap[e.source][nodeLabelProp];\n var targetLabel = nodeMap[e.target][nodeLabelProp];\n var strNodeLabel1 = structure === null || structure === void 0 ? void 0 : structure.nodes[0][nodeLabelProp];\n var strNodeLabel2 = structure === null || structure === void 0 ? void 0 : structure.nodes[1][nodeLabelProp];\n var strEdgeLabel = structure === null || structure === void 0 ? void 0 : structure.edges[0][edgeLabelProp];\n if (e[edgeLabelProp] !== strEdgeLabel) return;\n\n if (sourceLabel === strNodeLabel1 && targetLabel === strNodeLabel2 || sourceLabel === strNodeLabel2 && targetLabel === strNodeLabel1) {\n count++;\n }\n });\n return count;\n};\n/**\n * structures 中寻找最具有代表性的一个。这个结构是使得 matchedCountMap 的分组方式类内间距最小,类间间距最大\n * @param matchedCountMap 每个 structure 分类后的各图匹配数量,格式 { [strcture.idx]: { [interInducedGraphKey]: count } }\n * @param structureNum strcuture 个数,与 matchedCountMap.length 对应\n * @param structures\n */\n\n\nvar findRepresentStructure = function findRepresentStructure(matchedCountMap, structureNum, structures) {\n var maxOffset = Infinity,\n representClusterType = 0;\n\n var _loop_1 = function _loop_1(i) {\n // 一种分组的 map,key 是 intGraph 的 key,value 是 structures[i] 的匹配个数\n var countMapI = matchedCountMap[i]; // 按照 value 为该组排序,生成 keys 的数组:\n\n var sortedGraphKeys = Object.keys(countMapI).sort(function (a, b) {\n return countMapI[a] - countMapI[b];\n }); // 共 100 个 graphKeys,将 graphKeys 按顺序分为 groupNum 组\n\n var groupNum = 10;\n var clusters = []; // 总共有 groupNum 个项\n\n sortedGraphKeys.forEach(function (key, j) {\n if (!clusters[j % groupNum]) clusters[j % groupNum] = {\n graphs: [],\n totalCount: 0,\n aveCount: 0\n };\n clusters[j % groupNum].graphs.push(key);\n clusters[j % groupNum].totalCount += countMapI[key];\n }); // 计算 cluster 与 cluster 之间的距离 innerDist,每个 cluster 内部的距离 intraDist\n\n var aveIntraDist = 0; // 该类的类内平均值\n\n var aveCounts = []; // 类内平均匹配数量,将用于计算类间距离\n\n clusters.forEach(function (graphsInCluster) {\n // 类内均值\n var aveCount = graphsInCluster.totalCount / graphsInCluster.graphs.length;\n graphsInCluster.aveCount = aveCount;\n aveCounts.push(aveCount); // 对于每类,计算类内间距平均值\n\n var aveIntraPerCluster = 0;\n var graphsNum = graphsInCluster.length;\n graphsInCluster.graphs.forEach(function (graphKey1, j) {\n var graph1Count = countMapI[graphKey1];\n graphsInCluster.graphs.forEach(function (graphKey2, k) {\n if (j === k) return;\n aveIntraPerCluster += Math.abs(graph1Count - countMapI[graphKey2]);\n });\n });\n aveIntraPerCluster /= graphsNum * (graphsNum - 1) / 2;\n aveIntraDist += aveIntraPerCluster;\n });\n aveIntraDist /= clusters.length; // 用类内均值计算类间距\n\n var aveInterDist = 0; // 类间间距平均值\n\n aveCounts.forEach(function (aveCount1, j) {\n aveCounts.forEach(function (aveCount2, k) {\n if (j === k) return;\n aveInterDist += Math.abs(aveCount1 - aveCount2);\n });\n aveInterDist /= aveCounts.length * (aveCounts.length - 1) / 2;\n }); // 寻找 (类间间距均值-类内间距均值) 最大的一种分组方式(对应的 structure 就是最终要找的唯一 DS(G))\n\n var offset = aveInterDist - aveIntraDist;\n\n if (maxOffset < offset) {\n maxOffset = offset;\n representClusterType = i;\n }\n };\n\n for (var i = 0; i < structureNum; i++) {\n _loop_1(i);\n }\n\n return {\n structure: structures[representClusterType],\n structureCountMap: matchedCountMap[representClusterType]\n };\n};\n\nvar getNodeMaps = function getNodeMaps(nodes, nodeLabelProp) {\n var nodeMap = {},\n nodeLabelMap = {};\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = {\n idx: i,\n node: node,\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n var label = node[nodeLabelProp];\n if (!nodeLabelMap[label]) nodeLabelMap[label] = [];\n nodeLabelMap[label].push(node);\n });\n return {\n nodeMap: nodeMap,\n nodeLabelMap: nodeLabelMap\n };\n};\n\nvar getEdgeMaps = function getEdgeMaps(edges, edgeLabelProp, nodeMap) {\n var edgeMap = {},\n edgeLabelMap = {};\n edges.forEach(function (edge, i) {\n edgeMap[\"\".concat(_util.uniqueId)] = {\n idx: i,\n edge: edge\n };\n var label = edge[edgeLabelProp];\n if (!edgeLabelMap[label]) edgeLabelMap[label] = [];\n edgeLabelMap[label].push(edge);\n var sourceNode = nodeMap[edge.source];\n\n if (sourceNode) {\n sourceNode.degree++;\n sourceNode.outDegree++;\n }\n\n var targetNode = nodeMap[edge.target];\n\n if (targetNode) {\n targetNode.degree++;\n targetNode.inDegree++;\n }\n });\n return {\n edgeMap: edgeMap,\n edgeLabelMap: edgeLabelMap\n };\n};\n/**\n * 输出最短路径的 map,key 为 sourceNode.id-targetNode.id,value 为这两个节点的最短路径长度\n * @param nodes\n * @param spm\n * @param directed\n */\n\n\nvar getSpmMap = function getSpmMap(nodes, spm, directed) {\n var length = spm.length;\n var map = {};\n spm.forEach(function (row, i) {\n var start = directed ? 0 : i + 1;\n var iId = nodes[i].id;\n\n for (var j = start; j < length; j++) {\n if (i === j) continue;\n var jId = nodes[j].id;\n var dist = row[j];\n map[\"\".concat(iId, \"-\").concat(jId)] = dist;\n if (!directed) map[\"\".concat(jId, \"-\").concat(iId)] = dist;\n }\n });\n return map;\n};\n/**\n * 计算一对节点(node1,node2)的 NDS 距离\n * @param graph 原图数据\n * @param node1\n * @param node2\n */\n\n\nvar getNDSDist = function getNDSDist(graph, node1, node2, nodeMap, spDist, kNeighborUnits, structure, nodeLabelProp, edgeLabelProp, cachedNDSMap, cachedInterInducedGraph) {\n var _a;\n\n var key = \"\".concat(node1.id, \"-\").concat(node2.id);\n if (cachedNDSMap && cachedNDSMap[key]) return cachedNDSMap[key];\n var interInducedGraph = cachedInterInducedGraph ? cachedInterInducedGraph[key] : undefined; // 若没有缓存相交邻居诱导子图,计算\n\n if (!interInducedGraph) {\n var pairMap = (_a = {}, _a[key] = {\n start: nodeMap[node1.id].idx,\n end: nodeMap[node2.id].idx,\n distance: spDist\n }, _a);\n cachedInterInducedGraph = getIntersectNeighborInducedGraph(pairMap, kNeighborUnits, graph, cachedInterInducedGraph);\n interInducedGraph = cachedInterInducedGraph[key];\n }\n\n return getMatchedCount(interInducedGraph, structure, nodeLabelProp, edgeLabelProp);\n};\n/**\n * 计算 pattern 上绩点的度数并存储到 minPatternNodeLabelDegreeMap\n */\n\n\nvar stashPatternNodeLabelDegreeMap = function stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap) {\n var _a, _b, _c;\n\n var minPatternNodeLabelDegree = (_a = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _a === void 0 ? void 0 : _a.degree;\n var minPatternNodeLabelInDegree = (_b = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _b === void 0 ? void 0 : _b.inDegree;\n var minPatternNodeLabelOutDegree = (_c = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _c === void 0 ? void 0 : _c.outDegree;\n\n if (minPatternNodeLabelDegreeMap[neighborLabel] === undefined) {\n minPatternNodeLabelDegree = Infinity;\n minPatternNodeLabelInDegree = Infinity;\n minPatternNodeLabelOutDegree = Infinity;\n patternNodeLabelMap[neighborLabel].forEach(function (patternNodeWithLabel) {\n var patternNodeDegree = patternNodeMap[patternNodeWithLabel.id].degree;\n if (minPatternNodeLabelDegree > patternNodeDegree) minPatternNodeLabelDegree = patternNodeDegree;\n var patternNodeInDegree = patternNodeMap[patternNodeWithLabel.id].inDegree;\n if (minPatternNodeLabelInDegree > patternNodeInDegree) minPatternNodeLabelInDegree = patternNodeInDegree;\n var patternNodeOutDegree = patternNodeMap[patternNodeWithLabel.id].outDegree;\n if (minPatternNodeLabelOutDegree > patternNodeOutDegree) minPatternNodeLabelOutDegree = patternNodeOutDegree;\n });\n minPatternNodeLabelDegreeMap[neighborLabel] = {\n degree: minPatternNodeLabelDegree,\n inDegree: minPatternNodeLabelInDegree,\n outDegree: minPatternNodeLabelOutDegree\n };\n }\n\n return {\n minPatternNodeLabelDegree: minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree: minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree: minPatternNodeLabelOutDegree\n };\n};\n/**\n * GADDI 模式匹配\n * @param graphData 原图数据\n * @param pattern 搜索图(需要在原图上搜索的模式)数据\n * @param directed 是否计算有向图,默认 false\n * @param k 参数 k,表示 k-近邻\n * @param length 参数 length\n * @param nodeLabelProp 节点数据中代表节点标签(分类信息)的属性名。默认为 cluster\n * @param edgeLabelProp 边数据中代表边标签(分类信息)的属性名。默认为 cluster\n */\n\n\nvar GADDI = function GADDI(graphData, pattern, directed, k, length, nodeLabelProp, edgeLabelProp) {\n var _a;\n\n if (directed === void 0) {\n directed = false;\n }\n\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (edgeLabelProp === void 0) {\n edgeLabelProp = 'cluster';\n }\n\n if (!graphData || !graphData.nodes) return; // 分为三步:\n // 0. 预计算:节点/边数,邻接矩阵、最短路径矩阵\n // 1. 处理原图 graphData。再分为 1~5 小步\n // 2. 匹配\n // console.log(\"----- stage-pre: preprocessing -------\");\n // -------- 第零步,预计算:节点/边数,邻接矩阵、最短路径矩阵-------\n\n var nodeNum = graphData.nodes.length;\n if (!nodeNum) return; // console.log(\"----- stage-pre.1: calc shortest path matrix for graph -------\");\n\n var spm = (0, _floydWarshall.default)(graphData, directed); // console.log(\n // \"----- stage-pre.2: calc shortest path matrix for pattern -------\"\n // );\n\n var patternSpm = (0, _floydWarshall.default)(pattern, directed); // console.log(\n // \"----- stage-pre.3: calc shortest path matrix map for graph -------\"\n // );\n\n var spmMap = getSpmMap(graphData.nodes, spm, directed); // console.log(\n // \"----- stage-pre.4: calc shortest path matrix map for pattern -------\"\n // );\n\n var patternSpmMap = getSpmMap(pattern.nodes, patternSpm, directed); // console.log(\"----- stage-pre.5: establish maps -------\");\n // 节点的 map,以 id 为 id 映射,方便后续快速检索\n\n var _b = getNodeMaps(graphData.nodes, nodeLabelProp),\n nodeMap = _b.nodeMap,\n nodeLabelMap = _b.nodeLabelMap;\n\n var _c = getNodeMaps(pattern.nodes, nodeLabelProp),\n patternNodeMap = _c.nodeMap,\n patternNodeLabelMap = _c.nodeLabelMap; // 计算节点度数\n\n\n getEdgeMaps(graphData.edges, edgeLabelProp, nodeMap);\n var patternEdgeLabelMap = getEdgeMaps(pattern.edges, edgeLabelProp, patternNodeMap).edgeLabelMap; // 若未指定 length,自动计算 pattern 半径(最短路径最大值)\n\n var patternSpmSpread = [];\n patternSpm === null || patternSpm === void 0 ? void 0 : patternSpm.forEach(function (row) {\n patternSpmSpread = patternSpmSpread.concat(row);\n });\n if (!length) length = Math.max.apply(Math, (0, _tslib.__spreadArray)((0, _tslib.__spreadArray)([], patternSpmSpread, false), [2], false));\n if (!k) k = length; // console.log(\"params\", directed, length, k);\n // console.log(\"----- stage-pre.6: calc k neighbor units -------\");\n // 计算每个节点的 k 邻元集合\n\n var kNeighborUnits = findKNeighborUnits(graphData, spm, nodeLabelProp, k);\n var patternKNeighborUnits = findKNeighborUnits(pattern, patternSpm, nodeLabelProp, k); // console.log(\n // \"----- stage0: going to processing graph and find intersect neighbor induced graphs -------\"\n // );\n // console.log(\"----- stage0.1: going to select random node pairs -------\");\n // -------- 第一步,处理原图 graphData-------\n // 1.1. 随机选择最多 100 个点对,满足距离小于 Length 和 k\n // 当 graphData 少于 20 个节点,则不能找出 100 个点对,只找出不多于 n(n-1)/2 个点对\n\n var maxNodePairNum = Math.min(100, nodeNum * (nodeNum - 1) / 2);\n var nodePairsMap = findNodePairsRandomly(k, nodeNum, maxNodePairNum, kNeighborUnits, spm); // console.log(\n // \"----- stage0.2: going to calculate intersect neighbor induced graphs -------\"\n // );\n // 1.2. 生成上面节点对的相应相交邻居诱导子图。格式为 {'beginNodeIdx-endNodeIdx': {nodes: [], edges: []}}\n\n var intGMap = getIntersectNeighborInducedGraph(nodePairsMap, kNeighborUnits, graphData); // 1.3. 使用 gSpan 算法(frequent graph mining)计算 ISIntG 的前 10 个频率最高的子结构(3-4条边)\n\n var top = 10,\n minSupport = 1,\n minNodeNum = 1,\n maxNodeNum = 4;\n var params = {\n graphs: intGMap,\n nodeLabelProp: nodeLabelProp,\n edgeLabelProp: edgeLabelProp,\n minSupport: minSupport,\n minNodeNum: minNodeNum,\n maxNodeNum: maxNodeNum,\n directed: directed\n }; // console.log(\n // \"----- stage1: (gSpan) going to find frequent structure dsG -------\"\n // );\n // console.log(\"----- stage1.1: going to run gSpan -------\");\n // 暂时假设生成的 sub structure 都只有一条边\n\n var freStructures = (0, _gSpan.default)(params).slice(0, top); // structureNum 可能小于 top\n\n var structureNum = freStructures.length; // 1.4. 计算上述 10 个子结构在 intGMap 中每个诱导子图的匹配个数\n\n var matchedCountMap = [];\n freStructures.forEach(function (structure, i) {\n matchedCountMap[i] = {};\n Object.keys(intGMap).forEach(function (key) {\n var graph = intGMap[key];\n var subStructureCount = getMatchedCount(graph, structure, nodeLabelProp, edgeLabelProp);\n matchedCountMap[i][key] = subStructureCount;\n });\n }); // console.log(\n // \"----- stage1.1: going to find the most represent strucutre -------\"\n // );\n // 1.5. 对于每个子结构,根据匹配个数为 intGMap 中的诱导子图分组,生成 structureNum 种分组\n // 计算每种分组的类间距和类内间距,找到类间距最大、类内间距最小的一种分组,这种分组对应的子结构被选为唯一代表性子结构 DS(G)\n\n var _d = findRepresentStructure(matchedCountMap, structureNum, freStructures),\n dsG = _d.structure,\n ndsDist = _d.structureCountMap; // -------- 第二步,匹配-------\n // 2.1 找到从 Q 中的一个节点作为起始节点,寻找 G 中的匹配。这个其实节点的标签可以在 G 中找到最多的节点\n\n\n var beginPNode = pattern.nodes[0],\n candidates = [],\n label = (_a = pattern.nodes[0]) === null || _a === void 0 ? void 0 : _a[nodeLabelProp],\n maxNodeNumWithSameLabel = -Infinity;\n pattern.nodes.forEach(function (node) {\n var pLabel = node[nodeLabelProp];\n var nodesWithSameLabel = nodeLabelMap[pLabel];\n\n if ((nodesWithSameLabel === null || nodesWithSameLabel === void 0 ? void 0 : nodesWithSameLabel.length) > maxNodeNumWithSameLabel) {\n maxNodeNumWithSameLabel = nodesWithSameLabel.length;\n candidates = nodesWithSameLabel;\n label = pLabel;\n beginPNode = node;\n }\n }); // console.log(\"----- stage2: going to find candidates -------\");\n // 全局缓存,避免重复计算\n\n var minPatternNodeLabelDegreeMap = {}; // key 是 label,value 是该 label 节点的最小度数\n\n var patternIntGraphMap = {},\n patternNDSDist = {},\n // key 为 node.id-node.id\n patternNDSDistMap = {}; // key 为 node.id-label2,value nds距离值数组(按从大到小排序,无需关心具体对应哪个 node2)\n // 2.2.2 对于 Q 中的另一个标签的 k 个节点,计算它们到 node 的最短路径以及 NDS 距离\n\n var patternSpDist = {};\n var patternSpDistBack = {};\n Object.keys(patternNodeLabelMap).forEach(function (label2, j) {\n patternSpDist[label2] = [];\n\n if (directed) {\n patternSpDistBack[label2] = [];\n }\n\n var maxDist = -Infinity;\n var patternNodesWithLabel2 = patternNodeLabelMap[label2];\n var patternNodePairMap = {};\n patternNodesWithLabel2.forEach(function (nodeWithLabel2) {\n var dist = patternSpmMap[\"\".concat(beginPNode.id, \"-\").concat(nodeWithLabel2.id)];\n dist && patternSpDist[label2].push(dist);\n if (maxDist < dist) maxDist = dist;\n patternNodePairMap[\"\".concat(beginPNode.id, \"-\").concat(nodeWithLabel2.id)] = {\n start: 0,\n end: patternNodeMap[nodeWithLabel2.id].idx,\n distance: dist\n };\n\n if (directed) {\n var distBack = patternSpmMap[\"\".concat(nodeWithLabel2.id, \"-\").concat(beginPNode.id)];\n distBack && patternSpDistBack[label2].push(distBack);\n }\n }); // spDist[label2] 按照从小到大排序\n\n patternSpDist[label2] = patternSpDist[label2].sort(function (a, b) {\n return a - b;\n });\n if (directed) patternSpDistBack[label2] = patternSpDistBack[label2].sort(function (a, b) {\n return a - b;\n }); // 计算 Q 中所有 label2 节点到 beginPNode 的 NDS 距离\n // 所有 label2 节点到 beginPNode 的邻居相交诱导子图:\n // key: node1.id-node2.id\n\n patternIntGraphMap = getIntersectNeighborInducedGraph(patternNodePairMap, patternKNeighborUnits, pattern, patternIntGraphMap); // pattern 中 beginNode 到当前 label2 节点 的 NDS 距离(数组,无需关心具体对应到哪个节点)\n\n var currentPatternNDSDistArray = [];\n Object.keys(patternNodePairMap).forEach(function (key) {\n if (patternNDSDist[key]) {\n currentPatternNDSDistArray.push(patternNDSDist[key]);\n return; // 缓存过则不需要再次计算\n }\n\n var patternIntGraph = patternIntGraphMap[key];\n patternNDSDist[key] = getMatchedCount(patternIntGraph, dsG, nodeLabelProp, edgeLabelProp);\n currentPatternNDSDistArray.push(patternNDSDist[key]);\n }); // 根据值为 currentPatternNDSDist 从大到小排序\n\n currentPatternNDSDistArray = currentPatternNDSDistArray.sort(function (a, b) {\n return b - a;\n });\n patternNDSDistMap[\"\".concat(beginPNode.id, \"-\").concat(label2)] = currentPatternNDSDistArray;\n if (label2 === label) return;\n var candidatesNum = (candidates === null || candidates === void 0 ? void 0 : candidates.length) || 0;\n\n var _loop_4 = function _loop_4(m) {\n var cNode = candidates[m]; // prune1:若 candidates 中节点 cNode 的 kNeighborUnits 中标签为 label2 的节点个数少于 pattern 中 label2 个数,删去它\n\n var graphNeighborUnit = kNeighborUnits[nodeMap[cNode.id].idx];\n var graphNeighborUnitCountMap = graphNeighborUnit.nodeLabelCountMap[label2];\n var patternLabel2Num = patternNodeLabelMap[label2].length;\n\n if (!graphNeighborUnitCountMap || graphNeighborUnitCountMap.count < patternLabel2Num) {\n candidates.splice(m, 1);\n return \"continue\";\n } // prune2:若 candidates 中节点 cNode 到 kNeighborUnits 中标签为 label2 的节点最短路径大于 patternSpDist[label2],删去它\n // (prune2 规则即:candidate 相关的最短路径的最大 spDist[label2].length 个,按照大小顺序依次和 patternSpDist[label2] 中的值比较,只要遇到一个是 G > Q 的,就删去这个 candidate)\n\n\n var prune2Invalid = false;\n\n for (var n = 0; n < patternLabel2Num; n++) {\n if (graphNeighborUnitCountMap.dists[n] > patternSpDist[label2][n]) {\n prune2Invalid = true;\n break;\n }\n }\n\n if (prune2Invalid) {\n candidates.splice(m, 1);\n return \"continue\";\n } // prune3:若 candidates 中节点 cNode 到 kNeighborUnits 中标签为 label2 的节点 NDS 距离小于 patternNDSDist[beginNode.id-label2],删去它\n // TODO:prune3,currentPatternNDSDistArray 与 currentNDSDist 的比较\n // 计算 G 中所有 label2 节点到 cNode 的 NDS 距离\n // 所有 label2 节点到 cNode 的邻居相交诱导子图:\n\n\n var cNodePairMap = {};\n graphNeighborUnit.neighbors.forEach(function (neighborNode) {\n var dist = spmMap[\"\".concat(cNode.id, \"-\").concat(neighborNode.id)];\n cNodePairMap[\"\".concat(cNode.id, \"-\").concat(neighborNode.id)] = {\n start: nodeMap[cNode.id].idx,\n end: nodeMap[neighborNode.id].idx,\n distance: dist\n };\n }); // 更新 intGMap\n\n intGMap = getIntersectNeighborInducedGraph(cNodePairMap, kNeighborUnits, graphData, intGMap); // candidate 到它周围 label2 节点的 NDS 距离, key 是 node.id-node.id\n\n var currentNDSDistArray = [];\n Object.keys(cNodePairMap).forEach(function (key) {\n if (ndsDist[key]) {\n currentNDSDistArray.push(ndsDist[key]);\n return; // 缓存过则不需要再次计算\n }\n\n var intGraph = intGMap[key];\n ndsDist[key] = getMatchedCount(intGraph, dsG, nodeLabelProp, edgeLabelProp);\n currentNDSDistArray.push(ndsDist[key]);\n }); // 根据值为 currentNDSDistArray 从大到小排序\n\n currentNDSDistArray = currentNDSDistArray.sort(function (a, b) {\n return b - a;\n });\n var prune3Invalid = false;\n\n for (var n = 0; n < patternLabel2Num; n++) {\n if (currentNDSDistArray[n] < currentPatternNDSDistArray[n]) {\n prune3Invalid = true;\n break;\n }\n }\n\n if (prune3Invalid) {\n candidates.splice(m, 1);\n return \"continue\";\n }\n };\n\n for (var m = candidatesNum - 1; m >= 0; m--) {\n _loop_4(m);\n }\n });\n var candidateGraphs = []; // console.log(\n // \"----- stage3: going to splice neighbors for each candidate graph -------\"\n // );\n // candidates 经过筛选后,以每个 candidate 为中心,生成 Length-neighbor 的邻居诱导子图\n // 并在诱导子图中去除不可能在 Q 上找到匹配的点:在 Q 上不存在的 label,其他 label 到 candidate 的最大最短距离符合 Q、NDS 距离符合 Q\n\n candidates === null || candidates === void 0 ? void 0 : candidates.forEach(function (candidate) {\n var nodeIdx = nodeMap[candidate.id].idx;\n var lengthNeighborUnit = findKNeighborUnit(graphData.nodes, spm[nodeIdx], nodeIdx, nodeLabelProp, length);\n var neighborNodes = lengthNeighborUnit.neighbors; // 删除不可能找到匹配的邻居点\n\n var neighborNum = neighborNodes.length;\n var unmatched = false;\n\n for (var i = neighborNum - 1; i >= 0; i--) {\n // 如果通过裁剪,符合条件的节点数量已过少,说明不能匹配这个 candidate 相关的图\n if (neighborNodes.length + 1 < pattern.nodes.length) {\n unmatched = true;\n return;\n }\n\n var neighborNode = neighborNodes[i];\n var neighborLabel = neighborNode[nodeLabelProp]; // prune1: 若该邻居点的 label 不存在于 pattern 中,移除这个点\n\n if (!patternNodeLabelMap[neighborLabel] || !patternNodeLabelMap[neighborLabel].length) {\n neighborNodes.splice(i, 1);\n continue;\n } // prune2: 若该邻居点到 candidate 的最短路径比和它有相同 label 的节点到 beginPNode 的最大最短路径长度长,移除这个点\n // prune2.1: 如果没有这个标签到 beginPNode 的距离记录,说明 pattern 上(可能 beginPNode 是这个 label)没有其他这个 label 的节点\n\n\n if (!patternSpDist[neighborLabel] || !patternSpDist[neighborLabel].length) {\n neighborNodes.splice(i, 1);\n continue;\n }\n\n var key = \"\".concat(candidate.id, \"-\").concat(neighborNode.id); // prune2.2\n\n var distToCandidate = spmMap[key];\n var idx = patternSpDist[neighborLabel].length - 1;\n var maxDistWithLabelInPattern = patternSpDist[neighborLabel][idx]; // patternSpDist[neighborLabel] 已经按照从小到大排序\n\n if (distToCandidate > maxDistWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n }\n\n if (directed) {\n var keyBack = \"\".concat(neighborNode.id, \"-\").concat(candidate.id);\n var distFromCandidate = spmMap[keyBack];\n idx = patternSpDistBack[neighborLabel].length - 1;\n var maxBackDistWithLabelInPattern = patternSpDistBack[neighborLabel][idx];\n\n if (distFromCandidate > maxBackDistWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n }\n } // prune3: 若该邻居点到 candidate 的 NDS 距离比和它有相同 label 的节点到 beginPNode 的最小 NDS 距离小,移除这个点\n\n\n var ndsToCandidate = ndsDist[key] ? ndsDist[key] : getNDSDist(graphData, candidate, neighborNode, nodeMap, distToCandidate, kNeighborUnits, dsG, nodeLabelProp, edgeLabelProp, ndsDist, intGMap);\n var patternKey = \"\".concat(beginPNode.id, \"-\").concat(neighborLabel);\n var minNdsWithLabelInPattern = patternNDSDistMap[patternKey][patternNDSDistMap[patternKey].length - 1]; // patternNDSDist[key] 一定存在\n\n if (ndsToCandidate < minNdsWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n } // prune4: 若该邻居点的度数小于 pattern 同 label 节点最小度数,删去该点\n\n\n var _a = stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap),\n minPatternNodeLabelDegree = _a.minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree = _a.minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree = _a.minPatternNodeLabelOutDegree;\n\n if (nodeMap[neighborNode.id].degree < minPatternNodeLabelDegree) {\n neighborNodes.splice(i, 1);\n continue;\n }\n } // 节点在个数上符合匹配(不少于 pattern 的节点个数),现在筛选相关边\n\n\n if (!unmatched) {\n candidateGraphs.push({\n nodes: [candidate].concat(neighborNodes)\n });\n }\n }); // console.log(\n // \"----- stage4: going to splice edges and neighbors for each candidate graph -------\"\n // );\n\n var undirectedLengthsToBeginPNode = (0, _dijkstra.default)(pattern, beginPNode.id, false).length;\n var undirectedLengthsToBeginPNodeLabelMap = {};\n\n if (directed) {\n Object.keys(undirectedLengthsToBeginPNode).forEach(function (nodeId) {\n var nodeLabel = patternNodeMap[nodeId].node[nodeLabelProp];\n if (!undirectedLengthsToBeginPNodeLabelMap[nodeLabel]) undirectedLengthsToBeginPNodeLabelMap[nodeLabel] = [undirectedLengthsToBeginPNode[nodeId]];else undirectedLengthsToBeginPNodeLabelMap[nodeLabel].push(undirectedLengthsToBeginPNode[nodeId]);\n });\n Object.keys(undirectedLengthsToBeginPNodeLabelMap).forEach(function (pLabel) {\n undirectedLengthsToBeginPNodeLabelMap[pLabel].sort(function (a, b) {\n return a - b;\n });\n });\n } else {\n undirectedLengthsToBeginPNodeLabelMap = patternSpDist;\n } // 现在 candidateGraphs 里面只有节点,进行边的筛选\n\n\n var candidateGraphNum = candidateGraphs.length;\n\n var _loop_2 = function _loop_2(i) {\n var candidateGraph = candidateGraphs[i];\n var candidate = candidateGraph.nodes[0];\n var candidateNodeLabelCountMap = {};\n var candidateNodeMap = {};\n candidateGraph.nodes.forEach(function (node, q) {\n candidateNodeMap[node.id] = {\n idx: q,\n node: node,\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n var cNodeLabel = node[nodeLabelProp];\n if (!candidateNodeLabelCountMap[cNodeLabel]) candidateNodeLabelCountMap[cNodeLabel] = 1;else candidateNodeLabelCountMap[cNodeLabel]++;\n }); // 根据 candidate 和 neighborNodes 中的节点生成 G 的诱导子图\n // 即,将 graphData 上两端都在 candidateGraph.nodes 中的边放入 candidateEdges\n\n var candidateEdges = [];\n var edgeLabelCountMap = {};\n graphData.edges.forEach(function (edge) {\n if (candidateNodeMap[edge.source] && candidateNodeMap[edge.target]) {\n candidateEdges.push(edge);\n if (!edgeLabelCountMap[edge[edgeLabelProp]]) edgeLabelCountMap[edge[edgeLabelProp]] = 1;else edgeLabelCountMap[edge[edgeLabelProp]]++;\n candidateNodeMap[edge.source].degree++;\n candidateNodeMap[edge.target].degree++;\n candidateNodeMap[edge.source].outDegree++;\n candidateNodeMap[edge.target].inDegree++;\n }\n }); // prune:若有一个 edgeLabel 在 candidateGraph 上的个数少于 pattern,去除该图\n\n var pattenrEdgeLabelNum = Object.keys(patternEdgeLabelMap).length;\n var prunedByEdgeLabel = false;\n\n for (var e = 0; e < pattenrEdgeLabelNum; e++) {\n var label_1 = Object.keys(patternEdgeLabelMap)[e];\n\n if (!edgeLabelCountMap[label_1] || edgeLabelCountMap[label_1] < patternEdgeLabelMap[label_1].length) {\n prunedByEdgeLabel = true;\n break;\n }\n }\n\n if (prunedByEdgeLabel) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n } // 遍历 candidateEdges,进行边的筛选\n\n\n var candidateEdgeNum = candidateEdges.length; // prune:若边数过少,去除该图\n\n if (candidateEdgeNum < pattern.edges.length) {\n candidateGraphs.splice(i, 1);\n return \"break\";\n }\n\n var candidateGraphInvalid = false;\n\n var _loop_5 = function _loop_5(e) {\n var edge = candidateEdges[e];\n var edgeLabel = edge[edgeLabelProp];\n var patternEdgesWithLabel = patternEdgeLabelMap[edgeLabel]; // prune 1: 若边的 label 不存在于 pattern 边 label 中,去除该边\n\n if (!patternEdgesWithLabel || !patternEdgesWithLabel.length) {\n edgeLabelCountMap[edgeLabel]--; // 若这个 label 的 count 减少之后,该 label 的边数不足,去除该图\n\n if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel] < patternEdgesWithLabel.length) {\n candidateGraphInvalid = true;\n return \"break\";\n }\n\n candidateEdges.splice(e, 1);\n candidateNodeMap[edge.source].degree--;\n candidateNodeMap[edge.target].degree--;\n candidateNodeMap[edge.source].outDegree--;\n candidateNodeMap[edge.target].inDegree--;\n return \"continue\";\n } // prune 2: 若边的 label +两端 label 的三元组关系不能在 pattern 中找到,去除该边\n\n\n var sourceLabel = candidateNodeMap[edge.source].node[nodeLabelProp];\n var targetLabel = candidateNodeMap[edge.target].node[nodeLabelProp];\n var edgeMatched = false;\n patternEdgesWithLabel.forEach(function (patternEdge) {\n var patternSource = patternNodeMap[patternEdge.source].node;\n var patternTarget = patternNodeMap[patternEdge.target].node;\n if (patternSource[nodeLabelProp] === sourceLabel && patternTarget[nodeLabelProp] === targetLabel) edgeMatched = true;\n if (!directed && patternSource[nodeLabelProp] === targetLabel && patternTarget[nodeLabelProp] === sourceLabel) edgeMatched = true;\n });\n\n if (!edgeMatched) {\n edgeLabelCountMap[edgeLabel]--; // 若这个 label 的 count 减少之后,该 label 的边数不足,去除该图\n\n if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel] < patternEdgesWithLabel.length) {\n candidateGraphInvalid = true;\n return \"break\";\n }\n\n candidateEdges.splice(e, 1);\n candidateNodeMap[edge.source].degree--;\n candidateNodeMap[edge.target].degree--;\n candidateNodeMap[edge.source].outDegree--;\n candidateNodeMap[edge.target].inDegree--;\n return \"continue\";\n }\n };\n\n for (var e = candidateEdgeNum - 1; e >= 0; e--) {\n var state_2 = _loop_5(e);\n\n if (state_2 === \"break\") break;\n } // prune2: 删除边的过程中,发现边数过少/边 label 数过少时,去除该图\n\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n\n candidateGraph.edges = candidateEdges;\n var lengthsToCandidate = (0, _dijkstra.default)(candidateGraph, candidateGraph.nodes[0].id, false).length;\n Object.keys(lengthsToCandidate).reverse().forEach(function (targetId) {\n if (targetId === candidateGraph.nodes[0].id || candidateGraphInvalid) return; // prune4: 通过上述裁剪,可能导致该邻居子图变为不连通。裁剪掉目前在这个邻居子图中和 candidate(第一个节点)不连通的节点\n\n if (lengthsToCandidate[targetId] === Infinity) {\n var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp];\n candidateNodeLabelCountMap[targetNodeLabel]--;\n\n if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) {\n candidateGraphInvalid = true;\n return;\n }\n\n var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node);\n candidateGraph.nodes.splice(idx, 1);\n candidateNodeMap[targetId] = undefined;\n return;\n } // prune5: 经过边裁剪后,可能又出现了最短路径过长的节点 (比 pattern 中同 label 的节点到 beginNode 最大最短距离远),删去这些节点\n\n\n var nLabel = nodeMap[targetId].node[nodeLabelProp];\n\n if (!undirectedLengthsToBeginPNodeLabelMap[nLabel] || !undirectedLengthsToBeginPNodeLabelMap[nLabel].length || lengthsToCandidate[targetId] > undirectedLengthsToBeginPNodeLabelMap[nLabel][undirectedLengthsToBeginPNodeLabelMap[nLabel].length - 1]) {\n var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp];\n candidateNodeLabelCountMap[targetNodeLabel]--;\n\n if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) {\n candidateGraphInvalid = true;\n return;\n }\n\n var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node);\n candidateGraph.nodes.splice(idx, 1);\n candidateNodeMap[targetId] = undefined;\n }\n });\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n\n var degreeChanged = true;\n var loopCount = 0;\n\n while (degreeChanged && !candidateGraphInvalid) {\n degreeChanged = false; // candidate 度数不足,删去该图\n\n var condition = directed ? candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree || candidateNodeMap[candidate.id].inDegree < patternNodeMap[beginPNode.id].inDegree || candidateNodeMap[candidate.id].outDegree < patternNodeMap[beginPNode.id].outDegree : candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree;\n\n if (condition) {\n candidateGraphInvalid = true;\n break;\n } // candidate label 个数不足,删去该图\n\n\n if (candidateNodeLabelCountMap[candidate[nodeLabelProp]] < patternNodeLabelMap[candidate[nodeLabelProp]].length) {\n candidateGraphInvalid = true;\n break;\n } // prune6:去除度数过小的节点\n\n\n var currentCandidateNodeNum = candidateGraph.nodes.length;\n\n for (var o = currentCandidateNodeNum - 1; o >= 0; o--) {\n var cgNode = candidateGraph.nodes[o];\n var nodeDegree = candidateNodeMap[cgNode.id].degree;\n var nodeInDegree = candidateNodeMap[cgNode.id].inDegree;\n var nodeOutDegree = candidateNodeMap[cgNode.id].outDegree;\n var cNodeLabel = cgNode[nodeLabelProp];\n\n var _e = stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, cNodeLabel, patternNodeMap, patternNodeLabelMap),\n minPatternNodeLabelDegree = _e.minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree = _e.minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree = _e.minPatternNodeLabelOutDegree;\n\n var deleteCondition = directed ? nodeDegree < minPatternNodeLabelDegree || nodeInDegree < minPatternNodeLabelInDegree || nodeOutDegree < minPatternNodeLabelOutDegree : nodeDegree < minPatternNodeLabelDegree;\n\n if (deleteCondition) {\n candidateNodeLabelCountMap[cgNode[nodeLabelProp]]--; // 节点 label 个数不足\n\n if (candidateNodeLabelCountMap[cgNode[nodeLabelProp]] < patternNodeLabelMap[cgNode[nodeLabelProp]].length) {\n candidateGraphInvalid = true;\n break;\n }\n\n candidateGraph.nodes.splice(o, 1);\n candidateNodeMap[cgNode.id] = undefined;\n degreeChanged = true;\n }\n }\n\n if (candidateGraphInvalid || !degreeChanged && loopCount !== 0) break; // 经过 prune5 节点裁剪,删去端点已经不在 candidateGraph 中的边\n\n candidateEdgeNum = candidateEdges.length;\n\n for (var y = candidateEdgeNum - 1; y >= 0; y--) {\n var cedge = candidateEdges[y];\n\n if (!candidateNodeMap[cedge.source] || !candidateNodeMap[cedge.target]) {\n candidateEdges.splice(y, 1);\n var edgeLabel = cedge[edgeLabelProp];\n edgeLabelCountMap[edgeLabel]--;\n\n if (candidateNodeMap[cedge.source]) {\n candidateNodeMap[cedge.source].degree--;\n candidateNodeMap[cedge.source].outDegree--;\n }\n\n if (candidateNodeMap[cedge.target]) {\n candidateNodeMap[cedge.target].degree--;\n candidateNodeMap[cedge.target].inDegree--;\n } // 边 label 数量不足\n\n\n if (patternEdgeLabelMap[edgeLabel] && edgeLabelCountMap[edgeLabel] < patternEdgeLabelMap[edgeLabel].length) {\n candidateGraphInvalid = true;\n break;\n }\n\n degreeChanged = true;\n }\n }\n\n loopCount++;\n }\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n } // prune: 若节点/边数过少,节点/边 label 过少,去掉这个图\n\n\n if (candidateGraphInvalid || candidateGraph.nodes.length < pattern.nodes.length || candidateEdges.length < pattern.edges.length) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n };\n\n for (var i = candidateGraphNum - 1; i >= 0; i--) {\n var state_1 = _loop_2(i);\n\n if (state_1 === \"break\") break;\n } // 此时已经生成的多个 candidateGraphs,可能有重复\n // console.log(\n // \"----- stage5: going to splice dulplicated candidate graphs -------\"\n // );\n // 删去 candidateGraphs 中一模一样的子图,通过边的 node-node-edgeLabel 作为 key,这类边个数作为 value,进行匹配\n\n\n var currentLength = candidateGraphs.length;\n\n var _loop_3 = function _loop_3(i) {\n var cg1 = candidateGraphs[i];\n var cg1EdgeMap = {}; // [node1.id-node2.id-edge.label]: count\n\n cg1.edges.forEach(function (edge) {\n var key = \"\".concat(edge.source, \"-\").concat(edge.target, \"-\").concat(edge.label);\n if (!cg1EdgeMap[key]) cg1EdgeMap[key] = 1;else cg1EdgeMap[key]++;\n });\n\n var _loop_6 = function _loop_6(j) {\n var cg2 = candidateGraphs[j];\n var cg2EdgeMap = {}; // [node1.id-node2.id-edge.label]: count\n\n cg2.edges.forEach(function (edge) {\n var key = \"\".concat(edge.source, \"-\").concat(edge.target, \"-\").concat(edge.label);\n if (!cg2EdgeMap[key]) cg2EdgeMap[key] = 1;else cg2EdgeMap[key]++;\n });\n var same = true;\n\n if (Object.keys(cg2EdgeMap).length !== Object.keys(cg1EdgeMap).length) {\n same = false;\n } else {\n Object.keys(cg1EdgeMap).forEach(function (key) {\n if (cg2EdgeMap[key] !== cg1EdgeMap[key]) same = false;\n });\n }\n\n if (same) {\n candidateGraphs.splice(j, 1);\n }\n };\n\n for (var j = currentLength - 1; j > i; j--) {\n _loop_6(j);\n }\n\n currentLength = candidateGraphs.length;\n };\n\n for (var i = 0; i <= currentLength - 1; i++) {\n _loop_3(i);\n }\n\n return candidateGraphs;\n};\n\nvar _default = GADDI;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _adjacentMatrix = _interopRequireDefault(require(\"./adjacent-matrix\"));\n\nvar _util = require(\"./util\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 标签传播算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param maxIteration 最大迭代次数\n */\nvar labelPropagation = function labelPropagation(graphData, directed, weightPropertyName, maxIteration) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (maxIteration === void 0) {\n maxIteration = 1000;\n } // the origin data\n\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var clusters = {};\n var nodeMap = {}; // init the clusters and nodeMap\n\n nodes.forEach(function (node, i) {\n var cid = (0, _util.uniqueId)();\n node.clusterId = cid;\n clusters[cid] = {\n id: cid,\n nodes: [node]\n };\n nodeMap[node.id] = {\n node: node,\n idx: i\n };\n }); // the adjacent matrix of calNodes inside clusters\n\n var adjMatrix = (0, _adjacentMatrix.default)(graphData, directed); // the sum of each row in adjacent matrix\n\n var ks = [];\n /**\n * neighbor nodes (id for key and weight for value) for each node\n * neighbors = {\n * id(node_id): { id(neighbor_1_id): weight(weight of the edge), id(neighbor_2_id): weight(weight of the edge), ... },\n * ...\n * }\n */\n\n var neighbors = {};\n adjMatrix.forEach(function (row, i) {\n var k = 0;\n var iid = nodes[i].id;\n neighbors[iid] = {};\n row.forEach(function (entry, j) {\n if (!entry) return;\n k += entry;\n var jid = nodes[j].id;\n neighbors[iid][jid] = entry;\n });\n ks.push(k);\n });\n var iter = 0;\n\n var _loop_1 = function _loop_1() {\n var changed = false;\n nodes.forEach(function (node) {\n var neighborClusters = {};\n Object.keys(neighbors[node.id]).forEach(function (neighborId) {\n var neighborWeight = neighbors[node.id][neighborId];\n var neighborNode = nodeMap[neighborId].node;\n var neighborClusterId = neighborNode.clusterId;\n if (!neighborClusters[neighborClusterId]) neighborClusters[neighborClusterId] = 0;\n neighborClusters[neighborClusterId] += neighborWeight;\n }); // find the cluster with max weight\n\n var maxWeight = -Infinity;\n var bestClusterIds = [];\n Object.keys(neighborClusters).forEach(function (clusterId) {\n if (maxWeight < neighborClusters[clusterId]) {\n maxWeight = neighborClusters[clusterId];\n bestClusterIds = [clusterId];\n } else if (maxWeight === neighborClusters[clusterId]) {\n bestClusterIds.push(clusterId);\n }\n });\n if (bestClusterIds.length === 1 && bestClusterIds[0] === node.clusterId) return;\n var selfClusterIdx = bestClusterIds.indexOf(node.clusterId);\n if (selfClusterIdx >= 0) bestClusterIds.splice(selfClusterIdx, 1);\n\n if (bestClusterIds && bestClusterIds.length) {\n changed = true; // remove from origin cluster\n\n var selfCluster = clusters[node.clusterId];\n var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node);\n selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); // move the node to the best cluster\n\n var randomIdx = Math.floor(Math.random() * bestClusterIds.length);\n var bestCluster = clusters[bestClusterIds[randomIdx]];\n bestCluster.nodes.push(node);\n node.clusterId = bestCluster.id;\n }\n });\n if (!changed) return \"break\";\n iter++;\n };\n\n while (iter < maxIteration) {\n var state_1 = _loop_1();\n\n if (state_1 === \"break\") break;\n } // delete the empty clusters\n\n\n Object.keys(clusters).forEach(function (clusterId) {\n var cluster = clusters[clusterId];\n\n if (!cluster.nodes || !cluster.nodes.length) {\n delete clusters[clusterId];\n }\n }); // get the cluster edges\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var weight = edge[weightPropertyName] || 1;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].weight += weight;\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n weight: weight,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n var clustersArray = [];\n Object.keys(clusters).forEach(function (clusterId) {\n clustersArray.push(clusters[clusterId]);\n });\n return {\n clusters: clustersArray,\n clusterEdges: clusterEdges\n };\n};\n\nvar _default = labelPropagation;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = require(\"@antv/util\");\n\nvar _adjacentMatrix = _interopRequireDefault(require(\"./adjacent-matrix\"));\n\nvar _vector = _interopRequireDefault(require(\"./utils/vector\"));\n\nvar _nodeProperties = require(\"./utils/node-properties\");\n\nvar _dataPreprocessing = require(\"./utils/data-preprocessing\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getModularity = function getModularity(nodes, adjMatrix, ks, m) {\n var length = adjMatrix.length;\n var param = 2 * m;\n var modularity = 0;\n\n for (var i = 0; i < length; i++) {\n var clusteri = nodes[i].clusterId;\n\n for (var j = 0; j < length; j++) {\n var clusterj = nodes[j].clusterId;\n if (clusteri !== clusterj) continue;\n var entry = adjMatrix[i][j] || 0;\n var ki = ks[i] || 0;\n var kj = ks[j] || 0;\n modularity += entry - ki * kj / param;\n }\n }\n\n modularity *= 1 / param;\n return modularity;\n}; // 模块惯性度,衡量属性相似度\n\n\nvar getInertialModularity = function getInertialModularity(nodes, allPropertiesWeight) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n var length = nodes.length;\n var totalProperties = new _vector.default([]);\n\n for (var i = 0; i < length; i++) {\n totalProperties = totalProperties.add(new _vector.default(allPropertiesWeight[i]));\n } // 均值向量\n\n\n var avgProperties = totalProperties.avg(length);\n avgProperties.normalize(); // 节点集合的方差: 节点v与均值向量的平方欧式距离之和\n\n var variance = 0;\n\n for (var i = 0; i < length; i++) {\n var propertiesi = new _vector.default(allPropertiesWeight[i]);\n var squareEuclideanDistance = propertiesi.squareEuclideanDistance(avgProperties);\n variance += squareEuclideanDistance;\n } // 任意两点间的欧式平方距离\n\n\n var squareEuclideanDistanceInfo = [];\n nodes.forEach(function () {\n squareEuclideanDistanceInfo.push([]);\n });\n\n for (var i = 0; i < length; i++) {\n var propertiesi = new _vector.default(allPropertiesWeight[i]);\n nodes[i]['clusterInertial'] = 0;\n\n for (var j = 0; j < length; j++) {\n if (i === j) {\n squareEuclideanDistanceInfo[i][j] = 0;\n continue;\n }\n\n var propertiesj = new _vector.default(allPropertiesWeight[j]);\n squareEuclideanDistanceInfo[i][j] = propertiesi.squareEuclideanDistance(propertiesj);\n nodes[i]['clusterInertial'] += squareEuclideanDistanceInfo[i][j];\n }\n } // 计算模块惯性度\n\n\n var inertialModularity = 0;\n var param = 2 * length * variance;\n\n for (var i = 0; i < length; i++) {\n var clusteri = nodes[i].clusterId;\n\n for (var j = 0; j < length; j++) {\n var clusterj = nodes[j].clusterId;\n if (i === j || clusteri !== clusterj) continue;\n var inertial = nodes[i].clusterInertial * nodes[j].clusterInertial / Math.pow(param, 2) - squareEuclideanDistanceInfo[i][j] / param;\n inertialModularity += inertial;\n }\n }\n\n return Number(inertialModularity.toFixed(4));\n};\n/**\n * 社区发现 louvain 算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param threshold 差值阈值\n * @param inertialModularity 是否使用惯性模块度(即节点属性相似性)\n * @param propertyKey 属性的字段名\n * @param involvedKeys 参与计算的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n * @param inertialWeight 惯性模块度权重\n */\n\n\nvar louvain = function louvain(graphData, directed, weightPropertyName, threshold, inertialModularity, propertyKey, involvedKeys, uninvolvedKeys, inertialWeight) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (threshold === void 0) {\n threshold = 0.0001;\n }\n\n if (inertialModularity === void 0) {\n inertialModularity = false;\n }\n\n if (propertyKey === void 0) {\n propertyKey = undefined;\n }\n\n if (involvedKeys === void 0) {\n involvedKeys = [];\n }\n\n if (uninvolvedKeys === void 0) {\n uninvolvedKeys = ['id'];\n }\n\n if (inertialWeight === void 0) {\n inertialWeight = 1;\n } // the origin data\n\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var allPropertiesWeight = [];\n\n if (inertialModularity) {\n nodes.forEach(function (node, index) {\n node.properties = node.properties || {};\n node.originIndex = index;\n });\n var nodeTypeInfo_1 = [];\n\n if (nodes.every(function (node) {\n return node.hasOwnProperty('nodeType');\n })) {\n nodeTypeInfo_1 = Array.from(new Set(nodes.map(function (node) {\n return node.nodeType;\n })));\n nodes.forEach(function (node) {\n node.properties.nodeType = nodeTypeInfo_1.findIndex(function (nodeType) {\n return nodeType === node.nodeType;\n });\n });\n } // 所有节点属性集合\n\n\n var properties = (0, _nodeProperties.getAllProperties)(nodes, propertyKey); // 所有节点属性one-hot特征向量集合\n\n allPropertiesWeight = (0, _dataPreprocessing.oneHot)(properties, involvedKeys, uninvolvedKeys);\n }\n\n var uniqueId = 1;\n var clusters = {};\n var nodeMap = {}; // init the clusters and nodeMap\n\n nodes.forEach(function (node, i) {\n var cid = String(uniqueId++);\n node.clusterId = cid;\n clusters[cid] = {\n id: cid,\n nodes: [node]\n };\n nodeMap[node.id] = {\n node: node,\n idx: i\n };\n }); // the adjacent matrix of calNodes inside clusters\n\n var adjMatrix = (0, _adjacentMatrix.default)(graphData, directed); // the sum of each row in adjacent matrix\n\n var ks = [];\n /**\n * neighbor nodes (id for key and weight for value) for each node\n * neighbors = {\n * id(node_id): { id(neighbor_1_id): weight(weight of the edge), id(neighbor_2_id): weight(weight of the edge), ... },\n * ...\n * }\n */\n\n var neighbors = {}; // the sum of the weights of all edges in the graph\n\n var m = 0;\n adjMatrix.forEach(function (row, i) {\n var k = 0;\n var iid = nodes[i].id;\n neighbors[iid] = {};\n row.forEach(function (entry, j) {\n if (!entry) return;\n k += entry;\n var jid = nodes[j].id;\n neighbors[iid][jid] = entry;\n m += entry;\n });\n ks.push(k);\n });\n m /= 2;\n var totalModularity = Infinity;\n var previousModularity = Infinity;\n var iter = 0;\n var finalNodes = [];\n var finalClusters = {};\n\n while (true) {\n if (inertialModularity && nodes.every(function (node) {\n return node.hasOwnProperty('properties');\n })) {\n totalModularity = getModularity(nodes, adjMatrix, ks, m) + getInertialModularity(nodes, allPropertiesWeight) * inertialWeight;\n } else {\n totalModularity = getModularity(nodes, adjMatrix, ks, m);\n } // 第一次迭代previousModularity直接赋值\n\n\n if (iter === 0) {\n previousModularity = totalModularity;\n finalNodes = nodes;\n finalClusters = clusters;\n }\n\n var increaseWithinThreshold = totalModularity > 0 && totalModularity > previousModularity && totalModularity - previousModularity < threshold; // 总模块度增加才更新最优解\n\n if (totalModularity > previousModularity) {\n finalNodes = nodes.map(function (node) {\n return {\n node: node,\n clusterId: node.clusterId\n };\n });\n finalClusters = (0, _util.clone)(clusters);\n previousModularity = totalModularity;\n } // whether to terminate the iterations\n\n\n if (increaseWithinThreshold || iter > 100) {\n break;\n }\n\n ;\n iter++; // pre compute some values for current clusters\n\n Object.keys(clusters).forEach(function (clusterId) {\n // sum of weights of edges to nodes in cluster\n var sumTot = 0;\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n\n if (sourceClusterId === clusterId && targetClusterId !== clusterId || targetClusterId === clusterId && sourceClusterId !== clusterId) {\n sumTot = sumTot + (edge[weightPropertyName] || 1);\n }\n });\n clusters[clusterId].sumTot = sumTot;\n }); // move the nodes to increase the delta modularity\n\n nodes.forEach(function (node, i) {\n var selfCluster = clusters[node.clusterId];\n var bestIncrease = 0;\n var bestCluster;\n var commonParam = ks[i] / (2 * m); // sum of weights of edges from node to nodes in cluster\n\n var kiin = 0;\n var selfClusterNodes = selfCluster.nodes;\n selfClusterNodes.forEach(function (scNode) {\n var scNodeIdx = nodeMap[scNode.id].idx;\n kiin += adjMatrix[i][scNodeIdx] || 0;\n }); // the modurarity for **removing** the node i from the origin cluster of node i\n\n var removeModurarity = kiin - selfCluster.sumTot * commonParam; // nodes for **removing** node i into this neighbor cluster\n\n var selfClusterNodesAfterRemove = selfClusterNodes.filter(function (scNode) {\n return scNode.id !== node.id;\n });\n var propertiesWeightRemove = [];\n selfClusterNodesAfterRemove.forEach(function (nodeRemove, index) {\n propertiesWeightRemove[index] = allPropertiesWeight[nodeRemove.originIndex];\n }); // the inertialModularity for **removing** the node i from the origin cluster of node i\n\n var removeInertialModularity = getInertialModularity(selfClusterNodesAfterRemove, allPropertiesWeight) * inertialWeight; // the neightbors of the node\n\n var nodeNeighborIds = neighbors[node.id];\n Object.keys(nodeNeighborIds).forEach(function (neighborNodeId) {\n var neighborNode = nodeMap[neighborNodeId].node;\n var neighborClusterId = neighborNode.clusterId; // if the node and the neighbor of node are in the same cluster, reutrn\n\n if (neighborClusterId === node.clusterId) return;\n var neighborCluster = clusters[neighborClusterId];\n var clusterNodes = neighborCluster.nodes; // if the cluster is empty, remove the cluster and return\n\n if (!clusterNodes || !clusterNodes.length) return; // sum of weights of edges from node to nodes in cluster\n\n var neighborClusterKiin = 0;\n clusterNodes.forEach(function (cNode) {\n var cNodeIdx = nodeMap[cNode.id].idx;\n neighborClusterKiin += adjMatrix[i][cNodeIdx] || 0;\n }); // the modurarity for **adding** node i into this neighbor cluster\n\n var addModurarity = neighborClusterKiin - neighborCluster.sumTot * commonParam; // nodes for **adding** node i into this neighbor cluster\n\n var clusterNodesAfterAdd = clusterNodes.concat([node]);\n var propertiesWeightAdd = [];\n clusterNodesAfterAdd.forEach(function (nodeAdd, index) {\n propertiesWeightAdd[index] = allPropertiesWeight[nodeAdd.originIndex];\n }); // the inertialModularity for **adding** node i into this neighbor cluster\n\n var addInertialModularity = getInertialModularity(clusterNodesAfterAdd, allPropertiesWeight) * inertialWeight; // the increase modurarity is the difference between addModurarity and removeModurarity\n\n var increase = addModurarity - removeModurarity;\n\n if (inertialModularity) {\n increase = addModurarity + addInertialModularity - (removeModurarity + removeInertialModularity);\n } // find the best cluster to move node i into\n\n\n if (increase > bestIncrease) {\n bestIncrease = increase;\n bestCluster = neighborCluster;\n }\n }); // if found a best cluster to move into\n\n if (bestIncrease > 0) {\n bestCluster.nodes.push(node);\n var previousClusterId_1 = node.clusterId;\n node.clusterId = bestCluster.id; // move the node to the best cluster\n\n var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node); // remove from origin cluster\n\n selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); // update sumTot for clusters\n // sum of weights of edges to nodes in cluster\n\n var neighborClusterSumTot_1 = 0;\n var selfClusterSumTot_1 = 0;\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n\n if (sourceClusterId === bestCluster.id && targetClusterId !== bestCluster.id || targetClusterId === bestCluster.id && sourceClusterId !== bestCluster.id) {\n neighborClusterSumTot_1 = neighborClusterSumTot_1 + (edge[weightPropertyName] || 1);\n }\n\n if (sourceClusterId === previousClusterId_1 && targetClusterId !== previousClusterId_1 || targetClusterId === previousClusterId_1 && sourceClusterId !== previousClusterId_1) {\n selfClusterSumTot_1 = selfClusterSumTot_1 + (edge[weightPropertyName] || 1);\n }\n }); // the nodes of the clusters to move into and remove are changed, update their sumTot\n\n bestCluster.sumTot = neighborClusterSumTot_1;\n selfCluster.sumTot = selfClusterSumTot_1;\n }\n });\n } // delete the empty clusters, assign increasing clusterId\n\n\n var newClusterIdMap = {};\n var clusterIdx = 0;\n Object.keys(finalClusters).forEach(function (clusterId) {\n var cluster = finalClusters[clusterId];\n\n if (!cluster.nodes || !cluster.nodes.length) {\n delete finalClusters[clusterId];\n return;\n }\n\n var newId = String(clusterIdx + 1);\n\n if (newId === clusterId) {\n return;\n }\n\n cluster.id = newId;\n cluster.nodes = cluster.nodes.map(function (item) {\n return {\n id: item.id,\n clusterId: newId\n };\n });\n finalClusters[newId] = cluster;\n newClusterIdMap[clusterId] = newId;\n delete finalClusters[clusterId];\n clusterIdx++;\n }); // restore node clusterId\n\n finalNodes.forEach(function (nodeInfo) {\n var node = nodeInfo.node,\n clusterId = nodeInfo.clusterId;\n if (!node) return;\n node.clusterId = clusterId;\n if (node.clusterId && newClusterIdMap[node.clusterId]) node.clusterId = newClusterIdMap[node.clusterId];\n }); // get the cluster edges\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var weight = edge[weightPropertyName] || 1;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n if (!sourceClusterId || !targetClusterId) return;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].weight += weight;\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n weight: weight,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n var clustersArray = [];\n Object.keys(finalClusters).forEach(function (clusterId) {\n clustersArray.push(finalClusters[clusterId]);\n });\n return {\n clusters: clustersArray,\n clusterEdges: clusterEdges\n };\n};\n\nvar _default = louvain;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _unionFind = _interopRequireDefault(require(\"./structs/union-find\"));\n\nvar _binaryHeap = _interopRequireDefault(require(\"./structs/binary-heap\"));\n\nvar _util = require(\"./util\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Prim algorithm,use priority queue,复杂度 O(E+V*logV), V: 节点数量,E: 边的数量\n * refer: https://en.wikipedia.org/wiki/Prim%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n */\nvar primMST = function primMST(graphData, weight) {\n var selectedEdges = [];\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n\n if (nodes.length === 0) {\n return selectedEdges;\n } // 从nodes[0]开始\n\n\n var currNode = nodes[0];\n var visited = new Set();\n visited.add(currNode); // 用二叉堆维护距已加入节点的其他节点的边的权值\n\n var compareWeight = function compareWeight(a, b) {\n if (weight) {\n return a.weight - b.weight;\n }\n\n return 0;\n };\n\n var edgeQueue = new _binaryHeap.default(compareWeight);\n (0, _util.getEdgesByNodeId)(currNode.id, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n\n while (!edgeQueue.isEmpty()) {\n // 选取与已加入的结点之间边权最小的结点\n var currEdge = edgeQueue.delMin();\n var source = currEdge.source;\n var target = currEdge.target;\n if (visited.has(source) && visited.has(target)) continue;\n selectedEdges.push(currEdge);\n\n if (!visited.has(source)) {\n visited.add(source);\n (0, _util.getEdgesByNodeId)(source, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n }\n\n if (!visited.has(target)) {\n visited.add(target);\n (0, _util.getEdgesByNodeId)(target, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n }\n }\n\n return selectedEdges;\n};\n/**\n * Kruskal algorithm,复杂度 O(E*logE), E: 边的数量\n * refer: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @return IEdge[] 返回构成MST的边的数组\n */\n\n\nvar kruskalMST = function kruskalMST(graphData, weight) {\n var selectedEdges = [];\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n\n if (nodes.length === 0) {\n return selectedEdges;\n } // 若指定weight,则将所有的边按权值从小到大排序\n\n\n var weightEdges = edges.map(function (edge) {\n return edge;\n });\n\n if (weight) {\n weightEdges.sort(function (a, b) {\n return a.weight - b.weight;\n });\n }\n\n var disjointSet = new _unionFind.default(nodes.map(function (n) {\n return n.id;\n })); // 从权值最小的边开始,如果这条边连接的两个节点于图G中不在同一个连通分量中,则添加这条边\n // 直到遍历完所有点或边\n\n while (weightEdges.length > 0) {\n var curEdge = weightEdges.shift();\n var source = curEdge.source;\n var target = curEdge.target;\n\n if (!disjointSet.connected(source, target)) {\n selectedEdges.push(curEdge);\n disjointSet.union(source, target);\n }\n }\n\n return selectedEdges;\n};\n/**\n * 最小生成树\n * refer: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @param algo 'prim' | 'kruskal' 算法类型\n * @return EdgeConfig[] 返回构成MST的边的数组\n */\n\n\nvar minimumSpanningTree = function minimumSpanningTree(graphData, weight, algo) {\n var algos = {\n prim: primMST,\n kruskal: kruskalMST\n };\n if (!algo) return kruskalMST(graphData, weight);\n return algos[algo](graphData, weight);\n};\n\nvar _default = minimumSpanningTree;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _degree = _interopRequireDefault(require(\"./degree\"));\n\nvar _util = require(\"./util\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * PageRank https://en.wikipedia.org/wiki/PageRank\n * refer: https://github.com/anvaka/ngraph.pagerank\n * @param graph\n * @param epsilon 判断是否收敛的精度值,默认 0.000001\n * @param linkProb 阻尼系数(dumping factor),指任意时刻,用户访问到某节点后继续访问该节点链接的下一个节点的概率,经验值 0.85\n */\nvar pageRank = function pageRank(graphData, epsilon, linkProb) {\n if (typeof epsilon !== 'number') epsilon = 0.000001;\n if (typeof linkProb !== 'number') linkProb = 0.85;\n var distance = 1;\n var leakedRank = 0;\n var maxIterations = 1000;\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodesCount = nodes.length;\n var currentRank;\n var curRanks = {};\n var prevRanks = {}; // Initialize pageranks 初始化\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n curRanks[nodeId] = 1 / nodesCount;\n prevRanks[nodeId] = 1 / nodesCount;\n }\n\n var nodeDegree = (0, _degree.default)(graphData);\n\n while (maxIterations > 0 && distance > epsilon) {\n leakedRank = 0;\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n currentRank = 0;\n\n if (nodeDegree[node.id].inDegree === 0) {\n curRanks[nodeId] = 0;\n } else {\n var neighbors = (0, _util.getNeighbors)(nodeId, edges, 'source');\n\n for (var i = 0; i < neighbors.length; ++i) {\n var neighbor = neighbors[i];\n var outDegree = nodeDegree[neighbor].outDegree;\n if (outDegree > 0) currentRank += prevRanks[neighbor] / outDegree;\n }\n\n curRanks[nodeId] = linkProb * currentRank;\n leakedRank += curRanks[nodeId];\n }\n }\n\n leakedRank = (1 - leakedRank) / nodesCount;\n distance = 0;\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n currentRank = curRanks[nodeId] + leakedRank;\n distance += Math.abs(currentRank - prevRanks[nodeId]);\n prevRanks[nodeId] = currentRank;\n }\n\n maxIterations -= 1;\n }\n\n return prevRanks;\n};\n\nvar _default = pageRank;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar defaultCompare = function defaultCompare(a, b) {\n return a - b;\n};\n\nvar MinBinaryHeap =\n/** @class */\nfunction () {\n function MinBinaryHeap(compareFn) {\n if (compareFn === void 0) {\n compareFn = defaultCompare;\n }\n\n this.compareFn = compareFn;\n this.list = [];\n }\n\n MinBinaryHeap.prototype.getLeft = function (index) {\n return 2 * index + 1;\n };\n\n MinBinaryHeap.prototype.getRight = function (index) {\n return 2 * index + 2;\n };\n\n MinBinaryHeap.prototype.getParent = function (index) {\n if (index === 0) {\n return null;\n }\n\n return Math.floor((index - 1) / 2);\n };\n\n MinBinaryHeap.prototype.isEmpty = function () {\n return this.list.length <= 0;\n };\n\n MinBinaryHeap.prototype.top = function () {\n return this.isEmpty() ? undefined : this.list[0];\n };\n\n MinBinaryHeap.prototype.delMin = function () {\n var top = this.top();\n var bottom = this.list.pop();\n\n if (this.list.length > 0) {\n this.list[0] = bottom;\n this.moveDown(0);\n }\n\n return top;\n };\n\n MinBinaryHeap.prototype.insert = function (value) {\n if (value !== null) {\n this.list.push(value);\n var index = this.list.length - 1;\n this.moveUp(index);\n return true;\n }\n\n return false;\n };\n\n MinBinaryHeap.prototype.moveUp = function (index) {\n var parent = this.getParent(index);\n\n while (index && index > 0 && this.compareFn(this.list[parent], this.list[index]) > 0) {\n // swap\n var tmp = this.list[parent];\n this.list[parent] = this.list[index];\n this.list[index] = tmp; // [this.list[index], this.list[parent]] = [this.list[parent], this.list[index]]\n\n index = parent;\n parent = this.getParent(index);\n }\n };\n\n MinBinaryHeap.prototype.moveDown = function (index) {\n var _a;\n\n var element = index;\n var left = this.getLeft(index);\n var right = this.getRight(index);\n var size = this.list.length;\n\n if (left !== null && left < size && this.compareFn(this.list[element], this.list[left]) > 0) {\n element = left;\n } else if (right !== null && right < size && this.compareFn(this.list[element], this.list[right]) > 0) {\n element = right;\n }\n\n if (index !== element) {\n _a = [this.list[element], this.list[index]], this.list[index] = _a[0], this.list[element] = _a[1];\n this.moveDown(element);\n }\n };\n\n return MinBinaryHeap;\n}();\n\nvar _default = MinBinaryHeap;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.LinkedListNode = void 0;\n\nvar defaultComparator = function defaultComparator(a, b) {\n if (a === b) {\n return true;\n }\n\n return false;\n};\n/**\n * 链表中单个元素节点\n */\n\n\nvar LinkedListNode =\n/** @class */\nfunction () {\n function LinkedListNode(value, next) {\n if (next === void 0) {\n next = null;\n }\n\n this.value = value;\n this.next = next;\n }\n\n LinkedListNode.prototype.toString = function (callback) {\n return callback ? callback(this.value) : \"\".concat(this.value);\n };\n\n return LinkedListNode;\n}();\n\nexports.LinkedListNode = LinkedListNode;\n\nvar LinkedList =\n/** @class */\nfunction () {\n function LinkedList(comparator) {\n if (comparator === void 0) {\n comparator = defaultComparator;\n }\n\n this.head = null;\n this.tail = null;\n this.compare = comparator;\n }\n /**\n * 将指定元素添加到链表头部\n * @param value\n */\n\n\n LinkedList.prototype.prepend = function (value) {\n // 在头部添加一个节点\n var newNode = new LinkedListNode(value, this.head);\n this.head = newNode;\n\n if (!this.tail) {\n this.tail = newNode;\n }\n\n return this;\n };\n /**\n * 将指定元素添加到链表中\n * @param value\n */\n\n\n LinkedList.prototype.append = function (value) {\n var newNode = new LinkedListNode(value); // 如果不存在头节点,则将创建的新节点作为头节点\n\n if (!this.head) {\n this.head = newNode;\n this.tail = newNode;\n return this;\n } // 将新节点附加到链表末尾\n\n\n this.tail.next = newNode;\n this.tail = newNode;\n return this;\n };\n /**\n * 删除指定元素\n * @param value 要删除的元素\n */\n\n\n LinkedList.prototype.delete = function (value) {\n if (!this.head) {\n return null;\n }\n\n var deleteNode = null; // 如果删除的是头部元素,则将next作为头元素\n\n while (this.head && this.compare(this.head.value, value)) {\n deleteNode = this.head;\n this.head = this.head.next;\n }\n\n var currentNode = this.head;\n\n if (currentNode !== null) {\n // 如果删除了节点以后,将next节点前移\n while (currentNode.next) {\n if (this.compare(currentNode.next.value, value)) {\n deleteNode = currentNode.next;\n currentNode.next = currentNode.next.next;\n } else {\n currentNode = currentNode.next;\n }\n }\n } // 检查尾部节点是否被删除\n\n\n if (this.compare(this.tail.value, value)) {\n this.tail = currentNode;\n }\n\n return deleteNode;\n };\n /**\n * 查找指定的元素\n * @param param0\n */\n\n\n LinkedList.prototype.find = function (_a) {\n var _b = _a.value,\n value = _b === void 0 ? undefined : _b,\n _c = _a.callback,\n callback = _c === void 0 ? undefined : _c;\n\n if (!this.head) {\n return null;\n }\n\n var currentNode = this.head;\n\n while (currentNode) {\n // 如果指定了 callback,则按指定的 callback 查找\n if (callback && callback(currentNode.value)) {\n return currentNode;\n } // 如果指定了 value,则按 value 查找\n\n\n if (value !== undefined && this.compare(currentNode.value, value)) {\n return currentNode;\n }\n\n currentNode = currentNode.next;\n }\n\n return null;\n };\n /**\n * 删除尾部节点\n */\n\n\n LinkedList.prototype.deleteTail = function () {\n var deletedTail = this.tail;\n\n if (this.head === this.tail) {\n // 链表中只有一个元素\n this.head = null;\n this.tail = null;\n return deletedTail;\n }\n\n var currentNode = this.head;\n\n while (currentNode.next) {\n if (!currentNode.next.next) {\n currentNode.next = null;\n } else {\n currentNode = currentNode.next;\n }\n }\n\n this.tail = currentNode;\n return deletedTail;\n };\n /**\n * 删除头部节点\n */\n\n\n LinkedList.prototype.deleteHead = function () {\n if (!this.head) {\n return null;\n }\n\n var deletedHead = this.head;\n\n if (this.head.next) {\n this.head = this.head.next;\n } else {\n this.head = null;\n this.tail = null;\n }\n\n return deletedHead;\n };\n /**\n * 将一组元素转成链表中的节点\n * @param values 链表中的元素\n */\n\n\n LinkedList.prototype.fromArray = function (values) {\n var _this = this;\n\n values.forEach(function (value) {\n return _this.append(value);\n });\n return this;\n };\n /**\n * 将链表中的节点转成数组元素\n */\n\n\n LinkedList.prototype.toArray = function () {\n var nodes = [];\n var currentNode = this.head;\n\n while (currentNode) {\n nodes.push(currentNode);\n currentNode = currentNode.next;\n }\n\n return nodes;\n };\n /**\n * 反转链表中的元素节点\n */\n\n\n LinkedList.prototype.reverse = function () {\n var currentNode = this.head;\n var prevNode = null;\n var nextNode = null;\n\n while (currentNode) {\n // 存储下一个元素节点\n nextNode = currentNode.next; // 更改当前节点的下一个节点,以便将它连接到上一个节点上\n\n currentNode.next = prevNode; // 将 prevNode 和 currentNode 向前移动一步\n\n prevNode = currentNode;\n currentNode = nextNode;\n }\n\n this.tail = this.head;\n this.head = prevNode;\n };\n\n LinkedList.prototype.toString = function (callback) {\n if (callback === void 0) {\n callback = undefined;\n }\n\n return this.toArray().map(function (node) {\n return node.toString(callback);\n }).toString();\n };\n\n return LinkedList;\n}();\n\nvar _default = LinkedList;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _linkedList = _interopRequireDefault(require(\"./linked-list\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Queue =\n/** @class */\nfunction () {\n function Queue() {\n this.linkedList = new _linkedList.default();\n }\n /**\n * 队列是否为空\n */\n\n\n Queue.prototype.isEmpty = function () {\n return !this.linkedList.head;\n };\n /**\n * 读取队列头部的元素, 不删除队列中的元素\n */\n\n\n Queue.prototype.peek = function () {\n if (!this.linkedList.head) {\n return null;\n }\n\n return this.linkedList.head.value;\n };\n /**\n * 在队列的尾部新增一个元素\n * @param value\n */\n\n\n Queue.prototype.enqueue = function (value) {\n this.linkedList.append(value);\n };\n /**\n * 删除队列中的头部元素,如果队列为空,则返回 null\n */\n\n\n Queue.prototype.dequeue = function () {\n var removeHead = this.linkedList.deleteHead();\n return removeHead ? removeHead.value : null;\n };\n\n Queue.prototype.toString = function (callback) {\n return this.linkedList.toString(callback);\n };\n\n return Queue;\n}();\n\nvar _default = Queue;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/**\n * 并查集 Disjoint set to support quick union\n */\nvar UnionFind =\n/** @class */\nfunction () {\n function UnionFind(items) {\n this.count = items.length;\n this.parent = {};\n\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var i = items_1[_i];\n this.parent[i] = i;\n }\n } // find the root of the item\n\n\n UnionFind.prototype.find = function (item) {\n while (this.parent[item] !== item) {\n item = this.parent[item];\n }\n\n return item;\n };\n\n UnionFind.prototype.union = function (a, b) {\n var rootA = this.find(a);\n var rootB = this.find(b);\n if (rootA === rootB) return; // make the element with smaller root the parent\n\n if (rootA < rootB) {\n if (this.parent[b] !== b) this.union(this.parent[b], a);\n this.parent[b] = this.parent[a];\n } else {\n if (this.parent[a] !== a) this.union(this.parent[a], b);\n this.parent[a] = this.parent[b];\n }\n }; // whether a and b are connected, i.e. a and b have the same root\n\n\n UnionFind.prototype.connected = function (a, b) {\n return this.find(a) === this.find(b);\n };\n\n return UnionFind;\n}();\n\nvar _default = UnionFind;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DistanceType = void 0;\nvar DistanceType;\nexports.DistanceType = DistanceType;\n\n(function (DistanceType) {\n DistanceType[\"EuclideanDistance\"] = \"euclideanDistance\";\n})(DistanceType || (exports.DistanceType = DistanceType = {}));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.uniqueId = exports.getOutEdgesNodeId = exports.getNeighbors = exports.getEdgesByNodeId = void 0;\n\n/**\n * 获取指定节点的所有邻居\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n * @param type 邻居类型\n */\nvar getNeighbors = function getNeighbors(nodeId, edges, type) {\n if (edges === void 0) {\n edges = [];\n }\n\n var currentEdges = edges.filter(function (edge) {\n return edge.source === nodeId || edge.target === nodeId;\n });\n\n if (type === 'target') {\n // 当前节点为 source,它所指向的目标节点\n var neighhborsConverter_1 = function neighhborsConverter_1(edge) {\n return edge.source === nodeId;\n };\n\n return currentEdges.filter(neighhborsConverter_1).map(function (edge) {\n return edge.target;\n });\n }\n\n if (type === 'source') {\n // 当前节点为 target,它所指向的源节点\n var neighhborsConverter_2 = function neighhborsConverter_2(edge) {\n return edge.target === nodeId;\n };\n\n return currentEdges.filter(neighhborsConverter_2).map(function (edge) {\n return edge.source;\n });\n } // 若未指定 type ,则返回所有邻居\n\n\n var neighhborsConverter = function neighhborsConverter(edge) {\n return edge.source === nodeId ? edge.target : edge.source;\n };\n\n return currentEdges.map(neighhborsConverter);\n};\n/**\n * 获取指定节点的出边\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n */\n\n\nexports.getNeighbors = getNeighbors;\n\nvar getOutEdgesNodeId = function getOutEdgesNodeId(nodeId, edges) {\n return edges.filter(function (edge) {\n return edge.source === nodeId;\n });\n};\n/**\n * 获取指定节点的边,包括出边和入边\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n */\n\n\nexports.getOutEdgesNodeId = getOutEdgesNodeId;\n\nvar getEdgesByNodeId = function getEdgesByNodeId(nodeId, edges) {\n return edges.filter(function (edge) {\n return edge.source === nodeId || edge.target === nodeId;\n });\n};\n/**\n * 生成唯一的 ID,规则是序号 + 时间戳\n * @param index 序号\n */\n\n\nexports.getEdgesByNodeId = getEdgesByNodeId;\n\nvar uniqueId = function uniqueId(index) {\n if (index === void 0) {\n index = 0;\n }\n\n var random1 = \"\".concat(Math.random()).split('.')[1].substr(0, 5);\n var random2 = \"\".concat(Math.random()).split('.')[1].substr(0, 5);\n return \"\".concat(index, \"-\").concat(random1).concat(random2);\n};\n\nexports.uniqueId = uniqueId;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.oneHot = exports.getDistance = exports.getAllKeyValueMap = exports.default = void 0;\n\nvar _util = require(\"@antv/util\");\n\nvar _types = require(\"../types\");\n\nvar _vector = _interopRequireDefault(require(\"./vector\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 获取数据中所有的属性及其对应的值\n * @param dataList 数据集\n * @param involvedKeys 参与计算的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n */\nvar getAllKeyValueMap = function getAllKeyValueMap(dataList, involvedKeys, uninvolvedKeys) {\n var keys = []; // 指定了参与计算的keys时,使用指定的keys\n\n if (involvedKeys === null || involvedKeys === void 0 ? void 0 : involvedKeys.length) {\n keys = involvedKeys;\n } else {\n // 未指定抽取的keys时,提取数据中所有的key\n dataList.forEach(function (data) {\n keys = keys.concat(Object.keys(data));\n });\n keys = (0, _util.uniq)(keys);\n } // 获取所有值非空的key的value数组\n\n\n var allKeyValueMap = {};\n keys.forEach(function (key) {\n var value = [];\n dataList.forEach(function (data) {\n if (data[key] !== undefined && data[key] !== '') {\n value.push(data[key]);\n }\n });\n\n if (value.length && !(uninvolvedKeys === null || uninvolvedKeys === void 0 ? void 0 : uninvolvedKeys.includes(key))) {\n allKeyValueMap[key] = (0, _util.uniq)(value);\n }\n });\n return allKeyValueMap;\n};\n/**\n * one-hot编码:数据特征提取\n * @param dataList 数据集\n * @param involvedKeys 参与计算的的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n */\n\n\nexports.getAllKeyValueMap = getAllKeyValueMap;\n\nvar oneHot = function oneHot(dataList, involvedKeys, uninvolvedKeys) {\n // 获取数据中所有的属性/特征及其对应的值\n var allKeyValueMap = getAllKeyValueMap(dataList, involvedKeys, uninvolvedKeys);\n var oneHotCode = [];\n\n if (!Object.keys(allKeyValueMap).length) {\n return oneHotCode;\n } // 获取所有的属性/特征值\n\n\n var allValue = Object.values(allKeyValueMap); // 是否所有属性/特征的值都是数值型\n\n var isAllNumber = allValue.every(function (value) {\n return value.every(function (item) {\n return typeof item === 'number';\n });\n }); // 对数据进行one-hot编码\n\n dataList.forEach(function (data, index) {\n var code = [];\n Object.keys(allKeyValueMap).forEach(function (key) {\n var keyValue = data[key];\n var allKeyValue = allKeyValueMap[key];\n var valueIndex = allKeyValue.findIndex(function (value) {\n return keyValue === value;\n });\n var subCode = []; // 如果属性/特征所有的值都能转成数值型,不满足分箱,则直接用值(todo: 为了收敛更快,需做归一化处理)\n\n if (isAllNumber) {\n subCode.push(keyValue);\n } else {\n // 进行one-hot编码\n for (var i = 0; i < allKeyValue.length; i++) {\n if (i === valueIndex) {\n subCode.push(1);\n } else {\n subCode.push(0);\n }\n }\n }\n\n code = code.concat(subCode);\n });\n oneHotCode[index] = code;\n });\n return oneHotCode;\n};\n/**\n * getDistance:获取两个元素之间的距离\n * @param item\n * @param otherItem\n * @param distanceType 距离类型\n * @param graphData 图数据\n */\n\n\nexports.oneHot = oneHot;\n\nvar getDistance = function getDistance(item, otherItem, distanceType, graphData) {\n if (distanceType === void 0) {\n distanceType = _types.DistanceType.EuclideanDistance;\n }\n\n var distance = 0;\n\n switch (distanceType) {\n case _types.DistanceType.EuclideanDistance:\n distance = new _vector.default(item).euclideanDistance(new _vector.default(otherItem));\n break;\n\n default:\n break;\n }\n\n return distance;\n};\n\nexports.getDistance = getDistance;\nvar _default = {\n getAllKeyValueMap: getAllKeyValueMap,\n oneHot: oneHot,\n getDistance: getDistance\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getPropertyWeight = exports.getAllSortProperties = exports.getAllProperties = exports.default = void 0;\n\nvar _time = require(\"../constants/time\");\n\n// 获取所有属性并排序\nvar getAllSortProperties = function getAllSortProperties(nodes, n) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n if (n === void 0) {\n n = 100;\n }\n\n var propertyKeyInfo = {};\n nodes.forEach(function (node) {\n if (!node.properties) {\n return;\n }\n\n Object.keys(node.properties).forEach(function (propertyKey) {\n // 目前过滤只保留可以转成数值型的或日期型的, todo: 统一转成one-hot特征向量或者embedding\n if (propertyKey === 'id' || !\"\".concat(node.properties[propertyKey]).match(_time.secondReg) && !\"\".concat(node.properties[propertyKey]).match(_time.dateReg) && isNaN(Number(node.properties[propertyKey]))) {\n if (propertyKeyInfo.hasOwnProperty(propertyKey)) {\n delete propertyKeyInfo[propertyKey];\n }\n\n return;\n }\n\n if (propertyKeyInfo.hasOwnProperty(propertyKey)) {\n propertyKeyInfo[propertyKey] += 1;\n } else {\n propertyKeyInfo[propertyKey] = 1;\n }\n });\n }); // 取top50的属性\n\n var sortKeys = Object.keys(propertyKeyInfo).sort(function (a, b) {\n return propertyKeyInfo[b] - propertyKeyInfo[a];\n });\n return sortKeys.length < n ? sortKeys : sortKeys.slice(0, n);\n};\n\nexports.getAllSortProperties = getAllSortProperties;\n\nvar processProperty = function processProperty(properties, propertyKeys) {\n return propertyKeys.map(function (key) {\n if (properties.hasOwnProperty(key)) {\n // // 可以转成数值的直接转成数值\n // if (!isNaN(Number(properties[key]))) {\n // return Number(properties[key]);\n // }\n // // 时间型的转成时间戳\n // if (properties[key].match(secondReg) || properties[key].match(dateReg)) {\n // // @ts-ignore\n // return Number(Date.parse(new Date(properties[key]))) / 1000;\n // }\n return properties[key];\n }\n\n return 0;\n });\n}; // 获取属性特征权重\n\n\nvar getPropertyWeight = function getPropertyWeight(nodes) {\n var propertyKeys = getAllSortProperties(nodes);\n var allPropertiesWeight = [];\n\n for (var i = 0; i < nodes.length; i++) {\n allPropertiesWeight[i] = processProperty(nodes[i].properties, propertyKeys);\n }\n\n return allPropertiesWeight;\n}; // 获取所有节点的属性集合\n\n\nexports.getPropertyWeight = getPropertyWeight;\n\nvar getAllProperties = function getAllProperties(nodes, key) {\n if (key === void 0) {\n key = undefined;\n }\n\n var allProperties = [];\n nodes.forEach(function (node) {\n if (key === undefined) {\n allProperties.push(node);\n }\n\n if (node[key] !== undefined) {\n allProperties.push(node[key]);\n }\n });\n return allProperties;\n};\n\nexports.getAllProperties = getAllProperties;\nvar _default = {\n getAllSortProperties: getAllSortProperties,\n getPropertyWeight: getPropertyWeight,\n getAllProperties: getAllProperties\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = require(\"@antv/util\");\n\n/**\n * 向量运算\n */\nvar Vector =\n/** @class */\nfunction () {\n function Vector(arr) {\n this.arr = arr;\n }\n\n Vector.prototype.getArr = function () {\n return this.arr || [];\n };\n\n Vector.prototype.add = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return new Vector(otherArr);\n }\n\n if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return new Vector(this.arr);\n }\n\n if (this.arr.length === otherArr.length) {\n var res = [];\n\n for (var index in this.arr) {\n res[index] = this.arr[index] + otherArr[index];\n }\n\n return new Vector(res);\n }\n };\n\n Vector.prototype.subtract = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return new Vector(otherArr);\n }\n\n if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return new Vector(this.arr);\n }\n\n if (this.arr.length === otherArr.length) {\n var res = [];\n\n for (var index in this.arr) {\n res[index] = this.arr[index] - otherArr[index];\n }\n\n return new Vector(res);\n }\n };\n\n Vector.prototype.avg = function (length) {\n var res = [];\n\n if (length !== 0) {\n for (var index in this.arr) {\n res[index] = this.arr[index] / length;\n }\n }\n\n return new Vector(res);\n };\n\n Vector.prototype.negate = function () {\n var res = [];\n\n for (var index in this.arr) {\n res[index] = -this.arr[index];\n }\n\n return new Vector(res);\n }; // 平方欧式距离\n\n\n Vector.prototype.squareEuclideanDistance = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var index in this.arr) {\n res += Math.pow(this.arr[index] - otherVector.arr[index], 2);\n }\n\n return res;\n }\n }; // 欧式距离\n\n\n Vector.prototype.euclideanDistance = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var index in this.arr) {\n res += Math.pow(this.arr[index] - otherVector.arr[index], 2);\n }\n\n return Math.sqrt(res);\n } else {\n console.error('The two vectors are unequal in length.');\n }\n }; // 归一化处理\n\n\n Vector.prototype.normalize = function () {\n var res = [];\n var cloneArr = (0, _util.clone)(this.arr);\n cloneArr.sort(function (a, b) {\n return a - b;\n });\n var max = cloneArr[cloneArr.length - 1];\n var min = cloneArr[0];\n\n for (var index in this.arr) {\n res[index] = (this.arr[index] - min) / (max - min);\n }\n\n return new Vector(res);\n }; // 2范数 or 模长\n\n\n Vector.prototype.norm2 = function () {\n var _a;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return 0;\n }\n\n var res = 0;\n\n for (var index in this.arr) {\n res += Math.pow(this.arr[index], 2);\n }\n\n return Math.sqrt(res);\n }; // 两个向量的点积\n\n\n Vector.prototype.dot = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var index in this.arr) {\n res += this.arr[index] * otherVector.arr[index];\n }\n\n return res;\n } else {\n console.error('The two vectors are unequal in length.');\n }\n }; // 两个向量比较\n\n\n Vector.prototype.equal = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) !== (otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return false;\n }\n\n for (var index in this.arr) {\n if (this.arr[index] !== otherArr[index]) {\n return false;\n }\n }\n\n return true;\n };\n\n return Vector;\n}();\n\nvar _default = Vector;\nexports.default = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"GADDI\", {\n enumerable: true,\n get: function get() {\n return _gaddi.default;\n }\n});\nObject.defineProperty(exports, \"breadthFirstSearch\", {\n enumerable: true,\n get: function get() {\n return _bfs.default;\n }\n});\nObject.defineProperty(exports, \"connectedComponent\", {\n enumerable: true,\n get: function get() {\n return _connectedComponent.default;\n }\n});\nObject.defineProperty(exports, \"depthFirstSearch\", {\n enumerable: true,\n get: function get() {\n return _dfs.default;\n }\n});\nObject.defineProperty(exports, \"detectCycle\", {\n enumerable: true,\n get: function get() {\n return _detectCycle.default;\n }\n});\nObject.defineProperty(exports, \"dijkstra\", {\n enumerable: true,\n get: function get() {\n return _dijkstra.default;\n }\n});\nObject.defineProperty(exports, \"findAllPath\", {\n enumerable: true,\n get: function get() {\n return _findPath.findAllPath;\n }\n});\nObject.defineProperty(exports, \"findShortestPath\", {\n enumerable: true,\n get: function get() {\n return _findPath.findShortestPath;\n }\n});\nObject.defineProperty(exports, \"floydWarshall\", {\n enumerable: true,\n get: function get() {\n return _floydWarshall.default;\n }\n});\nObject.defineProperty(exports, \"getAdjMatrix\", {\n enumerable: true,\n get: function get() {\n return _adjacentMatrix.default;\n }\n});\nObject.defineProperty(exports, \"getDegree\", {\n enumerable: true,\n get: function get() {\n return _degree.default;\n }\n});\nObject.defineProperty(exports, \"getInDegree\", {\n enumerable: true,\n get: function get() {\n return _degree.getInDegree;\n }\n});\nObject.defineProperty(exports, \"getNeighbors\", {\n enumerable: true,\n get: function get() {\n return _util.getNeighbors;\n }\n});\nObject.defineProperty(exports, \"getOutDegree\", {\n enumerable: true,\n get: function get() {\n return _degree.getOutDegree;\n }\n});\nObject.defineProperty(exports, \"labelPropagation\", {\n enumerable: true,\n get: function get() {\n return _labelPropagation.default;\n }\n});\nObject.defineProperty(exports, \"louvain\", {\n enumerable: true,\n get: function get() {\n return _louvain.default;\n }\n});\nObject.defineProperty(exports, \"minimumSpanningTree\", {\n enumerable: true,\n get: function get() {\n return _mts.default;\n }\n});\nObject.defineProperty(exports, \"pageRank\", {\n enumerable: true,\n get: function get() {\n return _pageRank.default;\n }\n});\n\nvar _adjacentMatrix = _interopRequireDefault(require(\"../adjacent-matrix\"));\n\nvar _bfs = _interopRequireDefault(require(\"../bfs\"));\n\nvar _connectedComponent = _interopRequireDefault(require(\"../connected-component\"));\n\nvar _degree = _interopRequireWildcard(require(\"../degree\"));\n\nvar _detectCycle = _interopRequireDefault(require(\"../detect-cycle\"));\n\nvar _dfs = _interopRequireDefault(require(\"../dfs\"));\n\nvar _dijkstra = _interopRequireDefault(require(\"../dijkstra\"));\n\nvar _findPath = require(\"../find-path\");\n\nvar _floydWarshall = _interopRequireDefault(require(\"../floydWarshall\"));\n\nvar _labelPropagation = _interopRequireDefault(require(\"../label-propagation\"));\n\nvar _louvain = _interopRequireDefault(require(\"../louvain\"));\n\nvar _mts = _interopRequireDefault(require(\"../mts\"));\n\nvar _pageRank = _interopRequireDefault(require(\"../pageRank\"));\n\nvar _gaddi = _interopRequireDefault(require(\"../gaddi\"));\n\nvar _util = require(\"../util\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MESSAGE = exports.ALGORITHM = void 0;\nvar ALGORITHM = {\n pageRank: 'pageRank',\n breadthFirstSearch: 'breadthFirstSearch',\n connectedComponent: 'connectedComponent',\n depthFirstSearch: 'depthFirstSearch',\n detectCycle: 'detectCycle',\n detectDirectedCycle: 'detectDirectedCycle',\n detectAllCycles: 'detectAllCycles',\n detectAllDirectedCycle: 'detectAllDirectedCycle',\n detectAllUndirectedCycle: 'detectAllUndirectedCycle',\n dijkstra: 'dijkstra',\n findAllPath: 'findAllPath',\n findShortestPath: 'findShortestPath',\n floydWarshall: 'floydWarshall',\n getAdjMatrix: 'getAdjMatrix',\n getDegree: 'getDegree',\n getInDegree: 'getInDegree',\n getNeighbors: 'getNeighbors',\n getOutDegree: 'getOutDegree',\n labelPropagation: 'labelPropagation',\n louvain: 'louvain',\n GADDI: 'GADDI',\n minimumSpanningTree: 'minimumSpanningTree',\n SUCCESS: 'SUCCESS',\n FAILURE: 'FAILURE'\n};\nexports.ALGORITHM = ALGORITHM;\nvar MESSAGE = {\n SUCCESS: 'SUCCESS',\n FAILURE: 'FAILURE'\n};\nexports.MESSAGE = MESSAGE;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _constant = require(\"./constant\");\n\nvar _index = _interopRequireDefault(require(\"./index.worker\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 创建一个在worker中运行的算法\n * @param type 算法类型\n */\nvar createWorker = function createWorker(type) {\n return function () {\n var data = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n\n return new Promise(function (resolve, reject) {\n var worker = new _index.default();\n worker.postMessage({\n _algorithmType: type,\n data: data\n });\n\n worker.onmessage = function (event) {\n var _a = event.data,\n data = _a.data,\n _algorithmType = _a._algorithmType;\n\n if (_constant.MESSAGE.SUCCESS === _algorithmType) {\n resolve(data);\n } else {\n reject();\n }\n\n worker.terminate();\n };\n });\n };\n};\n\nvar _default = createWorker;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.pageRankAsync = exports.minimumSpanningTreeAsync = exports.louvainAsync = exports.labelPropagationAsync = exports.getOutDegreeAsync = exports.getNeighborsAsync = exports.getInDegreeAsync = exports.getDegreeAsync = exports.getAdjMatrixAsync = exports.floydWarshallAsync = exports.findShortestPathAsync = exports.findAllPathAsync = exports.dijkstraAsync = exports.detectCycleAsync = exports.detectAllUndirectedCycleAsync = exports.detectAllDirectedCycleAsync = exports.detectAllCyclesAsync = exports.connectedComponentAsync = exports.GADDIAsync = void 0;\n\nvar _createWorker = _interopRequireDefault(require(\"./createWorker\"));\n\nvar _constant = require(\"./constant\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @param graphData 图数据\n * @param directed 是否为有向图\n */\nvar getAdjMatrixAsync = function getAdjMatrixAsync(graphData, directed) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getAdjMatrix).apply(void 0, [graphData, directed]);\n};\n/**\n * 图的连通分量\n * @param graphData 图数据\n * @param directed 是否为有向图\n */\n\n\nexports.getAdjMatrixAsync = getAdjMatrixAsync;\n\nvar connectedComponentAsync = function connectedComponentAsync(graphData, directed) {\n return (0, _createWorker.default)(_constant.ALGORITHM.connectedComponent).apply(void 0, [graphData, directed]);\n};\n/**\n * 获取节点的度\n * @param graphData 图数据\n */\n\n\nexports.connectedComponentAsync = connectedComponentAsync;\n\nvar getDegreeAsync = function getDegreeAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getDegree)(graphData);\n};\n/**\n * 获取节点的入度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\n\nexports.getDegreeAsync = getDegreeAsync;\n\nvar getInDegreeAsync = function getInDegreeAsync(graphData, nodeId) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getInDegree)(graphData, nodeId);\n};\n/**\n * 获取节点的出度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\n\nexports.getInDegreeAsync = getInDegreeAsync;\n\nvar getOutDegreeAsync = function getOutDegreeAsync(graphData, nodeId) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getOutDegree)(graphData, nodeId);\n};\n/**\n * 检测图中的(有向) Cycle\n * @param graphData 图数据\n */\n\n\nexports.getOutDegreeAsync = getOutDegreeAsync;\n\nvar detectCycleAsync = function detectCycleAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.detectCycle)(graphData);\n};\n/**\n * 检测图中的(无向) Cycle\n * @param graphData 图数据\n */\n\n\nexports.detectCycleAsync = detectCycleAsync;\n\nvar detectAllCyclesAsync = function detectAllCyclesAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.detectAllCycles)(graphData);\n};\n/**\n * 检测图中的所有(有向) Cycle\n * @param graphData 图数据\n */\n\n\nexports.detectAllCyclesAsync = detectAllCyclesAsync;\n\nvar detectAllDirectedCycleAsync = function detectAllDirectedCycleAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.detectAllDirectedCycle)(graphData);\n};\n/**\n * 检测图中的所有(无向) Cycle\n * @param graphData 图数据\n */\n\n\nexports.detectAllDirectedCycleAsync = detectAllDirectedCycleAsync;\n\nvar detectAllUndirectedCycleAsync = function detectAllUndirectedCycleAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.detectAllUndirectedCycle)(graphData);\n};\n/**\n * Dijkstra's algorithm, See {@link https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm}\n * @param graphData 图数据\n */\n\n\nexports.detectAllUndirectedCycleAsync = detectAllUndirectedCycleAsync;\n\nvar dijkstraAsync = function dijkstraAsync(graphData, source, directed, weightPropertyName) {\n return (0, _createWorker.default)(_constant.ALGORITHM.dijkstra).apply(void 0, [graphData, source, directed, weightPropertyName]);\n};\n/**\n * 查找两点之间的所有路径\n * @param graphData 图数据\n * @param start 路径起始点ID\n * @param end 路径终点ID\n * @param directed 是否为有向图\n */\n\n\nexports.dijkstraAsync = dijkstraAsync;\n\nvar findAllPathAsync = function findAllPathAsync(graphData, start, end, directed) {\n return (0, _createWorker.default)(_constant.ALGORITHM.findAllPath).apply(void 0, [graphData, start, end, directed]);\n};\n/**\n * 查找两点之间的所有路径\n * @param graphData 图数据\n * @param start 路径起始点ID\n * @param end 路径终点ID\n * @param directed 是否为有向图\n * @param weightPropertyName 边权重的属名称,若数据中没有权重,则默认每条边权重为 1\n */\n\n\nexports.findAllPathAsync = findAllPathAsync;\n\nvar findShortestPathAsync = function findShortestPathAsync(graphData, start, end, directed, weightPropertyName) {\n return (0, _createWorker.default)(_constant.ALGORITHM.findShortestPath).apply(void 0, [graphData, start, end, directed, weightPropertyName]);\n};\n/**\n * Floyd–Warshall algorithm, See {@link https://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm}\n * @param graphData 图数据\n * @param directed 是否为有向图\n */\n\n\nexports.findShortestPathAsync = findShortestPathAsync;\n\nvar floydWarshallAsync = function floydWarshallAsync(graphData, directed) {\n return (0, _createWorker.default)(_constant.ALGORITHM.floydWarshall).apply(void 0, [graphData, directed]);\n};\n/**\n * 标签传播算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param maxIteration 最大迭代次数\n */\n\n\nexports.floydWarshallAsync = floydWarshallAsync;\n\nvar labelPropagationAsync = function labelPropagationAsync(graphData, directed, weightPropertyName, maxIteration) {\n if (maxIteration === void 0) {\n maxIteration = 1000;\n }\n\n return (0, _createWorker.default)(_constant.ALGORITHM.labelPropagation)(graphData, directed, weightPropertyName, maxIteration);\n};\n/**\n * 社区发现 louvain 算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param threshold\n */\n\n\nexports.labelPropagationAsync = labelPropagationAsync;\n\nvar louvainAsync = function louvainAsync(graphData, directed, weightPropertyName, threshold) {\n return (0, _createWorker.default)(_constant.ALGORITHM.louvain)(graphData, directed, weightPropertyName, threshold);\n};\n/**\n * 最小生成树,See {@link https://en.wikipedia.org/wiki/Kruskal%27s_algorithm}\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @param algo 'prim' | 'kruskal' 算法类型\n * @return EdgeConfig[] 返回构成MST的边的数组\n */\n\n\nexports.louvainAsync = louvainAsync;\n\nvar minimumSpanningTreeAsync = function minimumSpanningTreeAsync(graphData, weight, algo) {\n return (0, _createWorker.default)(_constant.ALGORITHM.minimumSpanningTree).apply(void 0, [graphData, weight, algo]);\n};\n/**\n * PageRank https://en.wikipedia.org/wiki/PageRank\n * refer: https://github.com/anvaka/ngraph.pagerank\n * @param graph\n * @param epsilon 判断是否收敛的精度值,默认 0.000001\n * @param linkProb 阻尼系数(dumping factor),指任意时刻,用户访问到某节点后继续访问该节点链接的下一个节点的概率,经验值 0.85\n */\n\n\nexports.minimumSpanningTreeAsync = minimumSpanningTreeAsync;\n\nvar pageRankAsync = function pageRankAsync(graphData, epsilon, linkProb) {\n return (0, _createWorker.default)(_constant.ALGORITHM.pageRank).apply(void 0, [graphData, epsilon, linkProb]);\n};\n/**\n * 获取指定节点的所有邻居\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n * @param type 邻居类型\n */\n\n\nexports.pageRankAsync = pageRankAsync;\n\nvar getNeighborsAsync = function getNeighborsAsync(nodeId, edges, type) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getNeighbors).apply(void 0, [nodeId, edges, type]);\n};\n/**\n * GADDI 图模式匹配\n * @param graphData 原图数据\n * @param pattern 搜索图(需要在原图上搜索的模式)数据\n * @param directed 是否计算有向图,默认 false\n * @param k 参数 k,表示 k-近邻\n * @param length 参数 length\n * @param nodeLabelProp 节点数据中代表节点标签(分类信息)的属性名。默认为 cluster\n * @param edgeLabelProp 边数据中代表边标签(分类信息)的属性名。默认为 cluster\n */\n\n\nexports.getNeighborsAsync = getNeighborsAsync;\n\nvar GADDIAsync = function GADDIAsync(graphData, pattern, directed, k, length, nodeLabelProp, edgeLabelProp) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (edgeLabelProp === void 0) {\n edgeLabelProp = 'cluster';\n }\n\n return (0, _createWorker.default)(_constant.ALGORITHM.GADDI).apply(void 0, [graphData, pattern, directed, k, length, nodeLabelProp, edgeLabelProp]);\n};\n\nexports.GADDIAsync = GADDIAsync;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar algorithm = _interopRequireWildcard(require(\"./algorithm\"));\n\nvar _constant = require(\"./constant\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar ctx = typeof self !== 'undefined' ? self : {};\n\nctx.onmessage = function (event) {\n var _a = event.data,\n _algorithmType = _a._algorithmType,\n data = _a.data; // 如果发送内容没有私有类型。说明不是自己发的。不管\n // fix: https://github.com/antvis/algorithm/issues/25\n\n if (!_algorithmType) {\n return;\n }\n\n if (typeof algorithm[_algorithmType] === 'function') {\n var result = algorithm[_algorithmType].apply(algorithm, data);\n\n ctx.postMessage({\n _algorithmType: _constant.MESSAGE.SUCCESS,\n data: result\n });\n return;\n }\n\n ctx.postMessage({\n _algorithmType: _constant.MESSAGE.FAILURE\n });\n}; // https://stackoverflow.com/questions/50210416/webpack-worker-loader-fails-to-compile-typescript-worker\n\n\nvar _default = null;\nexports.default = _default;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\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 return obj;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\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 Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export const EMPTY = -1;\n\nlet entitySequence = 1;\n\n/**\n * 类似关系型数据库的主键\n * TODO: 自动生成,考虑序列化\n */\nexport function createEntity() {\n return entitySequence++;\n}\n","import { Entity } from '.';\nimport { EMPTY } from './Entity';\n\ntype NonFunctionPropertyNames = {\n [K in keyof T]: T[K] extends (args: unknown) => void ? never : K;\n}[keyof T];\nexport type NonFunctionProperties = Pick>;\n\nexport type ComponentClassType

= new (\n data: Partial>,\n) => Component

& P;\n\nexport abstract class Component

{\n constructor(data?: Partial>) {\n //\n }\n}\n\n/**\n * 管理某一类 Component,尽可能做到 AoS 而非 SoA\n * @see https://wickedengine.net/2019/09/29/entity-component-system/\n * @see https://github.com/turanszkij/WickedEngine/blob/master/WickedEngine/wiECS.h\n */\n// tslint:disable-next-line:max-classes-per-file\nexport class ComponentManager

{\n private clazz: ComponentClassType

;\n private components: Array & P> = [];\n private entities: Entity[] = [];\n\n /**\n * 不在 Entity 中维护拥有的 Component 列表,反之亦然\n */\n private lookup: Record = {};\n\n constructor(clazz: ComponentClassType

) {\n this.clazz = clazz;\n }\n\n public clear() {\n this.components = [];\n this.entities = [];\n this.lookup = {};\n }\n\n public contains(entity: Entity) {\n return this.lookup[entity] > -1;\n }\n\n public create(entity: Entity, data?: Partial>) {\n this.lookup[entity] = this.components.length;\n const component = new this.clazz(data || {});\n this.components.push(component);\n this.entities.push(entity);\n return component;\n }\n\n public remove(entity: Entity) {\n const componentIndex = this.lookup[entity];\n if (componentIndex > -1) {\n if (componentIndex < this.components.length - 1) {\n // 将待删除元素和最后一个元素交换\n // C++ 中有 std::move 这样的操作,避免数据的拷贝\n // @see https://github.com/turanszkij/WickedEngine/blob/master/WickedEngine/wiECS.h#L169\n this.components[componentIndex] = this.components[\n this.components.length - 1\n ];\n this.entities[componentIndex] = this.entities[this.entities.length - 1];\n this.lookup[this.entities[componentIndex]] = componentIndex;\n }\n }\n\n // 待删除元素已经移动到了最后一个\n this.components.pop();\n this.entities.pop();\n delete this.lookup[entity];\n }\n\n public removeKeepSorted(entity: Entity) {\n const componentIndex = this.lookup[entity];\n if (componentIndex > -1) {\n const entity2 = this.entities[componentIndex];\n\n if (componentIndex < this.components.length - 1) {\n // Move every component left by one that is after this element:\n for (let i = componentIndex + 1; i < this.components.length; ++i) {\n this.components[i - 1] = this.components[i];\n }\n // Move every entity left by one that is after this element and update lut:\n for (let i = componentIndex + 1; i < this.entities.length; ++i) {\n this.entities[i - 1] = this.entities[i];\n this.lookup[this.entities[i - 1]] = i - 1;\n }\n }\n\n this.components.pop();\n this.entities.pop();\n delete this.lookup[entity2];\n }\n }\n\n public moveItem(srcIndex: number, destIndex: number) {\n if (srcIndex === destIndex) {\n return;\n }\n\n // Save the moved component and entity:\n const srcComponent = this.components[srcIndex];\n const srcEntity = this.entities[srcIndex];\n\n // Every other entity-component that's in the way gets moved by one and lut is kept updated:\n const direction = srcIndex < destIndex ? 1 : -1;\n for (let i = srcIndex; i !== destIndex; i += direction) {\n const next = i + direction;\n this.components[i] = this.components[next];\n this.entities[i] = this.entities[next];\n this.lookup[this.entities[i]] = i;\n }\n\n // Saved entity-component moved to the required position:\n this.components[destIndex] = srcComponent;\n this.entities[destIndex] = srcEntity;\n this.lookup[srcEntity] = destIndex;\n }\n\n public getEntity(index: number) {\n return this.entities[index];\n }\n\n /**\n * 由于缺少类似 C++ 的重载操作符,没法通过 [下标] 直接访问。因此只能增加该方法用于遍历。\n */\n public getComponent(index: number) {\n return this.components[index];\n }\n\n public getComponentByEntity(entity: Entity) {\n const componentIndex = this.lookup[entity];\n if (componentIndex > -1) {\n return this.components[componentIndex];\n }\n return null;\n }\n\n public getCount() {\n return this.components.length;\n }\n\n public getEntityByComponentIndex(componentIdx: number) {\n for (const entity of Object.keys(this.lookup)) {\n const entityInNum = Number(entity);\n if (this.lookup[entityInNum] === componentIdx) {\n return entityInNum;\n }\n }\n return EMPTY;\n }\n\n public find(callback: (component: Component

& P, i: number) => boolean) {\n for (let i = 0; i < this.getCount(); i++) {\n const component = this.getComponent(i);\n if (callback(component, i)) {\n return component;\n }\n }\n return null;\n }\n\n public findIndex(\n callback: (component: Component

& P, i: number) => boolean,\n ) {\n for (let i = 0; i < this.getCount(); i++) {\n const component = this.getComponent(i);\n if (callback(component, i)) {\n return i;\n }\n }\n return -1;\n }\n\n public forEach(\n callback: (entity: Entity, component: Component

& P) => void,\n ) {\n for (const entity of Object.keys(this.lookup)) {\n const entityInNum = Number(entity);\n const componentIndex = this.lookup[entityInNum];\n callback(entityInNum, this.getComponent(componentIndex));\n }\n }\n\n public async forEachAsync(\n callback: (entity: Entity, component: Component

& P) => Promise,\n ) {\n for (const entity of Object.keys(this.lookup)) {\n const entityInNum = Number(entity);\n const componentIndex = this.lookup[entityInNum];\n await callback(entityInNum, this.getComponent(componentIndex));\n }\n }\n\n public map(callback: (entity: Entity, component: Component

& P) => void) {\n const result = [];\n for (const entity of Object.keys(this.lookup)) {\n const entityInNum = Number(entity);\n const componentIndex = this.lookup[entityInNum];\n result.push(callback(entityInNum, this.getComponent(componentIndex)));\n }\n return result;\n }\n}\n","/**\n * WebGL 枚举值\n * @see http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14\n * 使用 babel 插件对常量进行内联,以减少最终打包产物大小\n * @see https://github.com/uber/deck.gl/blob/7.1-release/dev-docs/roadmaps/dist-size-roadmap.md#inline-gl-constants\n * 为了支持 WebGPU,新增 TextureUsage\n * @see https://gpuweb.github.io/gpuweb/#gputextureusage\n */\nexport enum gl {\n /* ClearBufferMask */\n DEPTH_BUFFER_BIT = 0x00000100,\n STENCIL_BUFFER_BIT = 0x00000400,\n COLOR_BUFFER_BIT = 0x00004000,\n\n /* BeginMode */\n POINTS = 0x0000,\n LINES = 0x0001,\n LINE_LOOP = 0x0002,\n LINE_STRIP = 0x0003,\n TRIANGLES = 0x0004,\n TRIANGLE_STRIP = 0x0005,\n TRIANGLE_FAN = 0x0006,\n\n /* AlphaFunction (not supported in ES20) */\n /* NEVER */\n /* LESS */\n /* EQUAL */\n /* LEQUAL */\n /* GREATER */\n /* NOTEQUAL */\n /* GEQUAL */\n /* ALWAYS */\n\n /* BlendingFactorDest */\n ZERO = 0,\n ONE = 1,\n SRC_COLOR = 0x0300,\n ONE_MINUS_SRC_COLOR = 0x0301,\n SRC_ALPHA = 0x0302,\n ONE_MINUS_SRC_ALPHA = 0x0303,\n DST_ALPHA = 0x0304,\n ONE_MINUS_DST_ALPHA = 0x0305,\n\n /* BlendingFactorSrc */\n /* ZERO */\n /* ONE */\n DST_COLOR = 0x0306,\n ONE_MINUS_DST_COLOR = 0x0307,\n SRC_ALPHA_SATURATE = 0x0308,\n /* SRC_ALPHA */\n /* ONE_MINUS_SRC_ALPHA */\n /* DST_ALPHA */\n /* ONE_MINUS_DST_ALPHA */\n\n /* BlendEquationSeparate */\n FUNC_ADD = 0x8006,\n BLEND_EQUATION = 0x8009,\n BLEND_EQUATION_RGB = 0x8009 /* same as BLEND_EQUATION */,\n BLEND_EQUATION_ALPHA = 0x883d,\n\n /* BlendSubtract */\n FUNC_SUBTRACT = 0x800a,\n FUNC_REVERSE_SUBTRACT = 0x800b,\n\n /** Blend Min Max */\n MAX_EXT = 0x8008,\n MIN_EXT = 0x8007,\n\n /* Separate Blend Functions */\n BLEND_DST_RGB = 0x80c8,\n BLEND_SRC_RGB = 0x80c9,\n BLEND_DST_ALPHA = 0x80ca,\n BLEND_SRC_ALPHA = 0x80cb,\n CONSTANT_COLOR = 0x8001,\n ONE_MINUS_CONSTANT_COLOR = 0x8002,\n CONSTANT_ALPHA = 0x8003,\n ONE_MINUS_CONSTANT_ALPHA = 0x8004,\n BLEND_COLOR = 0x8005,\n\n /* Buffer Objects */\n ARRAY_BUFFER = 0x8892,\n ELEMENT_ARRAY_BUFFER = 0x8893,\n ARRAY_BUFFER_BINDING = 0x8894,\n ELEMENT_ARRAY_BUFFER_BINDING = 0x8895,\n\n STREAM_DRAW = 0x88e0,\n STATIC_DRAW = 0x88e4,\n DYNAMIC_DRAW = 0x88e8,\n\n BUFFER_SIZE = 0x8764,\n BUFFER_USAGE = 0x8765,\n\n CURRENT_VERTEX_ATTRIB = 0x8626,\n\n /* CullFaceMode */\n FRONT = 0x0404,\n BACK = 0x0405,\n FRONT_AND_BACK = 0x0408,\n\n /* DepthFunction */\n /* NEVER */\n /* LESS */\n /* EQUAL */\n /* LEQUAL */\n /* GREATER */\n /* NOTEQUAL */\n /* GEQUAL */\n /* ALWAYS */\n\n /* EnableCap */\n /* TEXTURE_2D */\n CULL_FACE = 0x0b44,\n BLEND = 0x0be2,\n DITHER = 0x0bd0,\n STENCIL_TEST = 0x0b90,\n DEPTH_TEST = 0x0b71,\n SCISSOR_TEST = 0x0c11,\n POLYGON_OFFSET_FILL = 0x8037,\n SAMPLE_ALPHA_TO_COVERAGE = 0x809e,\n SAMPLE_COVERAGE = 0x80a0,\n\n /* ErrorCode */\n NO_ERROR = 0,\n INVALID_ENUM = 0x0500,\n INVALID_VALUE = 0x0501,\n INVALID_OPERATION = 0x0502,\n OUT_OF_MEMORY = 0x0505,\n\n /* FrontFaceDirection */\n CW = 0x0900,\n CCW = 0x0901,\n\n /* GetPName */\n LINE_WIDTH = 0x0b21,\n ALIASED_POINT_SIZE_RANGE = 0x846d,\n ALIASED_LINE_WIDTH_RANGE = 0x846e,\n CULL_FACE_MODE = 0x0b45,\n FRONT_FACE = 0x0b46,\n DEPTH_RANGE = 0x0b70,\n DEPTH_WRITEMASK = 0x0b72,\n DEPTH_CLEAR_VALUE = 0x0b73,\n DEPTH_FUNC = 0x0b74,\n STENCIL_CLEAR_VALUE = 0x0b91,\n STENCIL_FUNC = 0x0b92,\n STENCIL_FAIL = 0x0b94,\n STENCIL_PASS_DEPTH_FAIL = 0x0b95,\n STENCIL_PASS_DEPTH_PASS = 0x0b96,\n STENCIL_REF = 0x0b97,\n STENCIL_VALUE_MASK = 0x0b93,\n STENCIL_WRITEMASK = 0x0b98,\n STENCIL_BACK_FUNC = 0x8800,\n STENCIL_BACK_FAIL = 0x8801,\n STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802,\n STENCIL_BACK_PASS_DEPTH_PASS = 0x8803,\n STENCIL_BACK_REF = 0x8ca3,\n STENCIL_BACK_VALUE_MASK = 0x8ca4,\n STENCIL_BACK_WRITEMASK = 0x8ca5,\n VIEWPORT = 0x0ba2,\n SCISSOR_BOX = 0x0c10,\n /* SCISSOR_TEST */\n COLOR_CLEAR_VALUE = 0x0c22,\n COLOR_WRITEMASK = 0x0c23,\n UNPACK_ALIGNMENT = 0x0cf5,\n PACK_ALIGNMENT = 0x0d05,\n MAX_TEXTURE_SIZE = 0x0d33,\n MAX_VIEWPORT_DIMS = 0x0d3a,\n SUBPIXEL_BITS = 0x0d50,\n RED_BITS = 0x0d52,\n GREEN_BITS = 0x0d53,\n BLUE_BITS = 0x0d54,\n ALPHA_BITS = 0x0d55,\n DEPTH_BITS = 0x0d56,\n STENCIL_BITS = 0x0d57,\n POLYGON_OFFSET_UNITS = 0x2a00,\n /* POLYGON_OFFSET_FILL */\n POLYGON_OFFSET_FACTOR = 0x8038,\n TEXTURE_BINDING_2D = 0x8069,\n SAMPLE_BUFFERS = 0x80a8,\n SAMPLES = 0x80a9,\n SAMPLE_COVERAGE_VALUE = 0x80aa,\n SAMPLE_COVERAGE_INVERT = 0x80ab,\n\n /* GetTextureParameter */\n /* TEXTURE_MAG_FILTER */\n /* TEXTURE_MIN_FILTER */\n /* TEXTURE_WRAP_S */\n /* TEXTURE_WRAP_T */\n\n COMPRESSED_TEXTURE_FORMATS = 0x86a3,\n\n /* HintMode */\n DONT_CARE = 0x1100,\n FASTEST = 0x1101,\n NICEST = 0x1102,\n\n /* HintTarget */\n GENERATE_MIPMAP_HINT = 0x8192,\n\n /* DataType */\n BYTE = 0x1400,\n UNSIGNED_BYTE = 0x1401,\n SHORT = 0x1402,\n UNSIGNED_SHORT = 0x1403,\n INT = 0x1404,\n UNSIGNED_INT = 0x1405,\n FLOAT = 0x1406,\n\n /* PixelFormat */\n DEPTH_COMPONENT = 0x1902,\n ALPHA = 0x1906,\n RGB = 0x1907,\n RGBA = 0x1908,\n LUMINANCE = 0x1909,\n LUMINANCE_ALPHA = 0x190a,\n\n /* PixelType */\n /* UNSIGNED_BYTE */\n UNSIGNED_SHORT_4_4_4_4 = 0x8033,\n UNSIGNED_SHORT_5_5_5_1 = 0x8034,\n UNSIGNED_SHORT_5_6_5 = 0x8363,\n\n /* Shaders */\n FRAGMENT_SHADER = 0x8b30,\n VERTEX_SHADER = 0x8b31,\n MAX_VERTEX_ATTRIBS = 0x8869,\n MAX_VERTEX_UNIFORM_VECTORS = 0x8dfb,\n MAX_VARYING_VECTORS = 0x8dfc,\n MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8b4d,\n MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8b4c,\n MAX_TEXTURE_IMAGE_UNITS = 0x8872,\n MAX_FRAGMENT_UNIFORM_VECTORS = 0x8dfd,\n SHADER_TYPE = 0x8b4f,\n DELETE_STATUS = 0x8b80,\n LINK_STATUS = 0x8b82,\n VALIDATE_STATUS = 0x8b83,\n ATTACHED_SHADERS = 0x8b85,\n ACTIVE_UNIFORMS = 0x8b86,\n ACTIVE_ATTRIBUTES = 0x8b89,\n SHADING_LANGUAGE_VERSION = 0x8b8c,\n CURRENT_PROGRAM = 0x8b8d,\n\n /* StencilFunction */\n NEVER = 0x0200,\n LESS = 0x0201,\n EQUAL = 0x0202,\n LEQUAL = 0x0203,\n GREATER = 0x0204,\n NOTEQUAL = 0x0205,\n GEQUAL = 0x0206,\n ALWAYS = 0x0207,\n\n /* StencilOp */\n /* ZERO */\n KEEP = 0x1e00,\n REPLACE = 0x1e01,\n INCR = 0x1e02,\n DECR = 0x1e03,\n INVERT = 0x150a,\n INCR_WRAP = 0x8507,\n DECR_WRAP = 0x8508,\n\n /* StringName */\n VENDOR = 0x1f00,\n RENDERER = 0x1f01,\n VERSION = 0x1f02,\n\n /* TextureMagFilter */\n NEAREST = 0x2600,\n LINEAR = 0x2601,\n\n /* TextureMinFilter */\n /* NEAREST */\n /* LINEAR */\n NEAREST_MIPMAP_NEAREST = 0x2700,\n LINEAR_MIPMAP_NEAREST = 0x2701,\n NEAREST_MIPMAP_LINEAR = 0x2702,\n LINEAR_MIPMAP_LINEAR = 0x2703,\n\n /* TextureParameterName */\n TEXTURE_MAG_FILTER = 0x2800,\n TEXTURE_MIN_FILTER = 0x2801,\n TEXTURE_WRAP_S = 0x2802,\n TEXTURE_WRAP_T = 0x2803,\n\n /* TextureTarget */\n TEXTURE_2D = 0x0de1,\n TEXTURE = 0x1702,\n\n TEXTURE_CUBE_MAP = 0x8513,\n TEXTURE_BINDING_CUBE_MAP = 0x8514,\n TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515,\n TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516,\n TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517,\n TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518,\n TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519,\n TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851a,\n MAX_CUBE_MAP_TEXTURE_SIZE = 0x851c,\n\n /* TextureUnit */\n TEXTURE0 = 0x84c0,\n TEXTURE1 = 0x84c1,\n TEXTURE2 = 0x84c2,\n TEXTURE3 = 0x84c3,\n TEXTURE4 = 0x84c4,\n TEXTURE5 = 0x84c5,\n TEXTURE6 = 0x84c6,\n TEXTURE7 = 0x84c7,\n TEXTURE8 = 0x84c8,\n TEXTURE9 = 0x84c9,\n TEXTURE10 = 0x84ca,\n TEXTURE11 = 0x84cb,\n TEXTURE12 = 0x84cc,\n TEXTURE13 = 0x84cd,\n TEXTURE14 = 0x84ce,\n TEXTURE15 = 0x84cf,\n TEXTURE16 = 0x84d0,\n TEXTURE17 = 0x84d1,\n TEXTURE18 = 0x84d2,\n TEXTURE19 = 0x84d3,\n TEXTURE20 = 0x84d4,\n TEXTURE21 = 0x84d5,\n TEXTURE22 = 0x84d6,\n TEXTURE23 = 0x84d7,\n TEXTURE24 = 0x84d8,\n TEXTURE25 = 0x84d9,\n TEXTURE26 = 0x84da,\n TEXTURE27 = 0x84db,\n TEXTURE28 = 0x84dc,\n TEXTURE29 = 0x84dd,\n TEXTURE30 = 0x84de,\n TEXTURE31 = 0x84df,\n ACTIVE_TEXTURE = 0x84e0,\n\n /* TextureWrapMode */\n REPEAT = 0x2901,\n CLAMP_TO_EDGE = 0x812f,\n MIRRORED_REPEAT = 0x8370,\n\n /* Uniform Types */\n FLOAT_VEC2 = 0x8b50,\n FLOAT_VEC3 = 0x8b51,\n FLOAT_VEC4 = 0x8b52,\n INT_VEC2 = 0x8b53,\n INT_VEC3 = 0x8b54,\n INT_VEC4 = 0x8b55,\n BOOL = 0x8b56,\n BOOL_VEC2 = 0x8b57,\n BOOL_VEC3 = 0x8b58,\n BOOL_VEC4 = 0x8b59,\n FLOAT_MAT2 = 0x8b5a,\n FLOAT_MAT3 = 0x8b5b,\n FLOAT_MAT4 = 0x8b5c,\n SAMPLER_2D = 0x8b5e,\n SAMPLER_CUBE = 0x8b60,\n\n /* Vertex Arrays */\n VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622,\n VERTEX_ATTRIB_ARRAY_SIZE = 0x8623,\n VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624,\n VERTEX_ATTRIB_ARRAY_TYPE = 0x8625,\n VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886a,\n VERTEX_ATTRIB_ARRAY_POINTER = 0x8645,\n VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889f,\n\n /* Shader Source */\n COMPILE_STATUS = 0x8b81,\n\n /* Shader Precision-Specified Types */\n LOW_FLOAT = 0x8df0,\n MEDIUM_FLOAT = 0x8df1,\n HIGH_FLOAT = 0x8df2,\n LOW_INT = 0x8df3,\n MEDIUM_INT = 0x8df4,\n HIGH_INT = 0x8df5,\n\n /* Framebuffer Object. */\n FRAMEBUFFER = 0x8d40,\n RENDERBUFFER = 0x8d41,\n\n RGBA4 = 0x8056,\n RGB5_A1 = 0x8057,\n RGB565 = 0x8d62,\n DEPTH_COMPONENT16 = 0x81a5,\n STENCIL_INDEX = 0x1901,\n STENCIL_INDEX8 = 0x8d48,\n DEPTH_STENCIL = 0x84f9,\n\n RENDERBUFFER_WIDTH = 0x8d42,\n RENDERBUFFER_HEIGHT = 0x8d43,\n RENDERBUFFER_INTERNAL_FORMAT = 0x8d44,\n RENDERBUFFER_RED_SIZE = 0x8d50,\n RENDERBUFFER_GREEN_SIZE = 0x8d51,\n RENDERBUFFER_BLUE_SIZE = 0x8d52,\n RENDERBUFFER_ALPHA_SIZE = 0x8d53,\n RENDERBUFFER_DEPTH_SIZE = 0x8d54,\n RENDERBUFFER_STENCIL_SIZE = 0x8d55,\n\n FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8cd0,\n FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8cd1,\n FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8cd2,\n FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8cd3,\n\n COLOR_ATTACHMENT0 = 0x8ce0,\n DEPTH_ATTACHMENT = 0x8d00,\n STENCIL_ATTACHMENT = 0x8d20,\n DEPTH_STENCIL_ATTACHMENT = 0x821a,\n\n NONE = 0,\n\n FRAMEBUFFER_COMPLETE = 0x8cd5,\n FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8cd6,\n FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8cd7,\n FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8cd9,\n FRAMEBUFFER_UNSUPPORTED = 0x8cdd,\n\n FRAMEBUFFER_BINDING = 0x8ca6,\n RENDERBUFFER_BINDING = 0x8ca7,\n MAX_RENDERBUFFER_SIZE = 0x84e8,\n\n INVALID_FRAMEBUFFER_OPERATION = 0x0506,\n\n /* WebGL-specific enums */\n UNPACK_FLIP_Y_WEBGL = 0x9240,\n UNPACK_PREMULTIPLY_ALPHA_WEBGL = 0x9241,\n CONTEXT_LOST_WEBGL = 0x9242,\n UNPACK_COLORSPACE_CONVERSION_WEBGL = 0x9243,\n BROWSER_DEFAULT_WEBGL = 0x9244,\n\n // GPUFlagsConstant @see https://gpuweb.github.io/gpuweb/#gputextureusage\n COPY_SRC = 0x01,\n COPY_DST = 0x02,\n SAMPLED = 0x04,\n STORAGE = 0x08,\n RENDER_ATTACHMENT = 0x10,\n}\n","import { IConfig, IConfigService } from './IConfigService';\n\nexport class ConfigService implements IConfigService {\n private config: Partial;\n\n public get() {\n return this.config;\n }\n\n public set(config: Partial) {\n this.config = config;\n }\n}\n","import { Component, ComponentManager } from './ComponentManager';\nimport { gl } from './components/renderer/gl';\nexport type {\n IAttribute,\n IAttributeInitializationOptions,\n} from './components/renderer/IAttribute';\nexport type {\n IBuffer,\n IBufferInitializationOptions,\n} from './components/renderer/IBuffer';\nexport type { IComputeModel } from './components/renderer/IComputeModel';\nexport type {\n IElements,\n IElementsInitializationOptions,\n} from './components/renderer/IElements';\nexport type {\n IFramebuffer,\n IFramebufferInitializationOptions,\n} from './components/renderer/IFramebuffer';\nexport type {\n IModel,\n IModelDrawOptions,\n IModelInitializationOptions,\n} from './components/renderer/IModel';\nexport type {\n IRenderbuffer,\n IRenderbufferInitializationOptions,\n} from './components/renderer/IRenderbuffer';\nexport type {\n BufferData,\n IClearOptions,\n IReadPixelsOptions,\n IRendererConfig,\n IRendererService,\n IViewport,\n} from './components/renderer/IRendererService';\nexport type {\n ITexture2D,\n ITexture2DInitializationOptions,\n} from './components/renderer/ITexture2D';\nexport type { IUniform } from './components/renderer/IUniform';\n\nimport { createEntity } from './Entity';\nimport { ConfigService } from './services/config/ConfigService';\nexport type { IConfig, IConfigService } from './services/config/IConfigService';\nexport type { IShaderModuleService } from './services/shader-module/IShaderModuleService';\nimport { isSafari } from './utils/isSafari';\n\ntype Entity = number;\n\nenum AST_TOKEN_TYPES {\n Void = 'Void',\n Boolean = 'Boolean',\n Float = 'Float',\n Uint32 = 'Uint32',\n Int32 = 'Int32',\n Vector = 'Vector',\n Vector2Float = 'vec2',\n Vector3Float = 'vec3',\n Vector4Float = 'vec4',\n Vector2Boolean = 'vec2',\n Vector3Boolean = 'vec3',\n Vector4Boolean = 'vec4',\n Vector2Uint = 'vec2',\n Vector3Uint = 'vec3',\n Vector4Uint = 'vec4',\n Vector2Int = 'vec2',\n Vector3Int = 'vec3',\n Vector4Int = 'vec4',\n Matrix = 'Matrix',\n Matrix3x3Float = 'mat3x3',\n Matrix4x4Float = 'mat4x4',\n Struct = 'Struct',\n FloatArray = 'Float[]',\n Vector4FloatArray = 'vec4[]',\n}\n\nenum AST_NODE_TYPES {\n Program = 'Program',\n Identifier = 'Identifier',\n VariableDeclaration = 'VariableDeclaration',\n BlockStatement = 'BlockStatement',\n ReturnStatement = 'ReturnStatement',\n FunctionDeclaration = 'FunctionDeclaration',\n VariableDeclarator = 'VariableDeclarator',\n AssignmentExpression = 'AssignmentExpression',\n LogicalExpression = 'LogicalExpression',\n BinaryExpression = 'BinaryExpression',\n ArrayExpression = 'ArrayExpression',\n UnaryExpression = 'UnaryExpression',\n UpdateExpression = 'UpdateExpression',\n FunctionExpression = 'FunctionExpression',\n MemberExpression = 'MemberExpression',\n ConditionalExpression = 'ConditionalExpression',\n ExpressionStatement = 'ExpressionStatement',\n CallExpression = 'CallExpression',\n NumThreadStatement = 'NumThreadStatement',\n StorageStatement = 'StorageStatement',\n DoWhileStatement = 'DoWhileStatement',\n WhileStatement = 'WhileStatement',\n ForStatement = 'ForStatement',\n BreakStatement = 'BreakStatement',\n ContinueStatement = 'ContinueStatement',\n IfStatement = 'IfStatement',\n ImportedFunctionStatement = 'ImportedFunctionStatement',\n}\n\nenum STORAGE_CLASS {\n Input = 'Input',\n Output = 'Output',\n Uniform = 'Uniform',\n Workgroup = 'Workgroup',\n UniformConstant = 'UniformConstant',\n Image = 'Image',\n StorageBuffer = 'StorageBuffer',\n Private = 'Private',\n Function = 'Function',\n}\n\ntype TypedArrayConstructor =\n | Int8ArrayConstructor\n | Uint8ArrayConstructor\n | Uint8ClampedArrayConstructor\n | Int16ArrayConstructor\n | Uint16ArrayConstructor\n | Int32ArrayConstructor\n | Uint32ArrayConstructor\n | Float32ArrayConstructor\n | Float64ArrayConstructor;\n\ntype DataType =\n | AST_TOKEN_TYPES.Uint32\n | AST_TOKEN_TYPES.Int32\n | AST_TOKEN_TYPES.Boolean\n | AST_TOKEN_TYPES.Float\n | AST_TOKEN_TYPES.Vector2Float\n | AST_TOKEN_TYPES.Vector3Float\n | AST_TOKEN_TYPES.Vector4Float\n | AST_TOKEN_TYPES.Vector2Int\n | AST_TOKEN_TYPES.Vector3Int\n | AST_TOKEN_TYPES.Vector4Int\n | AST_TOKEN_TYPES.Vector2Uint\n | AST_TOKEN_TYPES.Vector3Uint\n | AST_TOKEN_TYPES.Vector4Uint\n | AST_TOKEN_TYPES.Vector2Boolean\n | AST_TOKEN_TYPES.Vector3Boolean\n | AST_TOKEN_TYPES.Vector4Boolean\n | AST_TOKEN_TYPES.Matrix3x3Float\n | AST_TOKEN_TYPES.Matrix4x4Float\n | AST_TOKEN_TYPES.FloatArray\n | AST_TOKEN_TYPES.Vector4FloatArray\n | AST_TOKEN_TYPES.Void;\n\ninterface GLSLContext {\n /**\n * 程序名\n */\n name: string;\n\n shader?: string;\n /**\n * size of thread grid\n * 即 WebGL 2 Compute 中的 dispatchCompute\n * 或者 WebGPU 中的 dispatch\n */\n dispatch: [number, number, number];\n /**\n * size of each thread group\n * Compute Shader 中的 local_size_x/y/z\n */\n threadGroupSize: [number, number, number];\n /**\n * 迭代次数,例如布局运算中需要迭代很多次才能到达稳定\n */\n maxIteration: number;\n /**\n * 是否需要 pingpong,如果存在输入和输出为同一个的情况\n */\n needPingpong: boolean;\n /**\n * 目前仅支持单一输出,受限于 WebGL 实现\n */\n output: {\n name: string;\n size?: [number, number];\n textureSize?: [number, number];\n length?: number;\n typedArrayConstructor?: TypedArrayConstructor;\n gpuBuffer?: any;\n outputElementsPerTexel?: number;\n };\n /**\n * 常量,可分成编译时和运行时两类:\n * 1. 编译时即可确定值\n * 2. 运行时:例如循环长度需要为常量,但在编译时又无法确定\n * TODO 支持定义函数,例如 tensorflow 中的 DIV_CEIL\n */\n defines: Array<{\n name: string;\n type: DataType;\n value: number;\n runtime: boolean; // 是否是运行时生成\n }>;\n globalDeclarations: Array<{\n name: string;\n type: DataType;\n value: string;\n shared: boolean;\n }>;\n uniforms: Array<{\n name: string;\n type: DataType;\n data?:\n | number\n | number[]\n | Float32Array\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | Int8Array\n | Int16Array\n | Int32Array;\n size?: [number, number];\n storageClass: STORAGE_CLASS;\n readonly: boolean;\n writeonly: boolean;\n isReferer?: boolean;\n }>;\n}\n\n/**\n * 根据目标平台生成 Shader 代码\n * * WebGL GLSL 1.0\n * * WebGPU Chrome/Edge GLSL 4.5 & WGSL @see https://gpuweb.github.io/gpuweb/wgsl.html\n * * Safari WHLSL (maybe deprecated)\n */\nenum Target {\n GLSL100 = 'GLSL100',\n GLSL450 = 'GLSL450',\n WGSL = 'WGSL',\n}\n\nconst DefineValuePlaceholder = '__DefineValuePlaceholder__';\n\ninterface KernelBundle {\n shaders: {\n [Target.WGSL]: string;\n [Target.GLSL450]: string;\n [Target.GLSL100]: string;\n };\n context?: GLSLContext;\n toString(): string;\n}\n\nexport {\n createEntity,\n Component,\n ComponentManager,\n Entity,\n isSafari,\n // renderer service\n gl,\n ConfigService,\n AST_TOKEN_TYPES,\n AST_NODE_TYPES,\n STORAGE_CLASS,\n GLSLContext,\n DataType,\n Target,\n DefineValuePlaceholder,\n KernelBundle,\n};\n","export const isSafari =\n typeof navigator !== 'undefined' &&\n /Version\\/[\\d\\.]+.*Safari/.test(navigator.userAgent);\n","export function createCanvas() {\n if (typeof document !== 'undefined') {\n return document.createElement('canvas');\n } else {\n throw new Error('Cannot create a canvas in this context');\n }\n}\n","import {\n AST_TOKEN_TYPES,\n DefineValuePlaceholder,\n IComputeModel,\n IConfigService,\n IRendererService,\n KernelBundle,\n STORAGE_CLASS,\n Target,\n} from '@antv/g-webgpu-core';\nimport { isArray, isNumber, isTypedArray } from 'lodash';\nimport { createCanvas } from './utils/canvas';\n\nexport class Kernel {\n\n private model: IComputeModel;\n\n private dirty: boolean = true;\n\n private compiledBundle: KernelBundle;\n\n private initPromise: Promise;\n constructor(\n private readonly engine: IRendererService,\n private readonly configService: IConfigService,\n ) {}\n\n public init() {\n const { canvas, engineOptions } = this.configService.get();\n\n this.initPromise = this.engine.init({\n canvas: canvas || createCanvas(),\n // swapChainFormat: WebGPUConstants.TextureFormat.BGRA8Unorm,\n antialiasing: false,\n ...engineOptions,\n });\n }\n\n public setBundle(bundle: KernelBundle) {\n // deep clone\n this.compiledBundle = JSON.parse(JSON.stringify(bundle));\n }\n\n public setDispatch(dispatch: [number, number, number]) {\n if (this.compiledBundle.context) {\n this.compiledBundle.context.dispatch = dispatch;\n }\n return this;\n }\n\n public setMaxIteration(maxIteration: number) {\n if (this.compiledBundle.context) {\n this.compiledBundle.context.maxIteration = maxIteration;\n }\n return this;\n }\n\n public setBinding(\n name:\n | string\n | Record<\n string,\n | number\n | number[]\n | Float32Array\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | Int8Array\n | Int16Array\n | Int32Array\n >,\n data?:\n | number\n | number[]\n | Float32Array\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | Int8Array\n | Int16Array\n | Int32Array\n | Kernel,\n ) {\n if (typeof name === 'string') {\n const isNumberLikeData =\n isNumber(data) || isTypedArray(data) || isArray(data);\n if (this.compiledBundle && this.compiledBundle.context) {\n // set define, eg. setBinding('MAX_LENGTH', 10)\n const existedDefine = this.compiledBundle.context.defines.find(\n (b) => b.name === name,\n );\n if (existedDefine) {\n existedDefine.value = data as number;\n return this;\n }\n\n // set uniform\n const existedBinding = this.compiledBundle.context.uniforms.find(\n (b) => b.name === name,\n );\n if (existedBinding) {\n // update uniform or buffer\n if (isNumberLikeData) {\n // @ts-ignore\n existedBinding.data = data;\n existedBinding.isReferer = false;\n\n if (existedBinding.storageClass === STORAGE_CLASS.Uniform) {\n if (this.model) {\n // @ts-ignore\n this.model.updateUniform(name, data);\n }\n } else {\n if (this.model) {\n // @ts-ignore\n this.model.updateBuffer(name, data);\n }\n }\n } else {\n // update with another kernel\n existedBinding.isReferer = true;\n // @ts-ignore\n existedBinding.data = data as Kernel;\n }\n }\n }\n } else {\n Object.keys(name).forEach((key) => {\n this.setBinding(key, name[key]);\n });\n }\n return this;\n }\n\n public async execute(iteration: number = 1) {\n if (this.dirty) {\n if (this.compiledBundle.context) {\n if (iteration > 1) {\n this.compiledBundle.context.maxIteration = iteration;\n } else {\n this.compiledBundle.context.maxIteration++;\n }\n }\n await this.compile();\n this.dirty = false;\n }\n\n this.engine.beginFrame();\n\n // 首先开启当前 frame 的 compute pass\n this.engine.clear({});\n\n if (this.compiledBundle.context) {\n this.compiledBundle.context.uniforms\n .filter(({ isReferer }) => isReferer)\n .forEach(({ data, name }) => {\n // @ts-ignore\n this.model.confirmInput((data as Kernel).model, name);\n });\n }\n for (let i = 0; i < iteration; i++) {\n this.model.run();\n }\n\n this.engine.endFrame();\n return this;\n }\n\n /**\n * read output from GPUBuffer\n */\n public async getOutput() {\n return this.model.readData();\n }\n\n private async compile() {\n await this.initPromise;\n\n const context = {\n ...this.compiledBundle.context!,\n };\n\n const target = this.engine.supportWebGPU\n ? this.engine.useWGSL\n ? Target.WGSL\n : Target.GLSL450\n : Target.GLSL100;\n let shader = this.compiledBundle.shaders[target];\n\n // this.bindings?.forEach(({ name, data }) => {\n // if (name === name.toUpperCase()) {\n // const define = context.defines.find((d) => d.name === name);\n // if (define) {\n // // @ts-ignore\n // define.value = data;\n // }\n // }\n // });\n\n // 生成运行时 define\n context.defines\n .filter((define) => define.runtime)\n .forEach((define) => {\n const valuePlaceHolder = `${DefineValuePlaceholder}${define.name}`;\n shader = shader.replace(valuePlaceHolder, `${define.value}`);\n });\n\n context.shader = shader;\n\n // 添加 uniform 绑定的数据\n context.uniforms.forEach((uniform) => {\n // const binding = this.bindings.find((b) => b.name === uniform.name);\n // if (binding) {\n // // @ts-ignore\n // uniform.data = binding.referer || binding.data;\n // // @ts-ignore\n // uniform.isReferer = !!binding.referer;\n // }\n\n // 未指定数据,尝试根据 uniform 类型初始化\n if (!uniform.data) {\n if (uniform.storageClass === STORAGE_CLASS.StorageBuffer) {\n let sizePerElement = 1;\n if (uniform.type === AST_TOKEN_TYPES.FloatArray) {\n sizePerElement = 1;\n } else if (uniform.type === AST_TOKEN_TYPES.Vector4FloatArray) {\n sizePerElement = 4;\n }\n uniform.data = new Float32Array(\n context.output.length! * sizePerElement,\n ).fill(0);\n }\n }\n });\n // } else if (uniform.type === 'image2D') {\n // // @ts-ignore\n // buffer.data = new Uint8ClampedArray(context.output.length!).fill(0);\n // }\n\n this.compiledBundle.context = context;\n this.model = await this.engine.createComputeModel(\n this.compiledBundle.context,\n );\n }\n}\n","import {\n BufferData,\n IAttribute,\n IAttributeInitializationOptions,\n IBuffer,\n} from '@antv/g-webgpu-core';\nimport regl from 'regl';\nimport ReglBuffer from './ReglBuffer';\n\n/**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#attributes\n */\nexport default class ReglAttribute implements IAttribute {\n private attribute: regl.Attribute;\n private buffer: IBuffer;\n\n constructor(gl: regl.Regl, options: IAttributeInitializationOptions) {\n const { buffer, offset, stride, normalized, size, divisor } = options;\n this.buffer = buffer;\n this.attribute = {\n buffer: (buffer as ReglBuffer).get(),\n offset: offset || 0,\n stride: stride || 0,\n normalized: normalized || false,\n divisor: divisor || 0,\n };\n\n if (size) {\n this.attribute.size = size;\n }\n }\n\n public get() {\n return this.attribute;\n }\n\n public updateBuffer(options: {\n // 用于替换的数据\n data: BufferData;\n // 原 Buffer 替换位置,单位为 byte\n offset: number;\n }) {\n this.buffer.subData(options);\n }\n\n public destroy() {\n this.buffer.destroy();\n }\n}\n","/**\n * @desc 由于 regl 使用大量字符串而非 WebGL 常量,因此需要映射\n */\nimport { gl } from '@antv/g-webgpu-core';\nimport regl from 'regl';\n\n// @see https://github.com/regl-project/regl/blob/gh-pages/lib/constants/primitives.json\nexport const primitiveMap: {\n [key: string]:\n | 'points'\n | 'lines'\n | 'line loop'\n | 'line strip'\n | 'triangles'\n | 'triangle strip'\n | 'triangle fan';\n} = {\n [gl.POINTS]: 'points',\n [gl.LINES]: 'lines',\n [gl.LINE_LOOP]: 'line loop',\n [gl.LINE_STRIP]: 'line strip',\n [gl.TRIANGLES]: 'triangles',\n [gl.TRIANGLE_FAN]: 'triangle fan',\n [gl.TRIANGLE_STRIP]: 'triangle strip',\n};\n\nexport const usageMap: {\n [key: string]: 'static' | 'dynamic' | 'stream';\n} = {\n [gl.STATIC_DRAW]: 'static',\n [gl.DYNAMIC_DRAW]: 'dynamic',\n [gl.STREAM_DRAW]: 'stream',\n};\n\nexport const dataTypeMap: {\n [key: string]:\n | 'int8'\n | 'int16'\n | 'int32'\n | 'uint8'\n | 'uint16'\n | 'uint32'\n | 'float';\n} = {\n [gl.BYTE]: 'int8',\n [gl.UNSIGNED_INT]: 'int16',\n [gl.INT]: 'int32',\n [gl.UNSIGNED_BYTE]: 'uint8',\n [gl.UNSIGNED_SHORT]: 'uint16',\n [gl.UNSIGNED_INT]: 'uint32',\n [gl.FLOAT]: 'float',\n};\n\nexport const formatMap: {\n [key: string]:\n | 'alpha'\n | 'luminance'\n | 'luminance alpha'\n | 'rgb'\n | 'rgba'\n | 'rgba4'\n | 'rgb5 a1'\n | 'rgb565'\n | 'depth'\n | 'depth stencil';\n} = {\n [gl.ALPHA]: 'alpha',\n [gl.LUMINANCE]: 'luminance',\n [gl.LUMINANCE_ALPHA]: 'luminance alpha',\n [gl.RGB]: 'rgb',\n [gl.RGBA]: 'rgba',\n [gl.RGBA4]: 'rgba4',\n [gl.RGB5_A1]: 'rgb5 a1',\n [gl.RGB565]: 'rgb565',\n [gl.DEPTH_COMPONENT]: 'depth',\n [gl.DEPTH_STENCIL]: 'depth stencil',\n};\n\nexport const mipmapMap: {\n [key: string]: 'dont care' | 'nice' | 'fast';\n} = {\n [gl.DONT_CARE]: 'dont care',\n [gl.NICEST]: 'nice',\n [gl.FASTEST]: 'fast',\n};\n\nexport const filterMap: {\n [key: string]:\n | 'nearest'\n | 'linear'\n | 'mipmap'\n | 'nearest mipmap linear'\n | 'linear mipmap nearest'\n | 'nearest mipmap nearest';\n} = {\n [gl.NEAREST]: 'nearest',\n [gl.LINEAR]: 'linear',\n [gl.LINEAR_MIPMAP_LINEAR]: 'mipmap',\n [gl.NEAREST_MIPMAP_LINEAR]: 'nearest mipmap linear',\n [gl.LINEAR_MIPMAP_NEAREST]: 'linear mipmap nearest',\n [gl.NEAREST_MIPMAP_NEAREST]: 'nearest mipmap nearest',\n};\n\nexport const wrapModeMap: {\n [key: string]: 'repeat' | 'clamp' | 'mirror';\n} = {\n [gl.REPEAT]: 'repeat',\n [gl.CLAMP_TO_EDGE]: 'clamp',\n [gl.MIRRORED_REPEAT]: 'mirror',\n};\n\nexport const colorSpaceMap: {\n [key: string]: 'none' | 'browser';\n} = {\n [gl.NONE]: 'none',\n [gl.BROWSER_DEFAULT_WEBGL]: 'browser',\n};\n\nexport const depthFuncMap: {\n [key: string]:\n | 'never'\n | 'always'\n | 'less'\n | 'lequal'\n | 'greater'\n | 'gequal'\n | 'equal'\n | 'notequal';\n} = {\n [gl.NEVER]: 'never',\n [gl.ALWAYS]: 'always',\n [gl.LESS]: 'less',\n [gl.LEQUAL]: 'lequal',\n [gl.GREATER]: 'greater',\n [gl.GEQUAL]: 'gequal',\n [gl.EQUAL]: 'equal',\n [gl.NOTEQUAL]: 'notequal',\n};\n\nexport const blendEquationMap: {\n [key: string]: regl.BlendingEquation;\n} = {\n [gl.FUNC_ADD]: 'add',\n [gl.MIN_EXT]: 'min',\n [gl.MAX_EXT]: 'max',\n [gl.FUNC_SUBTRACT]: 'subtract',\n [gl.FUNC_REVERSE_SUBTRACT]: 'reverse subtract',\n};\n\nexport const blendFuncMap: {\n [key: string]: regl.BlendingFunction;\n} = {\n [gl.ZERO]: 'zero',\n [gl.ONE]: 'one',\n [gl.SRC_COLOR]: 'src color',\n [gl.ONE_MINUS_SRC_COLOR]: 'one minus src color',\n [gl.SRC_ALPHA]: 'src alpha',\n [gl.ONE_MINUS_SRC_ALPHA]: 'one minus src alpha',\n [gl.DST_COLOR]: 'dst color',\n [gl.ONE_MINUS_DST_COLOR]: 'one minus dst color',\n [gl.DST_ALPHA]: 'dst alpha',\n [gl.ONE_MINUS_DST_ALPHA]: 'one minus dst alpha',\n [gl.CONSTANT_COLOR]: 'constant color',\n [gl.ONE_MINUS_CONSTANT_COLOR]: 'one minus constant color',\n [gl.CONSTANT_ALPHA]: 'constant alpha',\n [gl.ONE_MINUS_CONSTANT_ALPHA]: 'one minus constant alpha',\n [gl.SRC_ALPHA_SATURATE]: 'src alpha saturate',\n};\n\nexport const stencilFuncMap: {\n [key: string]: regl.ComparisonOperatorType;\n} = {\n [gl.NEVER]: 'never',\n [gl.ALWAYS]: 'always',\n [gl.LESS]: 'less',\n [gl.LEQUAL]: 'lequal',\n [gl.GREATER]: 'greater',\n [gl.GEQUAL]: 'gequal',\n [gl.EQUAL]: 'equal',\n [gl.NOTEQUAL]: 'notequal',\n};\n\nexport const stencilOpMap: {\n [key: string]: regl.StencilOperationType;\n} = {\n [gl.ZERO]: 'zero',\n [gl.KEEP]: 'keep',\n [gl.REPLACE]: 'replace',\n [gl.INVERT]: 'invert',\n [gl.INCR]: 'increment',\n [gl.DECR]: 'decrement',\n [gl.INCR_WRAP]: 'increment wrap',\n [gl.DECR_WRAP]: 'decrement wrap',\n};\n\nexport const cullFaceMap: {\n [key: string]: regl.FaceOrientationType;\n} = {\n [gl.FRONT]: 'front',\n [gl.BACK]: 'back',\n};\n","import {\n BufferData,\n gl,\n IBuffer,\n IBufferInitializationOptions,\n} from '@antv/g-webgpu-core';\nimport regl from 'regl';\nimport { dataTypeMap, usageMap } from './constants';\n\n/**\n * adaptor for regl.Buffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#buffers\n */\nexport default class ReglBuffer implements IBuffer {\n private buffer: regl.Buffer;\n\n constructor(reGl: regl.Regl, options: IBufferInitializationOptions) {\n const { data, usage, type } = options;\n // @ts-ignore\n this.buffer = reGl.buffer({\n data,\n usage: usageMap[usage || gl.STATIC_DRAW],\n type: dataTypeMap[type || gl.UNSIGNED_BYTE],\n // length: 0,\n });\n }\n\n public get() {\n return this.buffer;\n }\n\n public destroy() {\n // this.buffer.destroy();\n }\n\n public subData({ data, offset }: { data: BufferData; offset: number }) {\n // @ts-ignore\n this.buffer.subdata(data, offset);\n }\n}\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import {\n AST_TOKEN_TYPES,\n createEntity,\n DataType,\n GLSLContext,\n IComputeModel,\n STORAGE_CLASS,\n} from '@antv/g-webgpu-core';\nimport { isTypedArray } from 'lodash';\nimport regl from 'regl';\nimport quadVert from './shaders/quad.vert.glsl';\n\ninterface DataTextureDescriptor {\n id: number;\n data:\n | number\n | number[]\n | Float32Array\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | Int8Array\n | Int16Array\n | Int32Array\n | undefined;\n textureWidth: number;\n texture: regl.Texture2D;\n texelCount: number;\n originalDataLength: number;\n elementsPerTexel: number;\n typedArrayConstructor?: Function;\n isOutput: boolean;\n}\n\nlet textureId = 0;\nconst debug = false;\n\n/**\n * adaptor for regl.DrawCommand\n */\nexport default class ReglComputeModel implements IComputeModel {\n private entity = createEntity();\n private texFBO: regl.Framebuffer2D;\n private computeCommand: regl.DrawCommand;\n private textureCache: {\n [textureName: string]: DataTextureDescriptor;\n } = {};\n private outputTextureName: string;\n private swapOutputTextureName: string;\n private compiledPingpong: boolean;\n private dynamicPingpong: boolean;\n\n constructor(private reGl: regl.Regl, private context: GLSLContext) {\n const uniforms: Record = {};\n this.context.uniforms.forEach((uniform) => {\n const { name, type, data, isReferer, storageClass } = uniform;\n // store data with a 2D texture\n if (storageClass === STORAGE_CLASS.StorageBuffer) {\n if (!isReferer) {\n this.textureCache[name] = this.calcDataTexture(name, type, data!);\n const { textureWidth: width, isOutput } = this.textureCache[name];\n uniforms[`${name}Size`] = [width, width];\n\n if (isOutput) {\n this.outputTextureName = name;\n if (this.context.needPingpong) {\n this.outputTextureName = `${name}Output`;\n this.textureCache[this.outputTextureName] = this.calcDataTexture(\n name,\n type,\n data!,\n );\n }\n }\n } else {\n // @ts-ignore\n this.textureCache[name] = {\n data: undefined,\n };\n // refer to another kernel's output,\n // the referred kernel may not have been initialized, so we use dynamic way here\n uniforms[`${name}Size`] = () =>\n // @ts-ignore\n data.compiledBundle.context.output.textureSize;\n }\n\n uniforms[name] = () => {\n if (debug) {\n console.log(\n `[${this.entity}]: ${name} ${this.textureCache[name].id}`,\n );\n }\n return this.textureCache[name].texture;\n };\n } else if (storageClass === STORAGE_CLASS.Uniform) {\n if (\n data &&\n (Array.isArray(data) || isTypedArray(data)) &&\n (data as ArrayLike).length > 16\n ) {\n // up to mat4 which includes 16 elements\n throw new Error(`invalid data type ${type}`);\n }\n // get uniform dynamically\n uniforms[name] = () => uniform.data;\n }\n });\n\n const { textureWidth, texelCount } = this.getOuputDataTexture();\n\n // 传入 output 纹理尺寸和数据长度,便于多余的 texel 提前退出\n uniforms.u_OutputTextureSize = [textureWidth, textureWidth];\n uniforms.u_OutputTexelCount = texelCount;\n\n // 保存在 Kernel 的上下文中,供其他 Kernel 引用\n this.context.output.textureSize = [textureWidth!, textureWidth!];\n\n const drawParams: regl.DrawConfig = {\n attributes: {\n a_Position: [\n [-1, 1, 0],\n [-1, -1, 0],\n [1, 1, 0],\n [1, -1, 0],\n ],\n a_TexCoord: [\n [0, 1],\n [0, 0],\n [1, 1],\n [1, 0],\n ],\n },\n frag: `#ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n#else\n precision mediump float;\n#endif\n${this.context.shader}`,\n uniforms,\n vert: quadVert,\n // TODO: use a fullscreen triangle instead.\n primitive: 'triangle strip',\n count: 4,\n };\n\n this.computeCommand = this.reGl(drawParams);\n }\n\n public run() {\n if (this.context.maxIteration > 1 && this.context.needPingpong) {\n this.compiledPingpong = true;\n }\n // need pingpong when (@in@out and execute(10)) or use `setBinding('out', self)`\n // this.needPingpong =\n // !!(this.context.maxIteration > 1 && this.context.needPingpong);\n\n // if (this.relativeOutputTextureNames.length) {\n // const { id, texture } = this.getOuputDataTexture();\n // this.relativeOutputTextureNames.forEach((name) => {\n // this.textureCache[name].id = id;\n // this.textureCache[name].texture = texture;\n // });\n // this.swap();\n // }\n\n if (this.compiledPingpong || this.dynamicPingpong) {\n this.swap();\n }\n\n this.texFBO = this.reGl.framebuffer({\n color: this.getOuputDataTexture().texture,\n });\n this.texFBO.use(() => {\n this.computeCommand();\n });\n if (debug) {\n console.log(`[${this.entity}]: output ${this.getOuputDataTexture().id}`);\n }\n }\n\n public async readData() {\n let pixels: Uint8Array | Float32Array;\n this.reGl({\n framebuffer: this.texFBO,\n })(() => {\n pixels = this.reGl.read();\n });\n\n // @ts-ignore\n if (pixels) {\n const {\n originalDataLength,\n elementsPerTexel,\n typedArrayConstructor = Float32Array,\n } = this.getOuputDataTexture();\n\n let formattedPixels = [];\n if (elementsPerTexel !== 4) {\n for (let i = 0; i < pixels.length; i += 4) {\n if (elementsPerTexel === 1) {\n formattedPixels.push(pixels[i]);\n } else if (elementsPerTexel === 2) {\n formattedPixels.push(pixels[i], pixels[i + 1]);\n } else {\n formattedPixels.push(pixels[i], pixels[i + 1], pixels[i + 2]);\n }\n }\n } else {\n // @ts-ignore\n formattedPixels = pixels;\n }\n\n // 截取多余的部分\n // @ts-ignore\n return new typedArrayConstructor(\n formattedPixels.slice(0, originalDataLength),\n );\n }\n\n return new Float32Array();\n }\n\n public confirmInput(model: IComputeModel, inputName: string) {\n let inputModel: ReglComputeModel;\n // refer to self, same as pingpong\n if (this.entity === (model as ReglComputeModel).entity) {\n this.dynamicPingpong = true;\n inputModel = this;\n } else {\n inputModel = model as ReglComputeModel;\n }\n\n this.textureCache[inputName].id = inputModel.getOuputDataTexture().id;\n this.textureCache[\n inputName\n ].texture = inputModel.getOuputDataTexture().texture;\n\n if (debug) {\n console.log(\n `[${this.entity}]: confirm input ${inputName} from model ${\n inputModel.entity\n }, ${(inputModel as ReglComputeModel).getOuputDataTexture().id}`,\n );\n }\n }\n\n public updateUniform() {\n // already get uniform's data dynamically when created, do nothing here\n }\n\n public updateBuffer(\n bufferName: string,\n data:\n | number[]\n | Float32Array\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | Int8Array\n | Int16Array\n | Int32Array,\n offset: number = 0,\n ) {\n // regenerate data texture\n const buffer = this.context.uniforms.find(\n ({ name }) => name === bufferName,\n );\n if (buffer) {\n const { texture, data: paddingData } = this.calcDataTexture(\n bufferName,\n buffer.type,\n data,\n );\n\n // TODO: destroy outdated texture\n this.textureCache[bufferName].data = paddingData;\n this.textureCache[bufferName].texture = texture;\n }\n }\n\n public destroy() {\n // regl will destroy all resources\n }\n\n private swap() {\n if (!this.swapOutputTextureName) {\n this.createSwapOutputDataTexture();\n }\n\n if (this.compiledPingpong) {\n const outputTextureUniformName = this.context.output.name;\n this.textureCache[\n outputTextureUniformName\n ].id = this.getOuputDataTexture().id;\n this.textureCache[\n outputTextureUniformName\n ].texture = this.getOuputDataTexture().texture;\n }\n\n const tmp = this.outputTextureName;\n this.outputTextureName = this.swapOutputTextureName;\n this.swapOutputTextureName = tmp;\n\n if (debug) {\n console.log(\n `[${this.entity}]: after swap, output ${this.getOuputDataTexture().id}`,\n );\n }\n }\n\n private getOuputDataTexture() {\n return this.textureCache[this.outputTextureName];\n }\n\n private createSwapOutputDataTexture() {\n const texture = this.cloneDataTexture(this.getOuputDataTexture());\n this.swapOutputTextureName = `${this.entity}-swap`;\n this.textureCache[this.swapOutputTextureName] = texture;\n }\n\n private cloneDataTexture(texture: DataTextureDescriptor) {\n const { data, textureWidth } = texture;\n return {\n ...texture,\n id: textureId++,\n // @ts-ignore\n texture: this.reGl.texture({\n width: textureWidth,\n height: textureWidth,\n data,\n type: 'float',\n }),\n };\n }\n\n private calcDataTexture(\n name: string,\n type: DataType,\n data:\n | number\n | number[]\n | Float32Array\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | Int8Array\n | Int16Array\n | Int32Array,\n ) {\n let elementsPerTexel = 1;\n if (type === AST_TOKEN_TYPES.Vector4FloatArray) {\n elementsPerTexel = 4;\n }\n\n // 用 0 补全不足 vec4 的部分\n const paddingData: number[] = [];\n for (let i = 0; i < (data as number[]).length; i += elementsPerTexel) {\n if (elementsPerTexel === 1) {\n paddingData.push((data as number[])[i], 0, 0, 0);\n } else if (elementsPerTexel === 2) {\n paddingData.push(\n (data as number[])[i],\n (data as number[])[i + 1],\n 0,\n 0,\n );\n } else if (elementsPerTexel === 3) {\n paddingData.push(\n (data as number[])[i],\n (data as number[])[i + 1],\n (data as number[])[i + 2],\n 0,\n );\n } else if (elementsPerTexel === 4) {\n paddingData.push(\n (data as number[])[i],\n (data as number[])[i + 1],\n (data as number[])[i + 2],\n (data as number[])[i + 3],\n );\n }\n }\n\n // 使用纹理存储,例如 Array(8) 使用 3 * 3 纹理,末尾空白使用 0 填充\n const originalDataLength = (data as ArrayLike).length;\n const texelCount = Math.ceil(originalDataLength / elementsPerTexel);\n const width = Math.ceil(Math.sqrt(texelCount));\n const paddingTexelCount = width * width;\n if (texelCount < paddingTexelCount) {\n paddingData.push(\n ...new Array((paddingTexelCount - texelCount) * 4).fill(0),\n );\n }\n\n const texture = this.reGl.texture({\n width,\n height: width,\n data: paddingData,\n type: 'float',\n });\n\n return {\n id: textureId++,\n data: paddingData,\n originalDataLength,\n typedArrayConstructor: isTypedArray(data) ? data!.constructor : undefined,\n textureWidth: width,\n texture,\n texelCount,\n elementsPerTexel,\n isOutput: name === this.context.output.name,\n };\n }\n}\n","import {\n gl,\n IElements,\n IElementsInitializationOptions,\n} from '@antv/g-webgpu-core';\nimport regl from 'regl';\nimport { dataTypeMap, usageMap } from './constants';\n\n/**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#elements\n */\nexport default class ReglElements implements IElements {\n private elements: regl.Elements;\n\n constructor(reGl: regl.Regl, options: IElementsInitializationOptions) {\n const { data, usage, type, count } = options;\n\n this.elements = reGl.elements({\n data,\n usage: usageMap[usage || gl.STATIC_DRAW],\n type: dataTypeMap[type || gl.UNSIGNED_BYTE] as\n | 'uint8'\n | 'uint16'\n | 'uint32',\n count,\n });\n }\n\n public get() {\n return this.elements;\n }\n\n public subData({\n data,\n }: {\n data: number[] | number[][] | Uint8Array | Uint16Array | Uint32Array;\n }) {\n this.elements.subdata(data);\n }\n\n public destroy() {\n this.elements.destroy();\n }\n}\n","import {\n gl,\n IFramebuffer,\n IFramebufferInitializationOptions,\n IRenderbuffer,\n ITexture2D,\n} from '@antv/g-webgpu-core';\nimport regl from 'regl';\nimport ReglTexture2D from './ReglTexture2D';\n\n/**\n * adaptor for regl.Framebuffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#framebuffers\n */\nexport default class ReglFramebuffer implements IFramebuffer {\n private framebuffer: regl.Framebuffer;\n\n constructor(reGl: regl.Regl, options: IFramebufferInitializationOptions) {\n const { width, height, color, colors, depth, stencil } = options;\n\n const framebufferOptions: regl.FramebufferOptions = {\n width,\n height,\n };\n\n if (Array.isArray(colors)) {\n framebufferOptions.colors = colors.map((c: ITexture2D | IRenderbuffer) =>\n (c as ReglTexture2D).get(),\n );\n }\n\n if (color && typeof color !== 'boolean') {\n framebufferOptions.color = (color as ReglTexture2D).get();\n }\n\n // TODO: depth & stencil\n\n this.framebuffer = reGl.framebuffer(framebufferOptions);\n }\n\n public get() {\n return this.framebuffer;\n }\n\n public destroy() {\n this.framebuffer.destroy();\n }\n\n public resize({ width, height }: { width: number; height: number }) {\n this.framebuffer.resize(width, height);\n }\n}\n","import type { IUniform } from '@antv/g-webgpu-core';\nimport { isPlainObject, isTypedArray } from 'lodash';\n\n/**\n * 考虑结构体命名, eg:\n * a: { b: 1 } -> 'a.b'\n * a: [ { b: 1 } ] -> 'a[0].b'\n */\nexport function extractUniforms(uniforms: {\n [key: string]: IUniform;\n}): {\n [key: string]: IUniform;\n} {\n const extractedUniforms = {};\n Object.keys(uniforms).forEach((uniformName) => {\n extractUniformsRecursively(\n uniformName,\n uniforms[uniformName],\n extractedUniforms,\n '',\n );\n });\n\n return extractedUniforms;\n}\n\nfunction extractUniformsRecursively(\n uniformName: string,\n uniformValue: IUniform,\n uniforms: {\n [key: string]: IUniform;\n },\n prefix: string,\n) {\n if (\n uniformValue === null ||\n typeof uniformValue === 'number' || // u_A: 1\n typeof uniformValue === 'boolean' || // u_A: false\n (Array.isArray(uniformValue) && typeof uniformValue[0] === 'number') || // u_A: [1, 2, 3]\n isTypedArray(uniformValue) || // u_A: Float32Array\n // @ts-ignore\n uniformValue === '' ||\n // @ts-ignore\n uniformValue.resize !== undefined\n ) {\n uniforms[`${prefix && prefix + '.'}${uniformName}`] = uniformValue;\n return;\n }\n\n // u_Struct.a.b.c\n if (isPlainObject(uniformValue)) {\n Object.keys(uniformValue).forEach((childName) => {\n extractUniformsRecursively(\n childName,\n // @ts-ignore\n uniformValue[childName],\n uniforms,\n `${prefix && prefix + '.'}${uniformName}`,\n );\n });\n }\n\n // u_Struct[0].a\n if (Array.isArray(uniformValue)) {\n // @ts-ignore\n uniformValue.forEach((child, idx) => {\n Object.keys(child).forEach((childName) => {\n extractUniformsRecursively(\n childName,\n // @ts-ignore\n child[childName],\n uniforms,\n `${prefix && prefix + '.'}${uniformName}[${idx}]`,\n );\n });\n });\n }\n}\n","import {\n gl,\n} from '@antv/g-webgpu-core';\nimport type {\n IModel,\n IModelDrawOptions,\n IModelInitializationOptions,\n IUniform,\n} from '@antv/g-webgpu-core';\nimport regl from 'regl';\nimport { extractUniforms } from '../utils/uniform';\nimport {\n blendEquationMap,\n blendFuncMap,\n cullFaceMap,\n depthFuncMap,\n primitiveMap,\n stencilFuncMap,\n stencilOpMap,\n} from './constants';\nimport ReglAttribute from './ReglAttribute';\nimport ReglElements from './ReglElements';\nimport ReglFramebuffer from './ReglFramebuffer';\nimport ReglTexture2D from './ReglTexture2D';\n\n/**\n * adaptor for regl.DrawCommand\n */\nexport default class ReglModel implements IModel {\n private reGl: regl.Regl;\n private drawCommand: regl.DrawCommand;\n private uniforms: {\n [key: string]: IUniform;\n } = {};\n\n constructor(reGl: regl.Regl, options: IModelInitializationOptions) {\n this.reGl = reGl;\n const {\n vs,\n fs,\n defines,\n attributes,\n uniforms,\n primitive,\n count,\n elements,\n depth,\n blend,\n stencil,\n cull,\n instances,\n scissor,\n // @ts-ignore\n viewport,\n } = options;\n const reglUniforms: { [key: string]: IUniform } = {};\n if (uniforms) {\n this.uniforms = extractUniforms(uniforms);\n Object.keys(uniforms).forEach((uniformName) => {\n // use regl prop API\n // @ts-ignore\n reglUniforms[uniformName] = reGl.prop(uniformName);\n });\n }\n\n const reglAttributes: { [key: string]: regl.Attribute } = {};\n Object.keys(attributes).forEach((name: string) => {\n reglAttributes[name] = (attributes[name] as ReglAttribute).get();\n });\n\n const defineStmts = (defines && this.generateDefines(defines)) || '';\n const drawParams: regl.DrawConfig = {\n attributes: reglAttributes,\n frag: `#ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n#else\n precision mediump float;\n#endif\n${defineStmts}\n${fs}`,\n uniforms: reglUniforms,\n vert: `\n${defineStmts}\n${vs}`,\n primitive:\n primitiveMap[primitive === undefined ? gl.TRIANGLES : primitive],\n };\n if (instances) {\n drawParams.instances = instances;\n }\n\n // elements 中可能包含 count,此时不应传入\n if (count) {\n drawParams.count = count;\n }\n\n if (elements) {\n drawParams.elements = (elements as ReglElements).get();\n }\n\n if (scissor) {\n drawParams.scissor = scissor;\n }\n\n if (viewport) {\n drawParams.viewport = viewport;\n }\n\n this.initDepthDrawParams({ depth }, drawParams);\n this.initBlendDrawParams({ blend }, drawParams);\n this.initStencilDrawParams({ stencil }, drawParams);\n this.initCullDrawParams({ cull }, drawParams);\n\n this.drawCommand = reGl(drawParams);\n }\n\n public addUniforms(uniforms: { [key: string]: IUniform }) {\n this.uniforms = {\n ...this.uniforms,\n ...extractUniforms(uniforms),\n };\n }\n\n public draw(options: IModelDrawOptions) {\n const uniforms: {\n [key: string]: IUniform;\n } = {\n ...this.uniforms,\n ...extractUniforms(options.uniforms || {}),\n };\n\n const reglDrawProps: {\n [key: string]:\n | regl.Framebuffer\n | regl.Texture2D\n | number\n | number[]\n | boolean;\n } = {};\n\n Object.keys(uniforms).forEach((uniformName: string) => {\n const type = typeof uniforms[uniformName];\n if (\n type === 'boolean' ||\n type === 'number' ||\n Array.isArray(uniforms[uniformName]) ||\n // @ts-ignore\n uniforms[uniformName].BYTES_PER_ELEMENT\n ) {\n reglDrawProps[uniformName] = uniforms[uniformName] as\n | number\n | number[]\n | boolean;\n } else if (type === 'string') {\n // TODO: image url\n } else {\n reglDrawProps[uniformName] = (uniforms[uniformName] as\n | ReglFramebuffer\n | ReglTexture2D).get();\n }\n });\n this.drawCommand(reglDrawProps);\n }\n\n public destroy() {\n // don't need do anything since we will call `rendererService.cleanup()`\n }\n\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#depth-buffer\n */\n private initDepthDrawParams(\n { depth }: Pick,\n drawParams: regl.DrawConfig,\n ) {\n if (depth) {\n drawParams.depth = {\n enable: depth.enable === undefined ? true : !!depth.enable,\n mask: depth.mask === undefined ? true : !!depth.mask,\n func: depthFuncMap[depth.func || gl.LESS],\n range: depth.range || [0, 1],\n };\n }\n }\n\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#blending\n */\n private initBlendDrawParams(\n { blend }: Pick,\n drawParams: regl.DrawConfig,\n ) {\n if (blend) {\n const { enable, func, equation, color = [0, 0, 0, 0] } = blend;\n // @ts-ignore\n drawParams.blend = {\n enable: !!enable,\n func: {\n srcRGB: blendFuncMap[(func && func.srcRGB) || gl.SRC_ALPHA],\n srcAlpha: blendFuncMap[(func && func.srcAlpha) || gl.SRC_ALPHA],\n dstRGB: blendFuncMap[(func && func.dstRGB) || gl.ONE_MINUS_SRC_ALPHA],\n dstAlpha:\n blendFuncMap[(func && func.dstAlpha) || gl.ONE_MINUS_SRC_ALPHA],\n },\n equation: {\n rgb: blendEquationMap[(equation && equation.rgb) || gl.FUNC_ADD],\n alpha: blendEquationMap[(equation && equation.alpha) || gl.FUNC_ADD],\n },\n color,\n };\n }\n }\n\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#stencil\n */\n private initStencilDrawParams(\n { stencil }: Pick,\n drawParams: regl.DrawConfig,\n ) {\n if (stencil) {\n const {\n enable,\n mask = -1,\n func = {\n cmp: gl.ALWAYS,\n ref: 0,\n mask: -1,\n },\n opFront = {\n fail: gl.KEEP,\n zfail: gl.KEEP,\n zpass: gl.KEEP,\n },\n opBack = {\n fail: gl.KEEP,\n zfail: gl.KEEP,\n zpass: gl.KEEP,\n },\n } = stencil;\n drawParams.stencil = {\n enable: !!enable,\n mask,\n func: {\n ...func,\n cmp: stencilFuncMap[func.cmp],\n },\n opFront: {\n fail: stencilOpMap[opFront.fail],\n zfail: stencilOpMap[opFront.zfail],\n zpass: stencilOpMap[opFront.zpass],\n },\n opBack: {\n fail: stencilOpMap[opBack.fail],\n zfail: stencilOpMap[opBack.zfail],\n zpass: stencilOpMap[opBack.zpass],\n },\n };\n }\n }\n\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#culling\n */\n private initCullDrawParams(\n { cull }: Pick,\n drawParams: regl.DrawConfig,\n ) {\n if (cull) {\n const { enable, face = gl.BACK } = cull;\n drawParams.cull = {\n enable: !!enable,\n face: cullFaceMap[face],\n };\n }\n }\n\n private generateDefines(defines: Record) {\n return Object.keys(defines)\n .map((name) => `#define ${name} ${Number(defines[name])}`)\n .join('\\n');\n }\n}\n","import {\n gl,\n ITexture2D,\n ITexture2DInitializationOptions,\n} from '@antv/g-webgpu-core';\nimport regl from 'regl';\nimport {\n colorSpaceMap,\n dataTypeMap,\n filterMap,\n formatMap,\n mipmapMap,\n wrapModeMap,\n} from './constants';\n\n/**\n * adaptor for regl.Buffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#buffers\n */\nexport default class ReglTexture2D implements ITexture2D {\n private texture: regl.Texture2D;\n private width: number;\n private height: number;\n\n constructor(reGl: regl.Regl, options: ITexture2DInitializationOptions) {\n const {\n data,\n type = gl.UNSIGNED_BYTE,\n width,\n height,\n flipY = false,\n format = gl.RGBA,\n mipmap = false,\n wrapS = gl.CLAMP_TO_EDGE,\n wrapT = gl.CLAMP_TO_EDGE,\n aniso = 0,\n alignment = 1,\n premultiplyAlpha = false,\n mag = gl.NEAREST,\n min = gl.NEAREST,\n colorSpace = gl.BROWSER_DEFAULT_WEBGL,\n } = options;\n this.width = width;\n this.height = height;\n\n const textureOptions: regl.Texture2DOptions = {\n width,\n height,\n // @ts-ignore\n type: dataTypeMap[type],\n format: formatMap[format],\n wrapS: wrapModeMap[wrapS],\n wrapT: wrapModeMap[wrapT],\n // @ts-ignore\n mag: filterMap[mag],\n min: filterMap[min],\n alignment,\n flipY,\n colorSpace: colorSpaceMap[colorSpace],\n premultiplyAlpha,\n aniso,\n };\n\n if (data) {\n textureOptions.data = data;\n }\n\n if (typeof mipmap === 'number') {\n textureOptions.mipmap = mipmapMap[mipmap];\n } else if (typeof mipmap === 'boolean') {\n textureOptions.mipmap = mipmap;\n }\n\n this.texture = reGl.texture(textureOptions);\n }\n\n public get() {\n return this.texture;\n }\n public update() {\n // @ts-ignore\n this.texture._texture.bind();\n }\n\n public resize({ width, height }: { width: number; height: number }): void {\n this.texture.resize(width, height);\n this.width = width;\n this.height = height;\n }\n\n public destroy() {\n this.texture.destroy();\n }\n}\n","/**\n * render w/ regl\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md\n */\nimport {\n gl,\n GLSLContext,\n IAttribute,\n IAttributeInitializationOptions,\n IBuffer,\n IBufferInitializationOptions,\n IClearOptions,\n IComputeModel,\n IElements,\n IElementsInitializationOptions,\n IFramebuffer,\n IFramebufferInitializationOptions,\n IModel,\n IModelInitializationOptions,\n IReadPixelsOptions,\n IRendererConfig,\n IRendererService,\n ITexture2D,\n ITexture2DInitializationOptions,\n} from '@antv/g-webgpu-core';\nimport regl from 'regl';\nimport ReglAttribute from './ReglAttribute';\nimport ReglBuffer from './ReglBuffer';\nimport ReglComputeModel from './ReglComputeModel';\nimport ReglElements from './ReglElements';\nimport ReglFramebuffer from './ReglFramebuffer';\nimport ReglModel from './ReglModel';\nimport ReglTexture2D from './ReglTexture2D';\n\n/**\n * regl renderer\n */\nexport class WebGLEngine implements IRendererService {\n public supportWebGPU = false;\n public useWGSL = false;\n private $canvas: HTMLCanvasElement;\n private gl: regl.Regl;\n private inited: boolean;\n\n public async init(cfg: IRendererConfig): Promise {\n if (this.inited) {\n return;\n }\n this.$canvas = cfg.canvas;\n // tslint:disable-next-line:typedef\n this.gl = await new Promise((resolve, reject) => {\n regl({\n canvas: cfg.canvas,\n attributes: {\n alpha: true,\n // use TAA instead of MSAA\n // @see https://www.khronos.org/registry/webgl/specs/1.0/#5.2.1\n antialias: cfg.antialias,\n premultipliedAlpha: true,\n // preserveDrawingBuffer: false,\n },\n pixelRatio: 1,\n // TODO: use extensions\n extensions: [\n 'OES_element_index_uint',\n 'OES_texture_float',\n 'OES_standard_derivatives', // wireframe\n 'angle_instanced_arrays', // VSM shadow map\n ],\n optionalExtensions: [\n 'EXT_texture_filter_anisotropic',\n 'EXT_blend_minmax',\n 'WEBGL_depth_texture',\n ],\n profile: true,\n onDone: (err: Error | null, r?: regl.Regl | undefined): void => {\n if (err || !r) {\n reject(err);\n }\n // @ts-ignore\n resolve(r);\n },\n });\n });\n this.inited = true;\n }\n\n public isFloatSupported() {\n // @see https://github.com/antvis/GWebGPUEngine/issues/26\n // @ts-ignore\n return this.gl.limits.readFloat;\n }\n\n public createModel = async (\n options: IModelInitializationOptions,\n ): Promise => {\n if (options.uniforms) {\n await Promise.all(\n Object.keys(options.uniforms).map(async (name) => {\n if (\n options.uniforms![name] &&\n // @ts-ignore\n options.uniforms![name].load !== undefined\n ) {\n // @ts-ignore\n const texture = await options.uniforms![name].load();\n // @ts-ignore\n options.uniforms[name] = texture;\n }\n }),\n );\n }\n return new ReglModel(this.gl, options);\n };\n\n public createAttribute = (\n options: IAttributeInitializationOptions,\n ): IAttribute => new ReglAttribute(this.gl, options);\n\n public createBuffer = (options: IBufferInitializationOptions): IBuffer =>\n new ReglBuffer(this.gl, options);\n\n public createElements = (\n options: IElementsInitializationOptions,\n ): IElements => new ReglElements(this.gl, options);\n\n public createTexture2D = (\n options: ITexture2DInitializationOptions,\n ): ITexture2D => new ReglTexture2D(this.gl, options);\n\n public createFramebuffer = (options: IFramebufferInitializationOptions) =>\n new ReglFramebuffer(this.gl, options);\n\n public useFramebuffer = (\n framebuffer: IFramebuffer | null,\n drawCommands: () => void,\n ) => {\n this.gl({\n framebuffer: framebuffer ? (framebuffer as ReglFramebuffer).get() : null,\n })(drawCommands);\n };\n\n public createComputeModel = async (\n context: GLSLContext,\n ): Promise => {\n return new ReglComputeModel(this.gl, context);\n };\n\n public clear = (options: IClearOptions) => {\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#clear-the-draw-buffer\n const { color, depth, stencil, framebuffer = null } = options;\n const reglClearOptions: regl.ClearOptions = {\n color,\n depth,\n stencil,\n };\n\n reglClearOptions.framebuffer =\n framebuffer === null\n ? framebuffer\n : (framebuffer as ReglFramebuffer).get();\n\n this.gl.clear(reglClearOptions);\n };\n\n public setScissor = (\n scissor: Partial<{\n enable: boolean;\n box: { x: number; y: number; width: number; height: number };\n }>,\n ) => {\n if (this.gl && this.gl._gl) {\n // https://developer.mozilla.org/zh-CN/docs/Web/API/WebGLRenderingContext/scissor\n if (scissor.enable && scissor.box) {\n // console.log(scissor.box);\n this.gl._gl.enable(gl.SCISSOR_TEST);\n this.gl._gl.scissor(\n scissor.box.x,\n scissor.box.y,\n scissor.box.width,\n scissor.box.height,\n );\n } else {\n this.gl._gl.disable(gl.SCISSOR_TEST);\n }\n this.gl._refresh();\n }\n };\n\n public viewport = ({\n x,\n y,\n width,\n height,\n }: {\n x: number;\n y: number;\n width: number;\n height: number;\n }) => {\n if (this.gl && this.gl._gl) {\n // use WebGL context directly\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#unsafe-escape-hatch\n this.gl._gl.viewport(x, y, width, height);\n this.gl._refresh();\n }\n };\n\n public readPixels = (options: IReadPixelsOptions) => {\n const { framebuffer, x, y, width, height } = options;\n const readPixelsOptions: regl.ReadOptions = {\n x,\n y,\n width,\n height,\n };\n if (framebuffer) {\n readPixelsOptions.framebuffer = (framebuffer as ReglFramebuffer).get();\n }\n return this.gl.read(readPixelsOptions);\n };\n\n public getCanvas = () => {\n return this.$canvas;\n };\n\n public getGLContext = () => {\n return this.gl._gl;\n };\n\n public destroy = () => {\n if (this.gl) {\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#clean-up\n this.gl.destroy();\n this.inited = false;\n }\n };\n\n public beginFrame() {\n //\n }\n\n public endFrame() {\n //\n }\n}\n","import {\n ConfigService,\n createEntity,\n IConfig,\n IConfigService,\n KernelBundle,\n} from '@antv/g-webgpu-core';\nimport { WebGLEngine } from '@antv/g-webgpu-engine';\nimport { Kernel } from './Kernel';\n\nexport class World {\n public static create(config: Partial = {}) {\n const world = new World();\n world.setConfig(config);\n world.setEngine(new WebGLEngine());\n return world;\n }\n\n public engine: WebGLEngine;\n\n private readonly configService: IConfigService = new ConfigService();\n\n public setConfig(config: Partial) {\n this.configService.set(config);\n }\n public setEngine(engine: WebGLEngine) {\n this.engine = engine;\n }\n\n public createEntity() {\n return createEntity();\n }\n\n public createKernel(precompiledBundle: KernelBundle | string) {\n const kernel = new Kernel(this.engine, this.configService);\n if (typeof precompiledBundle === 'string') {\n kernel.setBundle(JSON.parse(precompiledBundle));\n } else {\n kernel.setBundle(precompiledBundle);\n }\n kernel.init();\n return kernel;\n }\n\n public destroy() {\n this.engine.destroy();\n }\n}\n","export var GraphEnum;\n\n(function (GraphEnum) {\n GraphEnum[\"DEFAULT_EDGE_NAME\"] = \"\\0\";\n GraphEnum[\"GRAPH_NODE\"] = \"\\0\";\n GraphEnum[\"EDGE_KEY_DELIM\"] = \"\\x01\";\n})(GraphEnum || (GraphEnum = {}));","import { GraphEnum } from './Graph/enum';\n/**\n * @description add one to key's value in map\n * @description.zh-CN 在 map 中 key 的值加 1\n * @param map\n * @param key\n */\n\nexport function incrementOrInitEntry(map, key) {\n var val = map.get(key) || 0;\n map.set(key, val + 1);\n}\n/**\n * @description minus one from key's value in map, is value is 0, delete the key\n * @description.zh-CN 在 map 中 key 的值减 1,如果值为 0,则删除 key\n */\n\nexport function decrementOrRemoveEntry(map, key) {\n var val = map.get(key);\n\n if (val !== undefined) {\n val = val - 1;\n\n if (val > 0) {\n map.set(key, val);\n } else {\n map.delete(key);\n }\n }\n}\n/**\n * @description convert edge to string id\n * @description.zh-CN 转换边为字符串 id\n */\n\nexport function edgeArgsToId(isDirected, v_, w_, name) {\n var v = String(v_);\n var w = String(w_);\n\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n\n return v + GraphEnum.EDGE_KEY_DELIM + w + GraphEnum.EDGE_KEY_DELIM + (name === undefined ? GraphEnum.DEFAULT_EDGE_NAME : name);\n}\n/**\n * @description convert edge arguments to edge object\n * @description.zh-CN 转换边参数为边对象\n */\n\nexport function edgeArgsToObj(isDirected, v, w, name) {\n var strV = String(v);\n var strW = String(w);\n var edgeObj = {\n v: v,\n w: w\n };\n\n if (!isDirected && strV > strW) {\n var tmp = edgeObj.v;\n edgeObj.v = edgeObj.w;\n edgeObj.w = tmp;\n }\n\n if (name !== undefined) {\n edgeObj.name = name;\n }\n\n return edgeObj;\n}\n/**\n * @description convert edge object to string id\n * @description.zh-CN 转换边对象为字符串 id\n */\n\nexport function edgeObjToId(isDirected, edgeObj) {\n return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);\n}\nexport function isFunction(obj) {\n return typeof obj === 'function';\n}","import Graph from '.';\n/**\n * @description Convert a graph's node to JSON.\n * @description.zh-CN 转换图的节点为 JSON。\n * @param graph\n * @returns\n */\n\nvar nodeToJSON = function nodeToJSON(graph) {\n return graph.nodes().map(function (n) {\n var value = graph.node(n);\n var parent = graph.parent(n);\n var node = {\n id: n,\n value: value,\n parent: parent\n };\n\n if (node.value === undefined) {\n delete node.value;\n }\n\n if (node.parent === undefined) {\n delete node.parent;\n }\n\n return node;\n });\n};\n/**\n * @description Convert all graph's edges to JSON.\n * @description.zh-CN 转换图的所有边为 JSON。\n * @param graph\n * @returns\n */\n\n\nvar edgeToJSON = function edgeToJSON(graph) {\n return graph.edges().map(function (edge) {\n var value = graph.edge(edge);\n var e = {\n v: edge.v,\n w: edge.w,\n value: value,\n name: edge.name\n };\n\n if (e.name === undefined) {\n delete e.name;\n }\n\n if (e.value === undefined) {\n delete e.value;\n }\n\n return e;\n });\n};\n/**\n * @description Convert a graph to JSON.\n * @description.zh-CN 转换图为 JSON。\n * @param graph\n * @returns\n */\n\n\nexport var write = function write(graph) {\n var json = {\n options: {\n directed: graph.isDirected(),\n multigraph: graph.isMultigraph(),\n compound: graph.isCompound()\n },\n nodes: nodeToJSON(graph),\n edges: edgeToJSON(graph),\n value: graph.graph()\n };\n\n if (json.value === undefined) {\n delete json.value;\n }\n\n return json;\n};\n/**\n * @description read a graph from JSON.\n * @description.zh-CN 从 JSON 读取图。\n * @param json\n * @returns\n */\n\nexport var read = function read(json) {\n var graph = new Graph(json.options);\n\n if (json.value !== undefined) {\n graph.setGraph(json.value);\n }\n\n json.nodes.forEach(function (entry) {\n graph.setNode(entry.id, entry.value);\n\n if (entry.parent) {\n graph.setParent(entry.id, entry.parent);\n }\n });\n json.edges.forEach(function (entry) {\n graph.setEdge(entry.v, entry.w, entry.value, entry.name);\n });\n return graph;\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport { edgeArgsToId, isFunction } from '../util';\nimport { GraphEnum } from './enum';\nimport { decrementOrRemoveEntry, edgeArgsToObj, edgeObjToId, incrementOrInitEntry } from '../util';\nimport { read, write } from './toJSON';\nvar defaultOption = {\n compound: false,\n multigraph: false,\n directed: true\n};\n\nvar Graph = /*#__PURE__*/function () {\n // Graph option or basic props\n\n /**\n * @description Label for this graph itself\n * @description.zh-CN 图本身的标签(label)\n * @default undefined\n */\n\n /**\n * @description Number of nodes in the graph\n * @description.zh-CN 节点的数量\n * @default 0\n */\n\n /**\n * @description Number of edges in the graph\n * @description.zh-CN 节点的数量\n * @default 0\n */\n\n /**\n * @description return node label with its id\n * @description.zh-CN 返回节点的默认的标签\n */\n\n /**\n * @description return edge label with its id\n * @description.zh-CN 返回边的默认的标签\n */\n function Graph() {\n var _this = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Graph);\n\n this.directed = true;\n this.multigraph = false;\n this.compound = false;\n this.GRAPH_NODE = GraphEnum.GRAPH_NODE;\n this.label = void 0;\n this.nodeCountNum = 0;\n this.edgeCountNum = 0;\n\n this.defaultNodeLabelFn = function () {\n return undefined;\n };\n\n this.defaultEdgeLabelFn = function () {\n return undefined;\n };\n\n this.parentMap = void 0;\n this.childrenMap = void 0;\n this.nodesLabelMap = new Map();\n this.inEdgesMap = new Map();\n this.outEdgesMap = new Map();\n this.predecessorsMap = new Map();\n this.successorsMap = new Map();\n this.edgesMap = new Map();\n this.edgesLabelsMap = new Map();\n\n this.isDirected = function () {\n return _this.directed;\n };\n\n this.isMultigraph = function () {\n return _this.multigraph;\n };\n\n this.isCompound = function () {\n return _this.compound;\n };\n\n this.setGraph = function (label) {\n _this.label = label;\n return _this;\n };\n\n this.graph = function () {\n return _this.label;\n };\n\n this.setDefaultNodeLabel = function (newDefault) {\n if (isFunction(newDefault)) {\n _this.defaultNodeLabelFn = newDefault;\n } else {\n _this.defaultNodeLabelFn = function () {\n return newDefault;\n };\n }\n\n return _this;\n };\n\n this.nodeCount = function () {\n return _this.nodeCountNum;\n };\n\n this.node = function (n) {\n return _this.nodesLabelMap.get(n);\n };\n\n this.nodes = function () {\n return Array.from(_this.nodesLabelMap.keys());\n };\n\n this.sources = function () {\n return _this.nodes().filter(function (n) {\n var _this$inEdgesMap$get;\n\n return !((_this$inEdgesMap$get = _this.inEdgesMap.get(n)) === null || _this$inEdgesMap$get === void 0 ? void 0 : _this$inEdgesMap$get.size);\n });\n };\n\n this.sinks = function () {\n return _this.nodes().filter(function (n) {\n var _this$outEdgesMap$get;\n\n return !((_this$outEdgesMap$get = _this.outEdgesMap.get(n)) === null || _this$outEdgesMap$get === void 0 ? void 0 : _this$outEdgesMap$get.size);\n });\n };\n\n this.setNodes = function (nodes, value) {\n nodes.map(function (node) {\n return _this.setNode(node, value);\n });\n return _this;\n };\n\n this.hasNode = function (node) {\n return _this.nodesLabelMap.has(node);\n };\n\n this.checkCompound = function () {\n if (!_this.isCompound()) {\n throw new Error('Cannot construct parent-children relations in a non-compound graph');\n }\n };\n\n this.parent = function (node) {\n if (_this.isCompound()) {\n var _this$parentMap;\n\n var parent = (_this$parentMap = _this.parentMap) === null || _this$parentMap === void 0 ? void 0 : _this$parentMap.get(node);\n\n if (parent !== _this.GRAPH_NODE) {\n return parent;\n }\n }\n };\n\n this.removeFromParentsChildList = function (node) {\n var targetParent = _this.parentMap.get(node);\n\n _this.childrenMap.get(targetParent).delete(node);\n };\n\n this.setParent = function (node, parent) {\n var _this$parentMap2, _this$childrenMap;\n\n _this.checkCompound();\n\n var realParent = parent === undefined ? _this.GRAPH_NODE : parent;\n\n var checkNode = _this.parent(realParent);\n\n while (checkNode) {\n if (node === checkNode) {\n throw new Error('Setting ' + parent + ' as parent of ' + node + ' would create a cycle');\n }\n\n checkNode = _this.parent(checkNode);\n }\n\n if (parent) {\n _this.setNode(parent);\n }\n\n _this.setNode(node);\n\n _this.removeFromParentsChildList(node);\n\n (_this$parentMap2 = _this.parentMap) === null || _this$parentMap2 === void 0 ? void 0 : _this$parentMap2.set(node, realParent);\n\n var realParentChilren = _this.childrenMap.get(realParent);\n\n realParentChilren.set(node, true);\n (_this$childrenMap = _this.childrenMap) === null || _this$childrenMap === void 0 ? void 0 : _this$childrenMap.set(realParent, realParentChilren);\n return _this;\n };\n\n this.children = function (node) {\n var targetNode = node === undefined ? _this.GRAPH_NODE : node;\n\n if (_this.isCompound()) {\n var _this$childrenMap2;\n\n var target = (_this$childrenMap2 = _this.childrenMap) === null || _this$childrenMap2 === void 0 ? void 0 : _this$childrenMap2.get(targetNode);\n\n if (target) {\n return Array.from(target.keys());\n }\n\n return undefined;\n }\n\n if (targetNode === _this.GRAPH_NODE) {\n return _this.nodes();\n }\n\n if (node && _this.hasNode(node)) {\n return [];\n }\n };\n\n this.predecessors = function (node) {\n var preds = _this.predecessorsMap.get(node);\n\n return preds ? Array.from(preds.keys()) : undefined;\n };\n\n this.successors = function (node) {\n var succs = _this.successorsMap.get(node);\n\n return succs ? Array.from(succs.keys()) : undefined;\n };\n\n this.neighbors = function (node) {\n var _this$predecessors;\n\n if (!_this.hasNode(node)) {\n return undefined;\n }\n\n return Array.from(new Set((_this$predecessors = _this.predecessors(node)) === null || _this$predecessors === void 0 ? void 0 : _this$predecessors.concat(_this.successors(node))));\n };\n\n this.isLeaf = function (node) {\n var _this$neighbors;\n\n if (_this.isDirected()) {\n var _this$successors;\n\n return !((_this$successors = _this.successors(node)) === null || _this$successors === void 0 ? void 0 : _this$successors.length);\n }\n\n return !((_this$neighbors = _this.neighbors(node)) === null || _this$neighbors === void 0 ? void 0 : _this$neighbors.length);\n };\n\n this.filterNodes = function (filter) {\n var directed = _this.directed,\n multigraph = _this.multigraph,\n compound = _this.compound;\n var copyGraph = new Graph({\n directed: directed,\n multigraph: multigraph,\n compound: compound\n });\n copyGraph.setGraph(_this.graph());\n\n _this.nodes().forEach(function (n) {\n if (filter(n)) {\n copyGraph.setNode(n, _this.node(n));\n }\n });\n\n _this.edges().forEach(function (edgeObj) {\n if (copyGraph.hasNode(edgeObj.v) && copyGraph.hasNode(edgeObj.w)) {\n copyGraph.setEdgeObj(edgeObj, _this.edge(edgeObj));\n }\n });\n\n if (compound) {\n var findParent = function findParent(node) {\n var parent = _this.parent(node);\n\n while (parent !== undefined && !copyGraph.hasNode(parent)) {\n parent = _this.parent(parent);\n }\n\n return parent;\n };\n\n copyGraph.nodes().forEach(function (node) {\n copyGraph.setParent(node, findParent(node));\n });\n }\n\n return copyGraph;\n };\n\n this.setDefaultEdgeLabel = function (newDefault) {\n if (isFunction(newDefault)) {\n _this.defaultEdgeLabelFn = newDefault;\n } else {\n _this.defaultEdgeLabelFn = function () {\n return newDefault;\n };\n }\n\n return _this;\n };\n\n this.edgeCount = function () {\n return _this.edgeCountNum;\n };\n\n this.setEdgeObj = function (edgeObj, value) {\n return _this.setEdge(edgeObj.v, edgeObj.w, value, edgeObj.name);\n };\n\n this.setPath = function (edges, value) {\n edges.reduce(function (v, w) {\n _this.setEdge(v, w, value);\n\n return w;\n });\n return _this;\n };\n\n this.edgeFromArgs = function (v, w, name) {\n return _this.edge({\n v: v,\n w: w,\n name: name\n });\n };\n\n this.edge = function (edgeObj) {\n return _this.edgesLabelsMap.get(edgeObjToId(_this.isDirected(), edgeObj));\n };\n\n this.hasEdge = function (v, w, name) {\n return _this.edgesLabelsMap.has(edgeObjToId(_this.isDirected(), {\n v: v,\n w: w,\n name: name\n }));\n };\n\n this.removeEdgeObj = function (_ref) {\n var v = _ref.v,\n w = _ref.w,\n name = _ref.name;\n return _this.removeEdge(v, w, name);\n };\n\n this.edges = function () {\n return Array.from(_this.edgesMap.values());\n };\n\n this.inEdges = function (v, u) {\n var inV = _this.inEdgesMap.get(v);\n\n if (inV) {\n return Array.from(inV.values()).filter(function (e) {\n return !u || e.v === u;\n });\n }\n\n return undefined;\n };\n\n this.outEdges = function (w, u) {\n var outW = _this.outEdgesMap.get(w);\n\n if (outW) {\n return Array.from(outW.values()).filter(function (e) {\n return !u || e.w === u;\n });\n }\n\n return undefined;\n };\n\n this.nodeEdges = function (v, w) {\n var _this$inEdges;\n\n if (!_this.hasNode(v)) {\n return undefined;\n }\n\n return (_this$inEdges = _this.inEdges(v, w)) === null || _this$inEdges === void 0 ? void 0 : _this$inEdges.concat(_this.outEdges(v, w));\n };\n\n this.toJSON = function () {\n return write(_this);\n };\n\n this.nodeInDegree = function (node) {\n var inEdges = _this.inEdgesMap.get(node);\n\n if (inEdges) {\n return inEdges.size;\n }\n\n return 0;\n };\n\n this.nodeOutDegree = function (node) {\n var outEdges = _this.outEdgesMap.get(node);\n\n if (outEdges) {\n return outEdges.size;\n }\n\n return 0;\n };\n\n this.nodeDegree = function (node) {\n return _this.nodeInDegree(node) + _this.nodeOutDegree(node);\n };\n\n this.source = function (edge) {\n return edge.v;\n };\n\n this.target = function (edge) {\n return edge.w;\n };\n\n var resultOptions = _objectSpread(_objectSpread({}, defaultOption), options);\n\n this.compound = resultOptions.compound;\n this.directed = resultOptions.directed;\n this.multigraph = resultOptions.multigraph;\n\n if (this.compound) {\n this.parentMap = new Map();\n this.childrenMap = new Map();\n }\n } // Map for graph\n\n /**\n * @description Map for parent relationship\n * @description.zh-CN 父子关系的映射\n */\n\n\n _createClass(Graph, [{\n key: \"setNode\",\n value:\n /**\n * @description Set Node label in graph if node not in graph then create it\n * @description.zh-CN 设置节点的label,如果这个节点不在图中,则在图中创建这个节点\n * @param node\n * @param value\n * @returns\n */\n function setNode(node, value) {\n var nodesLabelMap = this.nodesLabelMap,\n defaultNodeLabelFn = this.defaultNodeLabelFn,\n isCompound = this.isCompound,\n parentMap = this.parentMap,\n childrenMap = this.childrenMap,\n inEdgesMap = this.inEdgesMap,\n outEdgesMap = this.outEdgesMap,\n predecessorsMap = this.predecessorsMap,\n successorsMap = this.successorsMap; // 如果节点不在图中,则创建节点\n\n if (nodesLabelMap.has(node)) {\n if (value !== undefined) {\n nodesLabelMap.set(node, value);\n }\n\n return this;\n }\n\n nodesLabelMap.set(node, value || defaultNodeLabelFn(node)); // 如果是复合图,则创建节点的子节点\n\n if (isCompound()) {\n var _childrenMap$get;\n\n parentMap === null || parentMap === void 0 ? void 0 : parentMap.set(node, this.GRAPH_NODE);\n childrenMap === null || childrenMap === void 0 ? void 0 : childrenMap.set(node, new Map());\n\n if (!(childrenMap === null || childrenMap === void 0 ? void 0 : childrenMap.has(this.GRAPH_NODE))) {\n childrenMap === null || childrenMap === void 0 ? void 0 : childrenMap.set(this.GRAPH_NODE, new Map());\n }\n\n childrenMap === null || childrenMap === void 0 ? void 0 : (_childrenMap$get = childrenMap.get(this.GRAPH_NODE)) === null || _childrenMap$get === void 0 ? void 0 : _childrenMap$get.set(node, true);\n }\n\n [inEdgesMap, outEdgesMap, predecessorsMap, successorsMap].forEach(function (map) {\n return map.set(node, new Map());\n });\n this.nodeCountNum += 1;\n return this;\n }\n /**\n * @description Set nodes or add nodes in batch\n * @description.zh-CN 批量设置或者创建节点\n * @param nodes\n * @param value\n * @returns\n */\n\n }, {\n key: \"removeNode\",\n value:\n /**\n * @description Remove node from graph\n * @description.zh-CN 将节点从图中移除\n * @param node\n * @returns\n */\n function removeNode(node) {\n var _this2 = this;\n\n if (this.hasNode(node)) {\n var cleanEdge = function cleanEdge(edgeObj) {\n _this2.removeEdge(edgeObj.v, edgeObj.w, edgeObj.name);\n };\n\n var inEdgesMap = this.inEdgesMap,\n outEdgesMap = this.outEdgesMap,\n predecessorsMap = this.predecessorsMap,\n successorsMap = this.successorsMap,\n nodesLabelMap = this.nodesLabelMap;\n\n if (this.isCompound()) {\n var _this$parentMap3, _this$children, _this$childrenMap3;\n\n this.removeFromParentsChildList(node);\n (_this$parentMap3 = this.parentMap) === null || _this$parentMap3 === void 0 ? void 0 : _this$parentMap3.delete(node);\n (_this$children = this.children(node)) === null || _this$children === void 0 ? void 0 : _this$children.forEach(function (n) {\n return _this2.setParent(n);\n });\n (_this$childrenMap3 = this.childrenMap) === null || _this$childrenMap3 === void 0 ? void 0 : _this$childrenMap3.delete(node);\n }\n\n var inE = inEdgesMap.get(node);\n var outE = outEdgesMap.get(node);\n Array.from(inE.values()).forEach(function (edge) {\n return cleanEdge(edge);\n });\n Array.from(outE.values()).forEach(function (edge) {\n return cleanEdge(edge);\n });\n nodesLabelMap.delete(node);\n inEdgesMap.delete(node);\n outEdgesMap.delete(node);\n predecessorsMap.delete(node);\n successorsMap.delete(node);\n this.nodeCountNum -= 1;\n }\n\n return this;\n }\n /**\n * @description Set function that generate default label for edge, if param is non-function value then default label will always be this value;\n * @description.zh-CN 设置默认获取边Label的方法,如果传入不是函数的,那么默认label 的值只会是传入值\n * @param newDefault\n * @returns\n */\n\n }, {\n key: \"setEdge\",\n value:\n /**\n * @description set edge value, if nodes or edges not exsit then add to graph\n * @description.zh-CN 设置边的属性,如果边或节点不存在,那么将他们加入这个图\n * @param v\n * @param w\n * @param value\n * @param name\n * @returns\n */\n function setEdge(v_, w_, value, name) {\n var _this$inEdgesMap$get2, _this$outEdgesMap$get2;\n\n var edgeObj = edgeArgsToObj(this.isDirected(), v_, w_, name);\n var edgeId = edgeObjToId(this.isDirected(), edgeObj);\n var v = edgeObj.v,\n w = edgeObj.w;\n\n if (this.edgesLabelsMap.has(edgeId)) {\n this.edgesLabelsMap.set(edgeId, value);\n return this;\n }\n\n if (name !== undefined && !this.isMultigraph()) {\n throw new Error('Cannot set a named edge when isMultigraph = false');\n }\n\n this.setNode(v);\n this.setNode(w);\n this.edgesLabelsMap.set(edgeId, value || this.defaultEdgeLabelFn(v, w, name));\n Object.freeze(edgeObj);\n this.edgesMap.set(edgeId, edgeObj);\n var preds = this.predecessorsMap.get(w);\n var succs = this.successorsMap.get(v);\n incrementOrInitEntry(preds, v);\n incrementOrInitEntry(succs, w);\n (_this$inEdgesMap$get2 = this.inEdgesMap.get(w)) === null || _this$inEdgesMap$get2 === void 0 ? void 0 : _this$inEdgesMap$get2.set(edgeId, edgeObj);\n (_this$outEdgesMap$get2 = this.outEdgesMap.get(v)) === null || _this$outEdgesMap$get2 === void 0 ? void 0 : _this$outEdgesMap$get2.set(edgeId, edgeObj);\n this.edgeCountNum += 1;\n return this;\n }\n }, {\n key: \"removeEdge\",\n value:\n /**\n * @description remove a specific edge\n * @description.zh-CN 删除一条边\n * @param v\n * @param w\n * @param name\n * @returns\n */\n function removeEdge(v_, w_, name) {\n var edgeId = edgeArgsToId(this.isDirected(), v_, w_, name);\n var edgeObj = this.edgesMap.get(edgeId);\n\n if (edgeObj) {\n var _edgeArgsToObj = edgeArgsToObj(this.isDirected(), v_, w_, name),\n v = _edgeArgsToObj.v,\n w = _edgeArgsToObj.w;\n\n this.edgesLabelsMap.delete(edgeId);\n this.edgesMap.delete(edgeId);\n var preds = this.predecessorsMap.get(w);\n var succs = this.successorsMap.get(v);\n decrementOrRemoveEntry(preds, v);\n decrementOrRemoveEntry(succs, w);\n this.inEdgesMap.get(w).delete(edgeId);\n this.outEdgesMap.get(v).delete(edgeId);\n this.edgeCountNum -= 1;\n }\n\n return this;\n }\n /**\n * @description remove a specific edge by edge object\n * @description.zh-CN 删除一条边\n */\n\n }]);\n\n return Graph;\n}();\n\nGraph.fromJSON = read;\nexport { Graph as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport Graph from '.';\nexport var GraphWithEvent = /*#__PURE__*/function (_Graph) {\n _inherits(GraphWithEvent, _Graph);\n\n var _super = _createSuper(GraphWithEvent);\n\n function GraphWithEvent() {\n var _this;\n\n _classCallCheck(this, GraphWithEvent);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.eventPool = {};\n return _this;\n }\n\n _createClass(GraphWithEvent, [{\n key: \"appendEvent\",\n value:\n /**\n * @description Add an event listener.\n * @description.zh-CN 添加事件监听器。\n */\n function appendEvent(type, callback) {\n if (!this.eventPool[type]) {\n this.eventPool[type] = [];\n }\n\n this.eventPool[type].push(callback);\n }\n /**\n * @description remove an event listener.\n * @description.zh-CN 移除事件监听器。\n */\n\n }, {\n key: \"removeEvent\",\n value: function removeEvent(type, callback) {\n if (!this.eventPool[type]) {\n return;\n }\n\n var index = this.eventPool[type].indexOf(callback);\n\n if (index > -1) {\n this.eventPool[type].splice(index, 1);\n }\n }\n /**\n * @description trigger an event.\n * @description.zh-CN 触发事件。\n */\n\n }, {\n key: \"emitEvent\",\n value: function emitEvent(type) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n if (!this.eventPool[type]) {\n return;\n }\n\n this.eventPool[type].forEach(function (callback) {\n callback.apply(void 0, args);\n });\n }\n }, {\n key: \"setNode\",\n value: function setNode(node, value) {\n _get(_getPrototypeOf(GraphWithEvent.prototype), \"setNode\", this).call(this, node, value);\n\n this.emitEvent('nodeAdd', node, value);\n return this;\n }\n }, {\n key: \"removeNode\",\n value: function removeNode(node) {\n _get(_getPrototypeOf(GraphWithEvent.prototype), \"removeNode\", this).call(this, node);\n\n this.emitEvent('nodeRemove', node);\n return this;\n }\n }, {\n key: \"setEdge\",\n value: function setEdge(v_, w_, value, name) {\n _get(_getPrototypeOf(GraphWithEvent.prototype), \"setEdge\", this).call(this, v_, w_, value, name);\n\n this.emitEvent('edgeAdd', v_, w_, value, name);\n return this;\n }\n }, {\n key: \"removeEdge\",\n value: function removeEdge(v_, w_, name) {\n _get(_getPrototypeOf(GraphWithEvent.prototype), \"removeEdge\", this).call(this, v_, w_, name);\n\n this.emitEvent('edgeRemove', v_, w_, name);\n return this;\n }\n }]);\n\n return GraphWithEvent;\n}(Graph);","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// A PriorityQueue is a queue that can be sorted by priority.\nvar PriorityQueue = /*#__PURE__*/_createClass(function PriorityQueue() {\n var _this = this;\n\n _classCallCheck(this, PriorityQueue);\n\n this.arr = [];\n this.keyIndice = new Map();\n\n this.size = function () {\n return _this.arr.length;\n };\n\n this.keys = function () {\n return _this.arr.map(function (e) {\n return e.key;\n });\n };\n\n this.has = function (key) {\n return _this.keyIndice.has(key);\n };\n\n this.priority = function (key) {\n var index = _this.keyIndice.get(key);\n\n if (index !== undefined) {\n return _this.arr[index].priority;\n }\n };\n\n this.swap = function (i, j) {\n var arr = _this.arr,\n keyIndice = _this.keyIndice;\n var _ref = [arr[i], arr[j]],\n originI = _ref[0],\n originJ = _ref[1];\n arr[i] = originJ;\n arr[j] = originI;\n keyIndice.set(originI.key, j);\n keyIndice.set(originJ.key, i);\n };\n\n this.innerDecrease = function (index) {\n var arr = _this.arr;\n var priority = arr[index].priority;\n var parent;\n var i = index;\n\n while (i !== 0) {\n var _arr$parent;\n\n parent = i >> 1;\n\n if (((_arr$parent = arr[parent]) === null || _arr$parent === void 0 ? void 0 : _arr$parent.priority) < priority) {\n break;\n }\n\n _this.swap(i, parent);\n\n i = parent;\n }\n };\n\n this.heapify = function (i) {\n var arr = _this.arr;\n var l = i << 1;\n var r = l + 1;\n var largest = i;\n\n if (l < arr.length) {\n largest = arr[l].priority < arr[largest].priority ? l : largest;\n\n if (r < arr.length) {\n largest = arr[r].priority < arr[largest].priority ? r : largest;\n }\n\n if (largest !== i) {\n _this.swap(i, largest);\n\n _this.heapify(largest);\n }\n }\n };\n\n this.min = function () {\n if (_this.size() === 0) {\n throw new Error('Queue underflow');\n }\n\n return _this.arr[0].key;\n };\n\n this.add = function (key, priority) {\n var keyIndice = _this.keyIndice,\n arr = _this.arr; // if the key is already in the queue, update the priority\n\n if (!keyIndice.has(key)) {\n var index = arr.length;\n keyIndice.set(key, index);\n arr.push({\n key: key,\n priority: priority\n });\n\n _this.innerDecrease(index);\n\n return true;\n }\n\n return false;\n };\n\n this.removeMin = function () {\n _this.swap(0, _this.arr.length - 1);\n\n var min = _this.arr.pop();\n\n _this.keyIndice.delete(min.key);\n\n _this.heapify(0);\n\n return min.key;\n };\n\n this.decrease = function (key, priority) {\n if (!_this.has(key)) {\n throw new Error(\"There's no key named \".concat(key));\n } // there must be an index\n\n\n var index = _this.keyIndice.get(key);\n\n if (priority > _this.arr[index].priority) {\n throw new Error(\"New priority is greater than current priority.Key: \".concat(key, \" Old: + \").concat(_this.arr[index].priority, \" New: \").concat(priority));\n }\n\n _this.arr[index].priority = priority;\n\n _this.innerDecrease(index);\n };\n});\n\nexport { PriorityQueue as default };","import Graph from '../Graph';\nimport PriorityQueue from './PriorityQueue';\n\nvar prim = function prim(graph, weightFn) {\n var result = new Graph();\n var parents = new Map();\n var pq = new PriorityQueue();\n var v;\n\n function updateNeighbors(edge) {\n var w = edge.v === v ? edge.w : edge.v;\n var pri = pq.priority(w);\n\n if (pri !== undefined) {\n var edgeWeight = weightFn(edge);\n\n if (edgeWeight < pri) {\n parents.set(w, v);\n pq.decrease(w, edgeWeight);\n }\n }\n }\n\n if (graph.nodeCount() === 0) {\n return result;\n }\n\n graph.nodes().forEach(function (node) {\n pq.add(node, Number.POSITIVE_INFINITY);\n result.setNode(node);\n }); // Start from an arbitrary node\n\n pq.decrease(graph.nodes()[0], 0);\n var init = false;\n\n while (pq.size() > 0) {\n var _graph$nodeEdges;\n\n v = pq.removeMin();\n\n if (parents.has(v)) {\n result.setEdge(v, parents.get(v));\n } else if (init) {\n throw new Error('Input graph is not connected: ' + graph.graph());\n } else {\n init = true;\n }\n\n (_graph$nodeEdges = graph.nodeEdges(v)) === null || _graph$nodeEdges === void 0 ? void 0 : _graph$nodeEdges.forEach(updateNeighbors);\n }\n\n return result;\n};\n\nexport default prim;","var components = function components(graph) {\n var visited = new Set();\n var resultComponents = [];\n var nodes = graph.nodes();\n nodes.forEach(function (n) {\n var componentsArr = [];\n var waitingList = [n];\n\n while (waitingList.length > 0) {\n var node = waitingList.pop();\n\n if (!visited.has(node)) {\n var _graph$successors, _graph$predecessors;\n\n visited.add(node);\n componentsArr.push(node);\n (_graph$successors = graph.successors(node)) === null || _graph$successors === void 0 ? void 0 : _graph$successors.forEach(function (n) {\n return waitingList.push(n);\n });\n (_graph$predecessors = graph.predecessors(node)) === null || _graph$predecessors === void 0 ? void 0 : _graph$predecessors.forEach(function (n) {\n return waitingList.push(n);\n });\n }\n }\n\n if (componentsArr.length) {\n resultComponents.push(componentsArr);\n }\n });\n return resultComponents;\n};\n\nexport default components;","/**\n * @description DFS traversal.\n * @description.zh-CN DFS 遍历。\n */\nvar doDFS = function doDFS(graph, node, postorder, visited, navigator, result) {\n if (!visited.includes(node)) {\n visited.push(node);\n\n if (!postorder) {\n result.push(node);\n }\n\n navigator(node).forEach(function (n) {\n return doDFS(graph, n, postorder, visited, navigator, result);\n });\n\n if (postorder) {\n result.push(node);\n }\n }\n};\n/**\n * @description DFS traversal.\n * @description.zh-CN DFS 遍历。\n */\n\n\nvar dfs = function dfs(graph, node, order) {\n var nodes = Array.isArray(node) ? node : [node];\n\n var navigator = function navigator(n) {\n return graph.isDirected() ? graph.successors(n) : graph.neighbors(n);\n };\n\n var results = [];\n var visited = [];\n nodes.forEach(function (node) {\n if (!graph.hasNode(node)) {\n throw new Error('Graph does not have node: ' + node);\n } else {\n doDFS(graph, node, order === 'post', visited, navigator, results);\n }\n });\n return results;\n};\n\nexport default dfs;","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport PriorityQueue from './PriorityQueue';\n\nvar DEFAULT_WEIGHT_FUNC = function DEFAULT_WEIGHT_FUNC() {\n return 1;\n};\n/**\n * @description Dijkstra's algorithm for single-source shortest paths.\n * @description https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm\n * @description.zh-CN Dijkstra 算法用于单源最短路径。\n */\n\n\nvar dijkstra = function dijkstra(graph, source, weightFn, edgeFn) {\n return runDijkstra(graph, source, weightFn || DEFAULT_WEIGHT_FUNC, edgeFn || function (v) {\n return graph.outEdges(v);\n });\n};\n/**\n * @description Dijkstra's algorithm for single-source shortest paths.\n * @description https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm\n * @description.zh-CN Dijkstra 算法用于单源最短路径。\n */\n\n\nvar runDijkstra = function runDijkstra(graph, source, weightFn, edgeFn) {\n var results = new Map();\n var pq = new PriorityQueue();\n var v;\n var vEntry;\n\n var updateNeighbors = function updateNeighbors(edge) {\n var w = edge.v !== v ? edge.v : edge.w;\n var wEntry = results.get(w);\n var weight = weightFn(edge);\n var distance = vEntry.distance + weight;\n\n if (weight < 0) {\n throw new Error('dijkstra does not allow negative edge weights. ' + 'Bad edge: ' + edge + ' Weight: ' + weight);\n } // If there is already a shorter path to w, ignore this edge.\n\n\n if (distance < wEntry.distance) {\n wEntry.distance = distance;\n wEntry.predecessor = v;\n pq.decrease(w, distance);\n }\n };\n\n graph.nodes().forEach(function (v) {\n var distance = v === source ? 0 : Number.POSITIVE_INFINITY;\n results.set(v, {\n distance: distance\n });\n pq.add(v, distance);\n });\n\n while (pq.size() > 0) {\n v = pq.removeMin();\n vEntry = results.get(v);\n\n if (vEntry && vEntry.distance === Number.POSITIVE_INFINITY) {\n break;\n }\n\n edgeFn(v).forEach(updateNeighbors);\n }\n\n var obj = {};\n Array.from(results.entries()).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n node = _ref2[0],\n e = _ref2[1];\n\n obj[String(node)] = e;\n return obj;\n });\n return obj;\n};\n\nexport default dijkstra;","import dijkstra from './dijkstra';\n\nvar dijkstraAll = function dijkstraAll(graph, weightFn, edgeFn) {\n var map = {};\n graph.nodes().forEach(function (node) {\n map[String(node)] = dijkstra(graph, node, weightFn, edgeFn);\n return map;\n });\n return map;\n};\n\nexport default dijkstraAll;","/**\n * @description Tarjan's algorithm for finding the strongly connected components of a graph.\n * @description https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n * @description.zh-CN Tarjan 算法用于找到图的强连通子图。\n * @param graph\n * @returns\n */\nvar tarjan = function tarjan(graph) {\n var index = 0;\n var stack = [];\n var visited = new Map(); // node id -> { onStack, lowlink, index }\n\n var results = [];\n\n function dfs(v) {\n var _graph$successors;\n\n var entry = {\n onStack: true,\n lowlink: index,\n index: index\n };\n visited.set(v, entry);\n index += 1;\n stack.push(v);\n (_graph$successors = graph.successors(v)) === null || _graph$successors === void 0 ? void 0 : _graph$successors.forEach(function (w) {\n var _visited$get;\n\n // 如果 w 没有被访问过,则继续访问 w\n if (!visited.has(w)) {\n dfs(w);\n var wEntry = visited.get(w);\n entry.lowlink = Math.min(entry.lowlink, wEntry.lowlink); // 如果 w 在栈顶,则说明 w 和 v 不是强连通的\n } else if ((_visited$get = visited.get(w)) === null || _visited$get === void 0 ? void 0 : _visited$get.onStack) {\n var _wEntry = visited.get(w); // 如果 w 在栈中,则说明 w 在当前访问的路径上\n\n\n entry.lowlink = Math.min(entry.lowlink, _wEntry.index);\n }\n }); // 如果 v 的 lowlink 不等于 v 的 index,则说明 v 和 v 的 lowlink 不是强连通的\n\n if (entry.lowlink === entry.index) {\n var cmpt = [];\n var w;\n\n do {\n // 将 w 出栈,并将 w 的所有邻接点加入强连通子图\n w = stack.pop();\n var wEntry = visited.get(w);\n wEntry.onStack = false;\n cmpt.push(w);\n } while (v !== w);\n\n results.push(cmpt);\n }\n }\n\n graph.nodes().forEach(function (v) {\n if (!visited.has(v)) {\n dfs(v);\n }\n });\n return results;\n};\n\nexport default tarjan;","import tarjan from './tarjan';\n\nvar findCycles = function findCycles(graph) {\n return tarjan(graph).filter(function (cmpt) {\n return cmpt.length > 1 || cmpt.length === 1 && graph.hasEdge(cmpt[0], cmpt[0]);\n });\n};\n\nexport default findCycles;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nexport var CycleException = /*#__PURE__*/function (_Error) {\n _inherits(CycleException, _Error);\n\n var _super = _createSuper(CycleException);\n\n function CycleException() {\n _classCallCheck(this, CycleException);\n\n return _super.apply(this, arguments);\n }\n\n return _createClass(CycleException);\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nfunction topsort(graph) {\n var visited = new Set();\n var stack = new Set();\n var results = [];\n\n function visit(node) {\n if (stack.has(node)) {\n throw new CycleException();\n }\n\n if (!visited.has(node)) {\n var _graph$predecessors;\n\n stack.add(node);\n visited.add(node);\n (_graph$predecessors = graph.predecessors(node)) === null || _graph$predecessors === void 0 ? void 0 : _graph$predecessors.forEach(visit);\n stack.delete(node);\n results.push(node);\n }\n }\n\n graph.sinks().forEach(visit);\n\n if (visited.size !== graph.nodeCount()) {\n throw new CycleException();\n }\n\n return results;\n}\n\nexport default topsort;","import topsort, { CycleException } from './topsort';\n\nvar isAcyclic = function isAcyclic(graph) {\n try {\n topsort(graph);\n } catch (e) {\n if (e instanceof CycleException) {\n return false;\n }\n\n throw e;\n }\n\n return true;\n};\n\nexport default isAcyclic;","import dfs from './dfs';\n\nvar postorder = function postorder(graph, nodes) {\n return dfs(graph, nodes, 'post');\n};\n\nexport default postorder;","import dfs from './dfs';\n\nvar preorder = function preorder(graph, nodes) {\n return dfs(graph, nodes, 'pre');\n};\n\nexport default preorder;","var DEFAULT_WEIGHT_FUNC = function DEFAULT_WEIGHT_FUNC() {\n return 1;\n};\n\nexport function floydWarshall(graph, weightFn, edgeFn) {\n return runFloydWarshall(graph, weightFn || DEFAULT_WEIGHT_FUNC, edgeFn || function (v) {\n return graph.outEdges(v);\n });\n}\n\nfunction runFloydWarshall(graph, weightFn, edgeFn) {\n var results = {};\n var nodes = graph.nodes();\n nodes.forEach(function (node) {\n var v = String(node);\n results[v] = {};\n results[v][v] = {\n distance: 0\n };\n nodes.forEach(function (w) {\n if (node !== w) {\n results[v][String(w)] = {\n distance: Number.POSITIVE_INFINITY\n };\n }\n });\n edgeFn(node).forEach(function (edge) {\n var w = edge.v === node ? edge.w : edge.v;\n var d = weightFn(edge);\n results[v][String(w)] = {\n distance: d,\n predecessor: node\n };\n });\n });\n nodes.forEach(function (nodek) {\n var k = String(nodek);\n var rowK = results[k];\n nodes.forEach(function (nodei) {\n var i = String(nodei);\n var rowI = results[i];\n nodes.forEach(function (nodej) {\n var j = String(nodej);\n var ik = rowI[k];\n var kj = rowK[j];\n var ij = rowI[j];\n var altDistance = ik.distance + kj.distance;\n\n if (altDistance < ij.distance) {\n ij.distance = altDistance;\n ij.predecessor = kj.predecessor;\n }\n });\n });\n });\n return results;\n}\n\nexport default floydWarshall;","/**\n * @file Functions that used to find similar element between two graph\n * @file.zh-CN 在两个图中查找相似元素的函数\n */\n\n/**\n * @description Check if two graphs are contains the same nodes.\n * @description.zh-CN 检查两个图是否包含相同的节点。\n */\nexport var containSameNodes = function containSameNodes(aGraph, bGraph) {\n var aNodes = aGraph.nodes();\n\n for (var i = 0; i < aNodes.length; i++) {\n var aNode = aNodes[i];\n\n if (bGraph.hasNode(aNode)) {\n return true;\n }\n }\n\n return false;\n};\n/**\n * @description Check if two graphs are contains the same edges.\n * @description.zh-CN 检查两个图是否包含相同的边。\n */\n\nexport var containSameEdges = function containSameEdges(aGraph, bGraph) {\n var aEdges = aGraph.edges();\n\n for (var i = 0; i < aEdges.length; i++) {\n var aEdge = aEdges[i];\n\n if (bGraph.hasEdge(aEdge.v, aEdge.w, aEdge.name)) {\n return true;\n }\n }\n\n return false;\n};\n/**\n * @description get same nodes in two graphs.\n * @description.zh-CN 获取两个图中相同的节点。\n */\n\nexport var getSameNodes = function getSameNodes(aGraph, bGraph) {\n var aNodes = aGraph.nodes();\n var sameNodes = aNodes.filter(function (aNode) {\n return bGraph.hasNode(aNode);\n });\n return sameNodes;\n};\n/**\n * @description get same edges in two graphs.\n * @description.zh-CN 获取两个图中相同的边。\n */\n\nexport var getSameEdges = function getSameEdges(aGraph, bGraph) {\n var aEdges = aGraph.edges();\n var sameEdges = aEdges.filter(function (aEdge) {\n return bGraph.hasEdge(aEdge.v, aEdge.w, aEdge.name);\n });\n return sameEdges;\n};\n/**\n * @description Check if two graphs'option are the same.\n * @description.zh-CN 检查两个图的选项是否相同。\n */\n\nexport var isGraphOptionSame = function isGraphOptionSame(aGraph, bGraph) {\n return aGraph.isCompound() === bGraph.isCompound() && aGraph.isDirected() === bGraph.isDirected() && aGraph.isMultigraph() === bGraph.isMultigraph();\n};\n/**\n * @description Check if a graph contains all nodes in another graph.\n * @description.zh-CN 检查一个图是否包含另一个图的所有节点。\n */\n\nexport var containAllSameNodes = function containAllSameNodes(aGraph, bGraph) {\n var sameNodes = getSameNodes(aGraph, bGraph);\n return sameNodes.length === aGraph.nodes().length;\n};\n/**\n * @description Check if a graph contains all edges in another graph.\n * @description.zh-CN 检查一个图是否包含另一个图的所有边。\n */\n\nexport var containAllSameEdges = function containAllSameEdges(aGraph, bGraph) {\n var sameEdges = getSameEdges(aGraph, bGraph);\n return sameEdges.length === aGraph.edges().length;\n};\n/**\n * @description Check if two graphs are the same.\n * @description.zh-CN 检查两个图是否相同。\n */\n\nexport var isGraphSame = function isGraphSame(aGraph, bGraph) {\n return isGraphOptionSame(aGraph, bGraph) && aGraph.nodeCount() === bGraph.nodeCount() && containAllSameNodes(aGraph, bGraph) && aGraph.edgeCount() === bGraph.edgeCount() && containAllSameEdges(aGraph, bGraph);\n};\n/**\n * @description Check if one graph is the subgraph of another graph.\n * @description.zh-CN 检查一个图是否是另一个图的子图。\n */\n\nexport var isGraphContainsAnother = function isGraphContainsAnother(originGraph, targetGraph) {\n return containAllSameNodes(originGraph, targetGraph) && containAllSameEdges(originGraph, targetGraph);\n};","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/**\n * @file To get graph essencial information.\n * @file.zh-CN 获取图的基本信息\n * @module essence\n */\nimport Graph from '../Graph';\n/**\n * @description Check if the object is a graph.\n * @description.zh-CN 检查对象是否为图。\n */\n\nexport function isGraph(obj) {\n return obj instanceof Graph;\n}\n/**\n * @description Check if the graph is a simple graph.\n * @description.zh-CN 检查图是否为简单图。\n */\n\nexport function isSimpleGraph(graph) {\n if (graph.isMultigraph()) {\n return false;\n }\n\n var edges = graph.edges();\n var edgeStack = new Map();\n\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n\n if (edge.v === edge.w) {\n return false;\n }\n\n var _sort = [edge.v, edge.w].sort(),\n _sort2 = _slicedToArray(_sort, 2),\n v = _sort2[0],\n w = _sort2[1];\n\n var key = \"\".concat(v, \"-\").concat(w);\n\n if (edgeStack.has(key)) {\n return false;\n }\n\n edgeStack.set(key, true);\n }\n\n return true;\n}\n/**\n * @description Check if the graph is a null graph.\n * @description.zh-CN 检查图是否为空图。\n */\n\nexport function isNullGraph(graph) {\n return graph.nodes().length === 0;\n}\n/**\n * @description Check if the graph contains Self loops.\n * @description.zh-CN 检查图是否包含自环。\n */\n\nexport function hasSelfLoop(graph) {\n var edges = graph.edges();\n\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n\n if (edge.v === edge.w) {\n return true;\n }\n }\n\n return false;\n}","import { isSimpleGraph } from '../essence';\nimport { containAllSameNodes, containSameEdges } from './contain';\n/**\n * @description Check if one graph is the complement of another graph.\n * @description.zh-CN 检查一个图是否是另一个图的补图。\n */\n\nexport var isGraphComplement = function isGraphComplement(originGraph, targetGraph) {\n if (!isSimpleGraph(originGraph) || !isSimpleGraph(targetGraph)) {\n return false;\n }\n\n if (!containAllSameNodes(originGraph, targetGraph)) {\n return false;\n }\n\n if (containSameEdges(originGraph, targetGraph)) {\n return false;\n }\n\n var nodeCount = originGraph.nodeCount();\n return originGraph.edgeCount() + targetGraph.edgeCount() === nodeCount * (nodeCount - 1) / 2;\n};","import { isSimpleGraph } from '../essence';\nimport Graph from '../Graph';\n/**\n * @description Get the graph's complement\n * @description.zh-CN 获取图的补图\n */\n\nexport var getGraphComplement = function getGraphComplement(originGraph) {\n if (!isSimpleGraph(originGraph)) {\n return null;\n }\n\n var nodeCount = originGraph.nodeCount();\n var complementGraph = new Graph({\n compound: originGraph.isCompound(),\n directed: originGraph.isDirected(),\n multigraph: originGraph.isMultigraph()\n });\n var nodes = originGraph.nodes();\n\n for (var i = 0; i < nodeCount; i++) {\n var nodei = nodes[i];\n complementGraph.setNode(nodei, originGraph.node(nodei));\n\n for (var j = i + 1; j < nodeCount; j++) {\n var nodej = nodes[j];\n\n if (!originGraph.hasEdge(nodei, nodej)) {\n complementGraph.setEdge(nodei, nodej);\n }\n }\n }\n\n return complementGraph;\n};","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Hierarchy\"] = factory();\n\telse\n\t\troot[\"Hierarchy\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 31);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 4fd512329b599d5b36c3","import isType from './is-type';\nexport default (function (value) {\n return Array.isArray ? Array.isArray(value) : isType(value, 'Array');\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-array.js\n// module id = 0\n// module chunks = 0","var isArrayLike = function (value) {\n /**\n * isArrayLike([1, 2, 3]) => true\n * isArrayLike(document.body.children) => true\n * isArrayLike('abc') => true\n * isArrayLike(Function) => false\n */\n return value !== null && typeof value !== 'function' && isFinite(value.length);\n};\n\nexport default isArrayLike;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-array-like.js\n// module id = 1\n// module chunks = 0","import isArray from './is-array';\nimport isObject from './is-object';\n\nfunction each(elements, func) {\n if (!elements) {\n return;\n }\n\n var rst;\n\n if (isArray(elements)) {\n for (var i = 0, len = elements.length; i < len; i++) {\n rst = func(elements[i], i);\n\n if (rst === false) {\n break;\n }\n }\n } else if (isObject(elements)) {\n for (var k in elements) {\n if (elements.hasOwnProperty(k)) {\n rst = func(elements[k], k);\n\n if (rst === false) {\n break;\n }\n }\n }\n }\n}\n\nexport default each;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/each.js\n// module id = 2\n// module chunks = 0","/**\n * 是否为函数\n * @param {*} fn 对象\n * @return {Boolean} 是否函数\n */\nimport isType from './is-type';\nexport default (function (value) {\n return isType(value, 'Function');\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-function.js\n// module id = 3\n// module chunks = 0","var toString = {}.toString;\n\nvar isType = function (value, type) {\n return toString.call(value) === '[object ' + type + ']';\n};\n\nexport default isType;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-type.js\n// module id = 4\n// module chunks = 0","/**\n * 判断是否数字\n * @return {Boolean} 是否数字\n */\nimport isType from './is-type';\n\nvar isNumber = function (value) {\n return isType(value, 'Number');\n};\n\nexport default isNumber;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-number.js\n// module id = 5\n// module chunks = 0","// isFinite,\nvar isNil = function (value) {\n /**\n * isNil(null) => true\n * isNil() => true\n */\n return value === null || value === undefined;\n};\n\nexport default isNil;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-nil.js\n// module id = 6\n// module chunks = 0","var _require = require('@antv/util'),\n mix = _require.mix;\n\nmodule.exports = {\n assign: mix\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/util.js\n// module id = 7\n// module chunks = 0","import isType from './is-type';\nexport default (function (str) {\n return isType(str, 'String');\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-string.js\n// module id = 8\n// module chunks = 0","import isObjectLike from './is-object-like';\nimport isType from './is-type';\n\nvar isPlainObject = function (value) {\n /**\n * isObjectLike(new Foo) => false\n * isObjectLike([1, 2, 3]) => false\n * isObjectLike({ x: 0, y: 0 }) => true\n * isObjectLike(Object.create(null)) => true\n */\n if (!isObjectLike(value) || !isType(value, 'Object')) {\n return false;\n }\n\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n\n var proto = value;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(value) === proto;\n};\n\nexport default isPlainObject;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-plain-object.js\n// module id = 9\n// module chunks = 0","import isNil from './is-nil';\nexport default (function (value) {\n if (isNil(value)) return '';\n return value.toString();\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/to-string.js\n// module id = 10\n// module chunks = 0","var hierarchy = require('./hierarchy');\n\nvar Layout = /*#__PURE__*/function () {\n function Layout(root, options) {\n if (options === void 0) {\n options = {};\n }\n\n var me = this;\n me.options = options;\n me.rootNode = hierarchy(root, options);\n }\n\n var _proto = Layout.prototype;\n\n _proto.execute = function execute() {\n throw new Error('please override this method');\n };\n\n return Layout;\n}();\n\nmodule.exports = Layout;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/layout/base.js\n// module id = 11\n// module chunks = 0","import isArrayLike from './is-array-like';\n\nvar contains = function (arr, value) {\n if (!isArrayLike(arr)) {\n return false;\n }\n\n return arr.indexOf(value) > -1;\n};\n\nexport default contains;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/contains.js\n// module id = 12\n// module chunks = 0","export default (function (value) {\n /**\n * isObject({}) => true\n * isObject([1, 2, 3]) => true\n * isObject(Function) => true\n * isObject(null) => false\n */\n var type = typeof value;\n return value !== null && type === 'object' || type === 'function';\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-object.js\n// module id = 13\n// module chunks = 0","import each from './each';\nimport isArrayLike from './is-array-like';\n\nvar filter = function (arr, func) {\n if (!isArrayLike(arr)) {\n return arr;\n }\n\n var result = [];\n each(arr, function (value, index) {\n if (func(value, index)) {\n result.push(value);\n }\n });\n return result;\n};\n\nexport default filter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/filter.js\n// module id = 14\n// module chunks = 0","var isObjectLike = function (value) {\n /**\n * isObjectLike({}) => true\n * isObjectLike([1, 2, 3]) => true\n * isObjectLike(Function) => false\n * isObjectLike(null) => false\n */\n return typeof value === 'object' && value !== null;\n};\n\nexport default isObjectLike;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-object-like.js\n// module id = 15\n// module chunks = 0","// FIXME: Mutable param should be forbidden in static lang.\nfunction _mix(dist, obj) {\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && key !== 'constructor' && obj[key] !== undefined) {\n dist[key] = obj[key];\n }\n }\n}\n\nexport default function mix(dist, src1, src2, src3) {\n if (src1) _mix(dist, src1);\n if (src2) _mix(dist, src2);\n if (src3) _mix(dist, src3);\n return dist;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/mix.js\n// module id = 16\n// module chunks = 0","var separateTree = require('./separate-root');\n\nvar VALID_DIRECTIONS = ['LR', // left to right\n'RL', // right to left\n'TB', // top to bottom\n'BT', // bottom to top\n'H', // horizontal\n'V' // vertical\n];\nvar HORIZONTAL_DIRECTIONS = ['LR', 'RL', 'H'];\n\nvar isHorizontal = function isHorizontal(direction) {\n return HORIZONTAL_DIRECTIONS.indexOf(direction) > -1;\n};\n\nvar DEFAULT_DIRECTION = VALID_DIRECTIONS[0];\n\nmodule.exports = function (root, options, layoutAlgrithm) {\n var direction = options.direction || DEFAULT_DIRECTION;\n options.isHorizontal = isHorizontal(direction);\n\n if (direction && VALID_DIRECTIONS.indexOf(direction) === -1) {\n throw new TypeError(\"Invalid direction: \" + direction);\n }\n\n if (direction === VALID_DIRECTIONS[0]) {\n // LR\n layoutAlgrithm(root, options);\n } else if (direction === VALID_DIRECTIONS[1]) {\n // RL\n layoutAlgrithm(root, options);\n root.right2left();\n } else if (direction === VALID_DIRECTIONS[2]) {\n // TB\n layoutAlgrithm(root, options);\n } else if (direction === VALID_DIRECTIONS[3]) {\n // BT\n layoutAlgrithm(root, options);\n root.bottom2top();\n } else if (direction === VALID_DIRECTIONS[4] || direction === VALID_DIRECTIONS[5]) {\n // H or V\n // separate into left and right trees\n var _separateTree = separateTree(root, options),\n left = _separateTree.left,\n right = _separateTree.right; // do layout for left and right trees\n\n\n layoutAlgrithm(left, options);\n layoutAlgrithm(right, options);\n options.isHorizontal ? left.right2left() : left.bottom2top(); // combine left and right trees\n\n right.translate(left.x - right.x, left.y - right.y); // translate root\n\n root.x = left.x;\n root.y = right.y;\n var bb = root.getBoundingBox();\n\n if (options.isHorizontal) {\n if (bb.top < 0) {\n root.translate(0, -bb.top);\n }\n } else {\n if (bb.left < 0) {\n root.translate(-bb.left, 0);\n }\n }\n } // fixed root position, default value is true\n\n\n var fixedRoot = options.fixedRoot;\n if (fixedRoot === undefined) fixedRoot = true;\n\n if (fixedRoot) {\n root.translate(-(root.x + root.width / 2 + root.hgap), -(root.y + root.height / 2 + root.vgap));\n }\n\n return root;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/layout/do-layout.js\n// module id = 17\n// module chunks = 0","/* eslint-disable no-cond-assign */\nvar util = require('../util');\n\nvar PEM = 18;\nvar DEFAULT_HEIGHT = PEM * 2;\nvar DEFAULT_GAP = PEM;\nvar DEFAULT_OPTIONS = {\n getId: function getId(d) {\n return d.id || d.name;\n },\n getPreH: function getPreH(d) {\n return d.preH || 0;\n },\n getPreV: function getPreV(d) {\n return d.preV || 0;\n },\n getHGap: function getHGap(d) {\n return d.hgap || DEFAULT_GAP;\n },\n getVGap: function getVGap(d) {\n return d.vgap || DEFAULT_GAP;\n },\n getChildren: function getChildren(d) {\n return d.children;\n },\n getHeight: function getHeight(d) {\n return d.height || DEFAULT_HEIGHT;\n },\n getWidth: function getWidth(d) {\n var label = d.label || ' ';\n return d.width || label.split('').length * PEM; // FIXME DO NOT get width like this\n }\n};\n\nfunction Node(data, options) {\n var me = this;\n me.vgap = me.hgap = 0;\n if (data instanceof Node) return data;\n me.data = data;\n /*\n * Gaps: filling space between nodes\n * (x, y) ----------------------\n * | vgap |\n * | -------------------- h\n * | h | | e\n * | g | | i\n * | a | | g\n * | p | | h\n * | --------------------- t\n * | |\n * -----------width------------\n */\n\n var hgap = options.getHGap(data);\n var vgap = options.getVGap(data);\n me.preH = options.getPreH(data);\n me.preV = options.getPreV(data);\n me.width = options.getWidth(data);\n me.height = options.getHeight(data);\n me.width += me.preH;\n me.height += me.preV;\n me.id = options.getId(data);\n me.x = me.y = 0;\n me.depth = 0;\n\n if (!me.children) {\n me.children = [];\n }\n\n me.addGap(hgap, vgap);\n return me;\n}\n\nutil.assign(Node.prototype, {\n isRoot: function isRoot() {\n return this.depth === 0;\n },\n isLeaf: function isLeaf() {\n return this.children.length === 0;\n },\n addGap: function addGap(hgap, vgap) {\n var me = this;\n me.hgap += hgap;\n me.vgap += vgap;\n me.width += 2 * hgap;\n me.height += 2 * vgap;\n },\n eachNode: function eachNode(callback) {\n // Depth First traverse\n var me = this;\n var nodes = [me];\n var current;\n\n while (current = nodes.shift()) {\n callback(current);\n nodes = current.children.concat(nodes);\n }\n },\n DFTraverse: function DFTraverse(callback) {\n // Depth First traverse\n this.eachNode(callback);\n },\n BFTraverse: function BFTraverse(callback) {\n // Breadth First traverse\n var me = this;\n var nodes = [me];\n var current;\n\n while (current = nodes.shift()) {\n callback(current);\n nodes = nodes.concat(current.children);\n }\n },\n getBoundingBox: function getBoundingBox() {\n // BBox for just one tree node\n var bb = {\n left: Number.MAX_VALUE,\n top: Number.MAX_VALUE,\n width: 0,\n height: 0\n };\n this.eachNode(function (node) {\n bb.left = Math.min(bb.left, node.x);\n bb.top = Math.min(bb.top, node.y);\n bb.width = Math.max(bb.width, node.x + node.width);\n bb.height = Math.max(bb.height, node.y + node.height);\n });\n return bb;\n },\n // translate\n translate: function translate(tx, ty) {\n if (tx === void 0) {\n tx = 0;\n }\n\n if (ty === void 0) {\n ty = 0;\n }\n\n this.eachNode(function (node) {\n node.x += tx;\n node.y += ty;\n node.x += node.preH;\n node.y += node.preV;\n });\n },\n right2left: function right2left() {\n var me = this;\n var bb = me.getBoundingBox();\n me.eachNode(function (node) {\n node.x = node.x - (node.x - bb.left) * 2 - node.width; // node.x = - node.x;\n });\n me.translate(bb.width, 0);\n },\n bottom2top: function bottom2top() {\n var me = this;\n var bb = me.getBoundingBox();\n me.eachNode(function (node) {\n node.y = node.y - (node.y - bb.top) * 2 - node.height; // node.y = - node.y;\n });\n me.translate(0, bb.height);\n }\n});\n\nfunction hierarchy(data, options, isolated) {\n if (options === void 0) {\n options = {};\n }\n\n options = util.assign({}, DEFAULT_OPTIONS, options);\n var root = new Node(data, options);\n var nodes = [root];\n var node;\n\n if (!isolated && !data.collapsed) {\n while (node = nodes.shift()) {\n if (!node.data.collapsed) {\n var children = options.getChildren(node.data);\n var length = children ? children.length : 0;\n node.children = new Array(length);\n\n if (children && length) {\n for (var i = 0; i < length; i++) {\n var child = new Node(children[i], options);\n node.children[i] = child;\n nodes.push(child);\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n }\n }\n\n return root;\n}\n\nmodule.exports = hierarchy;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/layout/hierarchy.js\n// module id = 18\n// module chunks = 0","import isNil from './is-nil';\nimport keys from './keys';\n\nfunction isMatch(obj, attrs) {\n var _keys = keys(attrs);\n\n var length = _keys.length;\n if (isNil(obj)) return !length;\n\n for (var i = 0; i < length; i += 1) {\n var key = _keys[i];\n\n if (attrs[key] !== obj[key] || !(key in obj)) {\n return false;\n }\n }\n\n return true;\n}\n\nexport default isMatch;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-match.js\n// module id = 19\n// module chunks = 0","import each from './each';\nimport isFunction from './is-function';\nvar keys = Object.keys ? function (obj) {\n return Object.keys(obj);\n} : function (obj) {\n var result = [];\n each(obj, function (value, key) {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(key);\n }\n });\n return result;\n};\nexport default keys;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/keys.js\n// module id = 20\n// module chunks = 0","import isArrayLike from './is-array-like';\nvar splice = Array.prototype.splice;\n\nvar pullAt = function pullAt(arr, indexes) {\n if (!isArrayLike(arr)) {\n return [];\n }\n\n var length = arr ? indexes.length : 0;\n var last = length - 1;\n\n while (length--) {\n var previous = void 0;\n var index = indexes[length];\n\n if (length === last || index !== previous) {\n previous = index;\n splice.call(arr, index, 1);\n }\n }\n\n return arr;\n};\n\nexport default pullAt;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/pull-at.js\n// module id = 21\n// module chunks = 0","import contains from './contains';\nimport each from './each';\n\nvar uniq = function (arr) {\n var resultArr = [];\n each(arr, function (item) {\n if (!contains(resultArr, item)) {\n resultArr.push(item);\n }\n });\n return resultArr;\n};\n\nexport default uniq;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/uniq.js\n// module id = 22\n// module chunks = 0","import isArray from './is-array';\nimport isFunction from './is-function';\nimport groupBy from './group-by';\n\nvar groupToMap = function (data, condition) {\n if (!condition) {\n return {\n 0: data\n };\n }\n\n if (!isFunction(condition)) {\n var paramsCondition_1 = isArray(condition) ? condition : condition.replace(/\\s+/g, '').split('*');\n\n condition = function (row) {\n var unique = '_'; // 避免出现数字作为Key的情况,会进行按照数字的排序\n\n for (var i = 0, l = paramsCondition_1.length; i < l; i++) {\n unique += row[paramsCondition_1[i]] && row[paramsCondition_1[i]].toString();\n }\n\n return unique;\n };\n }\n\n var groups = groupBy(data, condition);\n return groups;\n};\n\nexport default groupToMap;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/group-to-map.js\n// module id = 23\n// module chunks = 0","import each from './each';\nimport isArray from './is-array';\nimport isFunction from './is-function';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction groupBy(data, condition) {\n if (!condition || !isArray(data)) {\n return {};\n }\n\n var result = {}; // 兼容方法和 字符串的写法\n\n var predicate = isFunction(condition) ? condition : function (item) {\n return item[condition];\n };\n var key;\n each(data, function (item) {\n key = predicate(item);\n\n if (hasOwnProperty.call(result, key)) {\n result[key].push(item);\n } else {\n result[key] = [item];\n }\n });\n return result;\n}\n\nexport default groupBy;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/group-by.js\n// module id = 24\n// module chunks = 0","export default (function (obj, key) {\n return obj.hasOwnProperty(key);\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/has.js\n// module id = 25\n// module chunks = 0","import each from './each';\nimport isFunction from './is-function'; // @ts-ignore\n\nvar values = Object.values ? function (obj) {\n return Object.values(obj);\n} : function (obj) {\n var result = [];\n each(obj, function (value, key) {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(value);\n }\n });\n return result;\n};\nexport default values;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/values.js\n// module id = 26\n// module chunks = 0","var toString = {}.toString;\n\nvar getType = function (value) {\n return toString.call(value).replace(/^\\[object /, '').replace(/]$/, '');\n};\n\nexport default getType;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/get-type.js\n// module id = 27\n// module chunks = 0","var objectProto = Object.prototype;\n\nvar isPrototype = function (value) {\n var Ctor = value && value.constructor;\n var proto = typeof Ctor === 'function' && Ctor.prototype || objectProto;\n return value === proto;\n};\n\nexport default isPrototype;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-prototype.js\n// module id = 28\n// module chunks = 0","import isObjectLike from './is-object-like';\nimport isArrayLike from './is-array-like';\nimport isString from './is-string';\n\nvar isEqual = function (value, other) {\n if (value === other) {\n return true;\n }\n\n if (!value || !other) {\n return false;\n }\n\n if (isString(value) || isString(other)) {\n return false;\n }\n\n if (isArrayLike(value) || isArrayLike(other)) {\n if (value.length !== other.length) {\n return false;\n }\n\n var rst = true;\n\n for (var i = 0; i < value.length; i++) {\n rst = isEqual(value[i], other[i]);\n\n if (!rst) {\n break;\n }\n }\n\n return rst;\n }\n\n if (isObjectLike(value) || isObjectLike(other)) {\n var valueKeys = Object.keys(value);\n var otherKeys = Object.keys(other);\n\n if (valueKeys.length !== otherKeys.length) {\n return false;\n }\n\n var rst = true;\n\n for (var i = 0; i < valueKeys.length; i++) {\n rst = isEqual(value[valueKeys[i]], other[valueKeys[i]]);\n\n if (!rst) {\n break;\n }\n }\n\n return rst;\n }\n\n return false;\n};\n\nexport default isEqual;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-equal.js\n// module id = 29\n// module chunks = 0","var hierarchy = require('./hierarchy');\n\nmodule.exports = function (root, options) {\n // separate into left and right trees\n var left = hierarchy(root.data, options, true); // root only\n\n var right = hierarchy(root.data, options, true); // root only\n // automatically\n\n var treeSize = root.children.length;\n var rightTreeSize = Math.round(treeSize / 2); // separate left and right tree by meta data\n\n var getSide = options.getSide || function (child, index) {\n if (index < rightTreeSize) {\n return 'right';\n }\n\n return 'left';\n };\n\n for (var i = 0; i < treeSize; i++) {\n var child = root.children[i];\n var side = getSide(child, i);\n\n if (side === 'right') {\n right.children.push(child);\n } else {\n left.children.push(child);\n }\n }\n\n left.eachNode(function (node) {\n if (!node.isRoot()) {\n node.side = 'left';\n }\n });\n right.eachNode(function (node) {\n if (!node.isRoot()) {\n node.side = 'right';\n }\n });\n return {\n left: left,\n right: right\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/layout/separate-root.js\n// module id = 30\n// module chunks = 0","var hierarchy = {\n compactBox: require('./compact-box'),\n dendrogram: require('./dendrogram'),\n indented: require('./indented'),\n mindmap: require('./mindmap')\n};\nmodule.exports = hierarchy;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/index.js\n// module id = 31\n// module chunks = 0","function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar TreeLayout = require('./layout/base');\n\nvar nonLayeredTidyTree = require('./layout/non-layered-tidy');\n\nvar doTreeLayout = require('./layout/do-layout');\n\nvar util = require('./util');\n\nvar CompactBoxTreeLayout = /*#__PURE__*/function (_TreeLayout) {\n _inheritsLoose(CompactBoxTreeLayout, _TreeLayout);\n\n function CompactBoxTreeLayout() {\n return _TreeLayout.apply(this, arguments) || this;\n }\n\n var _proto = CompactBoxTreeLayout.prototype;\n\n _proto.execute = function execute() {\n var me = this;\n return doTreeLayout(me.rootNode, me.options, nonLayeredTidyTree);\n };\n\n return CompactBoxTreeLayout;\n}(TreeLayout);\n\nvar DEFAULT_OPTIONS = {};\n\nfunction compactBoxLayout(root, options) {\n options = util.assign({}, DEFAULT_OPTIONS, options);\n return new CompactBoxTreeLayout(root, options).execute();\n}\n\nmodule.exports = compactBoxLayout;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/compact-box.js\n// module id = 32\n// module chunks = 0","// array\nexport { default as contains, default as includes } from './contains';\nexport { default as difference } from './difference';\nexport { default as find } from './find';\nexport { default as findIndex } from './find-index';\nexport { default as firstValue } from './first-value';\nexport { default as flatten } from './flatten';\nexport { default as flattenDeep } from './flatten-deep';\nexport { default as getRange } from './get-range';\nexport { default as pull } from './pull';\nexport { default as pullAt } from './pull-at';\nexport { default as reduce } from './reduce';\nexport { default as remove } from './remove';\nexport { default as sortBy } from './sort-by';\nexport { default as union } from './union';\nexport { default as uniq } from './uniq';\nexport { default as valuesOfKey } from './values-of-key';\nexport { default as head } from './head';\nexport { default as last } from './last';\nexport { default as startsWith } from './starts-with';\nexport { default as endsWith } from './ends-with';\nexport { default as filter } from './filter';\nexport { default as every } from './every';\nexport { default as some } from './some';\nexport { default as group } from './group';\nexport { default as groupBy } from './group-by';\nexport { default as groupToMap } from './group-to-map'; // event\n\nexport { default as getWrapBehavior } from './get-wrap-behavior';\nexport { default as wrapBehavior } from './wrap-behavior'; // format\n\nexport { default as number2color } from './number2color';\nexport { default as parseRadius } from './parse-radius'; // math\n\nexport { default as clamp } from './clamp';\nexport { default as fixedBase } from './fixed-base';\nexport { default as isDecimal } from './is-decimal';\nexport { default as isEven } from './is-even';\nexport { default as isInteger } from './is-integer';\nexport { default as isNegative } from './is-negative';\nexport { default as isNumberEqual } from './is-number-equal';\nexport { default as isOdd } from './is-odd';\nexport { default as isPositive } from './is-positive';\nexport { default as maxBy } from './max-by';\nexport { default as minBy } from './min-by';\nexport { default as mod } from './mod';\nexport { default as toDegree } from './to-degree';\nexport { default as toInteger } from './to-integer';\nexport { default as toRadian } from './to-radian'; // object\n\nexport { default as forIn } from './for-in';\nexport { default as has } from './has';\nexport { default as hasKey } from './has-key';\nexport { default as hasValue } from './has-value';\nexport { default as keys } from './keys';\nexport { default as isMatch } from './is-match';\nexport { default as values } from './values'; // string\n\nexport { default as lowerCase } from './lower-case';\nexport { default as lowerFirst } from './lower-first';\nexport { default as substitute } from './substitute';\nexport { default as upperCase } from './upper-case';\nexport { default as upperFirst } from './upper-first'; // type\n\nexport { default as getType } from './get-type';\nexport { default as isArguments } from './is-arguments';\nexport { default as isArray } from './is-array';\nexport { default as isArrayLike } from './is-array-like';\nexport { default as isBoolean } from './is-boolean';\nexport { default as isDate } from './is-date';\nexport { default as isError } from './is-error';\nexport { default as isFunction } from './is-function';\nexport { default as isFinite } from './is-finite';\nexport { default as isNil } from './is-nil';\nexport { default as isNull } from './is-null';\nexport { default as isNumber } from './is-number';\nexport { default as isObject } from './is-object';\nexport { default as isObjectLike } from './is-object-like';\nexport { default as isPlainObject } from './is-plain-object';\nexport { default as isPrototype } from './is-prototype';\nexport { default as isRegExp } from './is-reg-exp';\nexport { default as isString } from './is-string';\nexport { default as isType } from './is-type';\nexport { default as isUndefined } from './is-undefined';\nexport { default as isElement } from './is-element';\nexport { default as requestAnimationFrame } from './request-animation-frame';\nexport { default as clearAnimationFrame } from './clear-animation-frame'; // other\n\nexport { default as augment } from './augment';\nexport { default as clone } from './clone';\nexport { default as debounce } from './debounce';\nexport { default as memoize } from './memoize';\nexport { default as deepMix } from './deep-mix';\nexport { default as each } from './each';\nexport { default as extend } from './extend';\nexport { default as indexOf } from './index-of';\nexport { default as isEmpty } from './is-empty';\nexport { default as isEqual } from './is-equal';\nexport { default as isEqualWith } from './is-equal-with';\nexport { default as map } from './map';\nexport { default as mapValues } from './map-values';\nexport { default as mix, default as assign } from './mix';\nexport { default as get } from './get';\nexport { default as set } from './set';\nexport { default as pick } from './pick';\nexport { default as throttle } from './throttle';\nexport { default as toArray } from './to-array';\nexport { default as toString } from './to-string';\nexport { default as uniqueId } from './unique-id';\nexport { default as noop } from './noop';\nexport { default as identity } from './identity';\nexport { default as size } from './size'; // 不知道为什么,需要把这个 export,不然 ts 会报类型错误\n\nexport { default as Cache } from './cache';\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/index.js\n// module id = 33\n// module chunks = 0","import filter from './filter';\nimport contains from './contains';\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to inspect.\n * @param {Array} values The values to exclude.\n * @return {Array} Returns the new array of filtered values.\n * @example\n * difference([2, 1], [2, 3]); // => [1]\n */\n\nvar difference = function (arr, values) {\n if (values === void 0) {\n values = [];\n }\n\n return filter(arr, function (value) {\n return !contains(values, value);\n });\n};\n\nexport default difference;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/difference.js\n// module id = 34\n// module chunks = 0","import isFunction from './is-function';\nimport isMatch from './is-match';\nimport isArray from './is-array';\nimport isPlainObject from './is-plain-object';\n\nfunction find(arr, predicate) {\n if (!isArray(arr)) return null;\n\n var _predicate;\n\n if (isFunction(predicate)) {\n _predicate = predicate;\n }\n\n if (isPlainObject(predicate)) {\n _predicate = function (a) {\n return isMatch(a, predicate);\n };\n }\n\n if (_predicate) {\n for (var i = 0; i < arr.length; i += 1) {\n if (_predicate(arr[i])) {\n return arr[i];\n }\n }\n }\n\n return null;\n}\n\nexport default find;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/find.js\n// module id = 35\n// module chunks = 0","function findIndex(arr, predicate, fromIndex) {\n if (fromIndex === void 0) {\n fromIndex = 0;\n }\n\n for (var i = fromIndex; i < arr.length; i++) {\n if (predicate(arr[i], i)) {\n // 找到终止循环\n return i;\n }\n }\n\n return -1;\n}\n\nexport default findIndex;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/find-index.js\n// module id = 36\n// module chunks = 0","import isNil from './is-nil';\nimport isArray from './is-array';\n\nvar firstValue = function (data, name) {\n var rst = null;\n\n for (var i = 0; i < data.length; i++) {\n var obj = data[i];\n var value = obj[name];\n\n if (!isNil(value)) {\n if (isArray(value)) {\n rst = value[0]; // todo 这里是否应该使用递归,调用 firstValue @绝云\n } else {\n rst = value;\n }\n\n break;\n }\n }\n\n return rst;\n};\n\nexport default firstValue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/first-value.js\n// module id = 37\n// module chunks = 0","import isArray from './is-array';\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flatten([1, [2, [3, [4]], 5]]); // => [1, 2, [3, [4]], 5]\n */\n\nvar flatten = function (arr) {\n if (!isArray(arr)) {\n return [];\n }\n\n var rst = [];\n\n for (var i = 0; i < arr.length; i++) {\n rst = rst.concat(arr[i]);\n }\n\n return rst;\n};\n\nexport default flatten;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/flatten.js\n// module id = 38\n// module chunks = 0","import isArray from './is-array';\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @param {Array} result The array to return.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flattenDeep([1, [2, [3, [4]], 5]]); // => [1, 2, 3, 4, 5]\n */\n\nvar flattenDeep = function (arr, result) {\n if (result === void 0) {\n result = [];\n }\n\n if (!isArray(arr)) {\n result.push(arr);\n } else {\n for (var i = 0; i < arr.length; i += 1) {\n flattenDeep(arr[i], result);\n }\n }\n\n return result;\n};\n\nexport default flattenDeep;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/flatten-deep.js\n// module id = 39\n// module chunks = 0","import isArray from './is-array';\nimport filter from './filter';\n\nvar getRange = function (values) {\n // 存在 NaN 时,min,max 判定会出问题\n values = filter(values, function (v) {\n return !isNaN(v);\n });\n\n if (!values.length) {\n // 如果没有数值则直接返回0\n return {\n min: 0,\n max: 0\n };\n }\n\n if (isArray(values[0])) {\n var tmp = [];\n\n for (var i = 0; i < values.length; i++) {\n tmp = tmp.concat(values[i]);\n }\n\n values = tmp;\n }\n\n var max = Math.max.apply(null, values);\n var min = Math.min.apply(null, values);\n return {\n min: min,\n max: max\n };\n};\n\nexport default getRange;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/get-range.js\n// module id = 40\n// module chunks = 0","var arrPrototype = Array.prototype;\nvar splice = arrPrototype.splice;\nvar indexOf = arrPrototype.indexOf;\n\nvar pull = function (arr) {\n var values = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n var fromIndex = -1;\n\n while ((fromIndex = indexOf.call(arr, value)) > -1) {\n splice.call(arr, fromIndex, 1);\n }\n }\n\n return arr;\n};\n\nexport default pull;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/pull.js\n// module id = 41\n// module chunks = 0","import each from './each';\nimport isArray from './is-array';\nimport isPlainObject from './is-plain-object';\n\nvar reduce = function (arr, fn, init) {\n if (!isArray(arr) && !isPlainObject(arr)) {\n return arr;\n }\n\n var result = init;\n each(arr, function (data, i) {\n result = fn(result, data, i);\n });\n return result;\n};\n\nexport default reduce;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/reduce.js\n// module id = 42\n// module chunks = 0","import isArrayLike from './is-array-like';\nimport pullAt from './pull-at';\n\nvar remove = function (arr, predicate) {\n /**\n * const arr = [1, 2, 3, 4]\n * const evens = remove(arr, n => n % 2 == 0)\n * console.log(arr) // => [1, 3]\n * console.log(evens) // => [2, 4]\n */\n var result = [];\n\n if (!isArrayLike(arr)) {\n return result;\n }\n\n var i = -1;\n var indexes = [];\n var length = arr.length;\n\n while (++i < length) {\n var value = arr[i];\n\n if (predicate(value, i, arr)) {\n result.push(value);\n indexes.push(i);\n }\n }\n\n pullAt(arr, indexes);\n return result;\n};\n\nexport default remove;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/remove.js\n// module id = 43\n// module chunks = 0","import isArray from './is-array';\nimport isString from './is-string';\nimport isFunction from './is-function';\n\nfunction sortBy(arr, key) {\n var comparer;\n\n if (isFunction(key)) {\n comparer = function (a, b) {\n return key(a) - key(b);\n };\n } else {\n var keys_1 = [];\n\n if (isString(key)) {\n keys_1.push(key);\n } else if (isArray(key)) {\n keys_1 = key;\n }\n\n comparer = function (a, b) {\n for (var i = 0; i < keys_1.length; i += 1) {\n var prop = keys_1[i];\n\n if (a[prop] > b[prop]) {\n return 1;\n }\n\n if (a[prop] < b[prop]) {\n return -1;\n }\n }\n\n return 0;\n };\n }\n\n arr.sort(comparer);\n return arr;\n}\n\nexport default sortBy;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/sort-by.js\n// module id = 44\n// module chunks = 0","import uniq from './uniq';\n\nvar union = function () {\n var sources = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n\n return uniq([].concat.apply([], sources));\n};\n\nexport default union;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/union.js\n// module id = 45\n// module chunks = 0","import each from './each';\nimport isArray from './is-array';\nimport isNil from './is-nil';\nexport default (function (data, name) {\n var rst = [];\n var tmpMap = {};\n data.forEach(function (obj) {\n var value = obj[name];\n\n if (!isNil(value)) {\n // flatten\n if (!isArray(value)) {\n value = [value];\n }\n\n each(value, function (val) {\n // unique\n if (!tmpMap[val]) {\n rst.push(val);\n tmpMap[val] = true;\n }\n });\n }\n });\n return rst;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/values-of-key.js\n// module id = 46\n// module chunks = 0","import isArrayLike from './is-array-like';\nexport default function head(o) {\n if (isArrayLike(o)) {\n return o[0];\n }\n\n return undefined;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/head.js\n// module id = 47\n// module chunks = 0","import isArrayLike from './is-array-like';\nexport default function last(o) {\n if (isArrayLike(o)) {\n var arr = o;\n return arr[arr.length - 1];\n }\n\n return undefined;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/last.js\n// module id = 48\n// module chunks = 0","import isArray from './is-array';\nimport isString from './is-string';\n\nfunction startsWith(arr, e) {\n return isArray(arr) || isString(arr) ? arr[0] === e : false;\n}\n\nexport default startsWith;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/starts-with.js\n// module id = 49\n// module chunks = 0","import isArray from './is-array';\nimport isString from './is-string';\n\nfunction endsWith(arr, e) {\n return isArray(arr) || isString(arr) ? arr[arr.length - 1] === e : false;\n}\n\nexport default endsWith;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/ends-with.js\n// module id = 50\n// module chunks = 0","/**\n * 只要有一个不满足条件就返回 false\n * @param arr\n * @param func\n */\nvar every = function (arr, func) {\n for (var i = 0; i < arr.length; i++) {\n if (!func(arr[i], i)) return false;\n }\n\n return true;\n};\n\nexport default every;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/every.js\n// module id = 51\n// module chunks = 0","/**\n * 只要有一个满足条件就返回 true\n * @param arr\n * @param func\n */\nvar some = function (arr, func) {\n for (var i = 0; i < arr.length; i++) {\n if (func(arr[i], i)) return true;\n }\n\n return false;\n};\n\nexport default some;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/some.js\n// module id = 52\n// module chunks = 0","import groupToMap from './group-to-map';\nexport default (function (data, condition) {\n if (!condition) {\n // 没有条件,则自身改成数组\n return [data];\n }\n\n var groups = groupToMap(data, condition);\n var array = [];\n\n for (var i in groups) {\n array.push(groups[i]);\n }\n\n return array;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/group.js\n// module id = 53\n// module chunks = 0","/**\n * 获取封装的事件\n * @protected\n * @param {Object} obj 对象\n * @param {String} action 事件名称\n * @return {Function} 返回事件处理函数\n */\nfunction getWrapBehavior(obj, action) {\n return obj['_wrap_' + action];\n}\n\nexport default getWrapBehavior;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/get-wrap-behavior.js\n// module id = 54\n// module chunks = 0","/**\n * 封装事件,便于使用上下文this,和便于解除事件时使用\n * @protected\n * @param {Object} obj 对象\n * @param {String} action 事件名称\n * @return {Function} 返回事件处理函数\n */\nfunction wrapBehavior(obj, action) {\n if (obj['_wrap_' + action]) {\n return obj['_wrap_' + action];\n }\n\n var method = function (e) {\n obj[action](e);\n };\n\n obj['_wrap_' + action] = method;\n return method;\n}\n\nexport default wrapBehavior;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/wrap-behavior.js\n// module id = 55\n// module chunks = 0","var numColorCache = {};\n\nfunction numberToColor(num) {\n // 增加缓存\n var color = numColorCache[num];\n\n if (!color) {\n var str = num.toString(16);\n\n for (var i = str.length; i < 6; i++) {\n str = '0' + str;\n }\n\n color = '#' + str;\n numColorCache[num] = color;\n }\n\n return color;\n}\n\nexport default numberToColor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/number2color.js\n// module id = 56\n// module chunks = 0","import isArray from './is-array';\n\nfunction parseRadius(radius) {\n var r1 = 0,\n r2 = 0,\n r3 = 0,\n r4 = 0;\n\n if (isArray(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n } else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n } else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n } else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n } else {\n r1 = r2 = r3 = r4 = radius;\n }\n\n return {\n r1: r1,\n r2: r2,\n r3: r3,\n r4: r4\n };\n}\n\nexport default parseRadius;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/parse-radius.js\n// module id = 57\n// module chunks = 0","var clamp = function (a, min, max) {\n if (a < min) {\n return min;\n } else if (a > max) {\n return max;\n }\n\n return a;\n};\n\nexport default clamp;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/clamp.js\n// module id = 58\n// module chunks = 0","var fixedBase = function (v, base) {\n var str = base.toString();\n var index = str.indexOf('.');\n\n if (index === -1) {\n return Math.round(v);\n }\n\n var length = str.substr(index + 1).length;\n\n if (length > 20) {\n length = 20;\n }\n\n return parseFloat(v.toFixed(length));\n};\n\nexport default fixedBase;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/fixed-base.js\n// module id = 59\n// module chunks = 0","import isNumber from './is-number';\n\nvar isDecimal = function (num) {\n return isNumber(num) && num % 1 !== 0;\n};\n\nexport default isDecimal;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-decimal.js\n// module id = 60\n// module chunks = 0","import isNumber from './is-number';\n\nvar isEven = function (num) {\n return isNumber(num) && num % 2 === 0;\n};\n\nexport default isEven;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-even.js\n// module id = 61\n// module chunks = 0","import isNumber from './is-number';\nvar isInteger = Number.isInteger ? Number.isInteger : function (num) {\n return isNumber(num) && num % 1 === 0;\n};\nexport default isInteger;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-integer.js\n// module id = 62\n// module chunks = 0","import isNumber from './is-number';\n\nvar isNegative = function (num) {\n return isNumber(num) && num < 0;\n};\n\nexport default isNegative;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-negative.js\n// module id = 63\n// module chunks = 0","var PRECISION = 0.00001; // numbers less than this is considered as 0\n\nexport default function isNumberEqual(a, b, precision) {\n if (precision === void 0) {\n precision = PRECISION;\n }\n\n return Math.abs(a - b) < precision;\n}\n;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-number-equal.js\n// module id = 64\n// module chunks = 0","import isNumber from './is-number';\n\nvar isOdd = function (num) {\n return isNumber(num) && num % 2 !== 0;\n};\n\nexport default isOdd;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-odd.js\n// module id = 65\n// module chunks = 0","import isNumber from './is-number';\n\nvar isPositive = function (num) {\n return isNumber(num) && num > 0;\n};\n\nexport default isPositive;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-positive.js\n// module id = 66\n// module chunks = 0","import each from './each';\nimport isArray from './is-array';\nimport isFunction from './is-function';\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n\nexport default (function (arr, fn) {\n if (!isArray(arr)) {\n return undefined;\n }\n\n var max = arr[0];\n var maxData;\n\n if (isFunction(fn)) {\n maxData = fn(arr[0]);\n } else {\n maxData = arr[0][fn];\n }\n\n var data;\n each(arr, function (val) {\n if (isFunction(fn)) {\n data = fn(val);\n } else {\n data = val[fn];\n }\n\n if (data > maxData) {\n max = val;\n maxData = data;\n }\n });\n return max;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/max-by.js\n// module id = 67\n// module chunks = 0","import each from './each';\nimport isArray from './is-array';\nimport isFunction from './is-function';\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n\nexport default (function (arr, fn) {\n if (!isArray(arr)) {\n return undefined;\n }\n\n var min = arr[0];\n var minData;\n\n if (isFunction(fn)) {\n minData = fn(arr[0]);\n } else {\n minData = arr[0][fn];\n }\n\n var data;\n each(arr, function (val) {\n if (isFunction(fn)) {\n data = fn(val);\n } else {\n data = val[fn];\n }\n\n if (data < minData) {\n min = val;\n minData = data;\n }\n });\n return min;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/min-by.js\n// module id = 68\n// module chunks = 0","var mod = function (n, m) {\n return (n % m + m) % m;\n};\n\nexport default mod;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/mod.js\n// module id = 69\n// module chunks = 0","var DEGREE = 180 / Math.PI;\n\nvar toDegree = function (radian) {\n return DEGREE * radian;\n};\n\nexport default toDegree;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/to-degree.js\n// module id = 70\n// module chunks = 0","export default parseInt;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/to-integer.js\n// module id = 71\n// module chunks = 0","var RADIAN = Math.PI / 180;\n\nvar toRadian = function (degree) {\n return RADIAN * degree;\n};\n\nexport default toRadian;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/to-radian.js\n// module id = 72\n// module chunks = 0","import each from './each';\nexport default each;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/for-in.js\n// module id = 73\n// module chunks = 0","import has from './has';\nexport default has;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/has-key.js\n// module id = 74\n// module chunks = 0","import contains from './contains';\nimport values from './values';\nexport default (function (obj, value) {\n return contains(values(obj), value);\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/has-value.js\n// module id = 75\n// module chunks = 0","import toString from './to-string';\n\nvar lowerCase = function (str) {\n return toString(str).toLowerCase();\n};\n\nexport default lowerCase;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/lower-case.js\n// module id = 76\n// module chunks = 0","import toString from './to-string';\n\nvar lowerFirst = function (value) {\n var str = toString(value);\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\nexport default lowerFirst;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/lower-first.js\n// module id = 77\n// module chunks = 0","function substitute(str, o) {\n if (!str || !o) {\n return str;\n }\n\n return str.replace(/\\\\?\\{([^{}]+)\\}/g, function (match, name) {\n if (match.charAt(0) === '\\\\') {\n return match.slice(1);\n }\n\n return o[name] === undefined ? '' : o[name];\n });\n}\n\nexport default substitute;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/substitute.js\n// module id = 78\n// module chunks = 0","import toString from './to-string';\n\nvar upperCase = function (str) {\n return toString(str).toUpperCase();\n};\n\nexport default upperCase;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/upper-case.js\n// module id = 79\n// module chunks = 0","import toString from './to-string';\n\nvar upperFirst = function (value) {\n var str = toString(value);\n return str.charAt(0).toUpperCase() + str.substring(1);\n};\n\nexport default upperFirst;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/upper-first.js\n// module id = 80\n// module chunks = 0","/**\n * 是否是参数类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\nimport isType from './is-type';\n\nvar isArguments = function (value) {\n return isType(value, 'Arguments');\n};\n\nexport default isArguments;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-arguments.js\n// module id = 81\n// module chunks = 0","/**\n * 是否是布尔类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\nimport isType from './is-type';\n\nvar isBoolean = function (value) {\n return isType(value, 'Boolean');\n};\n\nexport default isBoolean;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-boolean.js\n// module id = 82\n// module chunks = 0","import isType from './is-type';\n\nvar isDate = function (value) {\n return isType(value, 'Date');\n};\n\nexport default isDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-date.js\n// module id = 83\n// module chunks = 0","/**\n * 是否是参数类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\nimport isType from './is-type';\n\nvar isError = function (value) {\n return isType(value, 'Error');\n};\n\nexport default isError;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-error.js\n// module id = 84\n// module chunks = 0","/**\n * 判断是否为有限数\n * @return {Boolean}\n */\nimport isNumber from './is-number';\nexport default function (value) {\n return isNumber(value) && isFinite(value);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-finite.js\n// module id = 85\n// module chunks = 0","var isNull = function (value) {\n return value === null;\n};\n\nexport default isNull;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-null.js\n// module id = 86\n// module chunks = 0","import isType from './is-type';\n\nvar isRegExp = function (str) {\n return isType(str, 'RegExp');\n};\n\nexport default isRegExp;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-reg-exp.js\n// module id = 87\n// module chunks = 0","var isUndefined = function (value) {\n return value === undefined;\n};\n\nexport default isUndefined;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-undefined.js\n// module id = 88\n// module chunks = 0","/**\n * 判断是否HTML元素\n * @return {Boolean} 是否HTML元素\n */\nvar isElement = function (o) {\n return o instanceof Element || o instanceof HTMLDocument;\n};\n\nexport default isElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-element.js\n// module id = 89\n// module chunks = 0","export default function requestAnimationFrame(fn) {\n var method = window.requestAnimationFrame || window.webkitRequestAnimationFrame || // @ts-ignore\n window.mozRequestAnimationFrame || // @ts-ignore\n window.msRequestAnimationFrame || function (f) {\n return setTimeout(f, 16);\n };\n\n return method(fn);\n}\n;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/request-animation-frame.js\n// module id = 90\n// module chunks = 0","export default function cancelAnimationFrame(handler) {\n var method = window.cancelAnimationFrame || window.webkitCancelAnimationFrame || // @ts-ignore\n window.mozCancelAnimationFrame || // @ts-ignore\n window.msCancelAnimationFrame || clearTimeout;\n method(handler);\n}\n;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/clear-animation-frame.js\n// module id = 91\n// module chunks = 0","import mix from './mix';\nimport isFunction from './is-function';\n\nvar augment = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var c = args[0];\n\n for (var i = 1; i < args.length; i++) {\n var obj = args[i];\n\n if (isFunction(obj)) {\n obj = obj.prototype;\n }\n\n mix(c.prototype, obj);\n }\n};\n\nexport default augment;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/augment.js\n// module id = 92\n// module chunks = 0","import isArray from './is-array';\n\nvar clone = function (obj) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n\n var rst;\n\n if (isArray(obj)) {\n rst = [];\n\n for (var i = 0, l = obj.length; i < l; i++) {\n if (typeof obj[i] === 'object' && obj[i] != null) {\n rst[i] = clone(obj[i]);\n } else {\n rst[i] = obj[i];\n }\n }\n } else {\n rst = {};\n\n for (var k in obj) {\n if (typeof obj[k] === 'object' && obj[k] != null) {\n rst[k] = clone(obj[k]);\n } else {\n rst[k] = obj[k];\n }\n }\n }\n\n return rst;\n};\n\nexport default clone;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/clone.js\n// module id = 93\n// module chunks = 0","function debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this,\n args = arguments;\n\n var later = function () {\n timeout = null;\n\n if (!immediate) {\n func.apply(context, args);\n }\n };\n\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n\nexport default debounce;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/debounce.js\n// module id = 94\n// module chunks = 0","import isFunction from './is-function';\n/**\n * _.memoize(calColor);\n * _.memoize(calColor, (...args) => args[0]);\n * @param f\n * @param resolver\n */\n\nexport default (function (f, resolver) {\n if (!isFunction(f)) {\n throw new TypeError('Expected a function');\n }\n\n var memoized = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n } // 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key\n\n\n var key = resolver ? resolver.apply(this, args) : args[0];\n var cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n\n var result = f.apply(this, args); // 缓存起来\n\n cache.set(key, result);\n return result;\n };\n\n memoized.cache = new Map();\n return memoized;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/memoize.js\n// module id = 95\n// module chunks = 0","import isArray from './is-array';\nimport isPlainObject from './is-plain-object';\nvar MAX_MIX_LEVEL = 5;\n\nfunction _deepMix(dist, src, level, maxLevel) {\n level = level || 0;\n maxLevel = maxLevel || MAX_MIX_LEVEL;\n\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n var value = src[key];\n\n if (value !== null && isPlainObject(value)) {\n if (!isPlainObject(dist[key])) {\n dist[key] = {};\n }\n\n if (level < maxLevel) {\n _deepMix(dist[key], value, level + 1, maxLevel);\n } else {\n dist[key] = src[key];\n }\n } else if (isArray(value)) {\n dist[key] = [];\n dist[key] = dist[key].concat(value);\n } else if (value !== undefined) {\n dist[key] = value;\n }\n }\n }\n} // todo 重写\n\n\nvar deepMix = function (rst) {\n var args = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n\n for (var i = 0; i < args.length; i += 1) {\n _deepMix(rst, args[i]);\n }\n\n return rst;\n};\n\nexport default deepMix;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/deep-mix.js\n// module id = 96\n// module chunks = 0","import mix from './mix';\nimport isFunction from './is-function';\n\nvar extend = function (subclass, superclass, overrides, staticOverrides) {\n // 如果只提供父类构造函数,则自动生成子类构造函数\n if (!isFunction(superclass)) {\n overrides = superclass;\n superclass = subclass;\n\n subclass = function () {};\n }\n\n var create = Object.create ? function (proto, c) {\n return Object.create(proto, {\n constructor: {\n value: c\n }\n });\n } : function (proto, c) {\n function Tmp() {}\n\n Tmp.prototype = proto;\n var o = new Tmp();\n o.constructor = c;\n return o;\n };\n var superObj = create(superclass.prototype, subclass); // new superclass(),//实例化父类作为子类的prototype\n\n subclass.prototype = mix(superObj, subclass.prototype); // 指定子类的prototype\n\n subclass.superclass = create(superclass.prototype, superclass);\n mix(superObj, overrides);\n mix(subclass, staticOverrides);\n return subclass;\n};\n\nexport default extend;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/extend.js\n// module id = 97\n// module chunks = 0","import isArrayLike from './is-array-like';\n\nvar indexOf = function (arr, obj) {\n if (!isArrayLike(arr)) {\n return -1;\n }\n\n var m = Array.prototype.indexOf;\n\n if (m) {\n return m.call(arr, obj);\n }\n\n var index = -1;\n\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === obj) {\n index = i;\n break;\n }\n }\n\n return index;\n};\n\nexport default indexOf;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/index-of.js\n// module id = 98\n// module chunks = 0","import isNil from './is-nil';\nimport isArrayLike from './is-array-like';\nimport getType from './get-type';\nimport isPrototype from './is-prototype';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isEmpty(value) {\n /**\n * isEmpty(null) => true\n * isEmpty() => true\n * isEmpty(true) => true\n * isEmpty(1) => true\n * isEmpty([1, 2, 3]) => false\n * isEmpty('abc') => false\n * isEmpty({ a: 1 }) => false\n */\n if (isNil(value)) {\n return true;\n }\n\n if (isArrayLike(value)) {\n return !value.length;\n }\n\n var type = getType(value);\n\n if (type === 'Map' || type === 'Set') {\n return !value.size;\n }\n\n if (isPrototype(value)) {\n return !Object.keys(value).length;\n }\n\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n\n return true;\n}\n\nexport default isEmpty;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-empty.js\n// module id = 99\n// module chunks = 0","import isFunction from './is-function';\nimport isEqual from './is-equal';\n/**\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [fn] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * isEqualWith(array, other, customizer); // => true\n */\n\nexport default (function (value, other, fn) {\n if (!isFunction(fn)) {\n return isEqual(value, other);\n }\n\n return !!fn(value, other);\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/is-equal-with.js\n// module id = 100\n// module chunks = 0","import each from './each';\nimport isArrayLike from './is-array-like';\n\nvar map = function (arr, func) {\n if (!isArrayLike(arr)) {\n // @ts-ignore\n return arr;\n }\n\n var result = [];\n each(arr, function (value, index) {\n result.push(func(value, index));\n });\n return result;\n};\n\nexport default map;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/map.js\n// module id = 101\n// module chunks = 0","import isNil from './is-nil';\nimport isObject from './is-object';\n\nvar identity = function (v) {\n return v;\n};\n\nexport default (function (object, func) {\n if (func === void 0) {\n func = identity;\n }\n\n var r = {};\n\n if (isObject(object) && !isNil(object)) {\n Object.keys(object).forEach(function (key) {\n // @ts-ignore\n r[key] = func(object[key], key);\n });\n }\n\n return r;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/map-values.js\n// module id = 102\n// module chunks = 0","import isString from './is-string';\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param key\n * @param defaultValue\n */\n\nexport default (function (obj, key, defaultValue) {\n var p = 0;\n var keyArr = isString(key) ? key.split('.') : key;\n\n while (obj && p < keyArr.length) {\n obj = obj[keyArr[p++]];\n }\n\n return obj === undefined || p < keyArr.length ? defaultValue : obj;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/get.js\n// module id = 103\n// module chunks = 0","import isObject from './is-object';\nimport isString from './is-string';\nimport isNumber from './is-number';\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param path\n * @param value\n */\n\nexport default (function (obj, path, value) {\n var o = obj;\n var keyArr = isString(path) ? path.split('.') : path;\n keyArr.forEach(function (key, idx) {\n // 不是最后一个\n if (idx < keyArr.length - 1) {\n if (!isObject(o[key])) {\n o[key] = isNumber(keyArr[idx + 1]) ? [] : {};\n }\n\n o = o[key];\n } else {\n o[key] = value;\n }\n });\n return obj;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/set.js\n// module id = 104\n// module chunks = 0","import each from './each';\nimport isPlainObject from './is-plain-object';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport default (function (object, keys) {\n if (object === null || !isPlainObject(object)) {\n return {};\n }\n\n var result = {};\n each(keys, function (key) {\n if (hasOwnProperty.call(object, key)) {\n result[key] = object[key];\n }\n });\n return result;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/pick.js\n// module id = 105\n// module chunks = 0","export default (function (func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function () {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function () {\n var now = Date.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/throttle.js\n// module id = 106\n// module chunks = 0","import isArrayLike from './is-array-like';\nexport default (function (value) {\n return isArrayLike(value) ? Array.prototype.slice.call(value) : [];\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/to-array.js\n// module id = 107\n// module chunks = 0","var map = {};\nexport default (function (prefix) {\n prefix = prefix || 'g';\n\n if (!map[prefix]) {\n map[prefix] = 1;\n } else {\n map[prefix] += 1;\n }\n\n return prefix + map[prefix];\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/unique-id.js\n// module id = 108\n// module chunks = 0","export default (function () {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/noop.js\n// module id = 109\n// module chunks = 0","export default (function (v) {\n return v;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/identity.js\n// module id = 110\n// module chunks = 0","import isNil from './is-nil';\nimport isArraylike from './is-array-like';\nexport default function size(o) {\n if (isNil(o)) {\n return 0;\n }\n\n if (isArraylike(o)) {\n return o.length;\n }\n\n return Object.keys(o).length;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/size.js\n// module id = 111\n// module chunks = 0","/**\n * k-v 存储\n */\nvar default_1 =\n/** @class */\nfunction () {\n function default_1() {\n this.map = {};\n }\n\n default_1.prototype.has = function (key) {\n return this.map[key] !== undefined;\n };\n\n default_1.prototype.get = function (key, def) {\n var v = this.map[key];\n return v === undefined ? def : v;\n };\n\n default_1.prototype.set = function (key, value) {\n this.map[key] = value;\n };\n\n default_1.prototype.clear = function () {\n this.map = {};\n };\n\n default_1.prototype.delete = function (key) {\n delete this.map[key];\n };\n\n default_1.prototype.size = function () {\n return Object.keys(this.map).length;\n };\n\n return default_1;\n}();\n\nexport default default_1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_@antv_util@2.0.7@@antv/util/esm/cache.js\n// module id = 112\n// module chunks = 0","// wrap tree node\nfunction WrappedTree(w, h, y, c) {\n if (c === void 0) {\n c = [];\n }\n\n var me = this; // size\n\n me.w = w || 0;\n me.h = h || 0; // position\n\n me.y = y || 0;\n me.x = 0; // children\n\n me.c = c || [];\n me.cs = c.length; // modified\n\n me.prelim = 0;\n me.mod = 0;\n me.shift = 0;\n me.change = 0; // left/right tree\n\n me.tl = null;\n me.tr = null; // extreme left/right tree\n\n me.el = null;\n me.er = null; // modified left/right tree\n\n me.msel = 0;\n me.mser = 0;\n}\n\nWrappedTree.fromNode = function (root, isHorizontal) {\n if (!root) return null;\n var children = [];\n root.children.forEach(function (child) {\n children.push(WrappedTree.fromNode(child, isHorizontal));\n });\n if (isHorizontal) return new WrappedTree(root.height, root.width, root.x, children);\n return new WrappedTree(root.width, root.height, root.y, children);\n}; // node utils\n\n\nfunction moveRight(node, move, isHorizontal) {\n if (isHorizontal) {\n node.y += move;\n } else {\n node.x += move;\n }\n\n node.children.forEach(function (child) {\n moveRight(child, move, isHorizontal);\n });\n}\n\nfunction getMin(node, isHorizontal) {\n var res = isHorizontal ? node.y : node.x;\n node.children.forEach(function (child) {\n res = Math.min(getMin(child, isHorizontal), res);\n });\n return res;\n}\n\nfunction normalize(node, isHorizontal) {\n var min = getMin(node, isHorizontal);\n moveRight(node, -min, isHorizontal);\n}\n\nfunction convertBack(converted\n/* WrappedTree */\n, root\n/* TreeNode */\n, isHorizontal) {\n if (isHorizontal) {\n root.y = converted.x;\n } else {\n root.x = converted.x;\n }\n\n converted.c.forEach(function (child, i) {\n convertBack(child, root.children[i], isHorizontal);\n });\n}\n\nfunction layer(node, isHorizontal, d) {\n if (d === void 0) {\n d = 0;\n }\n\n if (isHorizontal) {\n node.x = d;\n d += node.width;\n } else {\n node.y = d;\n d += node.height;\n }\n\n node.children.forEach(function (child) {\n layer(child, isHorizontal, d);\n });\n}\n\nmodule.exports = function (root, options) {\n if (options === void 0) {\n options = {};\n }\n\n var isHorizontal = options.isHorizontal;\n\n function firstWalk(t) {\n if (t.cs === 0) {\n setExtremes(t);\n return;\n }\n\n firstWalk(t.c[0]);\n var ih = updateIYL(bottom(t.c[0].el), 0, null);\n\n for (var i = 1; i < t.cs; ++i) {\n firstWalk(t.c[i]);\n var min = bottom(t.c[i].er);\n separate(t, i, ih);\n ih = updateIYL(min, i, ih);\n }\n\n positionRoot(t);\n setExtremes(t);\n }\n\n function setExtremes(t) {\n if (t.cs === 0) {\n t.el = t;\n t.er = t;\n t.msel = t.mser = 0;\n } else {\n t.el = t.c[0].el;\n t.msel = t.c[0].msel;\n t.er = t.c[t.cs - 1].er;\n t.mser = t.c[t.cs - 1].mser;\n }\n }\n\n function separate(t, i, ih) {\n var sr = t.c[i - 1];\n var mssr = sr.mod;\n var cl = t.c[i];\n var mscl = cl.mod;\n\n while (sr !== null && cl !== null) {\n if (bottom(sr) > ih.low) ih = ih.nxt;\n var dist = mssr + sr.prelim + sr.w - (mscl + cl.prelim);\n\n if (dist > 0) {\n mscl += dist;\n moveSubtree(t, i, ih.index, dist);\n }\n\n var sy = bottom(sr);\n var cy = bottom(cl);\n\n if (sy <= cy) {\n sr = nextRightContour(sr);\n if (sr !== null) mssr += sr.mod;\n }\n\n if (sy >= cy) {\n cl = nextLeftContour(cl);\n if (cl !== null) mscl += cl.mod;\n }\n }\n\n if (!sr && !!cl) {\n setLeftThread(t, i, cl, mscl);\n } else if (!!sr && !cl) {\n setRightThread(t, i, sr, mssr);\n }\n }\n\n function moveSubtree(t, i, si, dist) {\n t.c[i].mod += dist;\n t.c[i].msel += dist;\n t.c[i].mser += dist;\n distributeExtra(t, i, si, dist);\n }\n\n function nextLeftContour(t) {\n return t.cs === 0 ? t.tl : t.c[0];\n }\n\n function nextRightContour(t) {\n return t.cs === 0 ? t.tr : t.c[t.cs - 1];\n }\n\n function bottom(t) {\n return t.y + t.h;\n }\n\n function setLeftThread(t, i, cl, modsumcl) {\n var li = t.c[0].el;\n li.tl = cl;\n var diff = modsumcl - cl.mod - t.c[0].msel;\n li.mod += diff;\n li.prelim -= diff;\n t.c[0].el = t.c[i].el;\n t.c[0].msel = t.c[i].msel;\n }\n\n function setRightThread(t, i, sr, modsumsr) {\n var ri = t.c[i].er;\n ri.tr = sr;\n var diff = modsumsr - sr.mod - t.c[i].mser;\n ri.mod += diff;\n ri.prelim -= diff;\n t.c[i].er = t.c[i - 1].er;\n t.c[i].mser = t.c[i - 1].mser;\n }\n\n function positionRoot(t) {\n t.prelim = (t.c[0].prelim + t.c[0].mod + t.c[t.cs - 1].mod + t.c[t.cs - 1].prelim + t.c[t.cs - 1].w) / 2 - t.w / 2;\n }\n\n function secondWalk(t, modsum) {\n modsum += t.mod;\n t.x = t.prelim + modsum;\n addChildSpacing(t);\n\n for (var i = 0; i < t.cs; i++) {\n secondWalk(t.c[i], modsum);\n }\n }\n\n function distributeExtra(t, i, si, dist) {\n if (si !== i - 1) {\n var nr = i - si;\n t.c[si + 1].shift += dist / nr;\n t.c[i].shift -= dist / nr;\n t.c[i].change -= dist - dist / nr;\n }\n }\n\n function addChildSpacing(t) {\n var d = 0;\n var modsumdelta = 0;\n\n for (var i = 0; i < t.cs; i++) {\n d += t.c[i].shift;\n modsumdelta += d + t.c[i].change;\n t.c[i].mod += modsumdelta;\n }\n }\n\n function updateIYL(low, index, ih) {\n while (ih !== null && low >= ih.low) {\n ih = ih.nxt;\n }\n\n return {\n low: low,\n index: index,\n nxt: ih\n };\n } // do layout\n\n\n layer(root, isHorizontal);\n var wt = WrappedTree.fromNode(root, isHorizontal);\n firstWalk(wt);\n secondWalk(wt, 0);\n convertBack(wt, root, isHorizontal);\n normalize(root, isHorizontal);\n return root;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/layout/non-layered-tidy.js\n// module id = 113\n// module chunks = 0","function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar TreeLayout = require('./layout/base');\n\nvar dendrogram = require('./layout/dendrogram');\n\nvar doTreeLayout = require('./layout/do-layout');\n\nvar util = require('./util');\n\nvar DendrogramLayout = /*#__PURE__*/function (_TreeLayout) {\n _inheritsLoose(DendrogramLayout, _TreeLayout);\n\n function DendrogramLayout() {\n return _TreeLayout.apply(this, arguments) || this;\n }\n\n var _proto = DendrogramLayout.prototype;\n\n _proto.execute = function execute() {\n var me = this;\n me.rootNode.width = 0;\n return doTreeLayout(me.rootNode, me.options, dendrogram);\n };\n\n return DendrogramLayout;\n}(TreeLayout);\n\nvar DEFAULT_OPTIONS = {};\n\nfunction dendrogramLayout(root, options) {\n options = util.assign({}, DEFAULT_OPTIONS, options);\n return new DendrogramLayout(root, options).execute();\n}\n\nmodule.exports = dendrogramLayout;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/dendrogram.js\n// module id = 114\n// module chunks = 0","// wrap tree node\n// TODO considering size\nvar util = require('../util');\n\nfunction WrappedTree(height, children) {\n if (height === void 0) {\n height = 0;\n }\n\n if (children === void 0) {\n children = [];\n }\n\n var me = this;\n me.x = me.y = 0;\n me.leftChild = me.rightChild = null;\n me.height = 0;\n me.children = children;\n}\n\nvar DEFAULT_OPTIONS = {\n isHorizontal: true,\n nodeSep: 20,\n nodeSize: 20,\n rankSep: 200,\n subTreeSep: 10\n};\n\nfunction convertBack(converted\n/* WrappedTree */\n, root\n/* TreeNode */\n, isHorizontal) {\n if (isHorizontal) {\n root.x = converted.x;\n root.y = converted.y;\n } else {\n root.x = converted.y;\n root.y = converted.x;\n }\n\n converted.children.forEach(function (child, i) {\n convertBack(child, root.children[i], isHorizontal);\n });\n}\n\nmodule.exports = function (root, options) {\n if (options === void 0) {\n options = {};\n }\n\n options = util.assign({}, DEFAULT_OPTIONS, options);\n var maxDepth = 0;\n\n function wrappedTreeFromNode(n) {\n if (!n) return null;\n n.width = 0;\n\n if (n.depth && n.depth > maxDepth) {\n maxDepth = n.depth; // get the max depth\n }\n\n var children = n.children;\n var childrenCount = children.length;\n var t = new WrappedTree(n.height, []);\n children.forEach(function (child, i) {\n var childWT = wrappedTreeFromNode(child);\n t.children.push(childWT);\n\n if (i === 0) {\n // t.leftChild = childWT.leftChild ? childWT.leftChild : childWT\n t.leftChild = childWT;\n }\n\n if (i === childrenCount - 1) {\n // t.rightChild = childWT.rightChild ? childWT.rightChild : childWT\n t.rightChild = childWT;\n }\n });\n t.originNode = n;\n t.isLeaf = n.isLeaf();\n return t;\n }\n\n function getDrawingDepth(t) {\n if (t.isLeaf || t.children.length === 0) {\n t.drawingDepth = maxDepth;\n } else {\n var depths = t.children.map(function (child) {\n return getDrawingDepth(child);\n });\n var minChildDepth = Math.min.apply(null, depths);\n t.drawingDepth = minChildDepth - 1;\n }\n\n return t.drawingDepth;\n }\n\n var prevLeaf;\n\n function position(t) {\n t.x = t.drawingDepth * options.rankSep;\n\n if (t.isLeaf) {\n t.y = 0;\n\n if (prevLeaf) {\n t.y = prevLeaf.y + prevLeaf.height + options.nodeSep;\n\n if (t.originNode.parent !== prevLeaf.originNode.parent) {\n t.y += options.subTreeSep;\n }\n }\n\n prevLeaf = t;\n } else {\n t.children.forEach(function (child) {\n position(child);\n });\n t.y = (t.leftChild.y + t.rightChild.y) / 2;\n }\n } // wrap node\n\n\n var wt = wrappedTreeFromNode(root); // get depth for drawing\n\n getDrawingDepth(wt); // get position\n\n position(wt); // get x, y\n\n convertBack(wt, root, options.isHorizontal);\n return root;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/layout/dendrogram.js\n// module id = 115\n// module chunks = 0","function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar TreeLayout = require('./layout/base');\n\nvar indentedTree = require('./layout/indented');\n\nvar separateTree = require('./layout/separate-root');\n\nvar util = require('./util');\n\nvar VALID_DIRECTIONS = ['LR', // left to right\n'RL', // right to left\n'H' // horizontal\n];\nvar DEFAULT_DIRECTION = VALID_DIRECTIONS[0];\n\nvar IndentedLayout = /*#__PURE__*/function (_TreeLayout) {\n _inheritsLoose(IndentedLayout, _TreeLayout);\n\n function IndentedLayout() {\n return _TreeLayout.apply(this, arguments) || this;\n }\n\n var _proto = IndentedLayout.prototype;\n\n _proto.execute = function execute() {\n var me = this;\n var options = me.options;\n var root = me.rootNode;\n options.isHorizontal = true; // default indent 20 and sink first children;\n\n var _options$indent = options.indent,\n indent = _options$indent === void 0 ? 20 : _options$indent,\n _options$dropCap = options.dropCap,\n dropCap = _options$dropCap === void 0 ? true : _options$dropCap;\n var direction = options.direction || DEFAULT_DIRECTION;\n\n if (direction && VALID_DIRECTIONS.indexOf(direction) === -1) {\n throw new TypeError(\"Invalid direction: \" + direction);\n }\n\n if (direction === VALID_DIRECTIONS[0]) {\n // LR\n indentedTree(root, indent, dropCap);\n } else if (direction === VALID_DIRECTIONS[1]) {\n // RL\n indentedTree(root, indent, dropCap);\n root.right2left();\n } else if (direction === VALID_DIRECTIONS[2]) {\n // H\n // separate into left and right trees\n var _separateTree = separateTree(root, options),\n left = _separateTree.left,\n right = _separateTree.right;\n\n indentedTree(left, indent, dropCap);\n left.right2left();\n indentedTree(right, indent, dropCap);\n var bbox = left.getBoundingBox();\n right.translate(bbox.width, 0);\n root.x = right.x - root.width / 2;\n }\n\n return root;\n };\n\n return IndentedLayout;\n}(TreeLayout);\n\nvar DEFAULT_OPTIONS = {};\n\nfunction indentedLayout(root, options) {\n options = util.assign({}, DEFAULT_OPTIONS, options);\n return new IndentedLayout(root, options).execute();\n}\n\nmodule.exports = indentedLayout;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/indented.js\n// module id = 116\n// module chunks = 0","function positionNode(node, previousNode, indent, dropCap) {\n // caculate the node's horizontal offset DX, dx's type might be number or function\n var displacementX = typeof indent === 'function' ? indent(node) : indent * node.depth;\n\n if (!dropCap) {\n try {\n if (node.id === node.parent.children[0].id) {\n node.x += displacementX;\n node.y = previousNode ? previousNode.y : 0;\n return;\n }\n } catch (e) {// skip to normal when a node has no parent\n }\n }\n\n node.x += displacementX;\n node.y = previousNode ? previousNode.y + previousNode.height : 0;\n return;\n}\n\nmodule.exports = function (root, indent, dropCap) {\n var previousNode = null;\n root.eachNode(function (node) {\n positionNode(node, previousNode, indent, dropCap);\n previousNode = node;\n });\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/layout/indented.js\n// module id = 117\n// module chunks = 0","function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar TreeLayout = require('./layout/base');\n\nvar mindmap = require('./layout/mindmap');\n\nvar doTreeLayout = require('./layout/do-layout');\n\nvar util = require('./util');\n\nvar MindmapLayout = /*#__PURE__*/function (_TreeLayout) {\n _inheritsLoose(MindmapLayout, _TreeLayout);\n\n function MindmapLayout() {\n return _TreeLayout.apply(this, arguments) || this;\n }\n\n var _proto = MindmapLayout.prototype;\n\n _proto.execute = function execute() {\n var me = this;\n return doTreeLayout(me.rootNode, me.options, mindmap);\n };\n\n return MindmapLayout;\n}(TreeLayout);\n\nvar DEFAULT_OPTIONS = {};\n\nfunction mindmapLayout(root, options) {\n options = util.assign({}, DEFAULT_OPTIONS, options);\n return new MindmapLayout(root, options).execute();\n}\n\nmodule.exports = mindmapLayout;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/mindmap.js\n// module id = 118\n// module chunks = 0","var util = require('../util');\n\nfunction secondWalk(node, options) {\n var totalHeight = 0;\n\n if (!node.children.length) {\n totalHeight = node.height;\n } else {\n node.children.forEach(function (c) {\n totalHeight += secondWalk(c, options);\n });\n }\n\n node._subTreeSep = options.getSubTreeSep(node.data);\n node.totalHeight = Math.max(node.height, totalHeight) + 2 * node._subTreeSep;\n return node.totalHeight;\n}\n\nfunction thirdWalk(node) {\n var children = node.children;\n var len = children.length;\n\n if (len) {\n children.forEach(function (c) {\n thirdWalk(c);\n });\n var first = children[0];\n var last = children[len - 1];\n var childrenHeight = last.y - first.y + last.height;\n var childrenTotalHeight = 0;\n children.forEach(function (child) {\n childrenTotalHeight += child.totalHeight;\n });\n\n if (childrenHeight > node.height) {\n // 当子节点总高度大于父节点高度\n node.y = first.y + childrenHeight / 2 - node.height / 2;\n } else if (children.length !== 1 || node.height > childrenTotalHeight) {\n // 多于一个子节点或者父节点大于所有子节点的总高度\n var offset = node.y + (node.height - childrenHeight) / 2 - first.y;\n children.forEach(function (c) {\n c.translate(0, offset);\n });\n } else {\n // 只有一个子节点\n node.y = (first.y + first.height / 2 + last.y + last.height / 2) / 2 - node.height / 2;\n }\n }\n}\n\nvar DEFAULT_OPTIONS = {\n getSubTreeSep: function getSubTreeSep() {\n return 0;\n }\n};\n\nmodule.exports = function (root, options) {\n if (options === void 0) {\n options = {};\n }\n\n options = util.assign({}, DEFAULT_OPTIONS, options);\n root.parent = {\n x: 0,\n width: 0,\n height: 0,\n y: 0\n }; // first walk\n\n root.BFTraverse(function (node) {\n node.x = node.parent.x + node.parent.width; // simply get x\n });\n root.parent = null; // second walk\n\n secondWalk(root, options); // assign sub tree totalHeight\n // adjusting\n // separating nodes\n\n root.startY = 0;\n root.y = root.totalHeight / 2 - root.height / 2;\n root.eachNode(function (node) {\n var children = node.children;\n var len = children.length;\n\n if (len) {\n var first = children[0];\n first.startY = node.startY + node._subTreeSep;\n\n if (len === 1) {\n first.y = node.y + node.height / 2 - first.height / 2;\n } else {\n first.y = first.startY + first.totalHeight / 2 - first.height / 2;\n\n for (var i = 1; i < len; i++) {\n var c = children[i];\n c.startY = children[i - 1].startY + children[i - 1].totalHeight;\n c.y = c.startY + c.totalHeight / 2 - c.height / 2;\n }\n }\n }\n }); // third walk\n\n thirdWalk(root);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/layout/mindmap.js\n// module id = 119\n// module chunks = 0","import { registerLayout, unRegisterLayout, getLayoutByName } from \"./registy\";\n\n// register layout\nexport { registerLayout, unRegisterLayout, getLayoutByName };\n\n// layout, layout types file, worker\nexport * from \"./layout\";\n","import { Node, Edge, Combo, Model, PointTuple } from './types';\n\nexport class Base {\n public nodes: Node[] | null = [];\n public edges: Edge[] | null = [];\n public combos: Combo[] | null = [];\n public comboEdges: Edge[] | null = [];\n public hiddenNodes: Node[] | null = [];\n public hiddenEdges: Edge[] | null = [];\n public hiddenCombos: Combo[] | null = [];\n // temp edges e.g. the edge generated for releated collapsed combo\n public vedges: Edge[] | null = [];\n public positions: PointTuple[] | null = [];\n public destroyed: boolean = false;\n public onLayoutEnd: () => void = () => { }; \n\n public layout(data: Model): Model {\n this.init(data);\n return this.execute(true);\n }\n\n public init(data: Model) {\n this.nodes = data.nodes || [];\n this.edges = data.edges || [];\n this.combos = data.combos || [];\n this.comboEdges = data.comboEdges || [];\n this.hiddenNodes = data.hiddenNodes || [];\n this.hiddenEdges = data.hiddenEdges || [];\n this.hiddenCombos = data.hiddenCombos || [];\n this.vedges = data.vedges || [];\n }\n\n public execute(reloadData?: boolean): any {}\n public executeWithWorker() {}\n\n public getDefaultCfg() {\n return {};\n }\n\n public updateCfg(cfg: any) {\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n public getType() {\n return 'base';\n }\n\n public destroy() {\n this.nodes = null;\n this.edges = null;\n this.combos = null;\n this.positions = null;\n this.destroyed = true;\n }\n}\n","/**\n * @fileOverview random layout\n * @author shiwu.wyy@antfin.com\n */\n\nimport {\n OutNode,\n Edge,\n PointTuple,\n IndexMap,\n CircularLayoutOptions,\n Degree\n} from \"./types\";\nimport { Base } from \"./base\";\nimport { getDegree, clone, getEdgeTerminal, getFuncByUnknownType } from \"../util\";\n\ntype INode = OutNode & {\n degree: number;\n size: number | PointTuple;\n weight: number;\n children: string[];\n parent: string[];\n};\n\nfunction initHierarchy(\n nodes: INode[],\n edges: Edge[],\n nodeMap: IndexMap,\n directed: boolean\n) {\n nodes.forEach((_, i: number) => {\n nodes[i].children = [];\n nodes[i].parent = [];\n });\n if (directed) {\n edges.forEach((e) => {\n const source = getEdgeTerminal(e, 'source');\n const target = getEdgeTerminal(e, 'target');\n let sourceIdx = 0;\n if (source) {\n sourceIdx = nodeMap[source];\n }\n let targetIdx = 0;\n if (target) {\n targetIdx = nodeMap[target];\n }\n const child = nodes[sourceIdx].children!;\n const parent = nodes[targetIdx].parent!;\n child.push(nodes[targetIdx].id);\n parent.push(nodes[sourceIdx].id);\n });\n } else {\n edges.forEach((e) => {\n const source = getEdgeTerminal(e, 'source');\n const target = getEdgeTerminal(e, 'target');\n let sourceIdx = 0;\n if (source) {\n sourceIdx = nodeMap[source];\n }\n let targetIdx = 0;\n if (target) {\n targetIdx = nodeMap[target];\n }\n const sourceChildren = nodes[sourceIdx].children!;\n const targetChildren = nodes[targetIdx].children!;\n sourceChildren.push(nodes[targetIdx].id);\n targetChildren.push(nodes[sourceIdx].id);\n });\n }\n}\n\nfunction connect(a: INode, b: INode, edges: Edge[]) {\n const m = edges.length;\n for (let i = 0; i < m; i++) {\n const source = getEdgeTerminal(edges[i], 'source');\n const target = getEdgeTerminal(edges[i], 'target');\n if (\n (a.id === source && b.id === target) ||\n (b.id === source && a.id === target)\n ) {\n return true;\n }\n }\n return false;\n}\n\nfunction compareDegree(a: INode, b: INode) {\n const aDegree = a.degree!;\n const bDegree = b.degree!;\n if (aDegree < bDegree) {\n return -1;\n }\n if (aDegree > bDegree) {\n return 1;\n }\n return 0;\n}\n\n/**\n * 圆形布局\n */\nexport class CircularLayout extends Base {\n /** 布局中心 */\n public center: PointTuple;\n\n /** 固定半径,若设置了 radius,则 startRadius 与 endRadius 不起效 */\n public radius: number | null = null;\n\n /** 节点间距,若设置 nodeSpacing,则 radius 将被自动计算,即设置 radius 不生效 */\n public nodeSpacing: ((d?: unknown) => number) | number | undefined;\n\n /** 节点大小,配合 nodeSpacing,一起用于计算 radius。若不配置,节点大小默认为 30 */\n public nodeSize: number | undefined = undefined;\n\n /** 起始半径 */\n public startRadius: number | null = null;\n\n /** 终止半径 */\n public endRadius: number | null = null;\n\n /** 起始角度 */\n public startAngle: number = 0;\n\n /** 终止角度 */\n public endAngle: number = 2 * Math.PI;\n\n /** 是否顺时针 */\n public clockwise: boolean = true;\n\n /** 节点在环上分成段数(几个段将均匀分布),在 endRadius - startRadius != 0 时生效 */\n public divisions: number = 1;\n\n /** 节点在环上排序的依据,可选: 'topology', 'degree', 'null' */\n public ordering: \"topology\" | \"topology-directed\" | \"degree\" | null = null;\n\n /** how many 2*pi from first to last nodes */\n public angleRatio = 1;\n\n public nodes: INode[] = [];\n\n public edges: Edge[] = [];\n\n private nodeMap: IndexMap = {};\n\n private degrees: Degree[] = [];\n\n public width: number = 300;\n\n public height: number = 300;\n\n public onLayoutEnd: () => void;\n\n constructor(options?: CircularLayoutOptions) {\n super();\n this.updateCfg(options);\n }\n\n public getDefaultCfg() {\n return {\n radius: null,\n startRadius: null,\n endRadius: null,\n startAngle: 0,\n endAngle: 2 * Math.PI,\n clockwise: true,\n divisions: 1,\n ordering: null,\n angleRatio: 1\n };\n }\n\n /**\n * 执行布局\n */\n public execute() {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges;\n const n = nodes.length;\n if (n === 0) {\n if (self.onLayoutEnd) self.onLayoutEnd();\n return;\n }\n\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n\n if (n === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd) self.onLayoutEnd();\n return;\n }\n\n let { radius, startRadius, endRadius } = self;\n const { divisions, startAngle, endAngle, angleRatio, ordering, clockwise, nodeSpacing: paramNodeSpacing, nodeSize: paramNodeSize } = self;\n const angleStep = (endAngle - startAngle) / n;\n // layout\n const nodeMap: IndexMap = {};\n nodes.forEach((node, i) => {\n nodeMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n const degrees = getDegree(nodes.length, nodeMap, edges);\n self.degrees = degrees;\n if (paramNodeSpacing) {\n const nodeSpacing: Function = getFuncByUnknownType(10, paramNodeSpacing);\n const nodeSize: Function = getFuncByUnknownType(10, paramNodeSize);\n let maxNodeSize = -Infinity;\n nodes.forEach((node) => {\n const nSize = nodeSize(node);\n if (maxNodeSize < nSize) maxNodeSize = nSize;\n });\n let length = 0;\n nodes.forEach((node, i) => {\n if (i === 0) length += (maxNodeSize || 10);\n else length += (nodeSpacing(node) || 0) + (maxNodeSize || 10);\n });\n radius = length / (2 * Math.PI);\n } else if (!radius && !startRadius && !endRadius) {\n radius = self.height > self.width ? self.width / 2 : self.height / 2;\n } else if (!startRadius && endRadius) {\n startRadius = endRadius;\n } else if (startRadius && !endRadius) {\n endRadius = startRadius;\n }\n const astep = angleStep * angleRatio;\n\n let layoutNodes = [];\n if (ordering === \"topology\") {\n // layout according to the topology\n layoutNodes = self.topologyOrdering();\n } else if (ordering === \"topology-directed\") {\n // layout according to the topology\n layoutNodes = self.topologyOrdering(true);\n } else if (ordering === \"degree\") {\n // layout according to the descent order of degrees\n layoutNodes = self.degreeOrdering();\n } else {\n // layout according to the original order in the data.nodes\n layoutNodes = nodes;\n }\n\n const divN = Math.ceil(n / divisions); // node number in each division\n for (let i = 0; i < n; ++i) {\n let r = radius;\n if (!r && startRadius !== null && endRadius !== null) {\n r = startRadius + (i * (endRadius - startRadius)) / (n - 1);\n }\n if (!r) {\n r = 10 + (i * 100) / (n - 1);\n }\n let angle =\n startAngle +\n (i % divN) * astep +\n ((2 * Math.PI) / divisions) * Math.floor(i / divN);\n if (!clockwise) {\n angle =\n endAngle -\n (i % divN) * astep -\n ((2 * Math.PI) / divisions) * Math.floor(i / divN);\n }\n layoutNodes[i].x = center[0] + Math.cos(angle) * r;\n layoutNodes[i].y = center[1] + Math.sin(angle) * r;\n layoutNodes[i].weight = degrees[i].all;\n }\n\n self.onLayoutEnd?.();\n\n return {\n nodes: layoutNodes,\n edges: this.edges\n };\n }\n\n /**\n * 根据节点的拓扑结构排序\n * @return {array} orderedNodes 排序后的结果\n */\n public topologyOrdering(directed: boolean = false) {\n const self = this;\n const degrees = self.degrees;\n const edges = self.edges;\n const nodes = self.nodes;\n const cnodes = clone(nodes);\n const nodeMap = self.nodeMap;\n const orderedCNodes = [cnodes[0]];\n const resNodes = [nodes[0]];\n const pickFlags: boolean[] = [];\n const n = nodes.length;\n pickFlags[0] = true;\n initHierarchy(cnodes, edges, nodeMap, directed);\n let k = 0;\n cnodes.forEach((cnode, i) => {\n if (i !== 0) {\n if (\n (i === n - 1 ||\n degrees[i].all !== degrees[i + 1].all ||\n connect(\n orderedCNodes[k],\n cnode,\n edges\n )) &&\n !pickFlags[i]\n ) {\n orderedCNodes.push(cnode);\n resNodes.push(nodes[nodeMap[cnode.id]]);\n pickFlags[i] = true;\n k++;\n } else {\n const children = orderedCNodes[k].children!;\n let foundChild = false;\n for (let j = 0; j < children.length; j++) {\n const childIdx = nodeMap[children[j]];\n if (degrees[childIdx].all === degrees[i].all && !pickFlags[childIdx]) {\n orderedCNodes.push(cnodes[childIdx]);\n resNodes.push(nodes[nodeMap[cnodes[childIdx].id]]);\n pickFlags[childIdx] = true;\n foundChild = true;\n break;\n }\n }\n let ii = 0;\n while (!foundChild) {\n if (!pickFlags[ii]) {\n orderedCNodes.push(cnodes[ii]);\n resNodes.push(nodes[nodeMap[cnodes[ii].id]]);\n pickFlags[ii] = true;\n foundChild = true;\n }\n ii++;\n if (ii === n) {\n break;\n }\n }\n }\n }\n });\n return resNodes;\n }\n\n /**\n * 根据节点度数大小排序\n * @return {array} orderedNodes 排序后的结果\n */\n public degreeOrdering(): INode[] {\n const self = this;\n const nodes = self.nodes;\n const orderedNodes: INode[] = [];\n const degrees = self.degrees;\n nodes.forEach((node, i) => {\n node.degree = degrees[i].all;\n orderedNodes.push(node);\n });\n orderedNodes.sort(compareDegree);\n return orderedNodes;\n }\n\n public getType() {\n return \"circular\";\n }\n}\n","/**\n * @fileOverview Combo force layout\n * @author shiwu.wyy@antfin.com\n */\n\n import {\n Edge,\n Combo,\n OutNode,\n PointTuple,\n ComboTree,\n ComboCombinedLayoutOptions\n} from \"./types\";\nimport { FORCE_LAYOUT_TYPE_MAP } from './constants';\nimport { Base } from \"./base\";\nimport { isArray, isNumber, isFunction, traverseTreeUp, isObject, getLayoutBBox } from \"../util\";\nimport { CircularLayout, ConcentricLayout, GridLayout, RadialLayout, GForceLayout, MDSLayout } from \".\";\n\ntype Node = OutNode & {\n depth?: number;\n itemType?: string;\n comboId?: string;\n fx?: number;\n fy?: number;\n mass?: number;\n};\n\n/**\n * combined two layouts (inner and outer) for graph with combos\n */\nexport class ComboCombinedLayout extends Base {\n\n /** 布局中心 */\n public center: PointTuple = [0, 0];\n\n /** 内部计算参数 */\n public nodes: Node[] = [];\n\n public edges: Edge[] = [];\n\n public combos: Combo[] = [];\n\n public comboEdges: Edge[] = [];\n\n /** 节点大小,用于防止节点之间的重叠 */\n public nodeSize: number | number[] | ((d?: unknown) => number) | undefined;\n\n /** 节点/combo最小间距,防止重叠时的间隙 */\n public spacing: ((d?: unknown) => number) | number | undefined;\n\n /** 最外层的布局算法,需要使用同步的布局算法,默认为 forceAtlas2 */\n public outerLayout: any;\n\n /** combo 内部的布局算法,默认为 concentric */\n public innerLayout: ConcentricLayout | CircularLayout | GridLayout | RadialLayout;\n\n /** Combo 内部的 padding */\n public comboPadding:\n | ((d?: unknown) => number)\n | number\n | number[]\n | undefined = 10;\n\n public comboTrees: ComboTree[] = [];\n\n constructor(options?: ComboCombinedLayoutOptions) {\n super();\n this.updateCfg(options);\n }\n\n public getDefaultCfg() {\n return {};\n }\n\n /**\n * 执行布局\n */\n public execute() {\n const self = this;\n const nodes = self.nodes;\n const center = self.center;\n\n if (!nodes || nodes.length === 0) {\n if (self.onLayoutEnd) self.onLayoutEnd();\n return;\n }\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd) self.onLayoutEnd();\n return;\n }\n\n self.initVals();\n\n // layout\n self.run();\n if (self.onLayoutEnd) self.onLayoutEnd();\n }\n\n public run() {\n const self = this;\n const { nodes, edges, combos, comboEdges, center } = self;\n \n const nodeMap: any = {};\n nodes.forEach((node) => {\n nodeMap[node.id] = node;\n });\n const comboMap: any = {};\n combos.forEach((combo) => {\n comboMap[combo.id] = combo;\n });\n\n const innerGraphs: any = self.getInnerGraphs(nodeMap);\n\n // 每个 innerGraph 作为一个节点,带有大小,参与 force 计算\n const outerNodeIds: string[] = [];\n const outerNodes: Node[] = [];\n const nodeAncestorIdMap: { [key: string]: string } = {};\n let allHaveNoPosition = true;\n this.comboTrees.forEach((cTree) => {\n const innerNode = innerGraphs[cTree.id];\n // 代表 combo 的节点\n const oNode: Node = {\n ...cTree,\n x: innerNode.x || comboMap[cTree.id].x,\n y: innerNode.y || comboMap[cTree.id].y,\n fx: innerNode.fx || comboMap[cTree.id].fx,\n fy: innerNode.fy || comboMap[cTree.id].fy,\n mass: innerNode.mass || comboMap[cTree.id].mass,\n size: innerNode.size\n };\n outerNodes.push(oNode);\n if (!isNaN(oNode.x) && oNode.x !== 0 && !isNaN(oNode.y) && oNode.y !== 0) {\n allHaveNoPosition = false;\n } else {\n oNode.x = Math.random() * 100;\n oNode.y = Math.random() * 100;\n }\n outerNodeIds.push(cTree.id);\n traverseTreeUp(cTree, (child) => {\n if (child.id !== cTree.id) nodeAncestorIdMap[child.id] = cTree.id;\n return true;\n });\n });\n nodes.forEach((node) => {\n if (node.comboId && comboMap[node.comboId]) return;\n // 代表节点的节点\n const oNode: Node = { ...node };\n outerNodes.push(oNode);\n if (!isNaN(oNode.x) && oNode.x !== 0 && !isNaN(oNode.y) && oNode.y !== 0) {\n allHaveNoPosition = false;\n } else {\n oNode.x = Math.random() * 100;\n oNode.y = Math.random() * 100;\n }\n outerNodeIds.push(node.id);\n });\n const outerEdges: any = [];\n edges.concat(comboEdges).forEach((edge) => {\n const sourceAncestorId = nodeAncestorIdMap[edge.source] || edge.source;\n const targetAncestorId = nodeAncestorIdMap[edge.target] || edge.target;\n // 若两个点的祖先都在力导图的节点中,且是不同的节点,创建一条链接两个祖先的边到力导图的边中\n if (sourceAncestorId !== targetAncestorId &&\n outerNodeIds.includes(sourceAncestorId) &&\n outerNodeIds.includes(targetAncestorId)) {\n outerEdges.push({\n source: sourceAncestorId,\n target: targetAncestorId\n });\n }\n });\n\n // 若有需要最外层的 combo 或节点,则对最外层执行力导向\n if (outerNodes?.length) {\n if (outerNodes.length === 1) {\n outerNodes[0].x = center[0];\n outerNodes[0].y = center[1];\n } else {\n const outerData = {\n nodes: outerNodes,\n edges: outerEdges\n };\n\n // 需要使用一个同步的布局\n // @ts-ignore\n const outerLayout = this.outerLayout || new GForceLayout({\n gravity: 1,\n factor: 4,\n linkDistance: (edge: any, source: any, target: any) => {\n const nodeSize = ((source.size?.[0] || 30) + (target.size?.[0] || 30)) / 2;\n return Math.min(nodeSize * 1.5, 700);\n }\n });\n const outerLayoutType = outerLayout.getType?.();\n outerLayout.updateCfg({\n center,\n kg: 5,\n preventOverlap: true,\n animate: false,\n });\n // 若所有 outerNodes 都没有位置,且 outerLayout 是力导家族的布局,则先执行 preset mds 或 grid\n if (allHaveNoPosition && FORCE_LAYOUT_TYPE_MAP[outerLayoutType]) {\n const outerLayoutPreset = outerNodes.length < 100 ? new MDSLayout() : new GridLayout();\n outerLayoutPreset.layout(outerData);\n }\n outerLayout.layout(outerData);\n }\n // 根据外部布局结果,平移 innerGraphs 中的节点(第一层)\n outerNodes.forEach((outerNode) => {\n const innerGraph = innerGraphs[outerNode.id];\n if (!innerGraph) {\n const node = nodeMap[outerNode.id];\n if (node) {\n node.x = outerNode.x;\n node.y = outerNode.y;\n }\n return;\n }\n innerGraph.visited = true;\n innerGraph.x = outerNode.x;\n innerGraph.y = outerNode.y;\n innerGraph.nodes.forEach((node: OutNode) => {\n node.x += outerNode.x;\n node.y += outerNode.y;\n });\n });\n }\n\n // 至上而下遍历树处理下面各层节点位置\n const innerGraphIds = Object.keys(innerGraphs);\n for (let i = innerGraphIds.length - 1; i >= 0; i--) {\n const id = innerGraphIds[i];\n const innerGraph = innerGraphs[id];\n if (!innerGraph) continue;\n innerGraph.nodes.forEach((node: OutNode) => {\n if (!innerGraph.visited) {\n node.x += (innerGraph.x || 0);\n node.y += (innerGraph.y || 0);\n }\n if (nodeMap[node.id]) {\n nodeMap[node.id].x = node.x;\n nodeMap[node.id].y = node.y;\n }\n });\n if (comboMap[id]) {\n comboMap[id].x = innerGraph.x;\n comboMap[id].y = innerGraph.y;\n }\n }\n return { nodes, edges, combos, comboEdges };\n }\n\n private getInnerGraphs(nodeMap: any) {\n const self = this;\n const { comboTrees, nodeSize, edges, comboPadding, spacing } = self;\n const innerGraphs: any = {};\n\n // @ts-ignore\n const innerGraphLayout: any = this.innerLayout || (new ConcentricLayout({ sortBy: 'id' }));\n innerGraphLayout.center = [0, 0];\n innerGraphLayout.preventOverlap = true;\n innerGraphLayout.nodeSpacing = spacing;\n\n (comboTrees || []).forEach((ctree: any) => {\n traverseTreeUp(ctree, (treeNode) => {\n // @ts-ignore\n let padding = comboPadding?.(treeNode) || 10; // 返回的最大值\n if (isArray(padding)) padding = Math.max(...padding);\n if (!treeNode.children?.length) {\n // 空 combo\n if (treeNode.itemType === 'combo') {\n const treeNodeSize = padding ? [padding * 2, padding * 2] : [30, 30];\n innerGraphs[treeNode.id] = {\n id: treeNode.id,\n nodes: [],\n size: treeNodeSize\n };\n }\n } else {\n // 非空 combo\n const innerGraphNodes = treeNode.children.map((child) => {\n if (child.itemType === 'combo') return innerGraphs[child.id];\n const oriNode = nodeMap[child.id] || {};\n return { ...oriNode, ...child };\n });\n const innerGraphNodeIds = innerGraphNodes.map((node) => node.id);\n const innerGraphData = {\n nodes: innerGraphNodes,\n edges: edges.filter((edge) => innerGraphNodeIds.includes(edge.source) && innerGraphNodeIds.includes(edge.target))\n };\n let minNodeSize = Infinity;\n innerGraphNodes.forEach((node) => {\n // @ts-ignore\n if (!node.size) node.size = innerGraphs[node.id]?.size || nodeSize?.(node) || [30, 30];\n if (isNumber(node.size)) node.size = [node.size, node.size];\n if (minNodeSize > node.size[0]) minNodeSize = node.size[0];\n if (minNodeSize > node.size[1]) minNodeSize = node.size[1];\n });\n\n // 根据节点数量、spacing,调整布局参数\n \n innerGraphLayout.layout(innerGraphData);\n const { minX, minY, maxX, maxY } = getLayoutBBox(innerGraphNodes);\n // move the innerGraph to [0, 0],for later controled by parent layout\n const center = { x: (maxX + minX) / 2, y: (maxY + minY) / 2 };\n innerGraphData.nodes.forEach(node => {\n node.x -= center.x;\n node.y -= center.y;\n })\n const innerGraphSize = Math.max(maxX - minX, maxY - minY, minNodeSize) + padding * 2;\n innerGraphs[treeNode.id] = {\n id: treeNode.id,\n nodes: innerGraphNodes,\n size: [innerGraphSize, innerGraphSize]\n };\n }\n return true;\n });\n });\n return innerGraphs;\n }\n\n private initVals() {\n const self = this;\n\n const nodeSize = self.nodeSize;\n const spacing = self.spacing;\n let nodeSizeFunc: (d: any) => number;\n let spacingFunc: (d: any) => number;\n\n // nodeSpacing to function\n if (isNumber(spacing)) {\n spacingFunc = () => spacing as any;\n } else if (isFunction(spacing)) {\n spacingFunc = spacing;\n } else {\n spacingFunc = () => 0;\n }\n this.spacing = spacingFunc;\n\n // nodeSize to function\n if (!nodeSize) {\n nodeSizeFunc = (d) => {\n const spacing = spacingFunc(d);\n if (d.size) {\n if (isArray(d.size)) {\n const res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];\n return (res + spacing) / 2;\n } if (isObject(d.size)) {\n const res = d.size.width > d.size.height ? d.size.width : d.size.height;\n return (res + spacing) / 2;\n }\n return (d.size + spacing) / 2;\n }\n return 10 + spacing / 2;\n };\n } else if (isFunction(nodeSize)) {\n nodeSizeFunc = (d) => {\n const size = nodeSize(d);\n const spacing = spacingFunc(d);\n if (isArray(d.size)) {\n const res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];\n return (res + spacing) / 2;\n }\n return ((size || 10) + spacing) / 2;\n };\n } else if (isArray(nodeSize)) {\n const larger = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1];\n const radius = larger / 2;\n nodeSizeFunc = (d) => radius + spacingFunc(d) / 2;\n } else {\n // number type\n const radius = nodeSize / 2;\n nodeSizeFunc = (d) => radius + spacingFunc(d) / 2;\n }\n this.nodeSize = nodeSizeFunc;\n\n // comboPadding to function\n const comboPadding = self.comboPadding;\n let comboPaddingFunc: (d: any) => number;\n if (isNumber(comboPadding)) {\n comboPaddingFunc = () => comboPadding as any;\n } else if (isArray(comboPadding)) {\n comboPaddingFunc = () => Math.max.apply(null, comboPadding);\n } else if (isFunction(comboPadding)) {\n comboPaddingFunc = comboPadding;\n } else {\n // null type\n comboPaddingFunc = () => 0;\n }\n this.comboPadding = comboPaddingFunc;\n }\n public getType() {\n return \"comboCombined\";\n }\n}\n","/**\n * @fileOverview Combo force layout\n * @author shiwu.wyy@antfin.com\n */\n\nimport {\n Edge,\n OutNode,\n PointTuple,\n IndexMap,\n Combo,\n ComboTree,\n Point,\n ComboForceLayoutOptions\n} from \"./types\";\nimport { Base } from \"./base\";\nimport { isArray, isNumber, isFunction, traverseTreeUp, isObject, getEdgeTerminal } from \"../util\";\n\ntype Node = OutNode & {\n depth: number;\n itemType?: string;\n comboId?: string;\n};\n\ntype NodeMap = {\n [key: string]: Node;\n};\n\ntype ComboMap = {\n [key: string]: Combo;\n};\n\n/**\n * force layout for graph with combos\n */\nexport class ComboForceLayout extends Base {\n /** 布局中心 */\n public center: PointTuple = [0, 0];\n\n /** 停止迭代的最大迭代数 */\n public maxIteration: number = 100;\n\n /** 重力大小,影响图的紧凑程度 */\n public gravity: number = 10;\n\n /** 群组中心力大小 */\n public comboGravity: number = 10;\n\n /** 默认边长度 */\n public linkDistance: number | ((d?: unknown) => number) = 10;\n\n /** 每次迭代位移的衰减相关参数 */\n public alpha: number = 1;\n\n public alphaMin: number = 0.001;\n\n public alphaDecay: number = 1 - this.alphaMin ** (1 / 300);\n\n public alphaTarget: number = 0;\n\n /** 节点运动速度衰减参数 */\n public velocityDecay: number = 0.6;\n\n /** 边引力大小 */\n public edgeStrength: number | ((d?: unknown) => number) = 0.6;\n\n /** 节点引力大小 */\n public nodeStrength: number | ((d?: unknown) => number) = 30;\n\n /** 是否开启防止重叠 */\n public preventOverlap: boolean = false;\n\n /** 是否开启节点之间的防止重叠 */\n public preventNodeOverlap: boolean = false;\n\n /** 是否开启 Combo 之间的防止重叠 */\n public preventComboOverlap: boolean = false;\n\n /** 防止重叠的碰撞力大小 */\n public collideStrength: number | undefined = undefined;\n\n /** 防止重叠的碰撞力大小 */\n public nodeCollideStrength: number | undefined = 0.5;\n\n /** 防止重叠的碰撞力大小 */\n public comboCollideStrength: number | undefined = 0.5;\n\n /** 节点大小,用于防止重叠 */\n public nodeSize: number | number[] | ((d?: unknown) => number) | undefined;\n\n /** 节点最小间距,防止重叠时的间隙 */\n public nodeSpacing: ((d?: unknown) => number) | number | undefined;\n\n /** Combo 最小间距,防止重叠时的间隙 */\n public comboSpacing: ((d?: unknown) => number) | number | undefined = 20;\n\n /** Combo 内部的 padding */\n public comboPadding:\n | ((d?: unknown) => number)\n | number\n | number[]\n | undefined = 10;\n\n /** 优化计算斥力的速度,两节点间距超过 optimizeRangeFactor * width 则不再计算斥力和重叠斥力 */\n public optimizeRangeFactor: number = 1;\n\n /** 每次迭代的回调函数 */\n public onTick: () => void = () => {};\n\n /** 迭代结束的回调函数 */\n public onLayoutEnd: () => void = () => {};\n\n /** 根据边两端节点层级差距的调整引力系数的因子,取值范围 [0, 1]。层级差距越大,引力越小 */\n public depthAttractiveForceScale: number = 1;\n\n /** 根据边两端节点层级差距的调整斥力系数的因子,取值范围 [1, Infinity]。层级差距越大,斥力越大 */\n public depthRepulsiveForceScale: number = 2;\n\n /** 内部计算参数 */\n public nodes: Node[] = [];\n\n public edges: Edge[] = [];\n\n public combos: Combo[] = [];\n\n private comboTrees: ComboTree[] = [];\n\n // add a virtual root to comboTrees\n private comboTree: ComboTree;\n\n private width: number = 300;\n\n private height: number = 300;\n\n private bias: number[] = [];\n\n private nodeMap: NodeMap = {};\n\n private oriComboMap: ComboMap = {};\n\n private indexMap: IndexMap = {};\n\n private comboMap: ComboMap = {};\n\n private previousLayouted: boolean = false;\n\n constructor(options?: ComboForceLayoutOptions) {\n super();\n this.updateCfg(options);\n }\n\n public getDefaultCfg() {\n return {\n maxIteration: 100,\n center: [0, 0],\n gravity: 10,\n speed: 1,\n comboGravity: 30,\n preventOverlap: false,\n preventComboOverlap: true,\n preventNodeOverlap: true,\n nodeSpacing: undefined,\n collideStrength: undefined,\n nodeCollideStrength: 0.5,\n comboCollideStrength: 0.5,\n comboSpacing: 20,\n comboPadding: 10,\n edgeStrength: 0.6,\n nodeStrength: 30,\n linkDistance: 10\n };\n }\n\n /**\n * 执行布局\n */\n public execute() {\n const self = this;\n const nodes = self.nodes;\n const center = self.center;\n self.comboTree = {\n id: \"comboTreeRoot\",\n depth: -1,\n children: self.comboTrees\n };\n\n if (!nodes || nodes.length === 0) {\n if (self.onLayoutEnd) self.onLayoutEnd();\n return;\n }\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd) self.onLayoutEnd();\n return;\n }\n\n self.initVals();\n\n // layout\n self.run();\n if (self.onLayoutEnd) self.onLayoutEnd();\n }\n\n public run() {\n const self = this;\n const nodes = self.nodes;\n const maxIteration = self.previousLayouted\n ? self.maxIteration / 5\n : self.maxIteration;\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n const center = self.center;\n const velocityDecay = self.velocityDecay;\n\n // init the positions to make the nodes with same combo gather around the combo\n const comboMap = self.comboMap;\n if (!self.previousLayouted) self.initPos(comboMap);\n\n // iterate\n for (let i = 0; i < maxIteration; i++) {\n const displacements: Point[] = [];\n nodes.forEach((_, j) => {\n displacements[j] = { x: 0, y: 0 };\n });\n self.applyCalculate(displacements);\n\n // gravity for combos\n self.applyComboCenterForce(displacements);\n\n // move\n nodes.forEach((n, j) => {\n if (!isNumber(n.x) || !isNumber(n.y)) return;\n n.x += displacements[j].x * velocityDecay;\n n.y += displacements[j].y * velocityDecay;\n });\n self.alpha += (self.alphaTarget - self.alpha) * self.alphaDecay;\n self.onTick();\n }\n\n // move to center\n const meanCenter = [0, 0];\n nodes.forEach((n) => {\n if (!isNumber(n.x) || !isNumber(n.y)) return;\n meanCenter[0] += n.x;\n meanCenter[1] += n.y;\n });\n meanCenter[0] /= nodes.length;\n meanCenter[1] /= nodes.length;\n const centerOffset = [center[0] - meanCenter[0], center[1] - meanCenter[1]];\n nodes.forEach((n, j) => {\n if (!isNumber(n.x) || !isNumber(n.y)) return;\n n.x += centerOffset[0];\n n.y += centerOffset[1];\n });\n\n // arrange the empty combo\n self.combos.forEach((combo) => {\n const mapped = comboMap[combo.id];\n if (mapped && mapped.empty) {\n combo.x = mapped.cx || combo.x;\n combo.y = mapped.cy || combo.y;\n }\n });\n\n self.previousLayouted = true;\n }\n\n private initVals() {\n const self = this;\n const edges = self.edges;\n const nodes = self.nodes;\n const combos = self.combos;\n const count: any = {};\n\n const nodeMap: NodeMap = {};\n const indexMap: IndexMap = {};\n nodes.forEach((node, i) => {\n nodeMap[node.id] = node;\n indexMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.indexMap = indexMap;\n\n const oriComboMap: ComboMap = {};\n combos.forEach((combo) => {\n oriComboMap[combo.id] = combo;\n });\n self.oriComboMap = oriComboMap;\n self.comboMap = self.getComboMap();\n\n const preventOverlap = self.preventOverlap;\n self.preventComboOverlap = self.preventComboOverlap || preventOverlap;\n self.preventNodeOverlap = self.preventNodeOverlap || preventOverlap;\n\n const collideStrength = self.collideStrength;\n if (collideStrength) {\n self.comboCollideStrength = collideStrength;\n self.nodeCollideStrength = collideStrength;\n }\n self.comboCollideStrength = self.comboCollideStrength\n ? self.comboCollideStrength\n : 0;\n self.nodeCollideStrength = self.nodeCollideStrength\n ? self.nodeCollideStrength\n : 0;\n\n // get edge bias\n for (let i = 0; i < edges.length; ++i) {\n const source = getEdgeTerminal(edges[i], 'source');\n const target = getEdgeTerminal(edges[i], 'target');\n if (count[source]) count[source]++;\n else count[source] = 1;\n if (count[target]) count[target]++;\n else count[target] = 1;\n }\n const bias = [];\n for (let i = 0; i < edges.length; ++i) {\n const source = getEdgeTerminal(edges[i], 'source');\n const target = getEdgeTerminal(edges[i], 'target');\n bias[i] = count[source] / (count[source] + count[target]);\n }\n this.bias = bias;\n\n const nodeSize = self.nodeSize;\n const nodeSpacing = self.nodeSpacing;\n let nodeSizeFunc: (d: any) => number;\n let nodeSpacingFunc: (d: any) => number;\n\n // nodeSpacing to function\n if (isNumber(nodeSpacing)) {\n nodeSpacingFunc = () => nodeSpacing as any;\n } else if (isFunction(nodeSpacing)) {\n nodeSpacingFunc = nodeSpacing;\n } else {\n nodeSpacingFunc = () => 0;\n }\n this.nodeSpacing = nodeSpacingFunc;\n\n // nodeSize to function\n if (!nodeSize) {\n nodeSizeFunc = (d) => {\n if (d.size) {\n if (isArray(d.size)) {\n const res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];\n return res / 2;\n } if (isObject(d.size)) {\n const res = d.size.width > d.size.height ? d.size.width : d.size.height;\n return res / 2;\n }\n return d.size / 2;\n }\n return 10;\n };\n } else if (isFunction(nodeSize)) {\n nodeSizeFunc = (d) => {\n return nodeSize(d);\n };\n } else if (isArray(nodeSize)) {\n const larger = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1];\n const radius = larger / 2;\n nodeSizeFunc = (d) => radius;\n } else {\n // number type\n const radius = nodeSize / 2;\n nodeSizeFunc = (d) => radius;\n }\n this.nodeSize = nodeSizeFunc;\n\n // comboSpacing to function\n const comboSpacing = self.comboSpacing;\n let comboSpacingFunc: (d: any) => number;\n if (isNumber(comboSpacing)) {\n comboSpacingFunc = () => comboSpacing as any;\n } else if (isFunction(comboSpacing)) {\n comboSpacingFunc = comboSpacing;\n } else {\n // null type\n comboSpacingFunc = () => 0;\n }\n this.comboSpacing = comboSpacingFunc;\n\n // comboPadding to function\n const comboPadding = self.comboPadding;\n let comboPaddingFunc: (d: any) => number;\n if (isNumber(comboPadding)) {\n comboPaddingFunc = () => comboPadding as any;\n } else if (isArray(comboPadding)) {\n comboPaddingFunc = () => Math.max.apply(null, comboPadding);\n } else if (isFunction(comboPadding)) {\n comboPaddingFunc = comboPadding;\n } else {\n // null type\n comboPaddingFunc = () => 0;\n }\n this.comboPadding = comboPaddingFunc;\n\n // linkDistance to function\n let linkDistance = this.linkDistance;\n let linkDistanceFunc;\n if (!linkDistance) {\n linkDistance = 10;\n }\n if (isNumber(linkDistance)) {\n linkDistanceFunc = (d: any) => {\n return linkDistance;\n };\n } else {\n linkDistanceFunc = linkDistance;\n }\n this.linkDistance = linkDistanceFunc as ((d?: unknown) => number);\n\n // linkStrength to function\n let edgeStrength = this.edgeStrength;\n let edgeStrengthFunc;\n if (!edgeStrength) {\n edgeStrength = 1;\n }\n if (isNumber(edgeStrength)) {\n edgeStrengthFunc = (d: any) => {\n return edgeStrength;\n };\n } else {\n edgeStrengthFunc = edgeStrength;\n }\n this.edgeStrength = edgeStrengthFunc as ((d?: unknown) => number);\n\n // nodeStrength to function\n let nodeStrength = this.nodeStrength;\n let nodeStrengthFunc;\n if (!nodeStrength) {\n nodeStrength = 30;\n }\n if (isNumber(nodeStrength)) {\n nodeStrengthFunc = (d: any) => {\n return nodeStrength;\n };\n } else {\n nodeStrengthFunc = nodeStrength;\n }\n this.nodeStrength = nodeStrengthFunc as ((d?: unknown) => number);\n }\n\n private initPos(comboMap: ComboMap) {\n const self = this;\n const nodes = self.nodes;\n nodes.forEach((node, i) => {\n const comboId = (node as any).comboId;\n const combo: any = comboMap[comboId];\n if (comboId && combo) {\n node.x = combo.cx + 100 / (i + 1);\n node.y = combo.cy + 100 / (i + 1);\n } else {\n node.x = 100 / (i + 1);\n node.y = 100 / (i + 1);\n }\n });\n }\n\n private getComboMap() {\n const self = this;\n const nodeMap = self.nodeMap;\n const comboTrees = self.comboTrees;\n const oriComboMap = self.oriComboMap;\n const comboMap: ComboMap = {};\n\n (comboTrees || []).forEach((ctree: any) => {\n const treeChildren: Combo[] | Node[] = [];\n traverseTreeUp(ctree, (treeNode) => {\n if (treeNode.itemType === \"node\") return true; // skip it\n if (!oriComboMap[treeNode.id]) return true; // means it is hidden, skip it\n if (comboMap[treeNode.id] === undefined) {\n const combo = {\n id: treeNode.id,\n name: treeNode.id,\n cx: 0,\n cy: 0,\n count: 0,\n depth: self.oriComboMap[treeNode.id].depth as number || 0,\n children: [] as any\n };\n comboMap[treeNode.id] = combo;\n }\n const children = treeNode.children;\n if (children) {\n children.forEach((child: any) => {\n if (!comboMap[child.id] && !nodeMap[child.id]) return true; // means it is hidden\n treeChildren.push(child);\n });\n }\n const c: any = comboMap[treeNode.id];\n c.cx = 0;\n c.cy = 0;\n\n if (treeChildren.length === 0) {\n c.empty = true;\n const oriCombo = oriComboMap[treeNode.id];\n c.cx = oriCombo.x as number;\n c.cy = oriCombo.y as number;\n }\n\n treeChildren.forEach((child: Combo | Node) => {\n (c.count as number)++;\n if (child.itemType !== \"node\") {\n const childCombo = comboMap[child.id];\n if (isNumber(childCombo.cx)) c.cx += childCombo.cx;\n if (isNumber(childCombo.cy)) c.cy += childCombo.cy;\n return;\n }\n const node = nodeMap[child.id];\n // means the node is hidden, skip it\n if (!node) return;\n\n if (isNumber(node.x)) {\n c.cx += node.x;\n }\n if (isNumber(node.y)) {\n c.cy += node.y;\n }\n });\n c.cx /= (c.count || 1) as number;\n c.cy /= (c.count || 1) as number;\n\n c.children = treeChildren as any;\n\n return true;\n });\n });\n\n return comboMap;\n }\n\n private applyComboCenterForce(displacements: Point[]) {\n const self = this;\n const gravity = self.gravity;\n const comboGravity = self.comboGravity || gravity;\n const alpha = this.alpha;\n const comboTrees = self.comboTrees;\n const indexMap = self.indexMap;\n const nodeMap = self.nodeMap;\n const comboMap = self.comboMap;\n\n (comboTrees || []).forEach((ctree) => {\n traverseTreeUp(ctree, (treeNode) => {\n if (treeNode.itemType === \"node\") return true; // skip it\n const combo = comboMap[treeNode.id];\n // means the combo is hidden, skip it\n if (!combo) return true;\n const c: any = comboMap[treeNode.id];\n\n // higher depth the combo, larger the gravity\n const gravityScale = (((c.depth as number) + 1) / 10) * 0.5;\n // apply combo center force for all the descend nodes in this combo\n // and update the center position and count for this combo\n const comboX = c.cx;\n const comboY = c.cy;\n c.cx = 0;\n c.cy = 0;\n c.children!.forEach((child: any) => {\n if (child.itemType !== \"node\") {\n const childCombo = comboMap[child.id];\n if (childCombo && isNumber(childCombo.cx)) c.cx += childCombo.cx;\n if (childCombo && isNumber(childCombo.cy)) c.cy += childCombo.cy;\n return;\n }\n const node = nodeMap[child.id];\n const vecX = (node.x - comboX) || 0.005;\n const vecY = (node.y - comboY) || 0.005;\n const l = Math.sqrt(vecX * vecX + vecY * vecY);\n const childIdx = indexMap[node.id];\n const params = ((comboGravity * alpha) / l) * gravityScale;\n displacements[childIdx].x -= vecX * params;\n displacements[childIdx].y -= vecY * params;\n\n if (isNumber(node.x)) c.cx += node.x;\n if (isNumber(node.y)) c.cy += node.y;\n });\n c.cx /= (c.count || 1) as number;\n c.cy /= (c.count || 1) as number;\n return true;\n });\n });\n }\n\n private applyCalculate(displacements: Point[]) {\n const self = this;\n const comboMap = self.comboMap;\n const nodes = self.nodes;\n // store the vx, vy, and distance to reduce dulplicate calculation\n const vecMap: any = {};\n nodes.forEach((v, i) => {\n nodes.forEach((u, j) => {\n if (i < j) return;\n const vx = (v.x - u.x) || 0.005;\n const vy = (v.y - u.y) || 0.005;\n let vl2 = vx * vx + vy * vy;\n const vl = Math.sqrt(vl2);\n if (vl2 < 1) vl2 = vl;\n vecMap[`${v.id}-${u.id}`] = { vx, vy, vl2, vl };\n vecMap[`${u.id}-${v.id}`] = { vl2, vl, vx: -vx, vy: -vy };\n });\n });\n // get the sizes of the combos\n self.updateComboSizes(comboMap);\n self.calRepulsive(displacements, vecMap);\n self.calAttractive(displacements, vecMap);\n\n const preventComboOverlap = self.preventComboOverlap;\n if (preventComboOverlap) self.comboNonOverlapping(displacements, comboMap);\n }\n\n /**\n * Update the sizes of the combos according to their children\n * Used for combos nonoverlap, but not re-render the combo shapes\n */\n private updateComboSizes(comboMap: ComboMap) {\n const self = this;\n const comboTrees = self.comboTrees;\n const nodeMap = self.nodeMap;\n const nodeSize = self.nodeSize as ((d?: unknown) => number);\n const comboSpacing = self.comboSpacing as ((d?: unknown) => number);\n const comboPadding = self.comboPadding as ((d?: unknown) => number);\n (comboTrees || []).forEach((ctree) => {\n const treeChildren: Combo[] | Node[] = [];\n traverseTreeUp(ctree, (treeNode: ComboTree) => {\n if (treeNode.itemType === \"node\") return true; // skip it\n const c = comboMap[treeNode.id];\n // means the combo is hidden, skip it\n if (!c) return false;\n const children = treeNode.children;\n if (children) {\n children.forEach((child: any) => {\n // means the combo is hidden.\n if (!comboMap[child.id] && !nodeMap[child.id]) return;\n treeChildren.push(child);\n });\n }\n\n c.minX = Infinity;\n c.minY = Infinity;\n c.maxX = -Infinity;\n c.maxY = -Infinity;\n treeChildren.forEach((child: any) => {\n if (child.itemType !== \"node\") return true; // skip it\n const node = nodeMap[child.id];\n if (!node) return true; // means it is hidden\n const r = nodeSize(node);\n const nodeMinX = node.x - r;\n const nodeMinY = node.y - r;\n const nodeMaxX = node.x + r;\n const nodeMaxY = node.y + r;\n if (c.minX! > nodeMinX) c.minX = nodeMinX;\n if (c.minY! > nodeMinY) c.minY = nodeMinY;\n if (c.maxX! < nodeMaxX) c.maxX = nodeMaxX;\n if (c.maxY! < nodeMaxY) c.maxY = nodeMaxY;\n });\n let minSize = self.oriComboMap[treeNode.id].size || 10;\n if (isArray(minSize)) minSize = minSize[0];\n const maxLength = Math.max(\n c.maxX - c.minX,\n c.maxY - c.minY,\n minSize as number\n );\n c.r = maxLength / 2 + comboSpacing(c) / 2 + comboPadding(c);\n\n return true;\n });\n });\n }\n\n /**\n * prevent the overlappings among combos\n */\n private comboNonOverlapping(displacements: Point[], comboMap: ComboMap) {\n const self = this;\n const comboTree = self.comboTree;\n const comboCollideStrength = self.comboCollideStrength as number;\n const indexMap = self.indexMap;\n const nodeMap = self.nodeMap;\n\n traverseTreeUp(comboTree, (treeNode) => {\n if (\n !comboMap[treeNode.id] &&\n !nodeMap[treeNode.id] &&\n treeNode.id !== \"comboTreeRoot\"\n ) {\n return false;\n } // means it is hidden\n const children = treeNode.children;\n // 同个子树下的子 combo 间两两对比\n if (children && children.length > 1) {\n children.forEach((v, i) => {\n if (v.itemType === \"node\") return false; // skip it\n const cv: any = comboMap[v.id];\n if (!cv) return; // means it is hidden, skip it\n children.forEach((u, j) => {\n if (i <= j) return false;\n if (u.itemType === \"node\") return false; // skip it\n const cu: any = comboMap[u.id];\n if (!cu) return false; // means it is hidden, skip it\n const vx = (cv.cx - cu.cx) || 0.005;\n const vy = (cv.cy - cu.cy) || 0.005;\n const l = vx * vx + vy * vy;\n const rv = cv.r as number || 1;\n const ru = cu.r as number || 1;\n const r = rv + ru;\n const ru2 = ru * ru;\n const rv2 = rv * rv;\n // overlapping\n if (l < r * r) {\n const vnodes = v.children;\n if (!vnodes || vnodes.length === 0) return false; // skip it\n const unodes = u.children;\n if (!unodes || unodes.length === 0) return false; // skip it\n const sqrtl = Math.sqrt(l);\n const ll = ((r - sqrtl) / sqrtl) * comboCollideStrength;\n const xl = vx * ll;\n const yl = vy * ll;\n const rratio = ru2 / (rv2 + ru2);\n const irratio = 1 - rratio;\n // 两兄弟 combo 的子节点上施加斥力\n vnodes.forEach((vn) => {\n if (vn.itemType !== \"node\") return false; // skip it\n if (!nodeMap[vn.id]) return; // means it is hidden, skip it\n const vindex = indexMap[vn.id];\n unodes.forEach((un) => {\n if (un.itemType !== \"node\") return false;\n if (!nodeMap[un.id]) return false; // means it is hidden, skip it\n const uindex = indexMap[un.id];\n displacements[vindex].x += xl * rratio;\n displacements[vindex].y += yl * rratio;\n displacements[uindex].x -= xl * irratio;\n displacements[uindex].y -= yl * irratio;\n });\n });\n }\n });\n });\n }\n return true;\n });\n }\n\n /**\n * Calculate the repulsive force between each node pair\n * @param displacements The array stores the displacements for nodes\n * @param vecMap The map stores vector between each node pair\n */\n private calRepulsive(displacements: Point[], vecMap: any) {\n const self = this;\n const nodes = self.nodes;\n const max = self.width * self.optimizeRangeFactor;\n const nodeStrength = self.nodeStrength as (d?: unknown) => number;\n const alpha = self.alpha;\n const nodeCollideStrength = self.nodeCollideStrength as number;\n const preventNodeOverlap = self.preventNodeOverlap;\n const nodeSizeFunc = self.nodeSize as ((d?: unknown) => number);\n const nodeSpacingFunc = self.nodeSpacing as ((d?: unknown) => number);\n const scale = self.depthRepulsiveForceScale;\n const center = self.center;\n nodes.forEach((v, i) => {\n if (!v.x || !v.y) return;\n\n // center gravity\n if (center) {\n const gravity = self.gravity;\n const vecX = (v.x - center[0]) || 0.005;\n const vecY = (v.y - center[1]) || 0.005;\n const l = Math.sqrt(vecX * vecX + vecY * vecY);\n displacements[i].x -= (vecX * gravity * alpha) / l;\n displacements[i].y -= (vecY * gravity * alpha) / l;\n }\n\n nodes.forEach((u, j) => {\n if (i === j) {\n return;\n }\n if (!u.x || !u.y) return;\n const { vl2, vl } = vecMap[`${v.id}-${u.id}`];\n if (vl > max) return;\n\n const { vx, vy } = vecMap[`${v.id}-${u.id}`];\n\n let depthDiff = Math.log(Math.abs(u.depth - v.depth) / 10) + 1 || 1;\n depthDiff = depthDiff < 1 ? 1 : depthDiff;\n if (u.comboId !== v.comboId) depthDiff += 1;\n const depthParam = depthDiff ? scale ** depthDiff : 1;\n\n const params = ((nodeStrength(u) * alpha) / vl2) * depthParam;\n displacements[i].x += vx * params;\n displacements[i].y += vy * params;\n\n // prevent node overlappings\n if (i < j && preventNodeOverlap) {\n const ri = (nodeSizeFunc(v) + nodeSpacingFunc(v)) || 1;\n const rj = (nodeSizeFunc(u) + nodeSpacingFunc(u)) || 1;\n const r = ri + rj;\n if (vl2 < r * r) {\n const ll = ((r - vl) / vl) * nodeCollideStrength;\n const rj2 = rj * rj;\n let rratio = rj2 / (ri * ri + rj2);\n const xl = vx * ll;\n const yl = vy * ll;\n displacements[i].x += xl * rratio;\n displacements[i].y += yl * rratio;\n rratio = 1 - rratio;\n displacements[j].x -= xl * rratio;\n displacements[j].y -= yl * rratio;\n }\n }\n });\n });\n }\n\n /**\n * Calculate the attractive force between the node pair with edge\n * @param displacements The array stores the displacements for nodes\n * @param vecMap The map stores vector between each node pair\n */\n private calAttractive(displacements: Point[], vecMap: any) {\n const self = this;\n const edges = self.edges;\n const linkDistance = self.linkDistance as (d?: unknown) => number;\n const alpha = self.alpha;\n const edgeStrength = self.edgeStrength as (d?: unknown) => number;\n const bias = self.bias;\n const scale = self.depthAttractiveForceScale;\n edges.forEach((e, i) => {\n const source = getEdgeTerminal(e, 'source');\n const target = getEdgeTerminal(e, 'target');\n if (!source || !target || source === target) return;\n const uIndex = self.indexMap[source];\n const vIndex = self.indexMap[target];\n const u: Node = self.nodeMap[source];\n const v: Node = self.nodeMap[target];\n if (!u || !v) return;\n\n let depthDiff = u.depth === v.depth ? 0 : Math.log(Math.abs(u.depth - v.depth) / 10);\n if (u.comboId === v.comboId) {\n depthDiff = depthDiff / 2;\n }\n let depthParam = depthDiff ? scale ** depthDiff : 1;\n if (u.comboId !== v.comboId && depthParam === 1) {\n depthParam = scale / 2;\n } else if (u.comboId === v.comboId) {\n depthParam = 2;\n }\n\n if (!isNumber(v.x) || !isNumber(u.x) || !isNumber(v.y) || !isNumber(u.y)) {\n return;\n }\n const { vl, vx, vy } = vecMap[`${target}-${source}`];\n const l =\n ((vl - linkDistance(e)) / vl) * alpha * edgeStrength(e) * depthParam;\n const vecX = vx * l;\n const vecY = vy * l;\n\n const b = bias[i];\n displacements[vIndex].x -= vecX * b;\n displacements[vIndex].y -= vecY * b;\n displacements[uIndex].x += vecX * (1 - b);\n displacements[uIndex].y += vecY * (1 - b);\n });\n }\n\n public getType() {\n return \"comboForce\";\n }\n}\n","/**\n * @fileOverview concentric layout\n * @author shiwu.wyy@antfin.com\n * this algorithm refers to - https://github.com/cytoscape/cytoscape.js/\n */\n\nimport {\n OutNode,\n Edge,\n PointTuple,\n Size,\n IndexMap,\n ConcentricLayoutOptions\n} from \"./types\";\nimport { isString, isArray, isNumber, getDegree, isObject, isFunction } from \"../util\";\nimport { Base } from \"./base\";\n\ntype INode = OutNode & {\n degree: number;\n size: number | PointTuple | Size;\n};\n\ntype NodeMap = {\n [key: string]: INode;\n};\n\n/**\n * 同心圆布局\n */\nexport class ConcentricLayout extends Base {\n /** 布局中心 */\n public center: PointTuple;\n\n public nodeSize: number | PointTuple = 30;\n\n /** min spacing between outside of nodes (used for radius adjustment) */\n public minNodeSpacing: number = 10;\n\n /** same as minNodeSpacing. min spacing between outside of nodes (used for radius adjustment) */\n public nodeSpacing: number | number[] | ((d?: unknown) => number) | undefined = 10;\n\n /** prevents node overlap, may overflow boundingBox if not enough space */\n public preventOverlap: boolean = false;\n\n /** how many radians should be between the first and last node (defaults to full circle) */\n public sweep: number | undefined;\n\n /** whether levels have an equal radial distance betwen them, may cause bounding box overflow */\n public equidistant: boolean = false;\n\n /** where nodes start in radians */\n public startAngle: number = (3 / 2) * Math.PI;\n\n /** whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false) */\n public clockwise: boolean = true;\n\n /** the letiation of concentric values in each level */\n public maxLevelDiff: undefined | number;\n\n /** 根据 sortBy 指定的属性进行排布,数值高的放在中心,如果是 sortBy 则会计算节点度数,度数最高的放在中心 */\n public sortBy: string = \"degree\";\n\n public nodes: INode[] = [];\n\n public edges: Edge[] = [];\n\n public width: number = 300;\n\n public height: number = 300;\n\n /** 迭代结束的回调函数 */\n public onLayoutEnd: () => void = () => {};\n\n private maxValueNode: INode | undefined;\n\n private counterclockwise: boolean | undefined;\n\n constructor(options?: ConcentricLayoutOptions) {\n super();\n this.updateCfg(options);\n }\n\n public getDefaultCfg() {\n return {\n nodeSize: 30,\n minNodeSpacing: 10,\n nodeSpacing: 10,\n preventOverlap: false,\n sweep: undefined,\n equidistant: false,\n startAngle: (3 / 2) * Math.PI,\n clockwise: true,\n maxLevelDiff: undefined,\n sortBy: \"degree\"\n };\n }\n\n /**\n * 执行布局\n */\n public execute() {\n const self = this;\n const { nodes, edges } = self;\n const n = nodes.length;\n if (n === 0) {\n self.onLayoutEnd?.();\n return;\n }\n\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n\n if (n === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n self.onLayoutEnd?.();\n return;\n }\n\n const { nodeSize, nodeSpacing } = self;\n\n const layoutNodes: INode[] = [];\n let maxNodeSize: number;\n let maxNodeSpacing: number = 0;\n if (isArray(nodeSize)) {\n maxNodeSize = Math.max(nodeSize[0], nodeSize[1]);\n } else {\n maxNodeSize = nodeSize;\n }\n if (isArray(nodeSpacing)) {\n maxNodeSpacing = Math.max(nodeSpacing[0], nodeSpacing[1]);\n } else if (isNumber(nodeSpacing)) {\n maxNodeSpacing = nodeSpacing;\n }\n nodes.forEach((node) => {\n layoutNodes.push(node);\n let nodeSize: number = maxNodeSize;\n if (isArray(node.size)) {\n nodeSize = Math.max(node.size[0], node.size[1]);\n } else if (isNumber(node.size)) {\n nodeSize = node.size;\n } else if (isObject(node.size)) {\n nodeSize = Math.max((node.size as any).width, (node.size as any).height);\n }\n maxNodeSize = Math.max(maxNodeSize, nodeSize);\n\n if (isFunction(nodeSpacing)) {\n maxNodeSpacing = Math.max(nodeSpacing(node), maxNodeSpacing);\n }\n });\n\n self.clockwise =\n self.counterclockwise !== undefined\n ? !self.counterclockwise\n : self.clockwise;\n\n // layout\n const nodeMap: NodeMap = {};\n const indexMap: IndexMap = {};\n layoutNodes.forEach((node, i) => {\n nodeMap[node.id] = node;\n indexMap[node.id] = i;\n });\n\n // get the node degrees\n if (\n self.sortBy === \"degree\" ||\n !isString(self.sortBy) ||\n (layoutNodes[0] as any)[self.sortBy] === undefined\n ) {\n self.sortBy = \"degree\";\n if (!isNumber(nodes[0].degree)) {\n const values = getDegree(nodes.length, indexMap, edges);\n layoutNodes.forEach((node, i) => {\n node.degree = values[i].all;\n });\n }\n }\n // sort nodes by value\n layoutNodes.sort(\n (n1: INode, n2: INode) =>\n (n2 as any)[self.sortBy] - (n1 as any)[self.sortBy]\n );\n\n self.maxValueNode = layoutNodes[0];\n\n self.maxLevelDiff =\n self.maxLevelDiff || (self.maxValueNode as any)[self.sortBy] / 4;\n\n // put the values into levels\n const levels: any[] = [[]];\n let currentLevel = levels[0];\n layoutNodes.forEach((node) => {\n if (currentLevel.length > 0) {\n const diff = Math.abs(\n currentLevel[0][self.sortBy] - (node as any)[self.sortBy]\n );\n if (self.maxLevelDiff && diff >= self.maxLevelDiff) {\n currentLevel = [];\n levels.push(currentLevel);\n }\n }\n currentLevel.push(node);\n });\n\n // create positions for levels\n let minDist = maxNodeSize + (maxNodeSpacing || self.minNodeSpacing); // min dist between nodes\n if (!self.preventOverlap) {\n // then strictly constrain to bb\n const firstLvlHasMulti = levels.length > 0 && levels[0].length > 1;\n const maxR = Math.min(self.width, self.height) / 2 - minDist;\n const rStep = maxR / (levels.length + (firstLvlHasMulti ? 1 : 0));\n\n minDist = Math.min(minDist, rStep);\n }\n\n // find the metrics for each level\n let r = 0;\n levels.forEach((level) => {\n let sweep = self.sweep;\n if (sweep === undefined) {\n sweep = 2 * Math.PI - (2 * Math.PI) / level.length;\n }\n const dTheta = (level.dTheta = sweep / Math.max(1, level.length - 1));\n\n // calculate the radius\n if (level.length > 1 && self.preventOverlap) {\n // but only if more than one node (can't overlap)\n const dcos = Math.cos(dTheta) - Math.cos(0);\n const dsin = Math.sin(dTheta) - Math.sin(0);\n const rMin = Math.sqrt(\n (minDist * minDist) / (dcos * dcos + dsin * dsin)\n ); // s.t. no nodes overlapping\n\n r = Math.max(rMin, r);\n }\n level.r = r;\n r += minDist;\n });\n\n if (self.equidistant) {\n let rDeltaMax = 0;\n let rr = 0;\n for (let i = 0; i < levels.length; i++) {\n const level = levels[i];\n const rDelta = level.r - rr;\n rDeltaMax = Math.max(rDeltaMax, rDelta);\n }\n rr = 0;\n levels.forEach((level, i) => {\n if (i === 0) {\n rr = level.r;\n }\n level.r = rr;\n rr += rDeltaMax;\n });\n }\n\n // calculate the node positions\n levels.forEach((level) => {\n const dTheta = level.dTheta;\n const rr = level.r;\n level.forEach((node: INode, j: number) => {\n const theta = self.startAngle + (self.clockwise ? 1 : -1) * dTheta * j;\n node.x = center[0] + rr * Math.cos(theta);\n node.y = center[1] + rr * Math.sin(theta);\n });\n });\n\n if (self.onLayoutEnd) self.onLayoutEnd();\n\n return {\n nodes,\n edges\n };\n }\n\n public getType() {\n return \"concentric\";\n }\n}\n","/** layout message type */\nexport const LAYOUT_MESSAGE = {\n // run layout\n RUN: \"LAYOUT_RUN\",\n // layout ended with success\n END: \"LAYOUT_END\",\n // layout error\n ERROR: \"LAYOUT_ERROR\",\n // layout tick, used in force directed layout\n TICK: \"LAYOUT_TICK\",\n GPURUN: \"GPU_LAYOUT_RUN\",\n GPUEND: \"GPU_LAYOUT_END\"\n};\n\nexport const FORCE_LAYOUT_TYPE_MAP: { [key: string]: boolean } = {\n 'gForce': true,\n 'force2': true,\n 'fruchterman': true,\n 'forceAtlas2': true,\n 'force': true,\n 'graphin-force': true,\n};","/**\n * @fileOverview dagre layout\n * @author shiwu.wyy@antfin.com\n */\n\nimport { Edge, OutNode, DagreLayoutOptions, PointTuple, Point, Node } from \"./types\";\nimport dagre from \"./dagre/index\";\nimport { isArray, isNumber, isObject, getEdgeTerminal, getFunc, isString } from \"../util\";\nimport { Base } from \"./base\";\nimport { Graph as DagreGraph } from './dagre/graph';\n\n/**\n * 层次布局\n */\nexport class DagreLayout extends Base {\n /** layout 方向, 可选 TB, BT, LR, RL */\n public rankdir: \"TB\" | \"BT\" | \"LR\" | \"RL\" = \"TB\";\n\n /** 节点对齐方式,可选 UL, UR, DL, DR */\n public align: undefined | \"UL\" | \"UR\" | \"DL\" | \"DR\";\n\n /** 布局的起始(左上角)位置 */\n public begin: PointTuple;\n\n /** 节点大小 */\n public nodeSize: number | number[] | undefined;\n\n /** 节点水平间距(px) */\n public nodesepFunc: ((d?: any) => number) | undefined;\n\n /** 每一层节点之间间距 */\n public ranksepFunc: ((d?: any) => number) | undefined;\n\n /** 节点水平间距(px) */\n public nodesep: number = 50;\n\n /** 每一层节点之间间距 */\n public ranksep: number = 50;\n\n /** 是否保留布局连线的控制点 */\n public controlPoints: boolean = false;\n\n /** 每层节点是否根据节点数据中的 comboId 进行排序,以防止同层 combo 重叠 */\n public sortByCombo: boolean = false;\n\n /** 是否保留每条边上的dummy node */\n public edgeLabelSpace: boolean = true;\n\n /** 是否基于 dagre 进行辐射布局,若是,第一层节点将被放置在最内环上,其余层依次向外辐射 */\n public radial: boolean = false;\n\n /** radial 下生效,中心节点,被指定的节点及其同层节点将被放置在最内环上 */\n public focusNode: string | Node | null;\n\n /** 给定的节点顺序,配合keepNodeOrder使用 */\n public nodeOrder: string[];\n\n /** 上次的布局结果 */\n public preset: {\n nodes: OutNode[],\n edges: any[],\n };\n\n public nodes: OutNode[] = [];\n\n public edges: Edge[] = [];\n\n /** 迭代结束的回调函数 */\n public onLayoutEnd: () => void = () => {};\n\n constructor(options?: DagreLayoutOptions) {\n super();\n this.updateCfg(options);\n }\n\n public getDefaultCfg() {\n return {\n rankdir: \"TB\", // layout 方向, 可选 TB, BT, LR, RL\n align: undefined, // 节点对齐方式,可选 UL, UR, DL, DR\n nodeSize: undefined, // 节点大小\n nodesepFunc: undefined, // 节点水平间距(px)\n ranksepFunc: undefined, // 每一层节点之间间距\n nodesep: 50, // 节点水平间距(px)\n ranksep: 50, // 每一层节点之间间距\n controlPoints: false, // 是否保留布局连线的控制点\n radial: false, // 是否基于 dagre 进行辐射布局\n focusNode: null, // radial 为 true 时生效,关注的节点\n };\n }\n\n public layoutNode = (nodeId: string) => {\n const self = this;\n const { nodes } = self;\n const node = nodes.find((node) => node.id === nodeId);\n if (node) {\n const layout = node.layout !== false;\n return layout;\n }\n return true;\n }\n\n /**\n * 执行布局\n */\n public execute() {\n const self = this;\n const { nodes, nodeSize, rankdir, combos, begin, radial, comboEdges = [], vedges = [] } = self;\n if (!nodes) return;\n const edges = (self.edges as any[]) || [];\n const g = new DagreGraph({\n multigraph: true,\n compound: true,\n });\n\n // collect the nodes in their combo, to create virtual edges for comboEdges\n const nodeComboMap = {} as any;\n nodes.forEach(node => {\n if (!node.comboId) return;\n nodeComboMap[node.comboId] = nodeComboMap[node.comboId] || [];\n nodeComboMap[node.comboId].push(node.id);\n })\n\n let nodeSizeFunc: (d?: any) => number[];\n if (!nodeSize) {\n nodeSizeFunc = (d: any) => {\n if (d.size) {\n if (isArray(d.size)) {\n return d.size;\n } if (isObject(d.size)) {\n return [d.size.width || 40, d.size.height || 40];\n }\n return [d.size, d.size];\n }\n return [40, 40];\n };\n } else if (isArray(nodeSize)) {\n nodeSizeFunc = () => nodeSize;\n } else {\n nodeSizeFunc = () => [nodeSize, nodeSize];\n }\n const ranksepfunc = getFunc(self.ranksep, 50, self.ranksepFunc);\n const nodesepfunc = getFunc(self.nodesep, 50, self.nodesepFunc);\n let horisep: Function = nodesepfunc;\n let vertisep: Function = ranksepfunc;\n\n if (rankdir === \"LR\" || rankdir === \"RL\") {\n horisep = ranksepfunc;\n vertisep = nodesepfunc;\n }\n g.setDefaultEdgeLabel(() => ({}));\n g.setGraph(self);\n\n const comboMap: { [key: string]: any } = {};\n\n if (this.sortByCombo && combos) {\n combos.forEach((combo) => {\n comboMap[combo.id] = combo;\n // regard the collapsed combo as a node\n if (combo.collapsed) {\n const size = nodeSizeFunc(combo);\n const verti = vertisep(combo);\n const hori = horisep(combo);\n const width = size[0] + 2 * hori;\n const height = size[1] + 2 * verti;\n g.setNode(combo.id, { width, height });\n }\n if (!combo.parentId) return;\n if (!comboMap[combo.parentId]) {\n g.setNode(combo.parentId, {});\n }\n g.setParent(combo.id, combo.parentId);\n });\n }\n\n nodes.filter((node) => node.layout !== false).forEach((node) => {\n const size = nodeSizeFunc(node);\n const verti = vertisep(node);\n const hori = horisep(node);\n const width = size[0] + 2 * hori;\n const height = size[1] + 2 * verti;\n const layer = node.layer;\n if (isNumber(layer)) {\n // 如果有layer属性,加入到node的label中\n g.setNode(node.id, { width, height, layer });\n } else {\n g.setNode(node.id, { width, height });\n }\n\n if (this.sortByCombo && node.comboId) {\n if (!comboMap[node.comboId]) {\n comboMap[node.comboId] = { id: node.comboId };\n g.setNode(node.comboId, {});\n }\n g.setParent(node.id, node.comboId);\n }\n });\n \n\n\n edges.forEach((edge) => {\n // dagrejs Wiki https://github.com/dagrejs/dagre/wiki#configuring-the-layout\n const source = getEdgeTerminal(edge, 'source');\n const target = getEdgeTerminal(edge, 'target');\n if (this.layoutNode(source) && this.layoutNode(target)) {\n g.setEdge(source, target, {\n weight: edge.weight || 1,\n });\n }\n });\n\n // create virtual edges from node to node for comboEdges\n (comboEdges?.concat(vedges || []))?.forEach((comboEdge: any) => {\n const { source, target } = comboEdge;\n const sources = comboMap[source]?.collapsed ? [source] : nodeComboMap[source] || [source];\n const targets = comboMap[target]?.collapsed ? [target] : nodeComboMap[target] || [target];\n sources.forEach((s: string) => {\n targets.forEach((t: string) => {\n g.setEdge(s, t, {\n weight: comboEdge.weight || 1,\n });\n })\n })\n })\n\n // 考虑增量图中的原始图\n let prevGraph: DagreGraph | undefined = undefined;\n if (self.preset?.nodes) {\n prevGraph = new DagreGraph({\n multigraph: true,\n compound: true,\n });\n self.preset.nodes.forEach((node) => {\n prevGraph?.setNode(node.id, node);\n });\n }\n\n dagre.layout(g, {\n prevGraph,\n edgeLabelSpace: self.edgeLabelSpace,\n keepNodeOrder: Boolean(!!self.nodeOrder),\n nodeOrder: self.nodeOrder,\n });\n\n const dBegin = [0, 0];\n if (begin) {\n let minX = Infinity;\n let minY = Infinity;\n g.nodes().forEach((node) => {\n const coord = g.node(node)!;\n if (minX > coord.x!) minX = coord.x!;\n if (minY > coord.y!) minY = coord.y!;\n });\n g.edges().forEach((edge) => {\n const coord = g.edge(edge)!;\n coord.points?.forEach((point: any) => {\n if (minX > point.x) minX = point.x;\n if (minY > point.y) minY = point.y;\n });\n });\n dBegin[0] = begin[0] - minX;\n dBegin[1] = begin[1] - minY;\n }\n\n // 变形为辐射\n if (radial) {\n const { focusNode, ranksep, getRadialPos } = this;\n const focusId = isString(focusNode) ? focusNode: focusNode?.id;\n const focusLayer = focusId ? g.node(focusId)?._rank : 0;\n const layers: any[] = [];\n const isHorizontal = rankdir === 'LR' || rankdir === 'RL';\n const dim = isHorizontal ? 'y' : 'x';\n const sizeDim = isHorizontal ? 'height' : 'width';\n // 找到整个图作为环的坐标维度(dim)的最大、最小值,考虑节点宽度\n let min = Infinity;\n let max = -Infinity;\n g.nodes().forEach((node: any) => {\n const coord = g.node(node)! as any;\n const i = nodes.findIndex((it) => it.id === node);\n if (!nodes[i]) return;\n const currentNodesep = nodesepfunc(nodes[i]);\n\n if (focusLayer === 0) {\n if (!layers[coord._rank]) layers[coord._rank] = { nodes: [], totalWidth: 0, maxSize: -Infinity };\n layers[coord._rank].nodes.push(node);\n layers[coord._rank].totalWidth += currentNodesep * 2 + coord[sizeDim];\n if (layers[coord._rank].maxSize < Math.max(coord.width, coord.height)) layers[coord._rank].maxSize = Math.max(coord.width, coord.height);\n } else {\n const diffLayer = coord._rank - focusLayer!;\n if (diffLayer === 0) {\n if (!layers[diffLayer]) layers[diffLayer] = { nodes: [], totalWidth: 0, maxSize: -Infinity };\n layers[diffLayer].nodes.push(node);\n layers[diffLayer].totalWidth += currentNodesep * 2 + coord[sizeDim];\n if (layers[diffLayer].maxSize < Math.max(coord.width, coord.height)) layers[diffLayer].maxSize = Math.max(coord.width, coord.height);\n } else {\n const diffLayerAbs = Math.abs(diffLayer);\n if (!layers[diffLayerAbs]) layers[diffLayerAbs] = { left: [], right: [], totalWidth: 0, maxSize: -Infinity };\n layers[diffLayerAbs].totalWidth += currentNodesep * 2 + coord[sizeDim];\n if (layers[diffLayerAbs].maxSize < Math.max(coord.width, coord.height)) layers[diffLayerAbs].maxSize = Math.max(coord.width, coord.height);\n if (diffLayer < 0) {\n layers[diffLayerAbs].left.push(node);\n } else {\n layers[diffLayerAbs].right.push(node);\n }\n }\n }\n const leftPos = coord[dim] - coord[sizeDim] / 2 - currentNodesep;\n const rightPos = coord[dim] + coord[sizeDim] / 2 + currentNodesep;\n if (leftPos < min) min = leftPos;\n if (rightPos > max) max = rightPos;\n });\n // const padding = (max - min) * 0.1; // TODO\n // \b初始化为第一圈的半径,后面根据每层 ranksep 叠加\n let radius = ranksep || 50; // TODO;\n const radiusMap: any = {};\n\n // 扩大最大最小值范围,以便为环上留出接缝处的空隙\n const rangeLength = (max - min) / 0.9;\n const range = [ (min + max - rangeLength) * 0.5 , (min + max + rangeLength) * 0.5 ];\n\n // 根据半径、分布比例,计算节点在环上的位置,并返回该组节点中最大的 ranksep 值\n const processNodes = (layerNodes: any, radius: number, propsMaxRanksep = -Infinity, arcRange = [0, 1]) => {\n let maxRanksep = propsMaxRanksep;\n layerNodes.forEach((node: any) => {\n const coord = g.node(node);\n radiusMap[node] = radius;\n // 获取变形为 radial 后的直角坐标系坐标\n const { x: newX, y: newY } = getRadialPos(coord![dim]!, range, rangeLength, radius, arcRange);\n // 将新坐标写入源数据\n const i = nodes.findIndex((it) => it.id === node);\n if (!nodes[i]) return;\n nodes[i].x = newX + dBegin[0];\n nodes[i].y = newY + dBegin[1];\n // @ts-ignore: pass layer order to data for increment layout use\n nodes[i]._order = coord._order;\n\n // 找到本层最大的一个 ranksep,作为下一层与本层的间隙,叠加到下一层的半径上\n const currentNodeRanksep = ranksepfunc(nodes[i]);\n if (maxRanksep < currentNodeRanksep) maxRanksep = currentNodeRanksep;\n });\n return maxRanksep;\n };\n\n let isFirstLevel = true;\n const lastLayerMaxNodeSize = 0;\n layers.forEach((layerNodes) => {\n if (!layerNodes?.nodes?.length && !layerNodes?.left?.length && !layerNodes?.right?.length) return;\n // 第一层只有一个节点,直接放在圆心,初始半径设定为 0\n if (isFirstLevel && layerNodes.nodes.length === 1) {\n // 将新坐标写入源数据\n const i = nodes.findIndex((it) => it.id === layerNodes.nodes[0]);\n if (i <= -1) return;\n nodes[i].x = dBegin[0];\n nodes[i].y = dBegin[1];\n radiusMap[layerNodes.nodes[0]] = 0;\n radius = ranksepfunc(nodes[i]);\n isFirstLevel = false;\n return;\n }\n\n // 为接缝留出空隙,半径也需要扩大\n radius = Math.max(radius, layerNodes.totalWidth / (2 * Math.PI)); // / 0.9;\n \n let maxRanksep = -Infinity;\n if (focusLayer === 0 || layerNodes.nodes?.length) {\n maxRanksep = processNodes(layerNodes.nodes, radius, maxRanksep, [0, 1]); // 0.8\n } else {\n const leftRatio = layerNodes.left?.length / (layerNodes.left?.length + layerNodes.right?.length);\n maxRanksep= processNodes(layerNodes.left, radius, maxRanksep, [0, leftRatio]); // 接缝留出 0.05 的缝隙\n maxRanksep = processNodes(layerNodes.right, radius, maxRanksep, [leftRatio + 0.05, 1]); // 接缝留出 0.05 的缝隙\n }\n radius += maxRanksep;\n isFirstLevel = false;\n lastLayerMaxNodeSize - layerNodes.maxSize;\n });\n g.edges().forEach((edge: any) => {\n const coord = g.edge(edge);\n const i = edges.findIndex((it) => {\n const source = getEdgeTerminal(it, 'source');\n const target = getEdgeTerminal(it, 'target');\n return source === edge.v && target === edge.w;\n });\n if (i <= -1) return;\n if ((self.edgeLabelSpace) && self.controlPoints && edges[i].type !== \"loop\") {\n const otherDim = dim === 'x' ? 'y' : 'x';\n const controlPoints = coord?.points?.slice(1, coord.points.length - 1);\n const newControlPoints: Point[] = [];\n const sourceOtherDimValue = g.node(edge.v)?.[otherDim]!;\n const otherDimDist = sourceOtherDimValue - g.node(edge.w)?.[otherDim]!;\n const sourceRadius = radiusMap[edge.v];\n const radiusDist = sourceRadius - radiusMap[edge.w];\n controlPoints?.forEach((point: any) => {\n // 根据该边的起点、终点半径,及起点、终点、控制点位置关系,确定该控制点的半径\n const cRadius = (point[otherDim] - sourceOtherDimValue) / otherDimDist * radiusDist + sourceRadius;\n // 获取变形为 radial 后的直角坐标系坐标\n const newPos = getRadialPos(point[dim], range, rangeLength, cRadius);\n newControlPoints.push({\n x: newPos.x + dBegin[0],\n y: newPos.y + dBegin[1]\n });\n });\n edges[i].controlPoints = newControlPoints;\n }\n });\n } else {\n g.nodes().forEach((node: any) => {\n const coord = g.node(node)!;\n if (!coord) return;\n let ndata: any = nodes.find((it) => it.id === node);\n if (!ndata) {\n ndata = combos?.find((it) => it.id === node);\n }\n if (!ndata) return;\n ndata.x = coord.x! + dBegin[0];\n ndata.y = coord.y! + dBegin[1];\n // @ts-ignore: pass layer order to data for increment layout use\n ndata._order = coord._order;\n });\n g.edges().forEach((edge: any) => {\n const coord = g.edge(edge);\n const i = edges.findIndex((it) => {\n const source = getEdgeTerminal(it, 'source');\n const target = getEdgeTerminal(it, 'target');\n return source === edge.v && target === edge.w;\n });\n if (i <= -1) return;\n if ((self.edgeLabelSpace) && self.controlPoints && edges[i].type !== \"loop\") {\n edges[i].controlPoints = coord?.points?.slice(1, coord.points.length - 1); // 去掉头尾\n edges[i].controlPoints.forEach((point: any) => {\n point.x += dBegin[0];\n point.y += dBegin[1];\n });\n }\n });\n }\n\n if (self.onLayoutEnd) self.onLayoutEnd();\n return {\n nodes,\n edges,\n };\n }\n\n private getRadialPos(dimValue: number, range: number[], rangeLength: number, radius: number, arcRange: number[] = [0, 1]) {\n // dimRatio 占圆弧的比例\n let dimRatio = (dimValue - range[0]) / rangeLength;\n // 再进一步归一化到指定的范围上\n dimRatio = dimRatio * (arcRange[1] - arcRange[0]) + arcRange[0];\n // 使用最终归一化后的范围计算角度\n const angle = dimRatio * 2 * Math.PI; // 弧度\n // 将极坐标系转换为直角坐标系\n return {\n x: Math.cos(angle) * radius,\n y: Math.sin(angle) * radius\n };\n }\n\n public getType() {\n return \"dagre\";\n }\n}","import { Graph as RawGraph } from \"@antv/graphlib\";\n\nexport class Graph extends RawGraph<\n string,\n Node> & NodeConfig,\n Partial,\n Partial\n> {}\n\nexport interface GraphLabel {\n width?: number | undefined;\n height?: number | undefined;\n compound?: boolean | undefined;\n rankdir?: string | undefined;\n align?: string | undefined;\n nodesep?: number | undefined;\n edgesep?: number | undefined;\n ranksep?: number | undefined;\n marginx?: number | undefined;\n marginy?: number | undefined;\n acyclicer?: string | undefined;\n ranker?: string | undefined;\n maxRank?: number;\n nestingRoot?: string;\n nodeRankFactor?: number;\n dummyChains?: string[];\n root?: string;\n}\n\nexport interface NodeConfig {\n width?: number | undefined;\n height?: number | undefined;\n}\n\nexport interface EdgeConfig {\n minlen?: number | undefined;\n weight?: number | undefined;\n width?: number | undefined;\n height?: number | undefined;\n lablepos?: \"l\" | \"c\" | \"r\" | undefined;\n labeloffest?: number | undefined;\n}\n\nexport interface CustomConfig {\n edgeLabelSpace?: boolean | undefined;\n keepNodeOrder?: boolean | undefined;\n nodeOrder?: string[] | undefined;\n prevGraph?: Graph | undefined;\n}\n\nexport type layout = (\n graph: Graph,\n layout?: GraphLabel & NodeConfig & EdgeConfig & CustomConfig\n) => void;\n\nexport interface Edge {\n v: string;\n w: string;\n name?: string | undefined;\n label?: any;\n e?: any;\n}\n\nexport interface GraphEdge {\n points: { x: number; y: number }[];\n [key: string]: any;\n}\n\nexport type Node = T & {\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n class?: string | undefined;\n label?: any;\n padding?: number | undefined;\n paddingX?: number | undefined;\n paddingY?: number | undefined;\n rx?: number | undefined;\n ry?: number | undefined;\n shape?: string | undefined;\n order?: number;\n rank?: number;\n in?: number;\n out?: number;\n fixorder?: number;\n _order?: number;\n _rank?: number;\n dummy?: string;\n selfEdges?: any;\n borderTop?: any;\n borderBottom?: any;\n borderLeft?: any;\n borderRight?: any;\n minRank?: number;\n maxRank?: number;\n layer?: number;\n edgeLabel?: any;\n edgeObj?: Edge;\n borderType?: string;\n labelpos?: string;\n parent?: string;\n lim?: number;\n};\n","/*\nCopyright (c) 2012-2014 Chris Pettitt\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\nimport layout from './src/layout';\nimport { time, notime } from './src/util';\n\nexport default {\n layout,\n util: {\n time,\n notime\n },\n};","import { Edge, Graph } from \"../graph\";\nimport greedyFAS from \"./greedy-fas\";\n\nconst run = (g: Graph) => {\n const weightFn = (g: Graph) => {\n return (e: Edge) => g.edge(e)?.weight || 1;\n };\n const fas =\n g.graph().acyclicer === \"greedy\" ? greedyFAS(g, weightFn(g)) : dfsFAS(g);\n fas?.forEach((e: Edge) => {\n const label = g.edge(e)!;\n g.removeEdgeObj(e);\n label.forwardName = e.name;\n label.reversed = true;\n g.setEdge(e.w, e.v, label, `rev-${Math.random()}`);\n });\n};\n\nconst dfsFAS = (g: Graph) => {\n const fas: Edge[] = [];\n const stack: Record = {};\n const visited: Record = {};\n\n const dfs = (v: string) => {\n if (visited[v]) {\n return;\n }\n visited[v] = true;\n stack[v] = true;\n g.outEdges(v)?.forEach((e) => {\n if (stack[e.w]) {\n fas.push(e);\n } else {\n dfs(e.w);\n }\n });\n delete stack[v];\n };\n\n g.nodes().forEach(dfs);\n return fas;\n};\n\nconst undo = (g: Graph) => {\n g.edges().forEach((e) => {\n const label = g.edge(e)!;\n if (label.reversed) {\n g.removeEdgeObj(e);\n\n const forwardName = label.forwardName;\n delete label.reversed;\n delete label.forwardName;\n g.setEdge(e.w, e.v, label, forwardName);\n }\n });\n};\n\nexport default { run, undo };\n","import { Graph, Node } from \"../graph\";\nimport { addDummyNode } from \"./util\";\n\nconst addBorderSegments = (g: Graph) => {\n const dfs = (v: string) => {\n const children = g.children(v);\n const node = g.node(v)!;\n if (children?.length) {\n children.forEach((child) => dfs(child));\n }\n\n if (node.hasOwnProperty(\"minRank\")) {\n node.borderLeft = [];\n node.borderRight = [];\n for (\n let rank = node.minRank!, maxRank = node.maxRank! + 1;\n rank < maxRank;\n rank += 1\n ) {\n addBorderNode(g, \"borderLeft\", \"_bl\", v, node, rank);\n addBorderNode(g, \"borderRight\", \"_br\", v, node, rank);\n }\n }\n };\n\n g.children()?.forEach((child) => dfs(child));\n};\n\nconst addBorderNode = (\n g: Graph,\n prop: string,\n prefix: string,\n sg: string,\n sgNode: Node>,\n rank: number\n) => {\n const label = { rank, borderType: prop, width: 0, height: 0 };\n const prev = sgNode[prop][rank - 1];\n const curr = addDummyNode(g, \"border\", label, prefix);\n sgNode[prop][rank] = curr;\n g.setParent(curr, sg);\n if (prev) {\n g.setEdge(prev, curr, { weight: 1 });\n }\n};\n\nexport default addBorderSegments;\n","import { Graph } from \"../graph\";\n\nconst adjust = (g: Graph) => {\n const rankDir = g.graph().rankdir?.toLowerCase();\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapWidthHeight(g);\n }\n};\n\nconst undo = (g: Graph) => {\n const rankDir = g.graph().rankdir?.toLowerCase();\n if (rankDir === \"bt\" || rankDir === \"rl\") {\n reverseY(g);\n }\n\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapXY(g);\n swapWidthHeight(g);\n }\n};\n\nconst swapWidthHeight = (g: Graph) => {\n g.nodes().forEach((v) => {\n swapWidthHeightOne(g.node(v)!);\n });\n g.edges().forEach((e) => {\n swapWidthHeightOne(g.edge(e)!);\n });\n};\n\nconst swapWidthHeightOne = (attrs: { width?: number; height?: number }) => {\n const w = attrs.width;\n attrs.width = attrs.height;\n attrs.height = w;\n};\n\nconst reverseY = (g: Graph) => {\n g.nodes().forEach((v) => {\n reverseYOne(g.node(v)!);\n });\n\n g.edges().forEach((e) => {\n const edge = g.edge(e)!;\n edge.points?.forEach((point) => reverseYOne(point));\n if (edge.hasOwnProperty(\"y\")) {\n reverseYOne(edge as { y: number });\n }\n });\n};\n\nconst reverseYOne = (attrs: { y?: number }) => {\n if (attrs?.y) {\n attrs.y = -attrs.y;\n }\n};\n\nconst swapXY = (g: Graph) => {\n g.nodes().forEach((v) => {\n swapXYOne(g.node(v));\n });\n\n g.edges().forEach((e) => {\n const edge = g.edge(e)!;\n edge.points?.forEach((point) => swapXYOne(point));\n if (edge.hasOwnProperty(\"x\")) {\n swapXYOne(edge);\n }\n });\n};\n\nconst swapXYOne = (attrs: any) => {\n const x = attrs.x;\n attrs.x = attrs.y;\n attrs.y = x;\n};\n\nexport default { adjust, undo };\n","const filterOutLinks = (k: string, v: string) => {\n if (k !== \"next\" && k !== \"prev\") {\n return v;\n }\n};\n\ntype LinkedNode = {\n prev?: LinkedNode;\n next?: LinkedNode;\n} & T;\n\nconst unlink = (entry: LinkedNode) => {\n entry.prev!.next = entry.next;\n entry.next!.prev = entry.prev;\n delete entry.next;\n delete entry.prev;\n};\n\nexport default class List {\n // a shortcut that next is head and prev is tail\n public shortcut: LinkedNode;\n\n constructor() {\n const shortcut: LinkedNode = {};\n shortcut.prev = shortcut;\n shortcut.next = shortcut.prev;\n this.shortcut = shortcut;\n }\n\n public dequeue() {\n const shortcut = this.shortcut;\n const entry = shortcut.prev;\n if (entry && entry !== shortcut) {\n unlink(entry);\n return entry;\n }\n }\n\n public enqueue(entry: LinkedNode) {\n const shortcut = this.shortcut;\n if (entry.prev && entry.next) {\n unlink(entry);\n }\n entry.next = shortcut.next;\n shortcut.next!.prev = entry;\n shortcut.next = entry;\n entry.prev = shortcut;\n }\n\n public toString() {\n const strs = [];\n const sentinel = this.shortcut;\n let curr = sentinel.prev;\n while (curr !== sentinel) {\n strs.push(JSON.stringify(curr, filterOutLinks));\n curr = curr?.prev;\n }\n return `[${strs.join(\", \")}]`;\n }\n}\n","import RawList from \"./data/list\";\nimport { Edge, Graph } from \"../graph\";\nimport { Graph as RawGraph } from \"@antv/graphlib\";\n\ntype StateNode = {\n v: string;\n w?: string;\n in: number;\n out: number;\n prev?: StateNode;\n next?: StateNode;\n};\nclass List extends RawList {}\n\nclass StateGraph extends RawGraph {}\n\n/*\n * A greedy heuristic for finding a feedback arc set for a graph. A feedback\n * arc set is a set of edges that can be removed to make a graph acyclic.\n * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, \"A fast and\n * effective heuristic for the feedback arc set problem.\" This implementation\n * adjusts that from the paper to allow for weighted edges.\n */\n\nconst DEFAULT_WEIGHT_FN = () => 1;\n\nconst greedyFAS = (g: Graph, weightFn?: (e: Edge) => number) => {\n if (g.nodeCount() <= 1) return [];\n const state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);\n const results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);\n\n return results.map((e) => g.outEdges(e.v, e.w))?.flat();\n};\n\nconst doGreedyFAS = (g: StateGraph, buckets: List[], zeroIdx: number) => {\n let results: StateNode[] = [];\n const sources = buckets[buckets.length - 1];\n const sinks = buckets[0];\n\n let entry;\n while (g.nodeCount()) {\n while ((entry = sinks.dequeue())) {\n removeNode(g, buckets, zeroIdx, entry);\n }\n while ((entry = sources.dequeue())) {\n removeNode(g, buckets, zeroIdx, entry);\n }\n if (g.nodeCount()) {\n for (let i = buckets.length - 2; i > 0; --i) {\n entry = buckets[i].dequeue();\n if (entry) {\n results = results.concat(\n removeNode(g, buckets, zeroIdx, entry, true)!\n );\n break;\n }\n }\n }\n }\n\n return results;\n};\n\nconst removeNode = (\n g: StateGraph,\n buckets: List[],\n zeroIdx: number,\n entry: StateNode,\n collectPredecessors?: boolean\n) => {\n const results: StateNode[] = [];\n\n g.inEdges(entry.v)?.forEach((edge) => {\n const weight = g.edge(edge)!;\n const uEntry = g.node(edge.v)!;\n\n if (collectPredecessors) {\n // this result not really care about in or out\n results.push({ v: edge.v, w: edge.w, in: 0, out: 0 });\n }\n if (uEntry.out === undefined) uEntry.out = 0;\n uEntry.out -= weight;\n assignBucket(buckets, zeroIdx, uEntry);\n });\n\n g.outEdges(entry.v)?.forEach((edge) => {\n const weight = g.edge(edge)!;\n const w = edge.w;\n const wEntry = g.node(w)!;\n if (wEntry.in === undefined) wEntry.in = 0;\n wEntry.in -= weight;\n assignBucket(buckets, zeroIdx, wEntry);\n });\n\n g.removeNode(entry.v);\n\n return collectPredecessors ? results : undefined;\n};\n\nconst buildState = (g: Graph, weightFn?: (param: any) => number) => {\n const fasGraph = new StateGraph();\n let maxIn = 0;\n let maxOut = 0;\n\n g.nodes().forEach((v) => {\n fasGraph.setNode(v, { v, in: 0, out: 0 });\n });\n\n // Aggregate weights on nodes, but also sum the weights across multi-edges\n // into a single edge for the fasGraph.\n g.edges().forEach((e) => {\n const prevWeight = fasGraph.edge(e) || 0;\n const weight = weightFn?.(e) || 1;\n const edgeWeight = prevWeight + weight;\n fasGraph.setEdge(e.v, e.w, edgeWeight);\n maxOut = Math.max(maxOut, (fasGraph.node(e.v)!.out += weight));\n maxIn = Math.max(maxIn, (fasGraph.node(e.w)!.in += weight));\n });\n\n const buckets: List[] = [];\n const rangeMax = maxOut + maxIn + 3;\n for (let i = 0; i < rangeMax; i++) {\n buckets.push(new List());\n }\n const zeroIdx = maxIn + 1;\n\n fasGraph.nodes().forEach((v: string) => {\n assignBucket(buckets, zeroIdx, fasGraph.node(v)!);\n });\n\n return { buckets, zeroIdx, graph: fasGraph };\n};\n\nconst assignBucket = (buckets: List[], zeroIdx: number, entry: StateNode) => {\n if (!entry.out) {\n buckets[0].enqueue(entry);\n } else if (!entry[\"in\"]) {\n buckets[buckets.length - 1].enqueue(entry);\n } else {\n buckets[entry.out - entry[\"in\"] + zeroIdx].enqueue(entry);\n }\n};\n\nexport default greedyFAS;\n","import acyclic from \"./acyclic\";\nimport normalize from \"./normalize\";\nimport rank from \"./rank\";\nimport {\n normalizeRanks,\n removeEmptyRanks,\n time as usetime,\n notime,\n asNonCompoundGraph,\n addDummyNode,\n intersectRect,\n buildLayerMatrix,\n} from \"./util\";\nimport parentDummyChains from \"./parent-dummy-chains\";\nimport nestingGraph from \"./nesting-graph\";\nimport addBorderSegments from \"./add-border-segments\";\nimport coordinateSystem from \"./coordinate-system\";\nimport order from \"./order\";\nimport position from \"./position\";\nimport initDataOrder from \"./order/init-data-order\";\nimport { Graph, Node } from \"../graph\";\n\nconst layout = (g: Graph, opts?: any) => {\n const time = opts && opts.debugTiming ? usetime : notime;\n time(\"layout\", () => {\n // 如果在原图基础上修改,继承原图的order结果\n if (opts && !opts.keepNodeOrder && opts.prevGraph) {\n time(\" inheritOrder\", () => {\n inheritOrder(g, opts.prevGraph);\n });\n }\n const layoutGraph: any = time(\" buildLayoutGraph\", () => {\n return buildLayoutGraph(g);\n });\n // 控制是否为边的label留位置(这会影响是否在边中间添加dummy node)\n if (!(opts && opts.edgeLabelSpace === false)) {\n time(\" makeSpaceForEdgeLabels\", () => {\n makeSpaceForEdgeLabels(layoutGraph);\n });\n }\n // TODO: 暂时处理层级设置不正确时的异常报错,提示设置正确的层级\n try {\n time(\" runLayout\", () => {\n runLayout(layoutGraph, time, opts);\n });\n } catch (e) {\n if (\n e.message ===\n \"Not possible to find intersection inside of the rectangle\"\n ) {\n console.error(\n \"The following error may be caused by improper layer setting, please make sure your manual layer setting does not violate the graph's structure:\\n\",\n e\n );\n return;\n }\n throw e;\n }\n time(\" updateInputGraph\", () => {\n updateInputGraph(g, layoutGraph);\n });\n });\n};\n\nconst runLayout = (g: Graph, time: any, opts: any) => {\n time(\" removeSelfEdges\", () => {\n removeSelfEdges(g);\n });\n time(\" acyclic\", () => {\n acyclic.run(g);\n });\n time(\" nestingGraph.run\", () => {\n nestingGraph.run(g);\n });\n time(\" rank\", () => {\n rank(asNonCompoundGraph(g));\n });\n time(\" injectEdgeLabelProxies\", () => {\n injectEdgeLabelProxies(g);\n });\n time(\" removeEmptyRanks\", () => {\n removeEmptyRanks(g);\n });\n time(\" nestingGraph.cleanup\", () => {\n nestingGraph.cleanup(g);\n });\n time(\" normalizeRanks\", () => {\n normalizeRanks(g);\n });\n time(\" assignRankMinMax\", () => {\n assignRankMinMax(g);\n });\n time(\" removeEdgeLabelProxies\", () => {\n removeEdgeLabelProxies(g);\n });\n time(\" normalize.run\", () => {\n normalize.run(g);\n });\n time(\" parentDummyChains\", () => {\n parentDummyChains(g);\n });\n time(\" addBorderSegments\", () => {\n addBorderSegments(g);\n });\n if (opts && opts.keepNodeOrder) {\n time(\" initDataOrder\", () => {\n initDataOrder(g, opts.nodeOrder);\n });\n }\n time(\" order\", () => {\n order(g);\n });\n time(\" insertSelfEdges\", () => {\n insertSelfEdges(g);\n });\n time(\" adjustCoordinateSystem\", () => {\n coordinateSystem.adjust(g);\n });\n time(\" position\", () => {\n position(g);\n });\n time(\" positionSelfEdges\", () => {\n positionSelfEdges(g);\n });\n time(\" removeBorderNodes\", () => {\n removeBorderNodes(g);\n });\n time(\" normalize.undo\", () => {\n normalize.undo(g);\n });\n time(\" fixupEdgeLabelCoords\", () => {\n fixupEdgeLabelCoords(g);\n });\n time(\" undoCoordinateSystem\", () => {\n coordinateSystem.undo(g);\n });\n time(\" translateGraph\", () => {\n translateGraph(g);\n });\n time(\" assignNodeIntersects\", () => {\n assignNodeIntersects(g);\n });\n time(\" reversePoints\", () => {\n reversePointsForReversedEdges(g);\n });\n time(\" acyclic.undo\", () => {\n acyclic.undo(g);\n });\n};\n\n/**\n * 继承上一个布局中的order,防止翻转\n * TODO: 暂时没有考虑涉及层级变动的布局,只保证原来布局层级和相对顺序不变\n */\nconst inheritOrder = (currG: Graph, prevG: Graph) => {\n currG.nodes().forEach((n: string) => {\n const node = currG.node(n)!;\n const prevNode = prevG.node(n)!;\n if (prevNode !== undefined) {\n node.fixorder = prevNode._order;\n delete prevNode._order;\n } else {\n delete node.fixorder;\n }\n });\n};\n\n/*\n * Copies final layout information from the layout graph back to the input\n * graph. This process only copies whitelisted attributes from the layout graph\n * to the input graph, so it serves as a good place to determine what\n * attributes can influence layout.\n */\nconst updateInputGraph = (inputGraph: Graph, layoutGraph: Graph) => {\n inputGraph.nodes().forEach((v) => {\n const inputLabel = inputGraph.node(v);\n\n if (inputLabel) {\n const layoutLabel = layoutGraph.node(v)!;\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n inputLabel._order = layoutLabel.order;\n inputLabel._rank = layoutLabel.rank;\n\n if (layoutGraph.children(v)?.length) {\n inputLabel.width = layoutLabel.width;\n inputLabel.height = layoutLabel.height;\n }\n }\n });\n\n inputGraph.edges().forEach((e) => {\n const inputLabel = inputGraph.edge(e)!;\n const layoutLabel = layoutGraph.edge(e)!;\n\n inputLabel.points = layoutLabel ? layoutLabel.points : [];\n if (layoutLabel && layoutLabel.hasOwnProperty(\"x\")) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n }\n });\n\n inputGraph.graph().width = layoutGraph.graph().width;\n inputGraph.graph().height = layoutGraph.graph().height;\n};\n\nconst graphNumAttrs = [\"nodesep\", \"edgesep\", \"ranksep\", \"marginx\", \"marginy\"];\nconst graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: \"tb\" };\nconst graphAttrs = [\"acyclicer\", \"ranker\", \"rankdir\", \"align\"];\nconst nodeNumAttrs = [\"width\", \"height\", \"layer\", \"fixorder\"]; // 需要传入layer, fixOrder作为参数参考\nconst nodeDefaults = { width: 0, height: 0 };\nconst edgeNumAttrs = [\"minlen\", \"weight\", \"width\", \"height\", \"labeloffset\"];\nconst edgeDefaults = {\n minlen: 1,\n weight: 1,\n width: 0,\n height: 0,\n labeloffset: 10,\n labelpos: \"r\",\n};\nconst edgeAttrs = [\"labelpos\"];\n\n/*\n * Constructs a new graph from the input graph, which can be used for layout.\n * This process copies only whitelisted attributes from the input graph to the\n * layout graph. Thus this function serves as a good place to determine what\n * attributes can influence layout.\n */\nconst buildLayoutGraph = (inputGraph: Graph) => {\n const g = new Graph({ multigraph: true, compound: true });\n const graph = canonicalize(inputGraph.graph());\n\n const pickedProperties: any = {};\n graphAttrs?.forEach((key) => {\n if (graph[key] !== undefined) pickedProperties[key] = graph[key];\n });\n\n g.setGraph(\n Object.assign(\n {},\n graphDefaults,\n selectNumberAttrs(graph, graphNumAttrs),\n pickedProperties\n )\n );\n\n inputGraph.nodes().forEach((v) => {\n const node = canonicalize(inputGraph.node(v));\n const defaultNode = {\n ...nodeDefaults,\n ...node,\n } as Node;\n const defaultAttrs = selectNumberAttrs(defaultNode, nodeNumAttrs) as Node;\n\n g.setNode(v, defaultAttrs);\n g.setParent(v, inputGraph.parent(v));\n });\n\n inputGraph.edges().forEach((e) => {\n const edge = canonicalize(inputGraph.edge(e));\n\n const pickedProperties: any = {};\n edgeAttrs?.forEach((key) => {\n if (edge[key] !== undefined) pickedProperties[key] = edge[key];\n });\n\n g.setEdgeObj(\n e,\n Object.assign(\n {},\n edgeDefaults,\n selectNumberAttrs(edge, edgeNumAttrs),\n pickedProperties\n )\n );\n });\n\n return g;\n};\n\n/*\n * This idea comes from the Gansner paper: to account for edge labels in our\n * layout we split each rank in half by doubling minlen and halving ranksep.\n * Then we can place labels at these mid-points between nodes.\n *\n * We also add some minimal padding to the width to push the label for the edge\n * away from the edge itself a bit.\n */\nconst makeSpaceForEdgeLabels = (g: Graph) => {\n const graph = g.graph();\n if (!graph.ranksep) graph.ranksep = 0;\n graph.ranksep /= 2;\n g.nodes().forEach((n) => {\n const node = g.node(n)!;\n if (!isNaN(node.layer as any)) {\n if (!node.layer) node.layer = 0;\n }\n });\n g.edges().forEach((e) => {\n const edge = g.edge(e)!;\n edge.minlen! *= 2;\n if (edge.labelpos?.toLowerCase() !== \"c\") {\n if (graph.rankdir === \"TB\" || graph.rankdir === \"BT\") {\n edge.width += edge.labeloffset;\n } else {\n edge.height += edge.labeloffset;\n }\n }\n });\n};\n\n/*\n * Creates temporary dummy nodes that capture the rank in which each edge's\n * label is going to, if it has one of non-zero width and height. We do this\n * so that we can safely remove empty ranks while preserving balance for the\n * label's position.\n */\nconst injectEdgeLabelProxies = (g: Graph) => {\n g.edges().forEach((e) => {\n const edge = g.edge(e)!;\n if (edge.width && edge.height) {\n const v = g.node(e.v)!;\n const w = g.node(e.w)!;\n const label = {\n e,\n rank:\n ((w.rank as number) - (v.rank as number)) / 2 + (v.rank as number),\n };\n addDummyNode(g, \"edge-proxy\", label, \"_ep\");\n }\n });\n};\n\nconst assignRankMinMax = (g: Graph) => {\n let maxRank = 0;\n g.nodes().forEach((v) => {\n const node = g.node(v)!;\n if (node.borderTop) {\n node.minRank = g.node(node.borderTop)?.rank;\n node.maxRank = g.node(node.borderBottom)?.rank;\n maxRank = Math.max(maxRank, node.maxRank || -Infinity);\n }\n });\n g.graph().maxRank = maxRank;\n};\n\nconst removeEdgeLabelProxies = (g: Graph) => {\n g.nodes().forEach((v) => {\n const node = g.node(v)!;\n if (node.dummy === \"edge-proxy\") {\n g.edge((node as any).e)!.labelRank = node.rank;\n g.removeNode(v);\n }\n });\n};\n\nconst translateGraph = (g: Graph) => {\n let minX: number;\n let maxX = 0;\n let minY: number;\n let maxY = 0;\n const graphLabel = g.graph();\n const marginX = graphLabel.marginx || 0;\n const marginY = graphLabel.marginy || 0;\n\n const getExtremes = (attrs: any) => {\n if (!attrs) return;\n const x = attrs.x;\n const y = attrs.y;\n const w = attrs.width;\n const h = attrs.height;\n if (!isNaN(x) && !isNaN(w)) {\n if (minX === undefined) {\n minX = x - w / 2;\n }\n minX = Math.min(minX, x - w / 2);\n maxX = Math.max(maxX, x + w / 2);\n }\n if (!isNaN(y) && !isNaN(h)) {\n if (minY === undefined) {\n minY = y - h / 2;\n }\n minY = Math.min(minY, y - h / 2);\n maxY = Math.max(maxY, y + h / 2);\n }\n };\n\n g.nodes().forEach((v) => {\n getExtremes(g.node(v));\n });\n g.edges().forEach((e) => {\n const edge = g.edge(e)!;\n if (edge?.hasOwnProperty(\"x\")) {\n getExtremes(edge);\n }\n });\n\n minX! -= marginX;\n minY! -= marginY;\n\n g.nodes().forEach((v) => {\n const node = g.node(v);\n if (node) {\n node.x! -= minX;\n node.y! -= minY;\n }\n });\n\n g.edges().forEach((e) => {\n const edge = g.edge(e)!;\n edge.points?.forEach((p) => {\n p.x -= minX;\n p.y -= minY;\n });\n if (edge.hasOwnProperty(\"x\")) {\n edge.x -= minX;\n }\n if (edge.hasOwnProperty(\"y\")) {\n edge.y -= minY;\n }\n });\n\n graphLabel.width = maxX - minX! + marginX;\n graphLabel.height = maxY - minY! + marginY;\n};\n\nconst assignNodeIntersects = (g: Graph) => {\n g.edges().forEach((e) => {\n const edge = g.edge(e)!;\n const nodeV = g.node(e.v)!;\n const nodeW = g.node(e.w)!;\n let p1;\n let p2;\n if (!edge.points) {\n edge.points = [];\n p1 = nodeW;\n p2 = nodeV;\n } else {\n p1 = edge.points[0];\n p2 = edge.points[edge.points.length - 1];\n }\n edge.points.unshift(intersectRect(nodeV, p1));\n edge.points.push(intersectRect(nodeW, p2));\n });\n};\n\nconst fixupEdgeLabelCoords = (g: Graph) => {\n g.edges().forEach((e) => {\n const edge = g.edge(e)!;\n if (edge?.hasOwnProperty(\"x\")) {\n if (edge.labelpos === \"l\" || edge.labelpos === \"r\") {\n edge.width! -= edge.labeloffset;\n }\n switch (edge.labelpos) {\n case \"l\":\n edge.x -= edge.width! / 2 + edge.labeloffset;\n break;\n case \"r\":\n edge.x += edge.width! / 2 + edge.labeloffset;\n break;\n }\n }\n });\n};\n\nconst reversePointsForReversedEdges = (g: Graph) => {\n g.edges().forEach((e) => {\n const edge = g.edge(e)!;\n if (edge.reversed) {\n edge.points?.reverse();\n }\n });\n};\n\nconst removeBorderNodes = (g: Graph) => {\n g.nodes().forEach((v) => {\n if (g.children(v)?.length) {\n const node = g.node(v)!;\n const t = g.node(node.borderTop);\n const b = g.node(node.borderBottom);\n const l = g.node(node.borderLeft[node.borderLeft?.length - 1]);\n const r = g.node(node.borderRight[node.borderRight?.length - 1]);\n\n node.width = Math.abs(r?.x! - l?.x!) || 10;\n node.height = Math.abs(b?.y! - t?.y!) || 10;\n node.x = (l?.x || 0) + node.width / 2;\n node.y = (t?.y || 0) + node.height / 2;\n }\n });\n\n g.nodes().forEach((v) => {\n if (g.node(v)?.dummy === \"border\") {\n g.removeNode(v);\n }\n });\n};\n\nconst removeSelfEdges = (g: Graph) => {\n g.edges().forEach((e) => {\n if (e.v === e.w) {\n const node = g.node(e.v)!;\n if (!node.selfEdges) {\n node.selfEdges = [];\n }\n node.selfEdges.push({ e, label: g.edge(e) });\n g.removeEdgeObj(e);\n }\n });\n};\n\nconst insertSelfEdges = (g: Graph) => {\n const layers = buildLayerMatrix(g);\n layers?.forEach((layer: string[]) => {\n let orderShift = 0;\n layer?.forEach((v: string, i: number) => {\n const node = g.node(v)!;\n node.order = i + orderShift;\n node.selfEdges?.forEach((selfEdge: any) => {\n addDummyNode(\n g,\n \"selfedge\",\n {\n width: selfEdge.label.width,\n height: selfEdge.label.height,\n rank: node.rank,\n order: i + ++orderShift,\n e: selfEdge.e,\n label: selfEdge.label,\n },\n \"_se\"\n );\n });\n delete node.selfEdges;\n });\n });\n};\n\nconst positionSelfEdges = (g: Graph) => {\n g.nodes().forEach((v) => {\n const node = g.node(v)!;\n if (node.dummy === \"selfedge\") {\n const selfNode = g.node(node.e.v)!;\n const x = selfNode.x! + selfNode.width! / 2;\n const y = selfNode.y!;\n const dx = node.x! - x;\n const dy = selfNode.height! / 2;\n g.setEdgeObj(node.e, node.label);\n g.removeNode(v);\n node.label.points = [\n { x: x + (2 * dx) / 3, y: y - dy },\n { x: x + (5 * dx) / 6, y: y - dy },\n { y, x: x + dx },\n { x: x + (5 * dx) / 6, y: y + dy },\n { x: x + (2 * dx) / 3, y: y + dy },\n ];\n node.label.x = node.x;\n node.label.y = node.y;\n }\n });\n};\n\nconst selectNumberAttrs = (obj: Record, attrs: string[]) => {\n const pickedProperties: Record = {};\n attrs?.forEach((key: string) => {\n if (obj[key] === undefined) return;\n pickedProperties[key] = (+obj[key]);\n });\n return pickedProperties;\n};\n\nconst canonicalize = (attrs: Record = {}) => {\n const newAttrs: Record = {};\n Object.keys(attrs).forEach((k: string) => {\n newAttrs[k.toLowerCase()] = attrs[k];\n });\n return newAttrs;\n};\n\nexport default layout;\n","import { Graph } from \"../graph\";\nimport { addBorderNode, addDummyNode } from \"./util\";\n\n/*\n * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,\n * adds appropriate edges to ensure that all cluster nodes are placed between\n * these boundries, and ensures that the graph is connected.\n *\n * In addition we ensure, through the use of the minlen property, that nodes\n * and subgraph border nodes to not end up on the same rank.\n *\n * Preconditions:\n *\n * 1. Input graph is a DAG\n * 2. Nodes in the input graph has a minlen attribute\n *\n * Postconditions:\n *\n * 1. Input graph is connected.\n * 2. Dummy nodes are added for the tops and bottoms of subgraphs.\n * 3. The minlen attribute for nodes is adjusted to ensure nodes do not\n * get placed on the same rank as subgraph border nodes.\n *\n * The nesting graph idea comes from Sander, \"Layout of Compound Directed\n * Graphs.\"\n */\nconst run = (g: Graph) => {\n const root = addDummyNode(g, \"root\", {}, \"_root\");\n const depths = treeDepths(g);\n let maxDepth = Math.max(...Object.values(depths));\n \n if (Math.abs(maxDepth) === Infinity) {\n maxDepth = 1;\n }\n\n const height = maxDepth - 1; // Note: depths is an Object not an array\n const nodeSep = 2 * height + 1;\n\n g.graph().nestingRoot = root;\n\n // Multiply minlen by nodeSep to align nodes on non-border ranks.\n g.edges().forEach((e) => {\n g.edge(e)!.minlen! *= nodeSep;\n });\n\n // Calculate a weight that is sufficient to keep subgraphs vertically compact\n const weight = sumWeights(g) + 1;\n\n // Create border nodes and link them up\n g.children()?.forEach((child) => {\n dfs(g, root, nodeSep, weight, height, depths, child);\n });\n\n // Save the multiplier for node layers for later removal of empty border\n // layers.\n g.graph().nodeRankFactor = nodeSep;\n};\n\nconst dfs = (\n g: Graph,\n root: string,\n nodeSep: number,\n weight: number,\n height: number,\n depths:Record,\n v: string\n) => {\n const children = g.children(v);\n if (!children?.length) {\n if (v !== root) {\n g.setEdge(root, v, { weight: 0, minlen: nodeSep });\n }\n return;\n }\n\n const top = addBorderNode(g, \"_bt\");\n const bottom = addBorderNode(g, \"_bb\");\n const label = g.node(v)!;\n\n g.setParent(top, v);\n label.borderTop = top;\n g.setParent(bottom, v);\n label.borderBottom = bottom;\n\n children?.forEach((child) => {\n dfs(g, root, nodeSep, weight, height, depths, child);\n\n const childNode = g.node(child)!;\n const childTop = childNode.borderTop ? childNode.borderTop : child;\n const childBottom = childNode.borderBottom ? childNode.borderBottom : child;\n const thisWeight = childNode.borderTop ? weight : 2 * weight;\n const minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;\n\n g.setEdge(top, childTop, {\n minlen,\n weight: thisWeight,\n nestingEdge: true,\n });\n\n g.setEdge(childBottom, bottom, {\n minlen,\n weight: thisWeight,\n nestingEdge: true,\n });\n });\n\n if (!g.parent(v)) {\n g.setEdge(root, top, { weight: 0, minlen: height + depths[v] });\n }\n};\n\nconst treeDepths = (g: Graph) => {\n const depths: Record = {};\n const dfs = (v: string, depth: number) => {\n const children = g.children(v);\n children?.forEach((child) => dfs(child, depth + 1));\n depths[v] = depth;\n };\n g.children()?.forEach((v) => dfs(v, 1));\n return depths;\n};\n\nconst sumWeights = (g: Graph) => {\n let result = 0;\n g.edges().forEach((e) => {\n result += g.edge(e)!.weight!;\n });\n return result;\n};\n\nconst cleanup = (g: Graph) => {\n const graphLabel = g.graph();\n graphLabel.nestingRoot && g.removeNode(graphLabel.nestingRoot);\n delete graphLabel.nestingRoot;\n g.edges().forEach((e: any) => {\n const edge = g.edge(e)!;\n if (edge.nestingEdge) {\n g.removeEdgeObj(e);\n }\n });\n};\n\nexport default { run, cleanup };\n","import { Edge, Graph, Node } from \"../graph\";\nimport { addDummyNode } from \"./util\";\n\n/*\n * Breaks any long edges in the graph into short segments that span 1 layer\n * each. This operation is undoable with the denormalize function.\n *\n * Pre-conditions:\n *\n * 1. The input graph is a DAG.\n * 2. Each node in the graph has a \"rank\" property.\n *\n * Post-condition:\n *\n * 1. All edges in the graph have a length of 1.\n * 2. Dummy nodes are added where edges have been split into segments.\n * 3. The graph is augmented with a \"dummyChains\" attribute which contains\n * the first dummy in each chain of dummy nodes produced.\n */\nconst run = (g: Graph) => {\n g.graph().dummyChains = [];\n g.edges().forEach((edge) => normalizeEdge(g, edge));\n};\n\nconst normalizeEdge = (g: Graph, e: Edge) => {\n let v = e.v;\n let vRank = g.node(v)!.rank as number;\n const w = e.w;\n const wRank = g.node(w)!.rank as number;\n const name = e.name;\n const edgeLabel = g.edge(e)!;\n const labelRank = edgeLabel.labelRank;\n\n if (wRank === vRank + 1) return;\n\n g.removeEdgeObj(e);\n\n const graph = g.graph();\n\n let dummy: string;\n let attrs: Node>;\n let i;\n for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {\n edgeLabel.points = [];\n attrs = {\n edgeLabel,\n width: 0,\n height: 0,\n edgeObj: e,\n rank: vRank,\n };\n dummy = addDummyNode(g, \"edge\", attrs, \"_d\");\n if (vRank === labelRank) {\n attrs.width = edgeLabel.width!;\n attrs.height = edgeLabel.height!;\n attrs.dummy = \"edge-label\";\n attrs.labelpos = edgeLabel.labelpos;\n }\n g.setEdge(v, dummy, { weight: edgeLabel.weight }, name);\n if (i === 0) {\n if (!graph.dummyChains) graph.dummyChains = [];\n graph.dummyChains!.push(dummy);\n }\n v = dummy;\n }\n\n g.setEdge(v, w, { weight: edgeLabel.weight }, name);\n};\n\nconst undo = (g: Graph) => {\n g.graph().dummyChains?.forEach((v) => {\n let node = g.node(v)!;\n const origLabel = node.edgeLabel;\n let w;\n if (node.edgeObj) {\n g.setEdgeObj(node.edgeObj, origLabel);\n }\n\n let currentV = v;\n while (node.dummy) {\n w = g.successors(currentV)![0];\n g.removeNode(currentV);\n origLabel.points.push({ x: node.x, y: node.y });\n if (node.dummy === \"edge-label\") {\n origLabel.x = node.x;\n origLabel.y = node.y;\n origLabel.width = node.width;\n origLabel.height = node.height;\n }\n currentV = w;\n node = g.node(currentV)!;\n }\n });\n};\n\nexport default { run, undo };\n","import { Graph } from \"../../graph\";\n\nconst addSubgraphConstraints = (g: Graph, cg: Graph, vs: string[]) => {\n const prev: Record = {};\n let rootPrev: string;\n\n vs?.forEach((v) => {\n let child = g.parent(v);\n let parent;\n let prevChild;\n while (child) {\n parent = g.parent(child);\n if (parent) {\n prevChild = prev[parent];\n prev[parent] = child;\n } else {\n prevChild = rootPrev;\n rootPrev = child;\n }\n if (prevChild && prevChild !== child) {\n cg.setEdge(prevChild, child);\n return;\n }\n child = parent;\n }\n });\n};\n\nexport default addSubgraphConstraints;\n","import { Graph } from \"../../graph\";\n\nconst barycenter = (g: Graph, movable: string[]) => {\n return movable.map((v) => {\n const inV = g.inEdges(v);\n if (!inV?.length) {\n return { v };\n } {\n const result = { sum: 0, weight: 0 };\n inV?.forEach((e) => {\n const edge = g.edge(e)!;\n const nodeU = g.node(e.v)!;\n result.sum += (edge.weight! * (nodeU.order as number));\n result.weight += edge.weight!;\n });\n return {\n v,\n barycenter: result.sum / result.weight,\n weight: result.weight\n };\n }\n });\n};\n\nexport default barycenter;\n\n","import { Graph } from \"../../graph\";\n\n/*\n * Constructs a graph that can be used to sort a layer of nodes. The graph will\n * contain all base and subgraph nodes from the request layer in their original\n * hierarchy and any edges that are incident on these nodes and are of the type\n * requested by the \"relationship\" parameter.\n *\n * Nodes from the requested rank that do not have parents are assigned a root\n * node in the output graph, which is set in the root graph attribute. This\n * makes it easy to walk the hierarchy of movable nodes during ordering.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG\n * 2. Base nodes in the input graph have a rank attribute\n * 3. Subgraph nodes in the input graph has minRank and maxRank attributes\n * 4. Edges have an assigned weight\n *\n * Post-conditions:\n *\n * 1. Output graph has all nodes in the movable rank with preserved\n * hierarchy.\n * 2. Root nodes in the movable layer are made children of the node\n * indicated by the root attribute of the graph.\n * 3. Non-movable nodes incident on movable nodes, selected by the\n * relationship parameter, are included in the graph (without hierarchy).\n * 4. Edges incident on movable nodes, selected by the relationship\n * parameter, are added to the output graph.\n * 5. The weights for copied edges are aggregated as need, since the output\n * graph is not a multi-graph.\n */\nconst buildLayerGraph = (\n g: Graph,\n rank: number,\n relationship: \"inEdges\" | \"outEdges\"\n) => {\n const root = createRootNode(g);\n const result = new Graph({ compound: true })\n .setGraph({ root })\n .setDefaultNodeLabel((v: string) => {\n return g.node(v)!;\n });\n\n g.nodes().forEach((v) => {\n const node = g.node(v)!;\n const parent = g.parent(v);\n\n if (\n node.rank === rank ||\n ((node.minRank as number) <= rank && rank <= (node.maxRank as number))\n ) {\n result.setNode(v);\n result.setParent(v, parent || root);\n\n // This assumes we have only short edges!\n g[relationship](v)?.forEach((e) => {\n const u = e.v === v ? e.w : e.v;\n const edge = result.edgeFromArgs(u, v);\n const weight = edge !== undefined ? edge.weight : 0;\n result.setEdge(u, v, { weight: g.edge(e)!.weight! + weight! });\n });\n\n if (node.hasOwnProperty(\"minRank\")) {\n result.setNode(v, {\n borderLeft: node.borderLeft[rank],\n borderRight: node.borderRight[rank],\n });\n }\n }\n });\n\n return result;\n};\n\nconst createRootNode = (g: Graph) => {\n let v;\n while (g.hasNode((v = `_root${Math.random()}`)));\n return v;\n};\n\nexport default buildLayerGraph;\n","/*\n * A function that takes a layering (an array of layers, each with an array of\n * ordererd nodes) and a graph and returns a weighted crossing count.\n *\n * Pre-conditions:\n *\n * 1. Input graph must be simple (not a multigraph), directed, and include\n * only simple edges.\n * 2. Edges in the input graph must have assigned weights.\n *\n * Post-conditions:\n *\n * 1. The graph and layering matrix are left unchanged.\n *\n * This algorithm is derived from Barth, et al., \"Bilayer Cross Counting.\"\n */\n\nimport { Graph } from \"../../graph\";\nimport { zipObject } from \"../util\";\n\nconst twoLayerCrossCount = (\n g: Graph,\n northLayer: string[],\n southLayer: string[]\n) => {\n // Sort all of the edges between the north and south layers by their position\n // in the north layer and then the south. Map these edges to the position of\n // their head in the south layer.\n const southPos = zipObject(\n southLayer,\n southLayer.map((v, i) => i)\n );\n const unflat = northLayer.map((v) => {\n const unsort = g.outEdges(v)?.map((e) => {\n return { pos: southPos[e.w] || 0, weight: g.edge(e)!.weight };\n });\n return unsort?.sort((a, b) => a.pos - b.pos);\n });\n const southEntries = unflat.flat().filter((entry) => entry !== undefined);\n\n // Build the accumulator tree\n let firstIndex = 1;\n while (firstIndex < southLayer.length) firstIndex <<= 1;\n const treeSize = 2 * firstIndex - 1;\n firstIndex -= 1;\n const tree = Array(treeSize).fill(0, 0, treeSize);\n\n // Calculate the weighted crossings\n let cc = 0;\n southEntries?.forEach((entry) => {\n if (entry) {\n let index = entry.pos + firstIndex;\n tree[index] += entry.weight;\n let weightSum = 0;\n while (index > 0) {\n if (index % 2) {\n weightSum += tree[index + 1];\n }\n index = (index - 1) >> 1;\n tree[index] += entry.weight;\n }\n cc += entry.weight! * weightSum;\n }\n });\n\n return cc;\n};\n\nconst crossCount = (g: Graph, layering: string[][]) => {\n let cc = 0;\n for (let i = 1; i < layering?.length; i += 1) {\n cc += twoLayerCrossCount(g, layering[i - 1], layering[i]);\n }\n return cc;\n};\n\nexport default crossCount;\n","import initOrder from \"./init-order\";\nimport crossCount from \"./cross-count\";\nimport buildLayerGraph from \"./build-layer-graph\";\nimport addSubgraphConstraints from \"./add-subgraph-constraints\";\nimport sortSubgraph from \"./sort-subgraph\";\nimport { clone } from \"../../../../util\";\nimport { Graph } from \"../../graph\";\nimport { buildLayerMatrix, maxRank } from \"../util\";\n\n/*\n * Applies heuristics to minimize edge crossings in the graph and sets the best\n * order solution as an order attribute on each node.\n *\n * Pre-conditions:\n *\n * 1. Graph must be DAG\n * 2. Graph nodes must be objects with a \"rank\" attribute\n * 3. Graph edges must have the \"weight\" attribute\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have an \"order\" attribute based on the results of the\n * algorithm.\n */\nconst order = (g: Graph) => {\n const mxRank = maxRank(g);\n const range1 = [];\n const range2 = [];\n for (let i = 1; i < mxRank + 1; i++) range1.push(i);\n for (let i = mxRank - 1; i > -1; i--) range2.push(i);\n const downLayerGraphs = buildLayerGraphs(g, range1, \"inEdges\");\n const upLayerGraphs = buildLayerGraphs(g, range2, \"outEdges\");\n\n let layering = initOrder(g);\n assignOrder(g, layering);\n\n let bestCC = Number.POSITIVE_INFINITY;\n let best: string[][];\n for (let i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);\n\n layering = buildLayerMatrix(g);\n const cc = crossCount(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = clone(layering);\n bestCC = cc;\n }\n }\n\n // consider use previous result, maybe somewhat reduendant\n layering = initOrder(g);\n assignOrder(g, layering);\n for (let i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2, true);\n\n layering = buildLayerMatrix(g);\n const cc = crossCount(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = clone(layering);\n bestCC = cc;\n }\n }\n assignOrder(g, best!);\n};\n\nconst buildLayerGraphs = (\n g: Graph,\n ranks: number[],\n relationship: \"inEdges\" | \"outEdges\"\n) => {\n return ranks.map((rank) => {\n return buildLayerGraph(g, rank, relationship);\n });\n};\n\nconst sweepLayerGraphs = (\n layerGraphs: Graph[],\n biasRight: boolean,\n usePrev?: boolean\n) => {\n const cg = new Graph();\n layerGraphs?.forEach((lg) => {\n const root = lg.graph().root as string;\n const sorted = sortSubgraph(lg, root, cg, biasRight, usePrev);\n for (let i = 0; i < sorted.vs?.length || 0; i++) {\n const lnode = lg.node(sorted.vs[i]);\n if (lnode) {\n lnode.order = i;\n }\n }\n addSubgraphConstraints(lg, cg, sorted.vs);\n });\n};\n\nconst assignOrder = (g: Graph, layering: string[][]) => {\n layering?.forEach((layer) => {\n layer?.forEach((v: string, i: number) => {\n g.node(v)!.order = i;\n });\n });\n};\n\nexport default order;\n","import { Graph } from \"../../graph\";\n\n/**\n * 按照数据中的结果设置fixorder\n */\nconst initDataOrder = (g: Graph, nodeOrder: string[]) => {\n const simpleNodes = g.nodes().filter((v) => {\n return !g.children(v)?.length;\n });\n const ranks = simpleNodes.map((v) => g.node(v)!.rank as number);\n const maxRank = Math.max(...ranks);\n const layers: string[][] = Array(maxRank + 1).fill([]);\n\n nodeOrder?.forEach((n) => {\n const node = g.node(n);\n // 只考虑原有节点,dummy节点需要按照后续算法排出\n if (!node || node?.dummy) {\n return;\n }\n if (!isNaN(node.rank as number)) {\n node.fixorder = layers[node.rank as number].length; // 设置fixorder为当层的顺序\n layers[node.rank as number].push(n);\n }\n });\n};\n\nexport default initDataOrder;\n","import { Graph } from \"../../graph\";\n\n/*\n * Assigns an initial order value for each node by performing a DFS search\n * starting from nodes in the first rank. Nodes are assigned an order in their\n * rank as they are first visited.\n *\n * This approach comes from Gansner, et al., \"A Technique for Drawing Directed\n * Graphs.\"\n *\n * Returns a layering matrix with an array per layer and each layer sorted by\n * the order of its nodes.\n */\nconst initOrder = (g: Graph) => {\n const visited: Record = {};\n const simpleNodes = g.nodes().filter((v) => {\n return !g.children(v)?.length;\n });\n const nodeRanks = simpleNodes.map((v) => (g.node(v)!.rank as number));\n const maxRank = Math.max(...nodeRanks);\n const layers: string[][] = [];\n for (let i = 0; i < maxRank + 1; i++) {\n layers.push([]);\n }\n\n const dfs = (v: string) => {\n if (visited.hasOwnProperty(v)) return;\n visited[v] = true;\n const node = g.node(v)!;\n if (!isNaN(node.rank as number)) {\n layers[node.rank as number].push(v);\n }\n g.successors(v)?.forEach((child) => dfs(child as any));\n };\n\n const orderedVs = simpleNodes.sort((a, b) => (g.node(a)!.rank as number) - (g.node(b)!.rank as number));\n // const orderedVs = _.sortBy(simpleNodes, function(v) { return g.node(v)!.rank; });\n\n // 有fixOrder的,直接排序好放进去\n const beforeSort = orderedVs.filter((n) => {\n return g.node(n)!.fixorder !== undefined;\n });\n const fixOrderNodes = beforeSort.sort((a, b) => (g.node(a)!.fixorder as number) - (g.node(b)!.fixorder as number));\n fixOrderNodes?.forEach((n) => {\n if (!isNaN(g.node(n)!.rank as number)) {\n layers[g.node(n)!.rank as number].push(n);\n }\n visited[n] = true;\n });\n\n orderedVs?.forEach(dfs);\n\n return layers;\n};\n\nexport default initOrder;","import { Graph } from \"../../graph\";\n\n/*\n * Given a list of entries of the form {v, barycenter, weight} and a\n * constraint graph this function will resolve any conflicts between the\n * constraint graph and the barycenters for the entries. If the barycenters for\n * an entry would violate a constraint in the constraint graph then we coalesce\n * the nodes in the conflict into a new node that respects the contraint and\n * aggregates barycenter and weight information.\n *\n * This implementation is based on the description in Forster, \"A Fast and\n * Simple Hueristic for Constrained Two-Level Crossing Reduction,\" thought it\n * differs in some specific details.\n *\n * Pre-conditions:\n *\n * 1. Each entry has the form {v, barycenter, weight}, or if the node has\n * no barycenter, then {v}.\n *\n * Returns:\n *\n * A new list of entries of the form {vs, i, barycenter, weight}. The list\n * `vs` may either be a singleton or it may be an aggregation of nodes\n * ordered such that they do not violate constraints from the constraint\n * graph. The property `i` is the lowest original index of any of the\n * elements in `vs`.\n */\n\nexport type ConflictEntry = {\n i: number;\n indegree?: number;\n in?: ConflictEntry[];\n out?: ConflictEntry[];\n vs: string[];\n barycenter?: number;\n weight?: number;\n merged?: boolean;\n fixorder?: number;\n order?: number;\n};\n\nconst resolveConflicts = (\n entries: {\n v: string;\n barycenter?: number;\n weight?: number;\n }[],\n cg: Graph\n) => {\n const mappedEntries: Record = {};\n entries?.forEach((entry, i: number) => {\n mappedEntries[entry.v] = {\n i,\n indegree: 0,\n in: [],\n out: [],\n vs: [entry.v],\n };\n const tmp = mappedEntries[entry.v];\n if (entry.barycenter !== undefined) {\n tmp.barycenter = entry.barycenter;\n tmp.weight = entry.weight;\n }\n });\n\n cg.edges()?.forEach((e) => {\n const entryV = mappedEntries[e.v];\n const entryW = mappedEntries[e.w];\n if (entryV !== undefined && entryW !== undefined) {\n entryW.indegree!++;\n entryV.out!.push(mappedEntries[e.w]);\n }\n });\n\n const sourceSet = Object.values(mappedEntries).filter?.(\n (entry: ConflictEntry) => !entry.indegree\n );\n\n return doResolveConflicts(sourceSet);\n};\n\nconst doResolveConflicts = (sourceSet: ConflictEntry[]) => {\n const entries = [];\n\n const handleIn = (vEntry: ConflictEntry) => {\n return (uEntry: ConflictEntry) => {\n if (uEntry.merged) return;\n if (\n uEntry.barycenter === undefined ||\n vEntry.barycenter === undefined ||\n uEntry.barycenter >= vEntry.barycenter\n ) {\n mergeEntries(vEntry, uEntry);\n }\n };\n };\n\n const handleOut = (vEntry: ConflictEntry) => {\n return (wEntry: ConflictEntry) => {\n wEntry[\"in\"]!.push(vEntry);\n if (--wEntry.indegree! === 0) {\n sourceSet.push(wEntry);\n }\n };\n };\n\n while (sourceSet?.length) {\n const entry = sourceSet.pop()!;\n entries.push(entry);\n entry[\"in\"]!.reverse()?.forEach((e: ConflictEntry) => handleIn(entry)(e));\n entry.out?.forEach((e: ConflictEntry) => handleOut(entry)(e));\n }\n\n const filtered = entries.filter((entry) => !entry.merged);\n const keys: (\"vs\" | \"i\" | \"barycenter\" | \"weight\")[] = [\n \"vs\",\n \"i\",\n \"barycenter\",\n \"weight\",\n ];\n return filtered.map((entry) => {\n const picked: Record = {};\n keys?.forEach((key) => {\n if (entry[key] === undefined) return;\n picked[key] = entry[key];\n });\n return picked as ConflictEntry;\n });\n};\n\nconst mergeEntries = (target: ConflictEntry, source: ConflictEntry) => {\n let sum = 0;\n let weight = 0;\n\n if (target.weight) {\n sum += target.barycenter! * target.weight;\n weight += target.weight;\n }\n\n if (source.weight) {\n sum += source.barycenter! * source.weight;\n weight += source.weight;\n }\n\n target.vs = source.vs?.concat(target.vs);\n target.barycenter = sum / weight;\n target.weight = weight;\n target.i = Math.min(source.i, target.i);\n source.merged = true;\n};\n\nexport default resolveConflicts;\n","import { Graph } from \"../../graph\";\nimport barycenter from \"./barycenter\";\nimport resolveConflicts, { ConflictEntry } from \"./resolve-conflicts\";\nimport sort from \"./sort\";\n\nconst sortSubgraph = (\n g: Graph,\n v: string,\n cg: Graph,\n biasRight?: boolean,\n usePrev?: boolean\n) => {\n let movable = g.children(v);\n // fixorder的点不参与排序(这个方案不合适,只排了新增节点,和原来的分离)\n const node = g.node(v)!;\n const bl = node ? node.borderLeft : undefined;\n const br = node ? node.borderRight : undefined;\n const subgraphs: Record> = {};\n\n if (bl) {\n movable = movable?.filter((w) => {\n return w !== bl && w !== br;\n });\n }\n\n const barycenters = barycenter(g, movable || []);\n barycenters?.forEach((entry) => {\n if (g.children(entry.v)?.length) {\n const subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);\n subgraphs[entry.v] = subgraphResult;\n if (subgraphResult.hasOwnProperty(\"barycenter\")) {\n mergeBarycenters(entry, subgraphResult);\n }\n }\n });\n\n const entries = resolveConflicts(barycenters, cg);\n expandSubgraphs(entries, subgraphs);\n\n // 添加fixorder信息到entries里边\n // TODO: 不考虑复合情况,只用第一个点的fixorder信息,后续考虑更完备的实现\n entries\n .filter((e) => e.vs.length > 0)\n ?.forEach((e) => {\n const node = g.node(e.vs[0])!;\n if (node) {\n e.fixorder = node.fixorder;\n e.order = node.order;\n }\n });\n\n const result = sort(entries, biasRight, usePrev);\n\n if (bl) {\n result.vs = [bl, result.vs, br].flat();\n if (g.predecessors(bl)?.length) {\n const blPred = g.node(g.predecessors(bl)?.[0] || \"\")!;\n const brPred = g.node(g.predecessors(br)?.[0] || \"\")!;\n if (!result.hasOwnProperty(\"barycenter\")) {\n result.barycenter = 0;\n result.weight = 0;\n }\n result.barycenter =\n (result.barycenter! * result.weight! +\n (blPred.order as number) +\n (brPred.order as number)) /\n (result.weight! + 2);\n result.weight! += 2;\n }\n }\n\n return result;\n};\n\nconst expandSubgraphs = (\n entries: ConflictEntry[],\n subgraphs: Record>\n) => {\n entries?.forEach((entry) => {\n const vss = entry.vs?.map((v: string) => {\n if (subgraphs[v]) {\n return subgraphs[v].vs!;\n }\n return v;\n });\n entry.vs = vss.flat();\n });\n};\n\nconst mergeBarycenters = (\n target: { weight?: number; barycenter?: number },\n other: { weight?: number; barycenter?: number }\n) => {\n if (target.barycenter !== undefined) {\n target.barycenter =\n (target.barycenter * target.weight! + other.barycenter! * other.weight!) /\n (target.weight! + other.weight!);\n target.weight! += other.weight!;\n } else {\n target.barycenter = other.barycenter;\n target.weight = other.weight;\n }\n};\n\nexport default sortSubgraph;\n","import { partition } from \"../util\";\nimport { ConflictEntry } from \"./resolve-conflicts\";\n\nconst sort = (entries: ConflictEntry[], biasRight?: boolean, usePrev?: boolean) => {\n const parts = partition(entries, (entry) => {\n // NOTE: 有fixorder的也可以排\n return (entry.hasOwnProperty(\"fixorder\") && !isNaN(entry.fixorder!)) || entry.hasOwnProperty(\"barycenter\");\n });\n const sortable = parts.lhs;\n const unsortable = parts.rhs.sort((a, b) => -a.i - (-b.i));\n const vs: string[][] = [];\n let sum = 0;\n let weight = 0;\n let vsIndex = 0;\n\n sortable?.sort(compareWithBias(!!biasRight, !!usePrev));\n\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n\n sortable?.forEach((entry) => {\n vsIndex += entry.vs?.length;\n vs.push(entry.vs);\n sum += entry.barycenter! * entry.weight!;\n weight += entry.weight!;\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n });\n\n const result: { vs: string[], barycenter?: number, weight?: number } = { vs: vs.flat() };\n if (weight) {\n result.barycenter = sum / weight;\n result.weight = weight;\n }\n return result;\n};\n\nconst consumeUnsortable = (vs: string[][], unsortable: ConflictEntry[], index: number) => {\n let iindex = index;\n let last;\n while (unsortable.length && (last = unsortable[unsortable.length - 1]).i <= iindex) {\n unsortable.pop();\n vs?.push(last.vs);\n iindex++;\n }\n return iindex;\n};\n\n/**\n * 配置是否考虑使用之前的布局结果\n */\nconst compareWithBias = (bias: boolean, usePrev: boolean) => {\n return (entryV: ConflictEntry, entryW: ConflictEntry) => {\n // 排序的时候先判断fixorder,不行再判断重心\n if (entryV.fixorder !== undefined && entryW.fixorder !== undefined) {\n return entryV.fixorder - entryW.fixorder;\n }\n if (entryV.barycenter! < entryW.barycenter!) {\n return -1;\n }\n if (entryV.barycenter! > entryW.barycenter!) {\n return 1;\n }\n // 重心相同,考虑之前排好的顺序\n if (usePrev && entryV.order !== undefined && entryW.order !== undefined) {\n if (entryV.order < entryW.order) {\n return -1;\n }\n if (entryV.order > entryW.order) {\n return 1;\n }\n }\n\n return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;\n };\n};\n\nexport default sort;","import { Graph } from \"../graph\";\n\ntype OrderItem = { low: number; lim: number };\n\n// deep first search with both order low for pre, lim for post\nconst dfsBothOrder = (g: Graph) => {\n const result: Record = {};\n let lim = 0;\n\n const dfs = (v: string) => {\n const low = lim;\n g.children(v)?.forEach(dfs);\n result[v] = { low, lim: lim++ };\n };\n g.children()?.forEach(dfs);\n\n return result;\n};\n\n// Find a path from v to w through the lowest common ancestor (LCA). Return the\n// full path and the LCA.\nconst findPath = (\n g: Graph,\n postorderNums: Record,\n v: string,\n w: string\n) => {\n const vPath = [];\n const wPath = [];\n const low = Math.min(postorderNums[v].low, postorderNums[w].low);\n const lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);\n let parent: string | undefined;\n let lca: string | undefined;\n\n // Traverse up from v to find the LCA\n parent = v;\n do {\n parent = g.parent(parent);\n vPath.push(parent);\n } while (\n parent &&\n (postorderNums[parent].low > low || lim > postorderNums[parent].lim)\n );\n lca = parent;\n\n // Traverse from w to LCA\n parent = w;\n while (parent && parent !== lca) {\n wPath.push(parent);\n parent = g.parent(parent);\n }\n\n return { lca, path: vPath.concat(wPath.reverse()) };\n};\n\nconst parentDummyChains = (g: Graph) => {\n const postorderNums = dfsBothOrder(g);\n\n g.graph().dummyChains?.forEach((startV) => {\n let v = startV; \n let node = g.node(v)!;\n const edgeObj = node.edgeObj;\n if (!edgeObj) return;\n const pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);\n const path = pathData.path;\n const lca = pathData.lca;\n let pathIdx = 0;\n let pathV = path[pathIdx]!;\n let ascending = true;\n\n while (v !== edgeObj.w) {\n node = g.node(v)!;\n\n if (ascending) {\n while (pathV !== lca && g.node(pathV)?.maxRank! < node.rank!) {\n pathIdx++;\n pathV = path[pathIdx]!;\n }\n\n if (pathV === lca) {\n ascending = false;\n }\n }\n\n if (!ascending) {\n while (\n pathIdx < path.length - 1 &&\n (g.node(path[pathIdx + 1]!)?.minRank as number) <=\n (node.rank as number)\n ) {\n pathIdx++;\n }\n pathV = path[pathIdx]!;\n }\n\n g.setParent(v, pathV);\n v = g.successors(v)![0];\n }\n });\n};\n\nexport default parentDummyChains;\n","/*\n * This module provides coordinate assignment based on Brandes and Köpf, \"Fast\n * and Simple Horizontal Coordinate Assignment.\"\n */\nimport { Graph as RawGraph } from \"@antv/graphlib\";\nimport { Graph } from \"../../graph\";\nimport { buildLayerMatrix, minBy } from \"../util\";\n\nclass BlockGraph extends RawGraph {}\n\n/*\n * Marks all edges in the graph with a type-1 conflict with the \"type1Conflict\"\n * property. A type-1 conflict is one where a non-inner segment crosses an\n * inner segment. An inner segment is an edge with both incident nodes marked\n * with the \"dummy\" property.\n *\n * This algorithm scans layer by layer, starting with the second, for type-1\n * conflicts between the current layer and the previous layer. For each layer\n * it scans the nodes from left to right until it reaches one that is incident\n * on an inner segment. It then scans predecessors to determine if they have\n * edges that cross that inner segment. At the end a final scan is done for all\n * nodes on the current rank to see if they cross the last visited inner\n * segment.\n *\n * This algorithm (safely) assumes that a dummy node will only be incident on a\n * single node in the layers being scanned.\n */\n\ntype Conflicts = Record>;\n\nexport const findType1Conflicts = (g: Graph, layering?: string[][]) => {\n const conflicts = {};\n\n const visitLayer = (prevLayer: string[], layer: string[]) => {\n // last visited node in the previous layer that is incident on an inner\n // segment.\n let k0 = 0;\n // Tracks the last node in this layer scanned for crossings with a type-1\n // segment.\n let scanPos = 0;\n const prevLayerLength = prevLayer.length;\n const lastNode = layer?.[layer?.length - 1];\n\n layer?.forEach((v: string, i: number) => {\n const w = findOtherInnerSegmentNode(g, v);\n const k1 = w ? g.node(w)!.order! : prevLayerLength;\n\n if (w || v === lastNode) {\n layer.slice(scanPos, i + 1)?.forEach((scanNode) => {\n g.predecessors(scanNode)?.forEach((u) => {\n const uLabel = g.node(u)!;\n const uPos = uLabel.order as number;\n if (\n (uPos < k0 || k1 < uPos) &&\n !(uLabel.dummy && g.node(scanNode)?.dummy)\n ) {\n addConflict(conflicts, u, scanNode);\n }\n });\n });\n scanPos = i + 1;\n k0 = k1;\n }\n });\n\n return layer;\n };\n\n if (layering?.length) {\n layering.reduce(visitLayer);\n }\n return conflicts;\n};\n\nexport const findType2Conflicts = (g: Graph, layering?: string[][]) => {\n const conflicts = {};\n\n const scan = (\n south: string[],\n southPos: number,\n southEnd: number,\n prevNorthBorder: number,\n nextNorthBorder: number\n ) => {\n let v: string;\n const range = [];\n for (let i = southPos; i < southEnd; i++) {\n range.push(i);\n }\n range.forEach((i) => {\n v = south[i];\n if (g.node(v)?.dummy) {\n g.predecessors(v)?.forEach((u) => {\n const uNode = g.node(u)!;\n if (\n uNode.dummy &&\n ((uNode.order as number) < prevNorthBorder ||\n (uNode.order as number) > nextNorthBorder)\n ) {\n addConflict(conflicts, u, v);\n }\n });\n }\n });\n };\n\n const visitLayer = (north: string[], south: string[]) => {\n let prevNorthPos = -1;\n let nextNorthPos: number;\n let southPos = 0;\n\n south?.forEach((v: string, southLookahead: number) => {\n if (g.node(v)?.dummy === \"border\") {\n const predecessors = g.predecessors(v) || [];\n if (predecessors.length) {\n nextNorthPos = g.node(predecessors[0]!)!.order as number;\n scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos);\n southPos = southLookahead;\n prevNorthPos = nextNorthPos;\n }\n }\n scan(south, southPos, south.length, nextNorthPos, north.length);\n });\n\n return south;\n };\n\n if (layering?.length) {\n layering.reduce(visitLayer);\n }\n return conflicts;\n};\n\nexport const findOtherInnerSegmentNode = (g: Graph, v: string) => {\n if (g.node(v)?.dummy) {\n return g.predecessors(v)?.find((u) => g.node(u)!.dummy);\n }\n};\n\nexport const addConflict = (conflicts: Conflicts, v: string, w: string) => {\n let vv = v;\n let ww = w;\n if (vv > ww) {\n const tmp = vv;\n vv = ww;\n ww = tmp;\n }\n\n let conflictsV = conflicts[vv];\n if (!conflictsV) {\n conflicts[vv] = conflictsV = {};\n }\n conflictsV[ww] = true;\n};\n\nexport const hasConflict = (conflicts: Conflicts, v: string, w: string) => {\n let vv = v;\n let ww = w;\n if (vv > ww) {\n const tmp = v;\n vv = ww;\n ww = tmp;\n }\n return !!conflicts[vv];\n};\n\n/*\n * Try to align nodes into vertical \"blocks\" where possible. This algorithm\n * attempts to align a node with one of its median neighbors. If the edge\n * connecting a neighbor is a type-1 conflict then we ignore that possibility.\n * If a previous node has already formed a block with a node after the node\n * we're trying to form a block with, we also ignore that possibility - our\n * blocks would be split in that scenario.\n */\nexport const verticalAlignment = (\n g: Graph,\n layering: string[][],\n conflicts: Conflicts,\n neighborFn: (v: string) => string[]\n) => {\n const root: Record = {};\n const align: Record = {};\n const pos: Record = {};\n\n // We cache the position here based on the layering because the graph and\n // layering may be out of sync. The layering matrix is manipulated to\n // generate different extreme alignments.\n layering?.forEach((layer) => {\n layer?.forEach((v, order: number) => {\n root[v] = v;\n align[v] = v;\n pos[v] = order;\n });\n });\n\n layering?.forEach((layer) => {\n let prevIdx = -1;\n layer?.forEach((v) => {\n let ws = neighborFn(v);\n if (ws.length) {\n ws = ws.sort((a: string, b: string) => pos[a] - pos[b]);\n const mp = (ws.length - 1) / 2;\n for (let i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {\n const w = ws[i];\n if (\n align[v] === v &&\n prevIdx < pos[w] &&\n !hasConflict(conflicts, v, w)\n ) {\n align[w] = v;\n align[v] = root[v] = root[w];\n prevIdx = pos[w];\n }\n }\n }\n });\n });\n\n return { root, align };\n};\n\nexport const horizontalCompaction = (\n g: Graph,\n layering: string[][],\n root: Record,\n align: Record,\n reverseSep?: boolean\n) => {\n // This portion of the algorithm differs from BK due to a number of problems.\n // Instead of their algorithm we construct a new block graph and do two\n // sweeps. The first sweep places blocks with the smallest possible\n // coordinates. The second sweep removes unused space by moving blocks to the\n // greatest coordinates without violating separation.\n const xs: Record = {};\n const blockG = buildBlockGraph(g, layering, root, reverseSep);\n const borderType = reverseSep ? \"borderLeft\" : \"borderRight\";\n\n const iterate = (\n setXsFunc: (param: string) => void,\n nextNodesFunc: (param: string) => string\n ) => {\n let stack = blockG.nodes();\n let elem = stack.pop();\n const visited: Record = {};\n while (elem) {\n if (visited[elem]) {\n setXsFunc(elem);\n } else {\n visited[elem] = true;\n stack.push(elem);\n stack = stack.concat(nextNodesFunc(elem));\n }\n\n elem = stack.pop();\n }\n };\n\n // First pass, assign smallest coordinates\n const pass1 = (elem: string) => {\n xs[elem] = (blockG.inEdges(elem) || []).reduce((acc: number, e) => {\n return Math.max(acc, (xs[e.v] || 0) + blockG.edge(e)!);\n }, 0);\n };\n\n // Second pass, assign greatest coordinates\n const pass2 = (elem: string) => {\n const min = (blockG.outEdges(elem) || []).reduce((acc: number, e) => {\n return Math.min(acc, (xs[e.w] || 0) - blockG.edge(e)!);\n }, Number.POSITIVE_INFINITY);\n\n const node = g.node(elem)!;\n if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) {\n xs[elem] = Math.max(xs[elem], min);\n }\n };\n\n iterate(pass1, blockG.predecessors.bind(blockG));\n iterate(pass2, blockG.successors.bind(blockG));\n\n // Assign x coordinates to all nodes\n Object.values(align)?.forEach((v) => {\n xs[v] = xs[root[v]];\n });\n\n return xs;\n};\n\nexport const buildBlockGraph = (\n g: Graph,\n layering: string[][],\n root: Record,\n reverseSep?: boolean\n) => {\n const blockGraph = new BlockGraph();\n const graphLabel = g.graph();\n const sepFn = sep(\n graphLabel.nodesep as number,\n graphLabel.edgesep as number,\n reverseSep as boolean\n );\n\n layering?.forEach((layer) => {\n let u: string;\n layer?.forEach((v) => {\n const vRoot = root[v];\n blockGraph.setNode(vRoot);\n if (u) {\n const uRoot = root[u];\n const prevMax = blockGraph.edgeFromArgs(uRoot, vRoot);\n blockGraph.setEdge(\n uRoot,\n vRoot,\n Math.max(sepFn(g, v, u), prevMax || 0)\n );\n }\n u = v;\n });\n });\n\n return blockGraph;\n};\n/*\n * Returns the alignment that has the smallest width of the given alignments.\n */\nexport const findSmallestWidthAlignment = (\n g: Graph,\n xss: Record>\n) => {\n return minBy(Object.values(xss), (xs) => {\n let max = Number.NEGATIVE_INFINITY;\n let min = Number.POSITIVE_INFINITY;\n\n Object.keys(xs)?.forEach((v: string) => {\n const x = xs[v];\n const halfWidth = width(g, v) / 2;\n\n max = Math.max(x + halfWidth, max);\n min = Math.min(x - halfWidth, min);\n });\n\n return max - min;\n });\n};\n\n/*\n * Align the coordinates of each of the layout alignments such that\n * left-biased alignments have their minimum coordinate at the same point as\n * the minimum coordinate of the smallest width alignment and right-biased\n * alignments have their maximum coordinate at the same point as the maximum\n * coordinate of the smallest width alignment.\n */\nexport function alignCoordinates(\n xss: Record>,\n alignTo: Record\n) {\n // @ts-ignore\n const alignToVals = Object.values(alignTo) as number[];\n const alignToMin = Math.min(...alignToVals);\n const alignToMax = Math.max(...alignToVals);\n\n [\"u\", \"d\"].forEach((vert) => {\n [\"l\", \"r\"].forEach((horiz) => {\n const alignment = vert + horiz;\n const xs = xss[alignment];\n let delta: number;\n if (xs === alignTo) return;\n\n const xsVals = Object.values(xs) as number[];\n delta =\n horiz === \"l\"\n ? alignToMin - Math.min(...xsVals)\n : alignToMax - Math.max(...xsVals);\n\n if (delta) {\n xss[alignment] = {};\n Object.keys(xs).forEach((key) => {\n xss[alignment][key] = xs[key] + delta;\n });\n }\n });\n });\n}\n\nexport const balance = (\n xss: Record>,\n align?: string\n) => {\n const result: Record = {};\n Object.keys(xss.ul).forEach((key) => {\n if (align) {\n result[key] = xss[align.toLowerCase()][key];\n } else {\n const values = Object.values(xss).map((x) => x[key]);\n result[key] = (values[0] + values[1]) / 2; // (ur + ul) / 2\n }\n });\n return result;\n};\n\nexport const positionX = (g: Graph) => {\n const layering = buildLayerMatrix(g);\n const conflicts = Object.assign(\n findType1Conflicts(g, layering),\n findType2Conflicts(g, layering)\n );\n\n const xss: Record> = {};\n let adjustedLayering: string[][];\n [\"u\", \"d\"].forEach((vert) => {\n adjustedLayering =\n vert === \"u\" ? layering : Object.values(layering).reverse();\n [\"l\", \"r\"].forEach((horiz) => {\n if (horiz === \"r\") {\n adjustedLayering = adjustedLayering.map((inner) =>\n Object.values(inner).reverse()\n );\n }\n\n const neighborFn = (vert === \"u\" ? g.predecessors : g.successors).bind(g);\n const align = verticalAlignment(\n g,\n adjustedLayering,\n conflicts,\n neighborFn\n );\n const xs = horizontalCompaction(\n g,\n adjustedLayering,\n align.root,\n align.align,\n horiz === \"r\"\n );\n if (horiz === \"r\") {\n Object.keys(xs).forEach((key) => {\n xs[key] = -xs[key];\n });\n }\n xss[vert + horiz] = xs;\n });\n });\n\n const smallestWidth = findSmallestWidthAlignment(g, xss);\n alignCoordinates(xss, smallestWidth);\n return balance(xss, g.graph().align as string);\n};\n\nexport const sep = (nodeSep: number, edgeSep: number, reverseSep: boolean) => {\n return (g: Graph, v: string, w: string) => {\n const vLabel = g.node(v)!;\n const wLabel = g.node(w)!;\n let sum = 0;\n let delta;\n\n sum += vLabel.width! / 2;\n if (vLabel.hasOwnProperty(\"labelpos\")) {\n switch ((vLabel.labelpos || \"\").toLowerCase()) {\n case \"l\":\n delta = -vLabel.width! / 2;\n break;\n case \"r\":\n delta = vLabel.width! / 2;\n break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n sum += (vLabel.dummy ? edgeSep : nodeSep) / 2;\n sum += (wLabel.dummy ? edgeSep : nodeSep) / 2;\n\n sum += wLabel.width! / 2;\n if (wLabel.labelpos) {\n switch ((wLabel.labelpos || \"\").toLowerCase()) {\n case \"l\":\n delta = wLabel.width! / 2;\n break;\n case \"r\":\n delta = -wLabel.width! / 2;\n break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n return sum;\n };\n};\n\nexport const width = (g: Graph, v: string) => g.node(v)!.width || 0;\n","import { Graph } from \"../../graph\";\nimport { asNonCompoundGraph, buildLayerMatrix } from \"../util\";\nimport {\n alignCoordinates,\n balance,\n findSmallestWidthAlignment,\n findType1Conflicts,\n findType2Conflicts,\n horizontalCompaction,\n verticalAlignment,\n} from \"./bk\";\n\nconst positionY = (g: Graph) => {\n const layering = buildLayerMatrix(g);\n const rankSep = g.graph().ranksep as number;\n let prevY = 0;\n layering?.forEach((layer) => {\n const heights = layer.map((v) => g.node(v)!.height!);\n const maxHeight = Math.max(...heights, 0);\n layer?.forEach((v: string) => {\n g.node(v)!.y = prevY + maxHeight / 2;\n });\n prevY += maxHeight + rankSep;\n });\n};\n\nconst positionX = (g: Graph) => {\n const layering = buildLayerMatrix(g);\n const conflicts = Object.assign(\n findType1Conflicts(g, layering),\n findType2Conflicts(g, layering)\n );\n\n const xss: Record> = {};\n let adjustedLayering: string[][] = [];\n [\"u\", \"d\"].forEach((vert) => {\n adjustedLayering =\n vert === \"u\" ? layering : Object.values(layering).reverse();\n [\"l\", \"r\"].forEach((horiz) => {\n if (horiz === \"r\") {\n adjustedLayering = adjustedLayering.map((inner) =>\n Object.values(inner).reverse()\n );\n }\n\n const neighborFn = (vert === \"u\" ? g.predecessors : g.successors).bind(g);\n const align = verticalAlignment(\n g,\n adjustedLayering,\n conflicts,\n neighborFn\n );\n const xs = horizontalCompaction(\n g,\n adjustedLayering,\n align.root,\n align.align,\n horiz === \"r\"\n );\n if (horiz === \"r\") {\n Object.keys(xs).forEach((xsKey) => (xs[xsKey] = -xs[xsKey]));\n }\n xss[vert + horiz] = xs;\n });\n });\n\n const smallestWidth = findSmallestWidthAlignment(g, xss);\n smallestWidth && alignCoordinates(xss, smallestWidth);\n return balance(xss, g.graph().align as string);\n};\n\nconst position = (g: Graph) => {\n const ng = asNonCompoundGraph(g);\n\n positionY(ng);\n const xs = positionX(ng);\n Object.keys(xs)?.forEach((key: string) => {\n ng.node(key)!.x = xs[key];\n });\n};\n\nexport default position;\n","import { slack } from './util';\nimport { minBy } from '../util';\nimport { Graph } from '../../graph';\n\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nconst feasibleTree = (g: Graph) => {\n const t = new Graph({ directed: false });\n\n // Choose arbitrary node from which to start our tree\n const start = g.nodes()[0];\n const size = g.nodeCount();\n t.setNode(start, {});\n\n let edge: any;\n let delta: number;\n while (tightTree(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge);\n shiftRanks(t, g, delta);\n }\n\n return t;\n};\n\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nconst tightTree = (t: Graph, g: Graph) => {\n const dfs = (v: string) => {\n g.nodeEdges(v)!.forEach((e) => {\n const edgeV = e.v;\n const w = (v === edgeV) ? e.w : edgeV;\n if (!t.hasNode(w) && !slack(g, e)) {\n t.setNode(w, {});\n t.setEdge(v, w, {});\n dfs(w);\n }\n });\n };\n\n t.nodes().forEach(dfs);\n return t.nodeCount();\n};\n\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nconst feasibleTreeWithLayer = (g: Graph) => {\n const t = new Graph({ directed: false }) as any;\n\n // Choose arbitrary node from which to start our tree\n const start = g.nodes()[0];\n const size = g.nodes().filter(n => !!g.node(n)).length;\n t.setNode(start, {});\n\n let edge: any;\n let delta: number;\n while (tightTreeWithLayer(t, g)! < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge);\n shiftRanks(t, g, delta);\n }\n\n return t;\n};\n\n\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nconst tightTreeWithLayer = (t: Graph, g: Graph) => {\n const dfs = (v: string) => {\n g.nodeEdges(v)?.forEach((e) => {\n const edgeV = e.v;\n const w = (v === edgeV) ? e.w : edgeV;\n // 对于指定layer的,直接加入tight-tree,不参与调整\n if (!t.hasNode(w) && (g.node(w)!.layer !== undefined || !slack(g, e))) {\n t.setNode(w, {});\n t.setEdge(v, w, {});\n dfs(w);\n }\n });\n };\n\n t.nodes().forEach(dfs);\n return t.nodeCount();\n};\n\n/*\n * Finds the edge with the smallest slack that is incident on tree and returns\n * it.\n */\nconst findMinSlackEdge = (t: Graph, g: Graph) => {\n return minBy(g.edges(), (e: any) => {\n if (t.hasNode(e.v) !== t.hasNode(e.w)) {\n return slack(g, e);\n }\n return Infinity;\n });\n};\n\nconst shiftRanks = (t: Graph, g: Graph, delta: number) => {\n t.nodes().forEach((v: string) => {\n if (!g.node(v)!.rank) g.node(v)!.rank = 0;\n (g.node(v)!.rank as number) += delta;\n });\n};\n\nexport {\n feasibleTree,\n feasibleTreeWithLayer\n};\n\nexport default {\n feasibleTree,\n feasibleTreeWithLayer\n};","// \"use strict\";\n\n// var rankUtil = require(\"./util\");\n// var longestPath = rankUtil.longestPathWithLayer;\n// var feasibleTree = require(\"./feasible-tree\").feasibleTreeWithLayer;\n// var networkSimplex = require(\"./network-simplex\");\n\nimport { longestPath, longestPathWithLayer } from './util';\nimport { feasibleTreeWithLayer as feasibleTree } from './feasible-tree';\nimport networkSimplex from './network-simplex';\nimport { Graph } from '../../graph';\n\n/*\n * Assigns a rank to each node in the input graph that respects the \"minlen\"\n * constraint specified on edges between nodes.\n *\n * This basic structure is derived from Gansner, et al., \"A Technique for\n * Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a connected DAG\n * 2. Graph nodes must be objects\n * 3. Graph edges must have \"weight\" and \"minlen\" attributes\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have a \"rank\" attribute based on the results of the\n * algorithm. Ranks can start at any index (including negative), we'll\n * fix them up later.\n */\nconst rank = (g: Graph) => {\n switch(g.graph().ranker) {\n case \"network-simplex\": networkSimplexRanker(g); break;\n case \"tight-tree\": tightTreeRanker(g); break;\n case \"longest-path\": longestPathRanker(g); break;\n // default: networkSimplexRanker(g);\n default: tightTreeRanker(g);\n }\n};\n\n// A fast and simple ranker, but results are far from optimal.\nconst longestPathRanker = longestPath;\n\nconst tightTreeRanker = (g: Graph) => {\n longestPathWithLayer(g);\n feasibleTree(g);\n};\n\nconst networkSimplexRanker = (g: Graph) => {\n networkSimplex(g);\n};\n\nexport default rank;","import { feasibleTree } from './feasible-tree';\nimport { slack, longestPath as initRank } from './util';\nimport { minBy, simplify } from '../util';\nimport { algorithm } from '@antv/graphlib';\nimport { Edge, Graph } from '../../graph';\n\n\nconst { preorder, postorder } = algorithm;\n\n\n/*\n * The network simplex algorithm assigns ranks to each node in the input graph\n * and iteratively improves the ranking to reduce the length of edges.\n *\n * Preconditions:\n *\n * 1. The input graph must be a DAG.\n * 2. All nodes in the graph must have an object value.\n * 3. All edges in the graph must have \"minlen\" and \"weight\" attributes.\n *\n * Postconditions:\n *\n * 1. All nodes in the graph will have an assigned \"rank\" attribute that has\n * been optimized by the network simplex algorithm. Ranks start at 0.\n *\n *\n * A rough sketch of the algorithm is as follows:\n *\n * 1. Assign initial ranks to each node. We use the longest path algorithm,\n * which assigns ranks to the lowest position possible. In general this\n * leads to very wide bottom ranks and unnecessarily long edges.\n * 2. Construct a feasible tight tree. A tight tree is one such that all\n * edges in the tree have no slack (difference between length of edge\n * and minlen for the edge). This by itself greatly improves the assigned\n * rankings by shorting edges.\n * 3. Iteratively find edges that have negative cut values. Generally a\n * negative cut value indicates that the edge could be removed and a new\n * tree edge could be added to produce a more compact graph.\n *\n * Much of the algorithms here are derived from Gansner, et al., \"A Technique\n * for Drawing Directed Graphs.\" The structure of the file roughly follows the\n * structure of the overall algorithm.\n */\nconst networkSimplex = (og: Graph) => {\n const g = simplify(og);\n initRank(g);\n const t = feasibleTree(g);\n initLowLimValues(t);\n initCutValues(t, g);\n\n let e;\n let f;\n while ((e = leaveEdge(t))) {\n f = enterEdge(t, g, e);\n exchangeEdges(t, g, e, f);\n }\n};\n\n/*\n * Initializes cut values for all edges in the tree.\n */\nexport const initCutValues = (t: Graph, g: Graph) => {\n let vs = postorder(t, t.nodes());\n vs = vs?.slice(0, vs?.length - 1);\n vs?.forEach((v: string) => {\n assignCutValue(t, g, v);\n });\n};\n\nconst assignCutValue = (t: Graph, g: Graph, child: string) => {\n const childLab = t.node(child)!;\n const parent = childLab.parent!;\n t.edgeFromArgs(child, parent)!.cutvalue = calcCutValue(t, g, child);\n};\n\n/*\n * Given the tight tree, its graph, and a child in the graph calculate and\n * return the cut value for the edge between the child and its parent.\n */\nexport const calcCutValue = (t: Graph, g: Graph, child: string) => {\n const childLab = t.node(child)!;\n const parent = childLab.parent as string;\n // True if the child is on the tail end of the edge in the directed graph\n let childIsTail = true;\n // The graph's view of the tree edge we're inspecting\n let graphEdge = g.edgeFromArgs(child, parent)!;\n // The accumulated cut value for the edge between this node and its parent\n let cutValue = 0;\n\n if (!graphEdge) {\n childIsTail = false;\n graphEdge = g.edgeFromArgs(parent, child)!;\n }\n\n cutValue = graphEdge.weight!;\n\n g.nodeEdges(child)?.forEach((e) => {\n const isOutEdge = e.v === child;\n const other = isOutEdge ? e.w : e.v;\n\n if (other !== parent) {\n const pointsToHead = isOutEdge === childIsTail;\n const otherWeight = g.edge(e)!.weight!;\n\n cutValue += pointsToHead ? otherWeight : -otherWeight;\n if (isTreeEdge(t, child, other)) {\n const otherCutValue = t.edgeFromArgs(child, other)!.cutvalue;\n cutValue += pointsToHead ? -otherCutValue : otherCutValue;\n }\n }\n });\n\n return cutValue;\n};\n\nexport const initLowLimValues = (tree: Graph, root: string = tree.nodes()[0]) => {\n dfsAssignLowLim(tree, {}, 1, root);\n};\n\nconst dfsAssignLowLim = (tree: Graph, visited: Record, nextLim: number, v: string, parent?: string) => {\n const low = nextLim;\n let useNextLim = nextLim;\n const label = tree.node(v)!;\n\n visited[v] = true;\n tree.neighbors(v)?.forEach((w) => {\n if (!visited[w]) {\n useNextLim = dfsAssignLowLim(tree, visited, useNextLim, w, v);\n }\n });\n\n label.low = low;\n label.lim = useNextLim++;\n if (parent) {\n label.parent = parent;\n } else {\n // TODO should be able to remove this when we incrementally update low lim\n delete label.parent;\n }\n\n return useNextLim;\n};\n\nexport const leaveEdge = (tree: Graph) => {\n return tree.edges().find((e) => {\n return tree.edge(e)!.cutvalue < 0;\n });\n};\n\nexport const enterEdge = (t: Graph, g: Graph, edge: any) => {\n let v = edge.v;\n let w = edge.w;\n\n // For the rest of this function we assume that v is the tail and w is the\n // head, so if we don't have this edge in the graph we should flip it to\n // match the correct orientation.\n if (!g.hasEdge(v, w)) {\n v = edge.w;\n w = edge.v;\n }\n\n const vLabel = t.node(v)!;\n const wLabel = t.node(w)!;\n let tailLabel = vLabel;\n let flip = false;\n\n // If the root is in the tail of the edge then we need to flip the logic that\n // checks for the head and tail nodes in the candidates function below.\n if ((vLabel.lim as number) > (wLabel.lim as number)) {\n tailLabel = wLabel;\n flip = true;\n }\n\n const candidates = g.edges().filter((edge) => {\n return flip === isDescendant(t, t.node(edge.v), tailLabel) &&\n flip !== isDescendant(t, t.node(edge.w), tailLabel);\n });\n\n return minBy(candidates, (edge) => { return slack(g, edge); });\n};\n\nexport const exchangeEdges = (t: Graph, g: Graph, e: Edge, f: Edge) => {\n const v = e.v;\n const w = e.w;\n t.removeEdge(v, w);\n t.setEdge(f.v, f.w, {});\n initLowLimValues(t);\n initCutValues(t, g);\n updateRanks(t, g);\n};\n\nconst updateRanks = (t: Graph, g: Graph) => {\n const root = t.nodes().find((v) =>{ return !g.node(v)?.parent; })!;\n let vs = preorder(t, root);\n vs = vs?.slice(1);\n vs?.forEach((v: string) => {\n const parent = t.node(v)!.parent as string;\n let edge = g.edgeFromArgs(v, parent);\n let flipped = false;\n\n if (!edge) {\n edge = g.edgeFromArgs(parent, v)!;\n flipped = true;\n }\n\n g.node(v)!.rank = g.node(parent)!.rank! + (flipped ? edge.minlen! : -edge.minlen!);\n });\n};\n\n/*\n * Returns true if the edge is in the tree.\n */\nconst isTreeEdge = (tree: Graph, u: string, v: string) => {\n return tree.hasEdge(u, v);\n};\n\n/*\n * Returns true if the specified node is descendant of the root node per the\n * assigned low and lim attributes in the tree.\n */\nconst isDescendant = (tree: Graph, vLabel: any, rootLabel: any) => {\n return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim;\n};\n\nexport default networkSimplex;","import { Edge, Graph } from \"../../graph\";\n\n/*\n * Initializes ranks for the input graph using the longest path algorithm. This\n * algorithm scales well and is fast in practice, it yields rather poor\n * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom\n * ranks wide and leaving edges longer than necessary. However, due to its\n * speed, this algorithm is good for getting an initial ranking that can be fed\n * into other algorithms.\n *\n * This algorithm does not normalize layers because it will be used by other\n * algorithms in most cases. If using this algorithm directly, be sure to\n * run normalize at the end.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG.\n * 2. Input graph node labels can be assigned properties.\n *\n * Post-conditions:\n *\n * 1. Each node will be assign an (unnormalized) \"rank\" property.\n */\nconst longestPath = (g: Graph) => {\n const visited: Record = {};\n\n const dfs = (v: string) => {\n const label = g.node(v)!;\n if (!label) return 0;\n if (visited[v]) {\n return label.rank!;\n }\n visited[v] = true;\n\n let rank: number;\n\n g.outEdges(v)?.forEach(\n (edgeObj) => {\n const wRank = dfs(edgeObj.w);\n const minLen = g.edge(edgeObj)!.minlen!;\n const r = wRank - minLen;\n if (r) {\n if (rank === undefined || r < rank) {\n rank = r;\n }\n }\n }\n );\n\n\n if (!rank!) {\n rank = 0;\n }\n\n label.rank = rank;\n return rank;\n };\n\n g.sources()?.forEach((source) => dfs(source));\n};\n\nconst longestPathWithLayer = (g: Graph) => {\n // 用longest path,找出最深的点\n const visited: Record = {};\n let minRank: number;\n\n const dfs = (v: string) => {\n const label = g.node(v)!;\n if (!label) return 0;\n if (visited[v]) {\n return label.rank!;\n }\n visited[v] = true;\n\n let rank: number;\n\n g.outEdges(v)?.forEach(\n (edgeObj) => {\n const wRank = dfs(edgeObj.w);\n const minLen = g.edge(edgeObj)!.minlen!;\n const r = wRank - minLen;\n if (r) {\n if (rank === undefined || r < rank) {\n rank = r;\n }\n }\n }\n );\n\n\n if (!rank!) {\n rank = 0;\n }\n\n if (minRank === undefined || rank < minRank) {\n minRank = rank;\n }\n\n label.rank = rank;\n return rank;\n };\n\n g.sources()?.forEach((source) => {\n if (g.node(source)) dfs(source)\n });\n\n if (minRank! === undefined) {\n minRank = 0;\n }\n\n // minRank += 1; // NOTE: 最小的层级是dummy root,+1\n\n // forward一遍,赋值层级\n const forwardVisited: Record = {};\n const dfsForward = (v: string, nextRank: number) => {\n const label = g.node(v)!;\n\n const currRank = (\n !isNaN(label.layer as number) ? label.layer : nextRank\n ) as number;\n\n // 没有指定,取最大值\n if (label.rank === undefined || label.rank < currRank) {\n label.rank = currRank;\n }\n\n if (forwardVisited[v]) return;\n forwardVisited[v] = true;\n\n // DFS遍历子节点\n g.outEdges(v)?.map((e) => {\n dfsForward(e.w, currRank + g.edge(e)!.minlen!);\n });\n };\n\n // 指定层级的,更新下游\n g.nodes().forEach((n) => {\n const label = g.node(n)!;\n if(!label) return;\n if (!isNaN(label.layer as number)) {\n dfsForward(n, label.layer as number); // 默认的dummy root所在层的rank是-1\n } else {\n (label.rank as number) -= minRank;\n }\n });\n};\n\n/*\n * Returns the amount of slack for the given edge. The slack is defined as the\n * difference between the length of the edge and its minimum length.\n */\nconst slack = (g: Graph, e: Edge) => {\n return (\n (g.node(e.w)!.rank as number) -\n (g.node(e.v)!.rank as number) -\n (g.edge(e)!.minlen as number)\n );\n};\n\nexport { longestPath, longestPathWithLayer, slack };\n\nexport default {\n longestPath,\n longestPathWithLayer,\n slack,\n};\n","import { isNumber } from \"../../../util\";\nimport { Graph, Node } from \"../graph\";\n\nconst safeSort = (valueA?: number, valueB?: number) => {\n return Number(valueA) - Number(valueB);\n};\n\n/*\n * Adds a dummy node to the graph and return v.\n */\nexport const addDummyNode = (\n g: Graph,\n type: string,\n attrs: Node>,\n name: string\n) => {\n let v;\n do {\n v = `${name}${Math.random()}`;\n } while (g.hasNode(v));\n\n attrs.dummy = type;\n g.setNode(v, attrs);\n\n return v;\n};\n\n/*\n * Returns a new graph with only simple edges. Handles aggregation of data\n * associated with multi-edges.\n */\nexport const simplify = (g: Graph) => {\n const simplified = new Graph().setGraph(g.graph());\n g.nodes().forEach((v) => { simplified.setNode(v, g.node(v)); });\n g.edges().forEach((e) => {\n const simpleLabel = simplified.edgeFromArgs(e.v, e.w) || { weight: 0, minlen: 1 };\n const label = g.edge(e)!;\n simplified.setEdge(e.v, e.w, {\n weight: simpleLabel.weight! + label.weight!,\n minlen: Math.max(simpleLabel.minlen!, label.minlen!)\n });\n });\n return simplified;\n};\n\nexport const asNonCompoundGraph = (g: Graph) => {\n const simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(\n g.graph()\n );\n g.nodes().forEach((node) => {\n if (!g.children(node)?.length) {\n simplified.setNode(node, g.node(node));\n }\n });\n\n g.edges().forEach((edge) => {\n simplified.setEdgeObj(edge, g.edge(edge));\n });\n\n return simplified;\n};\n\nexport const zipObject = (keys: string[], values: T[]) => {\n return keys?.reduce((obj, key, i) => {\n obj[key] = values[i];\n return obj;\n }, {} as Record);\n};\n\nexport const successorWeights = (g: Graph) => {\n const weightsMap: Record> = {};\n\n g.nodes().forEach((node) => {\n const sucs: Record = {};\n g.outEdges(node)?.forEach((e) => {\n sucs[e.w] = (sucs[e.w] || 0) + (g.edge(e)?.weight || 0);\n });\n weightsMap[node] = sucs;\n });\n\n return weightsMap;\n};\n\n\n\nexport const predecessorWeights = (g: Graph) => {\n const nodes = g.nodes();\n\n const weightMap = nodes.map((v) => {\n const preds: Record = {};\n g.inEdges(v)?.forEach((e) => {\n preds[e.v] = (preds[e.v] || 0) + g.edge(e)!.weight!;\n });\n return preds;\n });\n return zipObject(nodes, weightMap);\n};\n\n/*\n * Finds where a line starting at point ({x, y}) would intersect a rectangle\n * ({x, y, width, height}) if it were pointing at the rectangle's center.\n */\nexport const intersectRect = (\n rect: { x?: number; y?: number; width?: number; height?: number },\n point: { x?: number; y?: number }\n) => {\n const x = Number(rect.x);\n const y = Number(rect.y);\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n const dx = Number(point.x) - x;\n const dy = Number(point.y) - y;\n let w = Number(rect.width) / 2;\n let h = Number(rect.height) / 2;\n\n if (!dx && !dy) {\n // completely overlapped directly, then return points its self\n return { x: 0, y: 0 };\n }\n\n let sx;\n let sy;\n\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = (h * dx) / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = (w * dy) / dx;\n }\n\n return { x: x + sx, y: y + sy };\n};\n\n/*\n * Given a DAG with each node assigned \"rank\" and \"order\" properties, this\n * const will produce a matrix with the ids of each node.\n */\nexport const buildLayerMatrix = (g: Graph) => {\n const layeringNodes: string[][] = [];\n const rankMax = maxRank(g) + 1;\n for (let i = 0; i < rankMax; i++) {\n layeringNodes.push([]);\n }\n \n // const layering = _.map(_.range(maxRank(g) + 1), function() { return []; });\n g.nodes().forEach((v: string) => {\n const node = g.node(v)!;\n if (!node) return;\n const rank = node.rank;\n if (rank !== undefined && layeringNodes[rank]) {\n layeringNodes[rank].push(v);\n }\n });\n\n for (let i = 0; i < rankMax; i++) {\n layeringNodes[i] = layeringNodes[i].sort((va: string, vb: string) =>\n safeSort(g.node(va)?.order, g.node(vb)?.order)\n );\n }\n\n return layeringNodes;\n};\n\n/*\n * Adjusts the ranks for all nodes in the graph such that all nodes v have\n * rank(v) >= 0 and at least one node w has rank(w) = 0.\n */\nexport const normalizeRanks = (g: Graph) => {\n const nodeRanks = g\n .nodes()\n .filter((v) => g.node(v)?.rank !== undefined)\n .map((v) => g.node(v)!.rank!);\n const min = Math.min(...nodeRanks);\n g.nodes().forEach((v) => {\n const node = g.node(v)!;\n if (node.hasOwnProperty(\"rank\") && min !== Infinity) {\n node.rank! -= min;\n }\n });\n};\n\nexport const removeEmptyRanks = (g: Graph) => {\n // Ranks may not start at 0, so we need to offset them\n const nodes = g.nodes();\n const nodeRanks = nodes\n .filter((v) => g.node(v)?.rank !== undefined)\n .map((v) => g.node(v)!.rank as number);\n\n const offset = Math.min(...nodeRanks);\n const layers: string[][] = [];\n\n nodes.forEach((v) => {\n const rank = (g.node(v)?.rank || 0) - offset;\n\n if (!layers[rank]) {\n layers[rank] = [];\n }\n layers[rank].push(v);\n });\n\n let delta = 0;\n const nodeRankFactor = g.graph().nodeRankFactor || 0;\n\n for (let i = 0; i < layers.length; i++) {\n const vs = layers[i];\n if (vs === undefined) {\n if (i % nodeRankFactor !== 0) {\n delta -= 1;\n }\n } else if (delta) {\n vs?.forEach((v: string) => {\n const node = g.node(v);\n if (node) {\n node.rank = node.rank || 0;\n node.rank += delta;\n }\n });\n }\n }\n};\n\nexport const addBorderNode = (\n g: Graph,\n prefix: string,\n rank?: number,\n order?: number\n) => {\n const node: Node = {\n width: 0,\n height: 0\n };\n if (isNumber(rank) && isNumber(order)) {\n node.rank = rank;\n node.order = order;\n }\n return addDummyNode(g, \"border\", node, prefix);\n};\n\nexport const maxRank = (g: Graph) => {\n let maxRank: number;\n g.nodes().forEach((v) => {\n const rank = g.node(v)?.rank;\n if (rank !== undefined) {\n if (maxRank === undefined || rank > maxRank) {\n maxRank = rank;\n }\n }\n });\n\n if (!maxRank!) {\n maxRank = 0;\n }\n return maxRank;\n};\n\n/*\n * Partition a collection into two groups: `lhs` and `rhs`. If the supplied\n * const returns true for an entry it goes into `lhs`. Otherwise it goes\n * into `rhs.\n */\nexport const partition = (\n collection: T[],\n fn: (val: T) => boolean\n) => {\n const result = { lhs: [] as T[], rhs: [] as T[] };\n collection?.forEach((value) => {\n if (fn(value)) {\n result.lhs.push(value);\n } else {\n result.rhs.push(value);\n }\n });\n return result;\n};\n\n/*\n * Returns a new const that wraps `fn` with a timer. The wrapper logs the\n * time it takes to execute the function.\n */\nexport const time = (name: string, fn: () => void) => {\n const start = Date.now();\n try {\n return fn();\n } finally {\n console.log(`${name} time: ${Date.now() - start}ms`);\n }\n};\n\nexport const notime = (name: string, fn: () => void) => {\n return fn();\n};\n\nexport const minBy = (array: T[], func: (param: T) => number) => {\n return array.reduce((a, b) => {\n const valA = func(a);\n const valB = func(b);\n return valA > valB ? b : a;\n });\n};\n","import { Base } from './base';\nimport { Combo, DagreCompoundLayoutOptions, OutNode, Point, PointTuple } from './types';\nimport {\n buildGraph,\n DeepPartial,\n flatGraph,\n getEdges,\n HierarchyBaseEdgeInfo,\n HierarchyBaseNodeInfo,\n HierarchyFlattenedGraphInfo,\n HierarchyGraphCompoundDef,\n HierarchyGraphDef,\n HierarchyGraphNodeInfo,\n HierarchyGraphOption,\n HierarchyNodeType,\n LAYOUT_CONFIG,\n LayoutConfig,\n mergeConfig,\n NodeType,\n ROOT_NAME\n} from 'dagre-compound';\nimport { isArray, isObject } from '../util';\n\ninterface IPoint {\n x: number;\n y: number;\n anchorIndex?: number;\n [key: string]: number | undefined;\n}\n\ninterface Edge {\n source: string;\n target: string;\n type?: string;\n startPoint?: IPoint;\n endPoint?: IPoint;\n controlPoints?: IPoint[];\n sourceAnchor?: number;\n targetAnchor?: number;\n layoutOrder?: number; // 用于描述用户输入数据顺序,确保按照用户原始数据顺序排序\n [key: string]: unknown;\n}\n\ntype ComboType = Combo & {\n x?: number;\n y?: number;\n label?: string;\n type: string;\n size?: number | number[] | undefined;\n fixSize?: number[];\n fixCollapseSize?: number[];\n // combo 入边与出边,收起时优化连线\n inEdges?: Edge[];\n outEdges?: Edge[];\n padding?: number[];\n collapsed?: boolean;\n // 手动指定偏移量\n offsetX?: number;\n offsetY?: number;\n [key: string]: unknown;\n};\n\ntype Node = OutNode & {\n label?: string;\n width?: number;\n height?: number;\n type?: string;\n anchorPoints?: [number, number][];\n layoutOrder?: number; // 用于描述用户输入数据顺序,确保按照用户原始数据顺序排序\n};\n\ntype ModelType = {\n nodes?: Node[];\n edges?: Edge[];\n comboEdges?: Edge[];\n combos?: ComboType[];\n hiddenNodes?: Node[];\n hiddenEdges?: Edge[];\n hiddenCombos?: ComboType[];\n};\n\nexport class DagreCompoundLayout extends Base {\n /** layout 方向, 可选 TB, BT, LR, RL */\n public rankdir: 'TB' | 'BT' | 'LR' | 'RL' = 'TB';\n\n /** 节点对齐方式,可选 UL, UR, DL, DR */\n public align: undefined | 'UL' | 'UR' | 'DL' | 'DR';\n\n /** 布局的起始(左上角)位置 */\n public begin: PointTuple | undefined;\n\n /** 节点大小 */\n public nodeSize: number | number[] | undefined;\n\n /** 节点水平间距(px) */\n public nodesep: number = 50;\n\n /** 边水平间距(px) */\n public edgesep: number = 5;\n\n /** 每一层节点之间间距 */\n public ranksep: number = 50;\n\n /** 是否保留布局连线的控制点 */\n public controlPoints: boolean = true;\n\n /** 是否保留使用布局计算的锚点 */\n public anchorPoint: boolean = true;\n\n /** 全局布局配置,优先级最高 */\n public settings?: DeepPartial;\n\n public nodes: Node[] = [];\n public edges: Edge[] = [];\n public combos: ComboType[] = [];\n\n /** 当前生命周期内布局配置信息 */\n private graphSettings: DeepPartial | undefined;\n\n /** 迭代结束的回调函数 */\n public onLayoutEnd: () => void = () => {};\n constructor(options?: DagreCompoundLayoutOptions) {\n super();\n this.updateCfg(options);\n }\n\n public getDefaultCfg() {\n return {\n rankdir: 'TB', // layout 方向, 可选 TB, BT, LR, RL\n align: undefined, // 节点对齐方式,可选 UL, UR, DL, DR\n begin: undefined, // 布局的起始(左上角)位置\n nodeSize: undefined, // 节点大小\n nodesep: 50, // 节点水平间距(px)\n ranksep: 50, // 每一层节点之间间距\n controlPoints: true, // 是否保留布局连线的控制点\n anchorPoint: true // 是否使用布局计算的锚点\n };\n }\n\n public init(data: ModelType) {\n const hiddenNodes = data.hiddenNodes || []; // 被隐藏的节点\n const hiddenEdges = data.hiddenEdges || []; // 被隐藏的边\n const hiddenCombos = data.hiddenCombos || []; // 赋值 hiddenCombos\n // 确保此次排序按照用户输入顺序\n this.nodes = this.getDataByOrder((data.nodes || []).concat(hiddenNodes));\n this.edges = this.getDataByOrder((data.edges || []).concat(hiddenEdges));\n this.combos = (data.combos || []).concat(hiddenCombos.map((hc) => ({ ...hc, collapsed: true })));\n }\n\n public execute() {\n const self = this;\n const { nodes, edges } = self;\n if (!nodes) return;\n\n const { graphDef, graphOption, graphSettings } = self.getLayoutConfig();\n const renderInfo = buildGraph(graphDef, graphOption, graphSettings);\n const flattenedRenderInfo = flatGraph(renderInfo, true); // 打平数据进行遍历\n this.updatePosition(flattenedRenderInfo);\n\n if (self.onLayoutEnd) self.onLayoutEnd();\n\n return {\n nodes,\n edges\n };\n }\n\n /**\n * combo 模式下查找节点完整路径\n * @param nodeId\n * @private\n */\n private getNodePath(nodeId: string): string[] {\n const self = this;\n const { nodes, combos } = self;\n const targetNode = nodes.find((n) => n.id === nodeId);\n const findPath = (comboId: string, fullPath: string[] = []): string[] => {\n const combo = combos.find((c) => c.id === comboId);\n if (combo) {\n fullPath.unshift(comboId);\n if (combo.parentId) {\n return findPath(combo.parentId, fullPath);\n }\n return fullPath;\n }\n return fullPath;\n };\n if (targetNode && targetNode.comboId) {\n return findPath(targetNode.comboId, [nodeId]);\n }\n return [nodeId];\n }\n\n /** 准备 dagre-compound 布局参数 */\n private getLayoutConfig(): { graphDef: HierarchyGraphDef; graphOption: HierarchyGraphOption; graphSettings: DeepPartial } {\n const self = this;\n const { nodes, edges, combos, nodeSize, rankdir, align, edgesep, nodesep, ranksep, settings } = self;\n const compound = (combos || []).reduce((pre: HierarchyGraphCompoundDef, cur) => {\n const matchedNodes = nodes.filter((n) => n.comboId === cur.id).map((n) => n.id);\n const matchedCombos = (combos || []).filter((n) => n.parentId === cur.id).map((n) => n.id);\n if (matchedNodes.length || matchedCombos.length) {\n pre[cur.id] = [...matchedNodes, ...matchedCombos];\n }\n return pre;\n }, {});\n\n /** 计算 nodeSize */\n let nodeSizeFunc: (d?: Node) => number[];\n if (!nodeSize) {\n nodeSizeFunc = (d?: Node) => {\n if (d && d.size) {\n if (isArray(d.size)) {\n return d.size;\n }\n if (isObject(d.size)) {\n return [d.size.width || 40, d.size.height || 40];\n }\n return [d.size, d.size];\n }\n return [40, 40];\n };\n } else if (isArray(nodeSize)) {\n nodeSizeFunc = () => nodeSize;\n } else {\n nodeSizeFunc = () => [nodeSize, nodeSize];\n }\n\n /** 计算 comboSize */\n const comboSizeFunc: (d?: ComboType) => number[] = (d?: ComboType): number[] => {\n if (d && d.size) {\n if (isArray(d.size)) {\n return d.size;\n }\n return [d.size, d.size];\n }\n return [80, 40];\n };\n\n // 接受 defaultCombo 设置的 size\n const [metaWidth, metaHeight] = comboSizeFunc(combos?.[0]);\n // 初始化 padding\n const subSceneMeta = self.graphSettings?.subScene?.meta;\n const [paddingTop, paddingRight, paddingBottom, paddingLeft] = combos.find((c) => !c.collapsed)?.padding || [20, 20, 20, 20];\n const graphDef = {\n compound,\n nodes: [\n ...(nodes || []).map((n) => {\n const size = nodeSizeFunc(n);\n const width = size[0];\n const height = size[1];\n return { ...n, width, height };\n })\n ],\n edges: [...(edges || []).map((e) => ({ ...e, v: e.source, w: e.target }))]\n };\n\n // 需要展开的节点\n const graphOption = {\n expanded: (combos || []).filter((c) => !c.collapsed).map((c) => c.id)\n };\n\n // dagre-compound 布局参数\n const graphMetaConfig: DeepPartial = {\n graph: {\n meta: {\n align,\n rankDir: rankdir,\n nodeSep: nodesep,\n edgeSep: edgesep,\n rankSep: ranksep\n }\n },\n subScene: {\n meta: {\n paddingTop: paddingTop || subSceneMeta?.paddingTop || 20,\n paddingRight: paddingRight || subSceneMeta?.paddingRight || 20,\n paddingBottom: paddingBottom || subSceneMeta?.paddingBottom || 20,\n paddingLeft: paddingLeft || subSceneMeta?.paddingLeft || 20,\n labelHeight: 0\n }\n },\n nodeSize: {\n meta: {\n width: metaWidth,\n height: metaHeight\n }\n }\n };\n\n // 合并用户输入的内容\n const graphSettings = mergeConfig(settings, {\n ...mergeConfig(graphMetaConfig, LAYOUT_CONFIG)\n });\n self.graphSettings = graphSettings;\n\n return {\n graphDef,\n graphOption,\n graphSettings\n };\n }\n\n /** 更新节点与边位置 */\n private updatePosition(flattenedGraph: HierarchyFlattenedGraphInfo): void {\n const { nodes, edges } = flattenedGraph;\n this.updateNodePosition(nodes, edges);\n this.updateEdgePosition(nodes, edges);\n }\n\n private getBegin(\n flattenedNodes: (HierarchyBaseNodeInfo | HierarchyGraphNodeInfo)[],\n flattenedEdges: HierarchyBaseEdgeInfo[]\n ): PointTuple {\n const self = this;\n const { begin } = self;\n\n const dBegin: PointTuple = [0, 0];\n if (begin) {\n let minX = Infinity;\n let minY = Infinity;\n flattenedNodes.forEach((node) => {\n if (minX > node.x) minX = node.x;\n if (minY > node.y) minY = node.y;\n });\n flattenedEdges.forEach((edge) => {\n edge.points.forEach((point) => {\n if (minX > point.x) minX = point.x;\n if (minY > point.y) minY = point.y;\n });\n });\n dBegin[0] = begin[0] - minX;\n dBegin[1] = begin[1] - minY;\n }\n return dBegin;\n }\n\n private updateNodePosition(\n flattenedNodes: (HierarchyBaseNodeInfo | HierarchyGraphNodeInfo)[],\n flattenedEdges: HierarchyBaseEdgeInfo[]\n ): void {\n const self = this;\n const { combos, nodes, edges, anchorPoint, graphSettings } = self;\n const dBegin = this.getBegin(flattenedNodes, flattenedEdges);\n\n flattenedNodes.forEach((node) => {\n const { x, y, id, type, coreBox } = node;\n if (type === HierarchyNodeType.META && id !== ROOT_NAME) {\n const i = combos.findIndex((item) => item.id === id);\n const subSceneMeta = graphSettings?.subScene?.meta;\n // 将布局生成的 combo 位置暂存至 offsetX offsetY\n combos[i].offsetX = x + dBegin[0];\n combos[i].offsetY = y + dBegin[1];\n combos[i].fixSize = [coreBox.width, coreBox.height];\n combos[i].fixCollapseSize = [coreBox.width, coreBox.height];\n // 如果设置了收起时隐藏 padding,则手动优化 combo padding 信息,展开的话则恢复\n if (!node.expanded) {\n combos[i].padding = [0, 0, 0, 0];\n } else {\n combos[i].padding = [\n subSceneMeta?.paddingTop!,\n subSceneMeta?.paddingRight!,\n subSceneMeta?.paddingBottom!,\n subSceneMeta?.paddingLeft!\n ];\n }\n } else if (type === HierarchyNodeType.OP) {\n const i = nodes.findIndex((item) => item.id === id);\n nodes[i].x = x + dBegin[0];\n nodes[i].y = y + dBegin[1];\n\n if (anchorPoint) {\n const anchorPoints: [number, number][] = [];\n const outEdges = flattenedEdges.filter((e) => e.v === id);\n const inEdges = flattenedEdges.filter((e) => e.w === id);\n // 指定出边锚点,锚点中心点为 [0.5, 0.5]\n if (outEdges.length > 0) {\n outEdges.forEach((outEdge) => {\n const firstPoint = outEdge.points[0];\n const anchorPointX = (firstPoint.x - x) / node.width + 0.5;\n const anchorPointY = (firstPoint.y - y) / node.height + 0.5;\n anchorPoints.push([anchorPointX, anchorPointY]);\n // 出边对应 source 边锚点\n outEdge.baseEdgeList.forEach((baseEdge) => {\n const edge = edges.find((e) => e.source === baseEdge.v && e.target === baseEdge.w);\n if (edge) {\n edge.sourceAnchor = anchorPoints.length - 1;\n }\n });\n });\n }\n // 指定入边锚点\n if (inEdges.length > 0) {\n inEdges.forEach((inEdge) => {\n const lastPoint = inEdge.points[inEdge.points.length - 1];\n const anchorPointX = (lastPoint.x - x) / node.width + 0.5;\n const anchorPointY = (lastPoint.y - y) / node.height + 0.5;\n anchorPoints.push([anchorPointX, anchorPointY]);\n // 出边对应 source 锚点\n inEdge.baseEdgeList.forEach((baseEdge) => {\n const edge = edges.find((e) => e.source === baseEdge.v && e.target === baseEdge.w);\n if (edge) {\n edge.targetAnchor = anchorPoints.length - 1;\n }\n });\n });\n }\n nodes[i].anchorPoints = anchorPoints.length > 0 ? anchorPoints : nodes[i].anchorPoints || [];\n }\n }\n });\n }\n\n private updateEdgePosition(\n flattenedNodes: (HierarchyBaseNodeInfo | HierarchyGraphNodeInfo)[],\n flattenedEdges: HierarchyBaseEdgeInfo[]\n ): void {\n const self = this;\n const { combos, edges, controlPoints } = self;\n const dBegin = this.getBegin(flattenedNodes, flattenedEdges);\n\n if (controlPoints) {\n combos.forEach((combo) => {\n combo.inEdges = [];\n combo.outEdges = [];\n });\n edges.forEach((sourceEdge) => {\n let sourceNode = flattenedNodes.find((v) => v.id === sourceEdge.source);\n let targetNode = flattenedNodes.find((v) => v.id === sourceEdge.target);\n // Combo 收起状态,dagre-compound 不会渲染该节点,边需要使用到 group 的边作为补充\n let points: Point[] = [];\n let sortedEdges: HierarchyBaseEdgeInfo[] = [];\n if (sourceNode && targetNode) {\n sortedEdges = getEdges(sourceNode?.id, targetNode?.id, flattenedNodes);\n } else if (!sourceNode || !targetNode) {\n /** 存在收起节点时,需要重新计算边的 controlPoints,确保线正常 */\n // 情况1:目标节点被收起了,向上寻找该节点最近一个存在的父节点\n const sourceNodePath = self.getNodePath(sourceEdge.source);\n const targetNodePath = self.getNodePath(sourceEdge.target);\n\n const lastExistingSource = sourceNodePath\n .reverse()\n .slice(!sourceNode ? 1 : 0)\n .find((parentId) => flattenedNodes.find((fNode) => fNode.id === parentId));\n const lastExistingTarget = targetNodePath\n .reverse()\n .slice(!targetNode ? 1 : 0)\n .find((parentId) => flattenedNodes.find((fNode) => fNode.id === parentId));\n sourceNode = flattenedNodes.find((v) => v.id === lastExistingSource);\n targetNode = flattenedNodes.find((v) => v.id === lastExistingTarget);\n sortedEdges = getEdges(sourceNode?.id, targetNode?.id, flattenedNodes, { v: sourceEdge.source, w: sourceEdge.target });\n }\n\n points = sortedEdges.reduce((pre, cur) => {\n return [\n ...pre,\n ...cur.points.map((p) => {\n return {\n ...p,\n x: p.x + dBegin[0],\n y: p.y + dBegin[1]\n };\n })\n ];\n }, [] as IPoint[]);\n // 取消首尾节点\n points = points.slice(1, -1);\n sourceEdge.controlPoints = points;\n\n if (targetNode?.type === NodeType.META) {\n // combo 节点控制点\n const i = combos.findIndex((item) => item.id === targetNode?.id);\n if (!combos[i] || combos[i].inEdges?.some((inEdge) => inEdge.source === sourceNode!.id && inEdge.target === targetNode!.id)) {\n return;\n }\n combos[i].inEdges?.push({\n source: sourceNode!.id,\n target: targetNode!.id,\n controlPoints: points\n });\n }\n if (sourceNode?.type === NodeType.META) {\n const i = combos.findIndex((item) => item.id === sourceNode?.id);\n if (!combos[i] || combos[i].outEdges?.some((oedge) => oedge.source === sourceNode!.id && oedge.target === targetNode!.id)) {\n return;\n }\n combos[i].outEdges?.push({\n source: sourceNode!.id,\n target: targetNode!.id,\n controlPoints: points\n });\n }\n });\n }\n }\n\n public getType() {\n return 'dagreCompound';\n }\n\n /**\n * 确保布局使用的数据与用户输入数据顺序一致\n * 通过 layoutOrder 排序 节点 与 边\n * @param list\n * @private\n */\n private getDataByOrder(list: any[]): any[] {\n if (list.every((n) => n.layoutOrder !== undefined)) {\n // 所有数据均设置过索引,表示仅布局,数据未变化,无需处理\n } else {\n // 首次布局或动态添加删减节点时重新赋值\n list.forEach((n, i) => {\n n.layoutOrder = i;\n });\n }\n // 按照 layoutOrder 排序\n return list.sort((pre, cur) => pre.layoutOrder - cur.layoutOrder);\n }\n}\n","import * as d3Force from 'd3-force';\nimport forceGrid from './forceGrid';\nimport mysqlWorkbench from './mysqlWorkbench';\nimport { DagreLayout } from '../dagre';\nimport { INode, IEdge, } from \"./type\";\n\nexport default function layout(data: any, options: any): Promise {\n \n const { nodes, edges } = data;\n const width = options.width;\n const height = options.height;\n if (!nodes?.length) return Promise.resolve();\n\n // 筛选非叶子节点,做Dagre布局\n const noLeafNodes : INode[] = [];\n nodes.forEach((node: any) => {\n const relateEdges = edges.filter((edge: IEdge) => {\n return edge.source === node.id || edge.target === node.id;\n });\n if (relateEdges.length > 1) {\n const temp = { ...node };\n delete temp.size;\n noLeafNodes.push(temp);\n }\n });\n const noLeafEdge: IEdge[] = [];\n edges.forEach((edge: IEdge) => {\n const sourceNode = noLeafNodes.find((node: INode) => node.id === edge.source );\n const targetNode = noLeafNodes.find((node: INode) => node.id === edge.target );\n if (sourceNode && targetNode) {\n noLeafEdge.push(edge);\n }\n });\n const graphLayout = new DagreLayout({\n type: 'dagre',\n ranksep: options.nodeMinGap,\n nodesep: options.nodeMinGap,\n });\n \n const { nodes: nodesTmp } = graphLayout.layout({\n nodes: noLeafNodes,\n edges: noLeafEdge,\n });\n\n // 布局后,坐标同步\n nodes.forEach((n: INode) => {\n const found = ((nodesTmp || []) as INode[]).find((temp: any) => temp.id === n.id);\n n.x = found?.x || width / 2;\n n.y = found?.y || height / 2;\n });\n \n const copyNodes: INode[] = JSON.parse(JSON.stringify(nodes));\n const copyEdges: IEdge[] = JSON.parse(JSON.stringify(edges));\n const simulation = d3Force.forceSimulation().nodes(copyNodes)\n .force(\"link\", d3Force.forceLink(copyEdges).id((d: any) => d.id).distance((d) => {\n const edgeInfo = noLeafEdge.find((edge) => edge.source === d.source && edge.target === d.target);\n if (edgeInfo) {\n return 30;\n }\n return 20;\n }))\n .force(\"charge\", d3Force.forceManyBody())\n .force(\"center\", d3Force.forceCenter(width / 2, height / 2))\n .force(\"x\", d3Force.forceX(width / 2))\n .force(\"y\", d3Force.forceY( height / 2))\n .alpha(0.3)\n .alphaDecay(0.08)\n .alphaMin(0.001);\n\n const layoutPromise = new Promise((resolve) => {\n simulation.on('end', () => {\n // 坐标信息同步到nodes,edges中\n nodes.forEach((node: INode) => {\n const nodeInfo = copyNodes.find((item) => item.id === node.id);\n if (nodeInfo) {\n node.x = nodeInfo.x;\n node.y = nodeInfo.y;\n }\n });\n \n const minX = Math.min(...nodes.map((node: INode) => node.x));\n const maxX = Math.max(...nodes.map((node: INode) => node.x));\n const minY = Math.min(...nodes.map((node: INode) => node.y));\n const maxY = Math.max(...nodes.map((node: INode) => node.y));\n const scalex = width / (maxX - minX);\n const scaley = height / (maxY - minY);\n nodes.forEach((node: INode) => {\n if (node.x !== undefined && scalex < 1) {\n node.x = (node.x - minX) * scalex;\n }\n if (node.y !== undefined && scaley < 1) {\n node.y = (node.y - minY) * scaley;\n }\n });\n\n // 这一步就执行缩小空间。且不考虑节点size\n nodes.forEach((node: INode) => {\n node.sizeTemp = node.size;\n node.size = [10, 10];\n });\n \n mysqlWorkbench(nodes, edges);\n nodes.forEach((node: INode) => {\n node.size = node.sizeTemp || [];\n delete node.sizeTemp;\n });\n // 进行网格对齐+节点大小扩增\n forceGrid({\n nodes,\n edges,\n }, options);\n\n resolve();\n });\n });\n return layoutPromise;\n}\n","import Grid from './grid';\nimport { INode, IEdgeInfo } from './type';\n\nexport default function layout(data: {\n nodes: INode[],\n edges: IEdgeInfo[],\n}, options: any) {\n if (!data.nodes || data.nodes.length === 0) return data;\n const width = options.width;\n const height = options.height;\n const nodeMinGap = options.nodeMinGap;\n\n // 2. 网格布局\n let CELL_W = 10000;\n let CELL_H = 10000;\n data.nodes.forEach((node) => {\n const nodeWidth = node.size[0] || 50;\n const nodeHeight = node.size[1] || 50;\n\n CELL_W = Math.min(nodeWidth, CELL_W);\n CELL_H = Math.min(nodeHeight, CELL_H);\n });\n\n const grid = new Grid();\n grid.init(width, height, {\n CELL_H,\n CELL_W,\n });\n\n data.nodes.forEach((d) => {\n const gridpoint = grid.occupyNearest(d);\n if (gridpoint) { \n gridpoint.node = {\n id: d.id,\n size: d.size,\n };\n d.x = gridpoint.x;\n d.y = gridpoint.y;\n d.dx = gridpoint.dx;\n d.dy = gridpoint.dy;\n }\n });\n\n // 加入节点size\n for (let i = 0; i < data.nodes.length; i++) {\n // 节点宽度大于网格宽度,则往当前网格的右边插入列\n const node = data.nodes[i];\n const result = grid.findGridByNodeId(node.id);\n if (!result) throw new Error(\"can not find node cell\");\n \n const { column, row } = result;\n if ((node.size[0] + nodeMinGap) > CELL_W) {\n const addGridSize = Math.ceil((node.size[0] +nodeMinGap) / CELL_W) - 1;\n let realAdd = addGridSize;\n // 优化,假设同一列,不同行存在两个size为2的节点,遍历到第一个节点的时候,会往右插入两列,遍历到第二个节点,又往右插入。就会导致多余的网格\n for(let j=0; j< addGridSize; j++) {\n const hasColumn = grid.additionColumn.indexOf(column + j + 1) > -1;\n if (hasColumn && !grid.cells[column + j + 1][row].node) {\n realAdd --;\n } else {\n break;\n }\n }\n grid.insertColumn(column, realAdd);\n }\n // 节点高度大于网格宽度,则往当前网格的下边插入行\n if ((node.size[1] +nodeMinGap) > CELL_H) {\n const addGridSize = Math.ceil((node.size[1]+nodeMinGap) / CELL_H) - 1;\n let realAdd = addGridSize;\n for(let j=0; j< addGridSize; j++) {\n const hasColumn = grid.additionRow.indexOf(row + j + 1) > -1;\n if (hasColumn && !grid.cells[column][row + j + 1].node) {\n realAdd --;\n } else {\n break;\n }\n }\n grid.insertRow(row, realAdd);\n }\n }\n \n // 同步节点坐标\n for(let i = 0; i < grid.columnNum; i++) {\n for(let j = 0; j < grid.rowNum; j++) {\n const cell = grid.cells[i][j];\n if (cell.node) {\n const node = data.nodes.find((node) => node.id === cell?.node?.id);\n if (node) {\n node.x = cell.x + node.size[0] / 2;\n node.y = cell.y + node.size[1] / 2;\n }\n }\n }\n }\n}","import { ICell, INode } from './type';\n\nexport default class Grid {\n public cells: ICell[][] = [];\n public columnNum:number = 0;\n public rowNum: number = 0;\n \n public additionColumn: number[] = [];\n public additionRow: number[] = [];\n private static MIN_DIST = 50;\n private static DEFAULT_CELL_W = 80;\n private static DEFAULT_CELL_H = 80;\n private CELL_W: number;\n private CELL_H: number;\n\n public init(width: number, height: number, gridSize: {\n CELL_W: number,\n CELL_H: number,\n }) {\n this.cells = [];\n this.CELL_W = gridSize.CELL_W || Grid.DEFAULT_CELL_W;\n this.CELL_H = gridSize.CELL_H || Grid.DEFAULT_CELL_H;\n this.columnNum = Math.ceil(width / this.CELL_W);\n this.rowNum = Math.ceil(height / this.CELL_H);\n Grid.MIN_DIST = Math.pow(width, 2) + Math.pow(height, 2);\n\n for(let i = 0; i < this.columnNum; i++) {\n const tmp = [];\n for(let j = 0; j < this.rowNum; j++) {\n const cell = {\n dx: i,\n dy: j,\n x : i * this.CELL_W,\n y : j * this.CELL_H,\n occupied : false\n };\n tmp.push(cell);\n }\n this.cells.push(tmp);\n }\n }\n\n public findGridByNodeId(nodeId: string){\n for(let i = 0; i < this.columnNum; i++) {\n for(let j = 0; j < this.rowNum; j++) {\n if(this.cells[i][j].node) {\n if (this.cells[i][j]?.node?.id === nodeId) {\n return {column: i, row: j};\n }\n }\n }\n }\n return null;\n }\n \n public sqdist(a: any, b: any) {\n return Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2);\n }\n\n public occupyNearest(p: INode) {\n let minDist = Grid.MIN_DIST;\n let d;\n let candidate = null;\n for(let i = 0; i < this.columnNum; i++) {\n for(let j = 0; j < this.rowNum; j++) {\n if(!this.cells[i][j].occupied && ( d = this.sqdist(p, this.cells[i][j])) < minDist) {\n minDist = d;\n candidate = this.cells[i][j];\n }\n }\n }\n if(candidate) {\n candidate.occupied = true;\n }\n return candidate;\n }\n\n public insertColumn(columnIndex: number, length: number) {\n if (length <= 0) return ;\n // 插入空列\n for (let i = 0; i < length; i++) {\n this.cells[i + this.columnNum] = [];\n for(let j = 0; j < this.rowNum; j++) {\n this.cells[i + this.columnNum][j] = {\n dx: i,\n dy: j,\n x : i * this.CELL_W,\n y : j * this.CELL_H,\n occupied : false,\n node: null,\n };\n }\n }\n // 交换数据\n for(let i = (this.columnNum - 1); i > columnIndex; i--) {\n for (let j = 0; j < this.rowNum; j++) {\n this.cells[i + length][j] = {\n ...this.cells[i][j],\n x: (i+length) * this.CELL_W,\n y: j * this.CELL_H,\n };\n this.cells[i][j] = {\n x : i * this.CELL_W,\n y : j * this.CELL_H,\n occupied : true,\n node: null,\n };\n }\n }\n // 已有行列的处理\n for (let j = 0; j < this.additionColumn.length; j++) {\n if (this.additionColumn[j] >= columnIndex) {\n this.additionColumn[j] += length;\n }\n }\n // 记录新增的行列\n for (let i = 0; i < length; i++) {\n this.additionColumn.push(columnIndex + i + 1);\n }\n this.columnNum += length;\n }\n\n public insertRow(rowIndex: number, length: number) {\n if (length <= 0) return ;\n // 插入空行\n for (let j = 0; j < length; j++) {\n for(let i = 0; i < this.columnNum; i++) {\n this.cells[i][j + this.rowNum] = {\n dx: i,\n dy: j,\n x : i * this.CELL_W,\n y : j * this.CELL_H,\n occupied : false,\n node: null,\n };\n }\n }\n\n // 交换数据\n for(let i = 0; i < this.columnNum; i++) {\n for (let j = (this.rowNum - 1); j > rowIndex; j--) {\n this.cells[i][j+length] = {\n ...this.cells[i][j],\n dx: i,\n dy: j + length,\n x: i * this.CELL_W,\n y: (j+length) * this.CELL_H,\n };\n this.cells[i][j] = {\n dx: i,\n dy: j,\n x : i * this.CELL_W,\n y : j *this.CELL_H,\n occupied : false,\n node: null,\n };\n \n }\n }\n \n // 已有行列的处理\n for (let j = 0; j < this.additionRow.length; j++) {\n if (this.additionRow[j] >= rowIndex) {\n this.additionRow[j] += length;\n }\n }\n // 记录新增的行列\n for (let i = 0; i < length; i++) {\n this.additionRow.push(rowIndex + i + 1);\n }\n this.rowNum += length;\n }\n\n public getNodes() {\n const nodes = [];\n for(let i = 0; i < this.columnNum; i++) {\n for(let j = 0; j < this.rowNum; j++) {\n if(this.cells[i][j].node) {\n nodes.push(this.cells[i][j]);\n }\n }\n }\n return nodes;\n }\n}","/**\n * @fileOverview Force Layout Grid Align layout\n * @author wenyanqi\n */\n\nimport { Base } from \"../base\";\nimport layout from './core';\nimport { INode } from './type';\n\nexport interface ERLayoutOptions {\n type: \"er\";\n width?: number;\n height?: number;\n nodeMinGap?: number;\n}\n\nexport class ERLayout extends Base {\n\n public width: number = 300;\n public height: number = 300;\n public nodeMinGap: number = 50;\n\n /** 迭代结束的回调函数 */\n public onLayoutEnd: () => void = () => { };\n\n constructor(options?: any) {\n super();\n if (options) {\n this.updateCfg(options);\n }\n }\n\n public getDefaultCfg() {\n return {\n width: 300,\n height: 300,\n nodeMinGap: 50,\n };\n }\n\n /**\n * 执行布局\n */\n public execute() {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges;\n // 节点初始化,size初始化\n nodes?.forEach((node: INode) => {\n if (!node.size) {\n node.size = [50, 50];\n }\n });\n return layout({\n nodes, edges,\n }, {\n width: this.width,\n height: this.height,\n nodeMinGap: this.nodeMinGap,\n }).then(() => {\n if (self.onLayoutEnd) self.onLayoutEnd();\n });\n }\n\n public getType() {\n return \"er\";\n }\n}\n","import { IEdge, IMysqlNode } from './type';\n\nconst graphWidth = 1200;\nconst graphHeight = 800;\nconst OVERLAP_QUOT = 10000000;\nconst MIN_DIST = 10;\nconst M_PI = 3.14159265358979323846;\nconst M_PI_2 = 1.57079632679489661923;\nconst PI_38 = M_PI * 0.375;\nconst PI_58 = M_PI * 0.625;\nconst nodeEdgeMap = new Map();\nconst CELL_W = 10;\nconst CELL_H = 10;\nlet T = 0.8;\nconst T_MIN = 0.1;\nconst R = 0.5;\n\nfunction distanceToNode(node1: IMysqlNode, node2: IMysqlNode, isHoriz: boolean) {\n const x11 = node1.x - node1.size[0] / 2;\n const y11 = node1.y - node1.size[1] / 2;\n const x12 = node1.x + node1.size[0] / 2;\n const y12 = node1.y + node1.size[1] / 2;\n const x21 = node2.x - node2.size[0] / 2;\n const y21 = node2.y - node2.size[1] / 2;\n const x22 = node2.x + node2.size[0] / 2;\n const y22 = node2.y + node2.size[1] / 2;\n\n const cx1 = node1.x;\n const cy1 = node1.y;\n const cx2 = node2.x;\n const cy2 = node2.y;\n const dcx = cx2 - cx1;\n // 两个节点间的方位角 \n const qr = Math.atan2(dcx, (cy2 - cy1));\n let dx = 0;\n let dy = 0;\n let l1 = 0;\n let l2 = 0;\n if (qr > M_PI_2) {\n dy = y11 - y22;\n dx = x21 - x12;\n l1 = parseFloat(dy ? (dy / Math.cos(qr)).toFixed(2) : (dx).toFixed(2)); \n l2 = parseFloat(dx ? (dx / Math.sin(qr)).toFixed(2) : (dy).toFixed(2)); \n } else if (0.0 < qr && qr <= M_PI_2) {\n dy = y21 - y12;\n dx = x21 - x12;\n if (dy > dx) {\n l1 = l2 = parseFloat(dy ? (dy / Math.cos(qr)).toFixed(2) : (dx).toFixed(2));\n } else {\n l1 = l2 = parseFloat(dx ? (dx / Math.sin(qr)).toFixed(2) : (dy).toFixed(2));\n }\n \n } else if (qr < -M_PI_2) {\n dy = y11 - y22;\n dx = -(x22 - x11);\n if (dy > dx) {\n l1 = l2 = parseFloat(dy ? (dy / Math.cos(qr)).toFixed(2) : (dx).toFixed(2));\n } else {\n l1 = l2 = parseFloat(dx ? (dx / Math.sin(qr)).toFixed(2) : (dy).toFixed(2));\n }\n }else {\n dy = y21 - y12;\n if (Math.abs(dcx) > (x12 - x11) / 2) {\n dx = x11 - x22;\n } else {\n dx = dcx;\n }\n \n if (dy > dx) {\n l1 = l2 = parseFloat(dy ? (dy / Math.cos(qr)).toFixed(2) : (dx).toFixed(2));\n } else {\n l1 = l2 = parseFloat((dx && qr !== 0.0) ? (dx / Math.sin(qr)).toFixed(2) : (dy).toFixed(2));\n }\n \n }\n const aqr = parseFloat(qr.toFixed(2));\n // 判断是否水平,角度\n let newHoriz = isHoriz;\n if (isHoriz) {\n newHoriz = PI_38 < aqr && aqr < PI_58;\n }\n return {\n distance: Math.abs(l1 < l2 ? l1 : l2),\n isHoriz: newHoriz,\n };\n}\n\nfunction calcNodePair(nodeA: IMysqlNode, nodeB: IMysqlNode) {\n // 确定两个节点间是否存在连线\n const edges = nodeEdgeMap.get(nodeA.id) || [];\n const isLinked = edges.find((edge: IEdge) => {\n return edge.source === nodeB.id || edge.target === nodeB.id;\n });\n\n const areaA = nodeA.size[0] * nodeA.size[1];\n const areaB = nodeB.size[0] * nodeB.size[1];\n const node1 = areaA > areaB ? nodeB : nodeA;\n const node2 = areaA > areaB ? nodeA : nodeB;\n\n const x11 = node1.x - node1.size[0] / 2;\n const y11 = node1.y - node1.size[1] / 2;\n const x12 = node1.x + node1.size[0] / 2;\n const y12 = node1.y + node1.size[1] / 2;\n const x21 = node2.x - node2.size[0] / 2;\n const y21 = node2.y - node2.size[1] / 2;\n const x22 = node2.x + node2.size[0] / 2;\n const y22 = node2.y + node2.size[1] / 2;\n\n const cx1 = node1.x;\n const cy1 = node1.y;\n const cx2 = node2.x;\n const cy2 = node2.y;\n\n // Detect if nodes overlap 检查节点之间是否存在覆盖问题\n const isoverlap = ((x12 >= x21) && (x22 >= x11) && (y12 >= y21) && (y22 >= y11));\n let e = 0;\n let distance = 0;\n \n if (isoverlap) {\n \n distance = Math.sqrt(Math.pow((cx2 - cx1), 2) + Math.pow((cy2 - cy1), 2));\n\n // calc area of overlap 计算重复区域的坐标和面积\n const sx1 = x11 > x21 ? x11 : x21;\n const sy1 = y11 > y21 ? y11 : y21;\n const sx2 = x12 < x22 ? x12 : x22;\n const sy2 = y12 < y22 ? y12 : y22;\n const dsx = sx2 - sx1;\n const dsy = sy2 - sy1;\n\n const sov = dsx * dsy;\n\n if (distance === 0.0) {\n distance = 0.0000001;\n }\n\n e = MIN_DIST * 1 / distance * 100 + sov;\n e *= OVERLAP_QUOT;\n } else {\n let isHoriz = false;\n const res = distanceToNode(node1, node2, isHoriz);\n distance = res.distance;\n isHoriz = res.isHoriz;\n\n if (distance <= MIN_DIST) {\n if (distance !== 0) {\n if (isLinked) {\n e += MIN_DIST + OVERLAP_QUOT * 1 / distance;\n }\n else {\n e += MIN_DIST + OVERLAP_QUOT * MIN_DIST / distance;\n } \n } else {\n e += OVERLAP_QUOT;\n }\n } else {\n e += distance;\n if (isLinked) {\n e += distance * distance;\n } \n }\n }\n\n return e;\n}\nfunction calcEnergy(nodes: any) {\n let energy = 0;\n for(let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if ((node.x < 0) || (node.y < 0) || (node.x > graphWidth) || (node.y > graphHeight)) {\n energy += 1000000000000;\n }\n for (let j = i + 1; j < nodes.length; j++) {\n energy += calcNodePair(node, nodes[j]);\n }\n }\n\n return energy;\n}\n\nfunction isCorrectPosition(node: IMysqlNode, newPosition: {\n x: number, y: number\n}, nodes: IMysqlNode[], edges: IEdge[]) {\n const nodeIdxMap = new Map();\n nodes.forEach((o, i) => {\n nodeIdxMap.set(o.id, o);\n });\n const relateEdges = edges.filter((edge) => edge.source === node.id || edge.target === node.id) || [];\n const relateNodes: IMysqlNode[] = [];\n relateEdges.forEach((edge) => {\n const otherNodeId = edge.source === node.id ? edge.target : edge.source;\n const otherNode = nodeIdxMap.get(otherNodeId);\n if (otherNode) {\n relateNodes.push(otherNode);\n }\n });\n\n let flag = true;\n for(let i = 0; i < relateNodes.length; i++) {\n const item = relateNodes[i];\n // 判断条件调整,节点的坐标不需要完全一致。可以根据节点间的夹角来判断\n const delta = Math.atan((node.y - item.y) / (item.x - node.y)) * 180;\n const newDelta = Math.atan((newPosition.y - item.y) / (item.x - newPosition.y)) * 180;\n const isHor = delta < 30 || delta > 150;\n const newIsHor = newDelta < 30 || newDelta > 150;\n const isVer = delta > 70 && delta < 110;\n const newIsVer = newDelta > 70 && newDelta < 110;\n // 定义四个相似角度区间,0-15度,75-90度,90到105度,165到180度。\n if (isHor && !newIsHor || ((delta * newDelta) < 0)) {\n flag = false;\n break;\n } else if (isVer && !newIsVer || ((delta * newDelta) < 0)) {\n flag = false;\n break;\n } else if ((item.x - node.x) * (item.x - newPosition.x) < 0) {\n flag = false;\n break;\n }else if ((item.y - node.y) * (item.y - newPosition.y) < 0) {\n flag = false;\n break;\n }\n }\n return flag;\n}\n\nfunction shuffle(nodes: IMysqlNode[], edges: IEdge[]) {\n let foundSmallerEnergy = false;\n // 多次测试发现step为1时的效果最佳。\n const step = 1; \n const wstep = CELL_W * step;\n const hstep = CELL_H * step;\n const wsteps = [ wstep, -wstep, 0, 0, ];\n const hsteps = [ 0, 0, hstep, -hstep, ];\n for (let i = 0; i < nodes.length; ++i) {\n const node = nodes[i];\n let nodeEnergy = calcNodeEnergy(node, nodes);\n for (let ns = 0; ns < wsteps.length ; ns++) {\n // 判断新位置与其他连线节点的位置关系是否违规\n const flag = isCorrectPosition(node, { x: node.x + wsteps[ns], y: node.y + hsteps[ns] }, nodes, edges);\n if (flag) {\n // 节点朝上下左右四个方向移动,找到能量最小的那个位置\n node.x += wsteps[ns];\n node.y += hsteps[ns];\n \n // 计算移动后节点的能量\n const energy = calcNodeEnergy(node, nodes);\n const rdm = Math.random();\n \n if (energy < nodeEnergy) {\n nodeEnergy = energy;\n foundSmallerEnergy = true;\n \n } else if (rdm < T && rdm > T_MIN) {\n nodeEnergy = energy;\n foundSmallerEnergy = true;\n \n } else {\n // 回归原位\n node.x -= wsteps[ns];\n node.y -= hsteps[ns];\n }\n } \n }\n\n }\n if (T > T_MIN) {\n T *= R;\n }\n // 重新计算图整体的能量\n if (foundSmallerEnergy) {\n return calcEnergy(nodes);\n }\n return 0;\n}\n\n// 计算节点的能量,\nfunction calcNodeEnergy(node: IMysqlNode, nodes: IMysqlNode[]) {\n let e = 0.0;\n if ((node.x < 0) || (node.y < 0) || \n (node.x + node.size[0] + 20 > graphWidth) ||\n (node.y + node.size[1] + 20 > graphHeight)\n ) {\n e += 1000000000000.0;\n }\n\n for (let i = 0; i < nodes.length; ++i) {\n if (node.id !== nodes[i].id) {\n e += calcNodePair(node, nodes[i]);\n }\n }\n return e;\n}\n\nfunction layout(nodes: IMysqlNode[], edges: IEdge[]) {\n if (nodes.length === 0) {\n return { nodes, edges };\n }\n nodes.forEach((node: any) => {\n const relateEdge = edges.filter((edge) => edge.source === node.id || edge.target === node.id);\n nodeEdgeMap.set(node, relateEdge);\n });\n\n // 1. 初始化\n // 将node按照连接数进行排序\n nodes.sort((node1: IMysqlNode, node2: IMysqlNode) => {\n return nodeEdgeMap.get(node1.id)?.length - nodeEdgeMap.get(node2.id)?.length;\n });\n\n // 2. 计算图能量\n let minEnergy = calcEnergy(nodes);\n let deSameCount = 20; // de=0 count\n let de = 1; // energy delta\n let prevEnergy = 0;\n // 定义总的迭代次数。超过就停掉,防止死循环\n const MAX_COUNT = 50;\n let count = 0;\n while (deSameCount > 0) {\n count ++;\n if (count >= MAX_COUNT) {\n break;\n }\n const ea = shuffle(nodes, edges);\n if (ea !== 0) {\n prevEnergy = ea;\n } \n de = prevEnergy - minEnergy;\n minEnergy = prevEnergy;\n if (de === 0) {\n --deSameCount;\n } else {\n deSameCount = 20;\n }\n }\n nodes.forEach((node: IMysqlNode) => {\n node.x = node.x - node.size[0] / 2;\n node.y = node.y - node.size[1] / 2;\n });\n \n return {\n nodes,\n edges,\n };\n}\n\nexport default layout;","import * as d3Force from 'd3-force';\nimport { getEdgeTerminal } from '../../util';\n\ninterface INode {\n id: string;\n x: number;\n y: number;\n vx: number;\n vy: number;\n cluster: any;\n}\n\n// https://github.com/john-guerra/forceInABox/blob/master/src/forceInABox.js\nexport default function forceInABox() {\n function constant(_: any): () => any {\n return () => _;\n }\n\n let groupBy = (d: INode) => {\n return d.cluster;\n };\n let forceNodeSize: (() => number) | ((d: any) => number) = constant(1);\n let forceCharge: (() => number) | ((d: any) => number) = constant(-1);\n let forceLinkDistance: (() => number) | ((d: any) => number) = constant(100);\n let forceLinkStrength: (() => number) | ((d: any) => number) = constant(0.1);\n let offset = [0, 0];\n\n let nodes: INode[] = [];\n let nodesMap: any = {};\n let links: any[] = [];\n let centerX = 100;\n let centerY = 100;\n let foci: any = {\n none: {\n x: 0,\n y: 0,\n },\n };\n let templateNodes: INode[] = [];\n let templateForce: any;\n let template = 'force';\n let enableGrouping = true;\n let strength = 0.1;\n\n function force(alpha: number) {\n if (!enableGrouping) {\n return force;\n }\n templateForce.tick();\n getFocisFromTemplate();\n\n for (let i = 0, n = nodes.length, node, k = alpha * strength; i < n; ++i) {\n node = nodes[i];\n node.vx += (foci[groupBy(node)].x - node.x) * k;\n node.vy += (foci[groupBy(node)].y - node.y) * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n initializeWithForce();\n }\n\n function initializeWithForce() {\n if (!nodes || !nodes.length) {\n return;\n }\n\n if (groupBy(nodes[0]) === undefined) {\n throw Error(\n \"Couldnt find the grouping attribute for the nodes. Make sure to set it up with forceInABox.groupBy('clusterAttr') before calling .links()\",\n );\n }\n\n // checkLinksAsObjects();\n\n const net = getGroupsGraph();\n templateForce = d3Force\n .forceSimulation(net.nodes)\n .force('x', d3Force.forceX(centerX).strength(0.1))\n .force('y', d3Force.forceY(centerY).strength(0.1))\n .force('collide', d3Force.forceCollide((d: any) => d.r).iterations(4))\n .force('charge', d3Force.forceManyBody().strength(forceCharge))\n .force(\n 'links',\n d3Force\n .forceLink(net.nodes.length ? net.links : [])\n .distance(forceLinkDistance)\n .strength(forceLinkStrength),\n );\n\n templateNodes = templateForce.nodes();\n\n getFocisFromTemplate();\n }\n\n function getGroupsGraph() {\n const gnodes: any = [];\n const glinks: any = [];\n const dNodes: any = {};\n let clustersList = [];\n let clustersCounts: any = {};\n let clustersLinks: any = [];\n\n clustersCounts = computeClustersNodeCounts(nodes);\n clustersLinks = computeClustersLinkCounts(links);\n\n clustersList = Object.keys(clustersCounts);\n\n clustersList.forEach((key, index) => {\n const val = clustersCounts[key];\n // Uses approx meta-node size\n gnodes.push({\n id: key,\n size: val.count,\n r: Math.sqrt(val.sumforceNodeSize / Math.PI),\n });\n dNodes[key] = index;\n });\n\n clustersLinks.forEach((l: any) => {\n const sourceTerminal = getEdgeTerminal(l, 'source');\n const targetTerminal = getEdgeTerminal(l, 'target');\n const source = dNodes[sourceTerminal];\n const target = dNodes[targetTerminal];\n if (source !== undefined && target !== undefined) {\n glinks.push({\n source,\n target,\n count: l.count,\n });\n }\n });\n\n return {\n nodes: gnodes,\n links: glinks,\n };\n }\n\n function computeClustersNodeCounts(nodes: any) {\n const clustersCounts: any = {};\n\n nodes.forEach((d: any) => {\n const key = groupBy(d);\n if (!clustersCounts[key]) {\n clustersCounts[key] = {\n count: 0,\n sumforceNodeSize: 0,\n };\n }\n });\n nodes.forEach((d: any) => {\n const key = groupBy(d);\n const nodeSize = forceNodeSize(d);\n const tmpCount = clustersCounts[key];\n tmpCount.count = tmpCount.count + 1;\n tmpCount.sumforceNodeSize =\n tmpCount.sumforceNodeSize + Math.PI * (nodeSize * nodeSize) * 1.3;\n clustersCounts[key] = tmpCount;\n });\n\n return clustersCounts;\n }\n\n function computeClustersLinkCounts(links: any) {\n const dClusterLinks: any = {};\n const clusterLinks: any = [];\n links.forEach((l: any) => {\n const key = getLinkKey(l);\n let count = 0;\n if (dClusterLinks[key] !== undefined) {\n count = dClusterLinks[key];\n }\n count += 1;\n dClusterLinks[key] = count;\n });\n\n // @ts-ignore\n const entries = Object.entries(dClusterLinks);\n\n entries.forEach(([key, count]: any) => {\n const source = key.split('~')[0];\n const target = key.split('~')[1];\n if (source !== undefined && target !== undefined) {\n clusterLinks.push({\n source,\n target,\n count,\n });\n }\n });\n\n return clusterLinks;\n }\n\n function getFocisFromTemplate() {\n foci = {\n none: {\n x: 0,\n y: 0,\n },\n };\n templateNodes.forEach((d) => {\n foci[d.id] = {\n x: d.x - offset[0],\n y: d.y - offset[1],\n };\n });\n return foci;\n }\n\n function getLinkKey(l: any) {\n const source = getEdgeTerminal(l, 'source');\n const target = getEdgeTerminal(l, 'target');\n const sourceID = groupBy(nodesMap[source]);\n const targetID = groupBy(nodesMap[target]);\n\n return sourceID <= targetID\n ? `${sourceID}~${targetID}`\n : `${targetID}~${sourceID}`;\n }\n\n function genNodesMap(nodes: any) {\n nodesMap = {};\n nodes.forEach((node: any) => {\n nodesMap[node.id] = node;\n });\n }\n\n function setTemplate(x: any) {\n if (!arguments.length) return template;\n template = x;\n initialize();\n return force;\n }\n\n function setGroupBy(x: any) {\n if (!arguments.length) return groupBy;\n if (typeof x === 'string') {\n groupBy = (d: any) => {\n return d[x];\n };\n return force;\n }\n groupBy = x;\n return force;\n }\n\n function setEnableGrouping(x: any) {\n if (!arguments.length) return enableGrouping;\n enableGrouping = x;\n return force;\n }\n\n function setStrength(x: any) {\n if (!arguments.length) return strength;\n strength = x;\n return force;\n }\n\n function setCenterX(_: any) {\n if (arguments.length) {\n centerX = _;\n return force;\n }\n\n return centerX;\n }\n\n function setCenterY(_: any) {\n if (arguments.length) {\n centerY = _;\n return force;\n }\n\n return centerY;\n }\n\n function setNodes(_: any) {\n if (arguments.length) {\n genNodesMap(_ || []);\n nodes = _ || [];\n return force;\n }\n return nodes;\n }\n\n function setLinks(_: any) {\n if (arguments.length) {\n links = _ || [];\n initialize();\n return force;\n }\n return links;\n }\n\n function setForceNodeSize(_: any) {\n if (arguments.length) {\n if (typeof _ === 'function') {\n forceNodeSize = _;\n } else {\n forceNodeSize = constant(+_);\n }\n initialize();\n return force;\n }\n\n return forceNodeSize;\n }\n\n function setForceCharge(_: any) {\n if (arguments.length) {\n if (typeof _ === 'function') {\n forceCharge = _;\n } else {\n forceCharge = constant(+_);\n }\n initialize();\n return force;\n }\n\n return forceCharge;\n }\n\n function setForceLinkDistance(_: any) {\n if (arguments.length) {\n if (typeof _ === 'function') {\n forceLinkDistance = _;\n } else {\n forceLinkDistance = constant(+_);\n }\n initialize();\n return force;\n }\n\n return forceLinkDistance;\n }\n\n function setForceLinkStrength(_: any) {\n if (arguments.length) {\n if (typeof _ === 'function') {\n forceLinkStrength = _;\n } else {\n forceLinkStrength = constant(+_);\n }\n initialize();\n return force;\n }\n\n return forceLinkStrength;\n }\n\n function setOffset(_: any) {\n if (arguments.length) {\n offset = _;\n return force;\n }\n\n return offset;\n }\n\n force.initialize = (_: any) => {\n nodes = _;\n initialize();\n };\n\n force.template = setTemplate;\n\n force.groupBy = setGroupBy;\n\n force.enableGrouping = setEnableGrouping;\n\n force.strength = setStrength;\n\n force.centerX = setCenterX;\n\n force.centerY = setCenterY;\n\n force.nodes = setNodes;\n\n force.links = setLinks;\n\n force.forceNodeSize = setForceNodeSize;\n\n // Legacy support\n force.nodeSize = force.forceNodeSize;\n\n force.forceCharge = setForceCharge;\n\n force.forceLinkDistance = setForceLinkDistance;\n\n force.forceLinkStrength = setForceLinkStrength;\n\n force.offset = setOffset;\n\n force.getFocis = getFocisFromTemplate;\n\n return force;\n}\n","/**\n * @fileOverview random layout\n * @author shiwu.wyy@antfin.com\n */\n\nimport { Edge, Model, PointTuple, ForceLayoutOptions } from \"../types\";\nimport * as d3Force from \"d3-force\";\nimport forceInABox from \"./force-in-a-box\";\nimport { isArray, isFunction, isNumber, isObject } from \"../../util\";\nimport { Base } from \"../base\";\nimport { LAYOUT_MESSAGE } from \"../constants\";\n\n/**\n * 经典力导布局 force-directed\n */\nexport class ForceLayout extends Base {\n /** 向心力作用点 */\n public center: PointTuple = [0, 0];\n\n /** 节点作用力 */\n public nodeStrength: number | null = null;\n\n /** 边的作用力, 默认为根据节点的入度出度自适应 */\n public edgeStrength: number | null = null;\n\n /** 是否防止节点相互覆盖 */\n public preventOverlap: boolean = false;\n\n /** 节点大小 / 直径,用于防止重叠时的碰撞检测 */\n public nodeSize: number | number[] | ((d?: unknown) => number) | undefined;\n\n /** 节点间距,防止节点重叠时节点之间的最小距离(两节点边缘最短距离) */\n public nodeSpacing: ((d?: unknown) => number) | undefined;\n\n /** 是否支持按类聚合 */\n public clustering: boolean;\n\n /** 聚类节点作用力 */\n public clusterNodeStrength: number | null = null;\n\n /** 聚类边作用力 */\n public clusterEdgeStrength: number | null = null;\n\n /** 聚类边长度 */\n public clusterEdgeDistance: number | null = null;\n\n /** 聚类节点大小 / 直径,直径越大,越分散 */\n public clusterNodeSize: number | null = null;\n\n /** 用于 foci 的力 */\n public clusterFociStrength: number | null = null;\n\n /** 默认边长度 */\n public linkDistance: number = 50;\n\n /** 自定义 force 方法 */\n public forceSimulation: any;\n\n /** 迭代阈值的衰减率 [0, 1],0.028 对应最大迭代数为 300 */\n public alphaDecay: number = 0.028;\n\n /** 停止迭代的阈值 */\n public alphaMin: number = 0.001;\n\n /** 当前阈值 */\n public alpha: number = 0.3;\n\n /** 防止重叠的力强度 */\n public collideStrength: number = 1;\n\n /** 是否启用web worker。前提是在web worker里执行布局,否则无效\t*/\n public workerEnabled: boolean = false;\n\n public tick: () => void = () => {};\n\n /** 布局完成回调 */\n public onLayoutEnd: () => void = () => {};\n\n /** 是否正在布局 */\n private ticking: boolean | undefined = undefined;\n\n private edgeForce: any;\n\n private clusterForce: any;\n\n constructor(options?: ForceLayoutOptions) {\n super();\n if (options) {\n this.updateCfg(options);\n }\n }\n\n public getDefaultCfg() {\n return {\n center: [0, 0],\n nodeStrength: null,\n edgeStrength: null,\n preventOverlap: false,\n nodeSize: undefined,\n nodeSpacing: undefined,\n linkDistance: 50,\n forceSimulation: null,\n alphaDecay: 0.028,\n alphaMin: 0.001,\n alpha: 0.3,\n collideStrength: 1,\n clustering: false,\n clusterNodeStrength: -1,\n clusterEdgeStrength: 0.1,\n clusterEdgeDistance: 100,\n clusterFociStrength: 0.8,\n clusterNodeSize: 10,\n tick() {},\n onLayoutEnd() {}, // 布局完成回调\n // 是否启用web worker。前提是在web worker里执行布局,否则无效\n workerEnabled: false\n };\n }\n\n /**\n * 初始化\n * @param {object} data 数据\n */\n public init(data: Model) {\n const self = this;\n self.nodes = data.nodes || [];\n const edges = data.edges || [];\n self.edges = edges.map((edge) => {\n const res: any = {};\n const expectKeys = [\"targetNode\", \"sourceNode\", \"startPoint\", \"endPoint\"];\n Object.keys(edge).forEach((key: keyof Edge) => {\n if (!(expectKeys.indexOf(key) > -1)) {\n res[key] = edge[key];\n }\n });\n return res;\n });\n self.ticking = false;\n }\n\n /**\n * 执行布局\n */\n public execute(reloadData?: boolean) {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges;\n // 如果正在布局,忽略布局请求\n if (self.ticking) {\n return;\n }\n let simulation = self.forceSimulation;\n const alphaMin = self.alphaMin;\n const alphaDecay = self.alphaDecay;\n const alpha = self.alpha;\n if (!simulation) {\n try {\n // 定义节点的力\n const nodeForce = d3Force.forceManyBody();\n if (self.nodeStrength) {\n nodeForce.strength(self.nodeStrength);\n }\n simulation = d3Force.forceSimulation().nodes(nodes as any);\n\n if (self.clustering) {\n const clusterForce = forceInABox() as any;\n clusterForce\n .centerX(self.center[0])\n .centerY(self.center[1])\n .template(\"force\")\n .strength(self.clusterFociStrength);\n if (edges) {\n clusterForce.links(edges);\n }\n if (nodes) {\n clusterForce.nodes(nodes);\n }\n clusterForce\n .forceLinkDistance(self.clusterEdgeDistance)\n .forceLinkStrength(self.clusterEdgeStrength)\n .forceCharge(self.clusterNodeStrength)\n .forceNodeSize(self.clusterNodeSize);\n\n self.clusterForce = clusterForce;\n simulation.force(\"group\", clusterForce);\n }\n simulation\n .force(\"center\", d3Force.forceCenter(self.center[0], self.center[1]))\n .force(\"charge\", nodeForce)\n .alpha(alpha)\n .alphaDecay(alphaDecay)\n .alphaMin(alphaMin);\n\n if (self.preventOverlap) {\n self.overlapProcess(simulation);\n }\n // 如果有边,定义边的力\n if (edges) {\n // d3 的 forceLayout 会重新生成边的数据模型,为了避免污染源数据\n const edgeForce = d3Force\n .forceLink()\n .id((d: any) => d.id)\n .links(edges);\n if (self.edgeStrength) {\n edgeForce.strength(self.edgeStrength);\n }\n if (self.linkDistance) {\n edgeForce.distance(self.linkDistance);\n }\n self.edgeForce = edgeForce;\n simulation.force(\"link\", edgeForce);\n }\n if (self.workerEnabled && !isInWorker()) {\n // 如果不是运行在web worker里,不用web worker布局\n self.workerEnabled = false;\n console.warn(\n \"workerEnabled option is only supported when running in web worker.\"\n );\n }\n if (!self.workerEnabled) {\n simulation\n .on(\"tick\", () => {\n self.tick();\n })\n .on(\"end\", () => {\n self.ticking = false;\n if (self.onLayoutEnd) self.onLayoutEnd();\n });\n self.ticking = true;\n } else {\n // worker is enabled\n simulation.stop();\n const totalTicks = getSimulationTicks(simulation);\n for (let currentTick = 1; currentTick <= totalTicks; currentTick++) {\n simulation.tick();\n // currentTick starts from 1.\n postMessage(\n {\n nodes,\n currentTick,\n totalTicks,\n type: LAYOUT_MESSAGE.TICK\n },\n undefined as any\n );\n }\n self.ticking = false;\n }\n\n self.forceSimulation = simulation;\n self.ticking = true;\n } catch (e) {\n self.ticking = false;\n console.warn(e);\n }\n } else {\n if (reloadData) {\n if (self.clustering && self.clusterForce) {\n self.clusterForce.nodes(nodes);\n self.clusterForce.links(edges);\n }\n simulation.nodes(nodes);\n if (edges && self.edgeForce) self.edgeForce.links(edges);\n else if (edges && !self.edgeForce) {\n // d3 的 forceLayout 会重新生成边的数据模型,为了避免污染源数据\n const edgeForce = d3Force\n .forceLink()\n .id((d: any) => d.id)\n .links(edges);\n if (self.edgeStrength) {\n edgeForce.strength(self.edgeStrength);\n }\n if (self.linkDistance) {\n edgeForce.distance(self.linkDistance);\n }\n self.edgeForce = edgeForce;\n simulation.force(\"link\", edgeForce);\n }\n }\n if (self.preventOverlap) {\n self.overlapProcess(simulation);\n }\n simulation.alpha(alpha).restart();\n this.ticking = true;\n }\n }\n\n /**\n * 防止重叠\n * @param {object} simulation 力模拟模型\n */\n public overlapProcess(simulation: any) {\n const self = this;\n const nodeSize = self.nodeSize;\n const nodeSpacing = self.nodeSpacing;\n let nodeSizeFunc: (d: any) => number;\n let nodeSpacingFunc: any;\n const collideStrength = self.collideStrength;\n\n if (isNumber(nodeSpacing)) {\n nodeSpacingFunc = () => nodeSpacing;\n } else if (isFunction(nodeSpacing)) {\n nodeSpacingFunc = nodeSpacing;\n } else {\n nodeSpacingFunc = () => 0;\n }\n\n if (!nodeSize) {\n nodeSizeFunc = (d) => {\n if (d.size) {\n if (isArray(d.size)) {\n const res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];\n return res / 2 + nodeSpacingFunc(d);\n } if (isObject(d.size)) {\n const res = d.size.width > d.size.height ? d.size.width : d.size.height;\n return res / 2 + nodeSpacingFunc(d);\n }\n return d.size / 2 + nodeSpacingFunc(d);\n }\n return 10 + nodeSpacingFunc(d);\n };\n } else if (isFunction(nodeSize)) {\n nodeSizeFunc = (d) => {\n const size = nodeSize(d);\n return size + nodeSpacingFunc(d);\n };\n } else if (isArray(nodeSize)) {\n const larger = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1];\n const radius = larger / 2;\n nodeSizeFunc = (d) => radius + nodeSpacingFunc(d);\n } else if (isNumber(nodeSize)) {\n const radius = nodeSize / 2;\n nodeSizeFunc = (d) => radius + nodeSpacingFunc(d);\n } else {\n nodeSizeFunc = () => 10;\n }\n\n // forceCollide's parameter is a radius\n simulation.force(\n \"collisionForce\",\n d3Force.forceCollide(nodeSizeFunc).strength(collideStrength)\n );\n }\n\n /**\n * 更新布局配置,但不执行布局\n * @param {object} cfg 需要更新的配置项\n */\n public updateCfg(cfg: ForceLayoutOptions) {\n const self = this;\n if (self.ticking) {\n self.forceSimulation.stop();\n self.ticking = false;\n }\n self.forceSimulation = null;\n Object.assign(self, cfg);\n }\n\n public destroy() {\n const self = this;\n if (self.ticking) {\n self.forceSimulation.stop();\n self.ticking = false;\n }\n self.nodes = null;\n self.edges = null;\n self.destroyed = true;\n }\n}\n\n// Return total ticks of d3-force simulation\nfunction getSimulationTicks(simulation: any): number {\n const alphaMin = simulation.alphaMin();\n const alphaTarget = simulation.alphaTarget();\n const alpha = simulation.alpha();\n const totalTicksFloat =\n Math.log((alphaMin - alphaTarget) / (alpha - alphaTarget)) /\n Math.log(1 - simulation.alphaDecay());\n const totalTicks = Math.ceil(totalTicksFloat);\n return totalTicks;\n}\ndeclare const WorkerGlobalScope: any;\n\n// 判断是否运行在web worker里\nfunction isInWorker(): boolean {\n // eslint-disable-next-line no-undef\n return (\n typeof WorkerGlobalScope !== \"undefined\" &&\n self instanceof WorkerGlobalScope\n );\n}\n","export * from './force';","import { quadtree } from 'd3-quadtree';\nimport { NodeMap } from '..';\n\nconst theta2 = 0.81; // Barnes-Hut approximation threshold\nconst epsilon = 0.1; // 为了防止出现除0的情况,加一个epsilon\n\ninterface Node {\n x: number;\n y: number;\n}\n\ninterface InternalNode {\n x: number;\n y: number;\n vx: number;\n vy: number;\n weight: number;\n size: number;\n}\n\nexport function forceNBody(\n nodes: Node[],\n nodeMap: NodeMap,\n factor: number,\n coulombDisScale2: number,\n accArray: number[]\n) {\n const weightParam = factor / coulombDisScale2;\n const data = nodes.map((n, i) => {\n // @ts-ignore\n const mappedNode = nodeMap[n.id];\n // @ts-ignore\n const { data: nodeData, x, y, size } = mappedNode;\n const { nodeStrength } = nodeData.layout.force;\n return {\n x,\n y,\n size,\n index: i,\n vx: 0,\n vy: 0,\n weight: weightParam * nodeStrength,\n };\n });\n\n const tree = quadtree(\n data,\n (d: any) => d.x,\n (d: any) => d.y,\n ).visitAfter(accumulate); // init internal node\n\n data.forEach((n) => {\n // @ts-ignore\n computeForce(n, tree);\n });\n\n data.map((n, i) => {\n // @ts-ignore\n const mappedNode = nodeMap[nodes[i].id];\n // @ts-ignore\n const { mass = 1 } = mappedNode.data.layout.force;\n // 从 0 开始,= 初始化 + 加斥力\n accArray[2 * i] = n.vx / mass;\n accArray[2 * i + 1] = n.vy / mass;\n });\n return accArray;\n}\n\n// @ts-ignore\nfunction accumulate(quad) {\n let accWeight = 0;\n let accX = 0;\n let accY = 0;\n\n if (quad.length) {\n // internal node, accumulate 4 child quads\n for (let i = 0; i < 4; i++) {\n const q = quad[i];\n if (q && q.weight) {\n accWeight += q.weight;\n accX += q.x * q.weight;\n accY += q.y * q.weight;\n }\n }\n quad.x = accX / accWeight;\n quad.y = accY / accWeight;\n quad.weight = accWeight;\n } else {\n // leaf node\n const q = quad;\n quad.x = q.data.x;\n quad.y = q.data.y;\n quad.weight = q.data.weight;\n }\n}\n\n// @ts-ignore\nconst apply = (quad, x1: number, y1: number, x2: number, y2: number, node: InternalNode) => {\n const dx = (node.x - quad.x) || epsilon;\n const dy = (node.y - quad.y) || epsilon;\n const width = x2 - x1;\n const len2 = dx * dx + dy * dy;\n const len3 = Math.sqrt(len2) * len2;\n\n // far node, apply Barnes-Hut approximation\n if ((width * width) * theta2 < len2) {\n const param = quad.weight / len3;\n node.vx += dx * param;\n node.vy += dy * param;\n return true;\n }\n // near quad, compute force directly\n if (quad.length) return false; // internal node, visit children\n\n // leaf node\n\n if (quad.data !== node) {\n const param = quad.data.weight / len3;\n node.vx += dx * param;\n node.vy += dy * param;\n }\n};\n\n// @ts-ignore\nfunction computeForce(node: InternalNode, tree) {\n // @ts-ignore\n tree.visit((quad, x1, y1, x2, y2) => apply(quad, x1, y1, x2, y2, node));\n}\n","/**\n * @fileOverview fruchterman layout\n * @author shiwu.wyy@antfin.com\n */\n\n// @ts-nocheck\nimport {\n OutNode,\n Edge,\n PointTuple,\n IndexMap,\n Point,\n GForceLayoutOptions,\n Degree,\n NodeMap,\n CentripetalOptions\n} from \"../types\";\nimport { Base } from \"../base\";\nimport { isNumber, isFunction, isArray, getDegreeMap, isObject, getEdgeTerminal, getAvgNodePosition, getCoreNodeAndRelativeLeafNodes } from \"../../util\";\nimport { forceNBody } from \"./ForceNBody\";\n\ntype INode = OutNode & {\n size: number | PointTuple;\n};\n\n\nconst proccessToFunc = (\n value: number | Function | undefined,\n defaultV?: number\n): ((d: any) => number) => {\n let func;\n if (!value) {\n func = (d: any): number => {\n return defaultV || 1;\n };\n } else if (isNumber(value)) {\n func = (d: any): number => {\n return value;\n };\n } else {\n func = value;\n }\n return func as any;\n};\n\n/**\n * graphin 中的 force 布局\n */\nexport class Force2Layout extends Base {\n /** 布局中心 */\n public center: PointTuple;\n\n /** 停止迭代的最大迭代数 */\n public maxIteration: number = 1000;\n\n /** 是否启动 worker */\n public workerEnabled: boolean = false;\n\n /** 弹簧引力系数 */\n public edgeStrength: number | ((d?: any) => number) | undefined = 200;\n\n /** 斥力系数 */\n public nodeStrength: number | ((d?: any) => number) | undefined = 1000;\n\n /** 库伦系数 */\n public coulombDisScale: number = 0.005;\n\n /** 阻尼系数 */\n public damping: number = 0.9;\n\n /** 最大速度 */\n public maxSpeed: number = 500;\n\n /** 一次迭代的平均移动距离小于该值时停止迭代 */\n public minMovement: number = 0.4;\n\n /** 迭代中衰减 */\n public interval: number = 0.02;\n\n /** 斥力的一个系数 */\n public factor: number = 1;\n\n /** 每个节点质量的回调函数,若不指定,则默认使用度数作为节点质量 */\n public getMass: ((d?: any) => number) | undefined;\n\n /** 每个节点中心力的 x、y、强度的回调函数,若不指定,则没有额外中心力 */\n public getCenter: ((d?: any, degree?: number) => number[]) | undefined;\n\n /** 计算画布上下两侧对节点吸引力大小 */\n public defSideCoe?: (node: Node) => number;\n\n /** 理想边长 */\n public linkDistance: number | ((edge?: any, source?: any, target?: any) => number) | undefined = 200;\n\n /** 理想边长,兼容 graphin-force */\n public defSpringLen: number | ((edge?: any, source?: any, target?: any) => number) | undefined;\n\n /** 重力大小 */\n public gravity: number = 0;\n\n /** 向心力 */\n public centripetalOptions: CentripetalOptions;\n\n /** 是否需要叶子节点聚类 */\n public leafCluster: boolean;\n\n /** 是否需要全部节点聚类 */\n public clustering: boolean;\n\n /** 节点聚类的映射字段 */\n public nodeClusterBy: string;\n\n /** 节点聚类作用力系数 */\n public clusterNodeStrength: number | ((node: Node) => number) = 20;\n\n /** 是否防止重叠 */\n public preventOverlap: boolean = true;\n\n /** 防止重叠时的节点大小,默认从节点数据中取 size */\n public nodeSize: number | number[] | ((d?: any) => number) | undefined;\n\n /** 防止重叠时的节点之间最小间距 */\n public nodeSpacing: number | number[] | ((d?: any) => number) | undefined;\n\n /** 阈值的使用条件,mean 代表平均移动距离小于 minMovement 时停止迭代,max 代表最大移动距离大时 minMovement 时停时迭代。默认为 mean */\n public distanceThresholdMode: 'mean' | 'max' | 'min' = 'mean';\n\n /** 每次迭代结束的回调函数 */\n public tick: (() => void) | null = () => { };\n\n /** 是否允许每次迭代结束调用回调函数 */\n public enableTick: boolean;\n\n public nodes: INode[] | null = [];\n\n public edges: Edge[] | null = [];\n\n public width: number = 300;\n\n public height: number = 300;\n\n public nodeMap: NodeMap = {};\n\n public nodeIdxMap: IndexMap = {};\n\n public canvasEl: HTMLCanvasElement;\n\n public onLayoutEnd: () => void;\n\n /** 是否使用 window.setInterval 运行迭代 */\n public animate: Boolean;\n\n /** 监控信息,不配置则不计算 */\n public monitor: (params: { energy: number, nodes: INode[], edge: Edge[], iterations: number }) => void;\n\n /** 存储节点度数 */\n private degreesMap: { [id: string]: Degree };\n\n /** 迭代中的标识 */\n private timeInterval: number;\n\n /** 与 minMovement 进行对比的判断停止迭代节点移动距离 */\n private judgingDistance: number;\n\n constructor(options?: GForceLayoutOptions) {\n super();\n this.judgingDistance = 0;\n /** 默认的向心配置 */\n this.centripetalOptions = {\n leaf: 2,\n single: 2,\n others: 1,\n // eslint-disable-next-line\n center: (n: any) => {\n return {\n x: this.width / 2,\n y: this.height / 2,\n };\n },\n };\n const { getMass } = options;\n this.propsGetMass = getMass;\n this.updateCfg(options);\n }\n\n public getCentripetalOptions() {\n const { leafCluster, clustering, nodeClusterBy, nodes, nodeMap, clusterNodeStrength: propsClusterNodeStrength } = this;\n\n const getClusterNodeStrength = (node: Node) =>\n typeof propsClusterNodeStrength === 'function' ? propsClusterNodeStrength(node) : propsClusterNodeStrength;\n\n let centripetalOptions = {};\n let sameTypeLeafMap: any;\n // 如果传入了需要叶子节点聚类\n if (leafCluster) {\n sameTypeLeafMap = this.getSameTypeLeafMap() || {};\n const relativeNodesType = Array.from(new Set(nodes?.map((node) => node[nodeClusterBy]))) || [];\n centripetalOptions = {\n single: 100,\n leaf: (node, nodes, edges) => {\n // 找出与它关联的边的起点或终点出发的所有一度节点中同类型的叶子节点\n const { relativeLeafNodes, sameTypeLeafNodes } = sameTypeLeafMap[node.id] || {};\n // 如果都是同一类型或者每种类型只有1个,则施加默认向心力\n if (sameTypeLeafNodes?.length === relativeLeafNodes?.length || relativeNodesType?.length === 1) {\n return 1;\n }\n return getClusterNodeStrength(node);\n },\n others: 1,\n center: (node, nodes, edges) => {\n const { degree } = node.data?.layout || {};\n // 孤点默认给1个远离的中心点\n if (!degree) {\n return {\n x: 100,\n y: 100,\n };\n }\n let centerNode;\n if (degree === 1) {\n // 如果为叶子节点\n // 找出与它关联的边的起点出发的所有一度节点中同类型的叶子节点\n const { sameTypeLeafNodes = [] } = sameTypeLeafMap[node.id] || {};\n if (sameTypeLeafNodes.length === 1) {\n // 如果同类型的叶子节点只有1个,中心节点置为undefined\n centerNode = undefined;\n } else if (sameTypeLeafNodes.length > 1) {\n // 找出同类型节点平均位置节点的距离最近的节点作为中心节点\n centerNode = getAvgNodePosition(sameTypeLeafNodes);\n }\n } else {\n centerNode = undefined;\n }\n return {\n x: centerNode?.x as number,\n y: centerNode?.y as number,\n };\n },\n };\n }\n\n // 如果传入了全局节点聚类\n if (clustering) {\n if (!sameTypeLeafMap) sameTypeLeafMap = this.getSameTypeLeafMap();\n const clusters: string[] = Array.from(new Set(nodes.map((node, i) => {\n return node[nodeClusterBy];\n }))).filter(\n (item) => item !== undefined,\n );\n const centerNodeInfo: { [key: string]: { x: number; y: number } } = {};\n clusters.forEach((cluster) => {\n const sameTypeNodes = nodes.filter((item) => item[nodeClusterBy] === cluster).map((node) => nodeMap[node.id]);\n // 找出同类型节点平均位置节点的距离最近的节点作为中心节点\n centerNodeInfo[cluster] = getAvgNodePosition(sameTypeNodes);\n });\n centripetalOptions = {\n single: (node) => getClusterNodeStrength(node),\n leaf: (node) => getClusterNodeStrength(node),\n others: (node) => getClusterNodeStrength(node),\n center: (node, nodes, edges) => {\n // 找出同类型节点平均位置节点的距离最近的节点作为中心节点\n const centerNode = centerNodeInfo[node[nodeClusterBy]];\n return {\n x: centerNode?.x as number,\n y: centerNode?.y as number,\n };\n },\n };\n }\n\n this.centripetalOptions = {\n ...this.centripetalOptions,\n ...centripetalOptions,\n };\n\n const { leaf, single, others } = this.centripetalOptions;\n if (leaf && typeof leaf !== 'function') this.centripetalOptions.leaf = () => leaf;\n if (single && typeof single !== 'function') this.centripetalOptions.single = () => single;\n if (others && typeof others !== 'function') this.centripetalOptions.others = () => others;\n }\n\n public updateCfg(cfg: any) {\n if (cfg) Object.assign(this, cfg);\n }\n\n public getDefaultCfg() {\n return {\n maxIteration: 500,\n gravity: 10,\n enableTick: true,\n animate: true,\n };\n }\n\n /**\n * 执行布局\n */\n public execute() {\n const self = this;\n self.stop();\n const { nodes, edges, defSpringLen } = self;\n\n self.judgingDistance = 0;\n\n if (!nodes || nodes.length === 0) {\n self.onLayoutEnd([]);\n return;\n }\n\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n self.onLayoutEnd([{ ...nodes[0] }]);\n return;\n }\n self.degreesMap = getDegreeMap(nodes, edges);\n if (self.propsGetMass) {\n self.getMass = self.propsGetMass;\n } else {\n self.getMass = (d) => {\n let massWeight = 1;\n if (isNumber(d.mass)) massWeight = d.mass;\n const degree = self.degreesMap[d.id].all;\n return (!degree || degree < 5) ? massWeight : degree * 5 * massWeight;\n };\n }\n\n\n // node size function\n const nodeSize = self.nodeSize;\n let nodeSizeFunc;\n if (self.preventOverlap) {\n const nodeSpacing = self.nodeSpacing;\n let nodeSpacingFunc: (d?: any) => number;\n if (isNumber(nodeSpacing)) {\n nodeSpacingFunc = () => nodeSpacing as number;\n } else if (isFunction(nodeSpacing)) {\n nodeSpacingFunc = nodeSpacing as (d?: any) => number;\n } else {\n nodeSpacingFunc = () => 0;\n }\n if (!nodeSize) {\n nodeSizeFunc = (d: INode) => {\n if (d.size) {\n if (isArray(d.size)) {\n return Math.max(d.size[0], d.size[1]) + nodeSpacingFunc(d);\n } if (isObject(d.size)) {\n return Math.max(d.size.width, d.size.height) + nodeSpacingFunc(d);\n }\n return (d.size as number) + nodeSpacingFunc(d);\n }\n return 10 + nodeSpacingFunc(d);\n };\n } else if (isArray(nodeSize)) {\n nodeSizeFunc = (d: INode) => {\n return Math.max(nodeSize[0], nodeSize[1]) + nodeSpacingFunc(d);\n };\n } else {\n nodeSizeFunc = (d: INode) => (nodeSize as number) + nodeSpacingFunc(d);\n }\n }\n self.nodeSize = nodeSizeFunc;\n\n self.linkDistance = proccessToFunc(self.linkDistance, 1);\n self.nodeStrength = proccessToFunc(self.nodeStrength, 1);\n self.edgeStrength = proccessToFunc(self.edgeStrength, 1);\n\n const nodeMap: NodeMap = {};\n const nodeIdxMap: IndexMap = {};\n nodes.forEach((node, i) => {\n if (!isNumber(node.x)) node.x = Math.random() * self.width;\n if (!isNumber(node.y)) node.y = Math.random() * self.height;\n const degree = self.degreesMap[node.id];\n nodeMap[node.id] = {\n ...node,\n data: {\n ...node.data,\n size: self.nodeSize(node) || 30,\n layout: {\n inDegree: degree.in,\n outDegree: degree.out,\n degree: degree.all,\n tDegree: degree.in,\n sDegree: degree.out,\n force: {\n mass: self.getMass(node),\n nodeStrength: self.nodeStrength(node)\n }\n }\n }\n };\n nodeIdxMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.nodeIdxMap = nodeIdxMap;\n\n\n self.edgeInfos = [];\n edges?.forEach((edge) => {\n const sourceNode = nodeMap[edge.source];\n const targetNode = nodeMap[edge.target];\n if (!sourceNode || !targetNode) {\n elf.edgeInfos.push({});\n } else {\n self.edgeInfos.push({\n edgeStrength: self.edgeStrength(edge),\n linkDistance: defSpringLen ? defSpringLen(\n {\n ...edge,\n source: sourceNode,\n target: targetNode\n },\n sourceNode,\n targetNode\n ) : self.linkDistance(edge, sourceNode, targetNode) || 1 + ((nodeSize(sourceNode) + nodeSize(sourceNode)) || 0) / 2\n });\n }\n });\n\n this.getCentripetalOptions();\n\n self.onLayoutEnd = self.onLayoutEnd || (() => { });\n\n self.run();\n }\n\n public run() {\n const self = this;\n const { maxIteration, nodes, workerEnabled, minMovement, animate, nodeMap } = self;\n\n if (!nodes) return;\n\n const velArray: number[] = [];\n nodes.forEach((_, i) => {\n velArray[2 * i] = 0;\n velArray[2 * i + 1] = 0;\n });\n\n const maxIter = maxIteration;\n const silence = !animate;\n if (workerEnabled || silence) {\n let usedIter = 0;\n for (let i = 0; (self.judgingDistance > minMovement || i < 1) && i < maxIter; i++) {\n usedIter = i;\n self.runOneStep(i, velArray);\n }\n self.onLayoutEnd(Object.values(nodeMap));\n } else {\n if (typeof window === \"undefined\") return;\n let iter = 0;\n // interval for render the result after each iteration\n this.timeInterval = window.setInterval(() => {\n if (!nodes) return;\n self.runOneStep(iter, velArray);\n iter++;\n if (iter >= maxIter || self.judgingDistance < minMovement) {\n self.onLayoutEnd(Object.values(nodeMap));\n window.clearInterval(self.timeInterval);\n }\n }, 0);\n }\n }\n\n private runOneStep(iter: number, velArray: number[]) {\n const self = this;\n const { nodes, edges, nodeMap, monitor } = self;\n const accArray: number[] = [];\n if (!nodes?.length) return;\n self.calRepulsive(accArray);\n if (edges) self.calAttractive(accArray);\n self.calGravity(accArray);\n const stepInterval = self.interval; // Math.max(0.02, self.interval - iter * 0.002);\n self.updateVelocity(accArray, velArray, stepInterval);\n self.updatePosition(velArray, stepInterval);\n self.tick?.();\n\n /** 如果需要监控信息,则提供给用户 */\n if (monitor) {\n const energy = this.calTotalEnergy(accArray);\n monitor({ energy, nodes, edges, iterations: iter });\n }\n }\n\n private calTotalEnergy(accArray: number[]) {\n const { nodes, nodeMap } = this;\n if (!nodes?.length) return 0;\n let energy = 0.0;\n\n nodes.forEach((node, i) => {\n const vx = accArray[2 * i];\n const vy = accArray[2 * i + 1];\n const speed2 = vx * vx + vy * vy;\n const { mass = 1 } = nodeMap[node.id].data.layout.force;\n energy += mass * speed2 * 0.5; // p = 1/2*(mv^2)\n });\n\n return energy;\n }\n\n // coulombs law\n public calRepulsive(accArray: number[]) {\n const self = this;\n const { nodes, nodeMap, factor, coulombDisScale } = self;\n const nodeSize = self.nodeSize as Function;\n forceNBody(nodes, nodeMap, factor, coulombDisScale * coulombDisScale, accArray);\n }\n\n // hooks law\n public calAttractive(accArray: number[]) {\n const self = this;\n const { edges, nodeMap, nodeIdxMap, edgeInfos } = self;\n const nodeSize = self.nodeSize as Function;\n edges.forEach((edge, i) => {\n const source = getEdgeTerminal(edge, 'source');\n const target = getEdgeTerminal(edge, 'target');\n const sourceNode = nodeMap[source];\n const targetNode = nodeMap[target];\n if (!sourceNode || !targetNode) return;\n let vecX = targetNode.x - sourceNode.x;\n let vecY = targetNode.y - sourceNode.y;\n if (!vecX && !vecY) {\n vecX = Math.random() * 0.01;\n vecY = Math.random() * 0.01;\n }\n const vecLength = Math.sqrt(vecX * vecX + vecY * vecY);\n const direX = vecX / vecLength;\n const direY = vecY / vecLength;\n // @ts-ignore\n const { linkDistance = 200, edgeStrength = 200 } = edgeInfos[i] || {};\n const diff = linkDistance - vecLength;\n const param = diff * edgeStrength;\n const massSource = sourceNode.data.layout.force.mass || 1;\n const massTarget = targetNode.data.layout.force.mass || 1;\n // 质量占比越大,对另一端影响程度越大\n const sourceMassRatio = 1 / massSource;\n const targetMassRatio = 1 / massTarget;\n const disX = direX * param;\n const disY = direY * param;\n const sourceIdx = 2 * nodeIdxMap[source];\n const targetIdx = 2 * nodeIdxMap[target];\n accArray[sourceIdx] -= disX * sourceMassRatio;\n accArray[sourceIdx + 1] -= disY * sourceMassRatio;\n accArray[targetIdx] += disX * targetMassRatio;\n accArray[targetIdx + 1] += disY * targetMassRatio;\n });\n }\n\n // attract to center\n public calGravity(accArray: number[]) {\n const self = this;\n const { nodes, edges = [], nodeMap, width, height, center, gravity: defaultGravity, degreesMap, centripetalOptions } = self;\n if (!nodes) return;\n const nodeLength = nodes.length;\n for (let i = 0; i < nodeLength; i++) {\n const idx = 2 * i;\n const node = nodeMap[nodes[i].id];\n const { mass = 1 } = node.data.layout.force;\n let vecX = 0;\n let vecY = 0;\n let gravity = defaultGravity;\n\n const { in: inDegree, out: outDegree, all: degree } = degreesMap[node.id];\n const forceCenter = self.getCenter?.(node, degree);\n if (forceCenter) {\n const [centerX, centerY, strength] = forceCenter;\n vecX = node.x - centerX;\n vecY = node.y - centerY;\n gravity = strength;\n } else {\n vecX = node.x - center[0];\n vecY = node.y - center[1];\n }\n\n if (gravity) {\n accArray[idx] -= gravity * vecX / mass;\n accArray[idx + 1] -= gravity * vecY / mass;\n }\n\n if (centripetalOptions) {\n const { leaf, single, others, center: centriCenter } = centripetalOptions;\n const { x: centriX, y: centriY, centerStrength } = centriCenter?.(node, nodes, edges, width, height) || { x: 0, y: 0, centerStrength: 0 };\n if (!isNumber(centriX) || !isNumber(centriY)) continue;\n const vx = (node.x - centriX) / mass;\n const vy = (node.y - centriY) / mass;\n if (centerStrength) {\n accArray[idx] -= centerStrength * vx;\n accArray[idx + 1] -= centerStrength * vy;\n }\n\n // 孤点\n if (degree === 0) {\n const singleStrength = single(node);\n if (!singleStrength) continue;\n accArray[idx] -= singleStrength * vx;\n accArray[idx + 1] -= singleStrength * vy;\n continue;\n }\n\n // 没有出度或没有入度,都认为是叶子节点\n if (inDegree === 0 || outDegree === 0) {\n const leafStrength = leaf(node, nodes, edges);\n if (!leafStrength) continue;\n accArray[idx] -= leafStrength * vx;\n accArray[idx + 1] -= leafStrength * vy;\n continue;\n }\n\n /** others */\n const othersStrength = others(node);\n if (!othersStrength) continue;\n accArray[idx] -= othersStrength * vx;\n accArray[idx + 1] -= othersStrength * vy;\n }\n }\n }\n\n // TODO: 待 graphin 修改正确\n // public attractToSide(accArray: number[]) {\n // const { defSideCoe, height, nodes } = this;\n // if (!defSideCoe || typeof defSideCoe !== 'function' || !nodes?.length) return;\n // nodes.forEach((node, i) => {\n // const sideCoe = defSideCoe!(node);\n // if (sideCoe === 0) return;\n // const targetY = sideCoe > 0 ? 0 : height;\n // const strength = Math.abs(sideCoe);\n // accArray[2 * i + 1] -= strength * (targetY - node.y);\n // });\n // };\n\n public updateVelocity(\n accArray: number[],\n velArray: number[],\n stepInterval: number\n ) {\n const self = this;\n const { nodes, damping, maxSpeed } = self;\n if (!nodes?.length) return;\n nodes.forEach((_, i) => {\n let vx = (velArray[2 * i] + accArray[2 * i] * stepInterval) * damping || 0.01;\n let vy = (velArray[2 * i + 1] + accArray[2 * i + 1] * stepInterval) * damping || 0.01;\n const vLength = Math.sqrt(vx * vx + vy * vy);\n if (vLength > maxSpeed) {\n const param2 = maxSpeed / vLength;\n vx = param2 * vx;\n vy = param2 * vy;\n }\n velArray[2 * i] = vx;\n velArray[2 * i + 1] = vy;\n });\n }\n\n public updatePosition(\n velArray: number[],\n stepInterval: number,\n ) {\n const self = this;\n const { nodes, distanceThresholdMode, nodeMap } = self;\n if (!nodes?.length) {\n this.judgingDistance = 0;\n return;\n }\n let sum = 0;\n if (distanceThresholdMode === 'max') self.judgingDistance = -Infinity;\n else if (distanceThresholdMode === 'min') self.judgingDistance = Infinity;\n\n nodes.forEach((node: any, i) => {\n const mappedNode = nodeMap[node.id];\n if (isNumber(node.fx) && isNumber(node.fy)) {\n node.x = node.fx;\n node.y = node.fy;\n mappedNode.x = node.x;\n mappedNode.y = node.y;\n return;\n }\n const distX = velArray[2 * i] * stepInterval;\n const distY = velArray[2 * i + 1] * stepInterval;\n node.x += distX;\n node.y += distY;\n mappedNode.x = node.x;\n mappedNode.y = node.y;\n\n const distanceMagnitude = Math.sqrt(distX * distX + distY * distY);\n switch (distanceThresholdMode) {\n case 'max':\n if (self.judgingDistance < distanceMagnitude) self.judgingDistance = distanceMagnitude;\n break;\n case 'min':\n if (self.judgingDistance > distanceMagnitude) self.judgingDistance = distanceMagnitude;\n break;\n default:\n sum = sum + distanceMagnitude;\n break;\n }\n });\n if (!distanceThresholdMode || distanceThresholdMode === 'mean') self.judgingDistance = sum / nodes.length;\n }\n\n public stop() {\n if (this.timeInterval && typeof window !== \"undefined\") {\n window.clearInterval(this.timeInterval);\n }\n }\n\n public destroy() {\n const self = this;\n self.stop();\n self.tick = null;\n self.nodes = null;\n self.edges = null;\n self.destroyed = true;\n }\n\n public getType() {\n return \"force2\";\n }\n\n private getSameTypeLeafMap() {\n const { nodeClusterBy, nodes, edges, nodeMap, degreesMap } = this;\n if (!nodes?.length) return;\n // eslint-disable-next-line\n const sameTypeLeafMap: { [nodeId: string]: any } = {};\n nodes.forEach((node, i) => {\n const degree = degreesMap[node.id].all;\n if (degree === 1) {\n sameTypeLeafMap[node.id] = getCoreNodeAndRelativeLeafNodes('leaf', node, edges, nodeClusterBy, degreesMap, nodeMap);\n }\n });\n return sameTypeLeafMap;\n }\n}\n","import Quad from './quad';\n\n/**\n * @fileOverview body\n * @author shiwu.wyy@antfin.com\n */\n\ntype BodyProps = {\n id?: Number;\n rx: number;\n ry: number;\n fx?: number;\n fy?: number;\n mass: number;\n degree: number;\n g?: number;\n};\n\n// represents a body(a point mass) and its position\nexport default class Body {\n public id: Number;\n public rx: number;\n public ry: number;\n public fx: number;\n public fy: number;\n public mass: number;\n public degree: number;\n public g: number;\n \n constructor(params: BodyProps) {\n /**\n * the id of this body, the same with the node id\n * @type {number}\n */\n this.id = params.id || 0;\n /**\n * the position of this body\n * @type {number}\n */\n this.rx = params.rx;\n /**\n * the position of this body\n * @type {number}\n */\n this.ry = params.ry;\n /**\n * the force acting on this body\n * @type {number}\n */\n this.fx = 0;\n /**\n * the force acting on this body\n * @type {number}\n */\n this.fy = 0;\n /**\n * the mass of this body, =1 for a node\n * @type {number}\n */\n this.mass = params.mass;\n /**\n * the degree of the node represented by this body\n * @type {number}\n */\n this.degree = params.degree;\n /**\n * the parameter for repulsive force, = kr\n * @type {number}\n */\n this.g = params.g || 0;\n }\n // returns the euclidean distance\n distanceTo(bo: Body) {\n const dx = this.rx - bo.rx;\n const dy = this.ry - bo.ry;\n return Math.hypot(dx, dy);\n }\n setPos(x: number, y: number) {\n this.rx = x;\n this.ry = y;\n }\n // resets the forces\n resetForce() {\n this.fx = 0;\n this.fy = 0;\n }\n addForce(b: Body) {\n const dx = b.rx - this.rx;\n const dy = b.ry - this.ry;\n let dist = Math.hypot(dx, dy);\n dist = dist < 0.0001 ? 0.0001 : dist;\n // the repulsive defined by force atlas 2\n const F = (this.g * (this.degree + 1) * (b.degree + 1)) / dist;\n this.fx += F * dx / dist;\n this.fy += F * dy / dist;\n }\n // if quad contains this body\n in(quad: Quad) {\n return quad.contains(this.rx, this.ry);\n }\n // returns a new body\n add(bo: Body) {\n const nenwMass = this.mass + bo.mass;\n const x = (this.rx * this.mass + bo.rx * bo.mass) / nenwMass;\n const y = (this.ry * this.mass + bo.ry * bo.mass) / nenwMass;\n const dg = this.degree + bo.degree;\n const params: BodyProps = {\n rx: x,\n ry: y,\n mass: nenwMass,\n degree: dg\n };\n return new Body(params);\n }\n}","/**\n * @fileOverview force atlas 2\n * @author shiwu.wyy@antfin.com\n */\nimport { PointTuple, OutNode, Edge, ForceAtlas2LayoutOptions } from \"../types\";\nimport { Base } from \"../base\";\nimport { getEdgeTerminal, isArray, isNumber, isObject } from \"../../util\";\nimport Body from './body';\nimport Quad from './quad';\nimport QuadTree from './quadTree';\n\nexport class ForceAtlas2Layout extends Base {\n /** 布局中心 */\n public center: PointTuple = [0, 0];\n\n /** 宽度 */\n public width: number = 300;\n\n /** 高度 */\n public height: number = 300;\n\n public nodes: OutNode[] = [];\n\n public edges: Edge[] = [];\n\n /**\n * the parameter for repulsive forces,\n * it will scale the layout but won't change the layout\n * larger the kr, looser the layout\n * @type {number}\n */\n public kr: number = 5;\n\n /**\n * the parameter for gravity forces\n * @type {number}\n */\n public kg: number = 1;\n\n /**\n * modes:\n * 'normal' for normal using\n * 'linlog' for compact clusters.\n * @type {string}\n */\n public mode: 'normal' | 'linlog' = 'normal';\n\n /**\n * whether preventing the node overlapping\n * @type {boolean}\n */\n public preventOverlap: boolean = false;\n\n /**\n * whether active the dissuade hub mode\n * true: grant authorities (nodes with a high indegree)\n * a more central position than hubs (nodes with a high outdegree)\n * @type {boolean}\n */\n public dissuadeHubs: boolean = false;\n\n /**\n * whether active the barnes hut optimization on computing repulsive forces\n * @type {boolean}\n */\n public barnesHut: boolean | undefined = undefined;\n\n /**\n * the max iteration number\n * @type {number}\n */\n public maxIteration: number = 0;\n\n /**\n * control the global velocity\n * defualt: 0.1(gephi)\n * @type {number}\n */\n public ks: number = 0.1;\n\n /**\n * the max global velocity\n * @type {number}\n */\n public ksmax: number = 10;\n\n /**\n * the tolerance for the global swinging\n * @type {number}\n */\n public tao: number = 0.1;\n\n /**\n * the function of layout complete listener, display the legend and minimap after layout\n * @type {function}\n */\n public onLayoutEnd: () => void = () => {};\n\n public tick: () => void;\n\n /**\n * activate prune or not.\n * prune the leaves during most iterations, layout the leaves in the last 50 iteraitons.\n * if prune === '', it will be activated when the nodes number > 100\n * note that it will reduce the quality of the layout\n * @type {boolean}\n */\n public prune: boolean | undefined = undefined;\n\n public getWidth: (node: any) => number;\n public getHeight: (node: any) => number;\n\n constructor(options?: ForceAtlas2LayoutOptions) {\n super();\n this.updateCfg(options);\n }\n\n public getDefaultCfg() {\n return {};\n }\n\n // execute the layout\n public execute() {\n const self = this;\n const {\n nodes,\n onLayoutEnd,\n prune,\n } = self;\n let maxIteration = self.maxIteration;\n\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n\n // the whidth of each nodes\n const sizes = [];\n const nodeNum = nodes.length;\n for (let i = 0; i < nodeNum; i += 1) {\n const node = nodes[i] as any;\n let nodeWidth = 10;\n let nodeHeight = 10;\n if (isNumber(node.size)) {\n nodeWidth = node.size;\n nodeHeight = node.size;\n }\n if (isArray(node.size)) {\n if (!isNaN(node.size[0])) nodeWidth = node.size[0];\n if (!isNaN(node.size[1])) nodeHeight = node.size[1];\n } else if (isObject(node.size)) {\n nodeWidth = node.size.width;\n nodeHeight = node.size.height;\n }\n if (self.getWidth && !isNaN(self.getWidth(node))) nodeHeight = self.getWidth(node);\n if (self.getHeight && !isNaN(self.getHeight(node))) nodeWidth = self.getHeight(node);\n\n const maxSize = Math.max(nodeWidth, nodeHeight);\n sizes.push(maxSize);\n }\n\n if (self.barnesHut === undefined && nodeNum > 250) self.barnesHut = true;\n if (self.prune === undefined && nodeNum > 100) self.prune = true;\n if (this.maxIteration === 0 && !self.prune) {\n maxIteration = 250;\n if (nodeNum <= 200 && nodeNum > 100) maxIteration = 1000;\n else if (nodeNum > 200) maxIteration = 1200;\n this.maxIteration = maxIteration;\n } else if (this.maxIteration === 0 && prune) {\n maxIteration = 100;\n if (nodeNum <= 200 && nodeNum > 100) maxIteration = 500;\n else if (nodeNum > 200) maxIteration = 950;\n this.maxIteration = maxIteration;\n }\n\n if (!self.kr) {\n self.kr = 50;\n if (nodeNum > 100 && nodeNum <= 500) self.kr = 20;\n else if (nodeNum > 500) self.kr = 1;\n }\n if (!self.kg) {\n self.kg = 20;\n if (nodeNum > 100 && nodeNum <= 500) self.kg = 10;\n else if (nodeNum > 500) self.kg = 1;\n }\n this.nodes = self.updateNodesByForces(sizes);\n onLayoutEnd();\n }\n\n\n updateNodesByForces(sizes: number[]) {\n const self = this;\n const { edges, maxIteration } = self;\n let nodes = self.nodes;\n\n const nonLoopEdges = edges.filter((edge: any) => {\n const source = getEdgeTerminal(edge, 'source');\n const target = getEdgeTerminal(edge, 'target');\n return source !== target;\n });\n const size = nodes.length;\n const esize = nonLoopEdges.length;\n\n const degrees = [];\n const idMap: {[key: string]: number} = {};\n const edgeEndsIdMap: {[key: number]: {sourceIdx: number, targetIdx: number}} = {};\n\n // tslint:disable-next-line\n const Es = []\n for (let i = 0; i < size; i += 1) {\n idMap[nodes[i].id] = i;\n degrees[i] = 0;\n if (nodes[i].x === undefined || isNaN(nodes[i].x)) { nodes[i].x = Math.random() * 1000; }\n if (nodes[i].y === undefined || isNaN(nodes[i].y)) { nodes[i].y = Math.random() * 1000; }\n Es.push({ x: nodes[i].x, y: nodes[i].y });\n }\n for (let i = 0; i < esize; i += 1) {\n let node1;\n let node2;\n let sIdx = 0;\n let tIdx = 0;\n\n for (let j = 0; j < size; j += 1) {\n const source = getEdgeTerminal(nonLoopEdges[i], 'source');\n const target = getEdgeTerminal(nonLoopEdges[i], 'target');\n if (nodes[j].id === source) {\n node1 = nodes[j];\n sIdx = j;\n } else if (nodes[j].id === target) {\n node2 = nodes[j];\n tIdx = j;\n }\n edgeEndsIdMap[i] = { sourceIdx: sIdx, targetIdx: tIdx };\n }\n if (node1) degrees[idMap[node1.id]] += 1;\n if (node2) degrees[idMap[node2.id]] += 1;\n }\n\n let iteration = maxIteration;\n nodes = this.iterate(iteration, idMap, edgeEndsIdMap, esize, degrees, sizes);\n\n // if prune, place the leaves around their parents, and then re-layout for several iterations.\n if (self.prune) {\n for (let j = 0; j < esize; j += 1) {\n if (degrees[edgeEndsIdMap[j].sourceIdx] <= 1) {\n nodes[edgeEndsIdMap[j].sourceIdx].x = nodes[edgeEndsIdMap[j].targetIdx].x;\n nodes[edgeEndsIdMap[j].sourceIdx].y = nodes[edgeEndsIdMap[j].targetIdx].y;\n\n } else if (degrees[edgeEndsIdMap[j].targetIdx] <= 1) {\n nodes[edgeEndsIdMap[j].targetIdx].x = nodes[edgeEndsIdMap[j].sourceIdx].x;\n nodes[edgeEndsIdMap[j].targetIdx].y = nodes[edgeEndsIdMap[j].sourceIdx].y;\n }\n }\n self.prune = false;\n self.barnesHut = false;\n iteration = 100;\n nodes = this.iterate(\n iteration,\n idMap,\n edgeEndsIdMap,\n esize,\n degrees,\n sizes\n );\n }\n return nodes;\n }\n iterate(\n iteration: number,\n idMap: {[key: string]: number},\n edgeEndsIdMap: {[key: number]: {sourceIdx: number, targetIdx: number}},\n esize: number,\n degrees: number[],\n sizes: number[],\n ) {\n\n const self = this;\n let { nodes } = self;\n const { kr, preventOverlap } = self;\n const { barnesHut } = self;\n\n const nodeNum = nodes.length;\n let sg = 0;\n const krPrime = 100;\n let iter = iteration;\n const prevoIter = 50;\n let forces = [];\n const preForces = [];\n const bodies = [];\n\n for (let i = 0; i < nodeNum; i += 1) {\n forces[2 * i] = 0;\n forces[2 * i + 1] = 0;\n\n if (barnesHut) {\n const params = {\n id: i,\n rx: nodes[i].x,\n ry: nodes[i].y,\n mass: 1,\n g: kr,\n degree: degrees[i]\n };\n bodies[i] = new Body(params);\n }\n }\n\n while (iter > 0) {\n for (let i = 0; i < nodeNum; i += 1) {\n preForces[2 * i] = forces[2 * i];\n preForces[2 * i + 1] = forces[2 * i + 1];\n forces[2 * i] = 0;\n forces[2 * i + 1] = 0;\n }\n // attractive forces, existing on every actual edge\n forces = this.getAttrForces(\n iter,\n prevoIter,\n esize, \n idMap,\n edgeEndsIdMap,\n degrees,\n sizes,\n forces\n );\n\n // repulsive forces and Gravity, existing on every node pair\n // if preventOverlap, using the no-optimized method in the last prevoIter instead.\n if (barnesHut && ((preventOverlap && iter > prevoIter) || !preventOverlap)) {\n forces = this.getOptRepGraForces(forces, bodies, degrees);\n } else {\n forces = this.getRepGraForces(iter, prevoIter, forces, krPrime, sizes, degrees);\n }\n // update the positions\n const res = this.updatePos(forces, preForces, sg, degrees);\n nodes = res.nodes;\n sg = res.sg;\n iter --;\n if (self.tick) self.tick();\n }\n\n return nodes;\n }\n getAttrForces(\n iter: number,\n prevoIter: number,\n esize: number, \n idMap: {[key: string]: number},\n edgeEndsIdMap: {[key: number]: {sourceIdx: number, targetIdx: number}},\n degrees: number[],\n sizes: number[],\n forces: number[],\n ): number[] {\n const self = this;\n const { nodes, preventOverlap, dissuadeHubs, mode, prune } = self;\n for (let i = 0; i < esize; i += 1) {\n const sourceNode = nodes[edgeEndsIdMap[i].sourceIdx];\n const sourceIdx = edgeEndsIdMap[i].sourceIdx;\n const targetNode = nodes[edgeEndsIdMap[i].targetIdx];\n const targetIdx = edgeEndsIdMap[i].targetIdx;\n\n if (prune && (degrees[sourceIdx] <= 1 || degrees[targetIdx] <= 1)) continue;\n\n const dir = [ targetNode.x - sourceNode.x, targetNode.y - sourceNode.y ];\n let eucliDis = Math.hypot(dir[0], dir[1]);\n eucliDis = eucliDis < 0.0001 ? 0.0001 : eucliDis;\n dir[0] = dir[0] / eucliDis;\n dir[1] = dir[1] / eucliDis;\n\n if (preventOverlap && iter < prevoIter) eucliDis = eucliDis - sizes[sourceIdx] - sizes[targetIdx];\n let Fa1 = eucliDis // tslint:disable-line\n let Fa2 = Fa1 // tslint:disable-line\n if (mode === 'linlog') {\n Fa1 = Math.log(1 + eucliDis);\n Fa2 = Fa1;\n }\n if (dissuadeHubs) {\n Fa1 = eucliDis / degrees[sourceIdx];\n Fa2 = eucliDis / degrees[targetIdx];\n }\n if (preventOverlap && iter < prevoIter && eucliDis <= 0) {\n Fa1 = 0;\n Fa2 = 0;\n } else if (preventOverlap && iter < prevoIter && eucliDis > 0) {\n Fa1 = eucliDis;\n Fa2 = eucliDis;\n }\n forces[2 * idMap[sourceNode.id]] += Fa1 * dir[0];\n forces[2 * idMap[targetNode.id]] -= Fa2 * dir[0];\n forces[2 * idMap[sourceNode.id] + 1] += Fa1 * dir[1];\n forces[2 * idMap[targetNode.id] + 1] -= Fa2 * dir[1];\n }\n return forces;\n }\n getRepGraForces(iter: number, prevoIter: number, forces: number[], krPrime: number, sizes: number[], degrees: number[]) {\n const self = this;\n const { nodes, preventOverlap, kr, kg, center, prune } = self;\n const nodeNum = nodes.length;\n for (let i = 0; i < nodeNum; i += 1) {\n for (let j = i + 1; j < nodeNum; j += 1) {\n\n if (prune && (degrees[i] <= 1 || degrees[j] <= 1)) continue;\n\n const dir = [ nodes[j].x - nodes[i].x, nodes[j].y - nodes[i].y ];\n let eucliDis = Math.hypot(dir[0], dir[1]);\n eucliDis = eucliDis < 0.0001 ? 0.0001 : eucliDis;\n dir[0] = dir[0] / eucliDis;\n dir[1] = dir[1] / eucliDis;\n\n if (preventOverlap && iter < prevoIter) eucliDis = eucliDis - sizes[i] - sizes[j];\n\n let Fr = kr * (degrees[i] + 1) * (degrees[j] + 1) / eucliDis // tslint:disable-line\n\n if (preventOverlap && iter < prevoIter && eucliDis < 0) {\n Fr = krPrime * (degrees[i] + 1) * (degrees[j] + 1);\n } else if (preventOverlap && iter < prevoIter && eucliDis === 0) {\n Fr = 0;\n } else if (preventOverlap && iter < prevoIter && eucliDis > 0) {\n Fr = kr * (degrees[i] + 1) * (degrees[j] + 1) / eucliDis;\n }\n forces[2 * i] -= Fr * dir[0];\n forces[2 * j] += Fr * dir[0];\n forces[2 * i + 1] -= Fr * dir[1];\n forces[2 * j + 1] += Fr * dir[1];\n }\n\n // gravity\n const dir = [ nodes[i].x - center[0], nodes[i].y - center[1] ];\n const eucliDis = Math.hypot(dir[0], dir[1]);\n dir[0] = dir[0] / eucliDis;\n dir[1] = dir[1] / eucliDis;\n const Fg = kg * (degrees[i] + 1) // tslint:disable-line\n forces[2 * i] -= Fg * dir[0];\n forces[2 * i + 1] -= Fg * dir[1];\n }\n return forces;\n }\n\n getOptRepGraForces(forces: number[], bodies: any, degrees: number[]) {\n const self = this;\n const { nodes, kg, center, prune } = self;\n const nodeNum = nodes.length;\n let minx = 9e10;\n let maxx = -9e10;\n let miny = 9e10;\n let maxy = -9e10;\n for (let i = 0; i < nodeNum; i += 1) {\n if (prune && (degrees[i] <= 1)) continue;\n bodies[i].setPos(nodes[i].x, nodes[i].y);\n if (nodes[i].x >= maxx) maxx = nodes[i].x;\n if (nodes[i].x <= minx) minx = nodes[i].x;\n if (nodes[i].y >= maxy) maxy = nodes[i].y;\n if (nodes[i].y <= miny) miny = nodes[i].y;\n }\n\n const width = Math.max(maxx - minx, maxy - miny);\n\n const quadParams = {\n xmid: (maxx + minx) / 2,\n ymid: (maxy + miny) / 2,\n length: width,\n massCenter: center,\n mass: nodeNum\n };\n const quad = new Quad(quadParams);\n const quadTree = new QuadTree(quad);\n\n // build the tree, insert the nodes(quads) into the tree\n for (let i = 0; i < nodeNum; i += 1) {\n\n if (prune && (degrees[i] <= 1)) continue;\n\n if (bodies[i].in(quad)) quadTree.insert(bodies[i]);\n }\n // update the repulsive forces and the gravity.\n for (let i = 0; i < nodeNum; i += 1) {\n\n if (prune && (degrees[i] <= 1)) continue;\n\n bodies[i].resetForce();\n quadTree.updateForce(bodies[i]);\n forces[2 * i] -= bodies[i].fx;\n forces[2 * i + 1] -= bodies[i].fy;\n\n // gravity\n const dir = [ nodes[i].x - center[0], nodes[i].y - center[1] ];\n let eucliDis = Math.hypot(dir[0], dir[1]);\n eucliDis = eucliDis < 0.0001 ? 0.0001 : eucliDis;\n dir[0] = dir[0] / eucliDis;\n dir[1] = dir[1] / eucliDis;\n const Fg = kg * (degrees[i] + 1) // tslint:disable-line\n forces[2 * i] -= Fg * dir[0];\n forces[2 * i + 1] -= Fg * dir[1];\n }\n return forces;\n }\n\n updatePos(\n forces: number[],\n preForces: number[],\n sg: number,\n degrees: number[]\n ): { nodes: any, sg: number } {\n const self = this;\n const { nodes, ks, tao, prune, ksmax } = self;\n const nodeNum = nodes.length;\n const swgns = [];\n const trans = [];\n // swg(G) and tra(G)\n let swgG = 0;\n let traG = 0;\n for (let i = 0; i < nodeNum; i += 1) {\n\n if (prune && (degrees[i] <= 1)) continue;\n\n const minus = [ forces[2 * i] - preForces[2 * i],\n forces[2 * i + 1] - preForces[2 * i + 1]\n ];\n const minusNorm = Math.hypot(minus[0], minus[1]);\n const add = [ forces[2 * i] + preForces[2 * i],\n forces[2 * i + 1] + preForces[2 * i + 1]\n ];\n const addNorm = Math.hypot(add[0], add[1]);\n\n swgns[i] = minusNorm;\n trans[i] = addNorm / 2;\n\n swgG += (degrees[i] + 1) * swgns[i];\n traG += (degrees[i] + 1) * trans[i];\n }\n\n const preSG = sg;\n sg = tao * traG / swgG // tslint:disable-line\n if (preSG !== 0) {\n sg = sg > (1.5 * preSG) ? (1.5 * preSG) : sg // tslint:disable-line\n }\n // update the node positions\n for (let i = 0; i < nodeNum; i += 1) {\n if (prune && (degrees[i] <= 1)) continue;\n if (isNumber(nodes[i].fx) && isNumber(nodes[i].fy)) continue;\n\n let sn = ks * sg / (1 + sg * Math.sqrt(swgns[i]));\n let absForce = Math.hypot(forces[2 * i], forces[2 * i + 1]);\n absForce = absForce < 0.0001 ? 0.0001 : absForce;\n const max = ksmax / absForce;\n sn = sn > max ? max : sn;\n const dnx = sn * forces[2 * i];\n const dny = sn * forces[2 * i + 1];\n nodes[i].x += dnx;\n nodes[i].y += dny;\n }\n return { nodes, sg };\n }\n}\n","import { PointTuple } from \"../types\";\n\n/**\n * @fileOverview quad\n * @author shiwu.wyy@antfin.com\n */\n\ntype QuadProps = {\n xmid: number;\n ymid: number;\n length: number;\n massCenter?: PointTuple;\n mass?: number;\n};\n\nexport default class Quad {\n public xmid: number;\n public ymid: number;\n public length: number;\n public massCenter: PointTuple;\n public mass: number;\n constructor(params: QuadProps) {\n /**\n * the center position of this quad\n * @type {number}\n */\n this.xmid = params.xmid;\n /**\n * the center position of this quad\n * @type {number}\n */\n this.ymid = params.ymid;\n /**\n * the length of this quad\n * @type {number}\n */\n this.length = params.length;\n /**\n * the mass center of this quad\n * @type {number}\n */\n this.massCenter = params.massCenter || [0, 0];\n /**\n * the mass of this quad\n * @type {number}\n */\n this.mass = params.mass || 1;\n }\n getLength() {\n return this.length;\n }\n contains(x: number, y: number) {\n const halfLen = this.length / 2;\n return (x <= this.xmid + halfLen &&\n x >= this.xmid - halfLen &&\n y <= this.ymid + halfLen &&\n y >= this.ymid - halfLen);\n }\n // northwest quadrant\n // tslint:disable-next-line\n NW() {\n const x = this.xmid - this.length / 4;\n const y = this.ymid + this.length / 4;\n const len = this.length / 2;\n const params: QuadProps = {\n xmid: x,\n ymid: y,\n length: len\n };\n const NW = new Quad(params);\n return NW;\n }\n // northeast\n // tslint:disable-next-line\n NE() {\n const x = this.xmid + this.length / 4;\n const y = this.ymid + this.length / 4;\n const len = this.length / 2;\n const params = {\n xmid: x,\n ymid: y,\n length: len\n };\n const NE = new Quad(params);\n return NE;\n }\n // southwest\n // tslint:disable-next-line\n SW() {\n const x = this.xmid - this.length / 4;\n const y = this.ymid - this.length / 4;\n const len = this.length / 2;\n const params = {\n xmid: x,\n ymid: y,\n length: len\n };\n const SW = new Quad(params);\n return SW;\n }\n // southeast\n // tslint:disable-next-line\n SE() {\n const x = this.xmid + this.length / 4;\n const y = this.ymid - this.length / 4;\n const len = this.length / 2;\n const params = {\n xmid: x,\n ymid: y,\n length: len\n };\n const SE = new Quad(params);\n return SE;\n }\n}\n","import Body from './body';\nimport Quad from './quad';\n\n/**\n * @fileOverview quadTree\n * @author shiwu.wyy@antfin.com\n */\n\nexport default class QuadTree {\n public body: Body | null;\n public quad: Quad | null;\n public theta: number;\n public NW: QuadTree | null;\n public NE: QuadTree | null;\n public SW: QuadTree | null;\n public SE: QuadTree | null;\n\n // each quadtree represents a quadrant and an aggregate body\n // that represents all bodies inside the quadrant\n constructor(param: Quad | null) {\n /**\n * (aggregated) body in this quad\n * @type {object}\n */\n this.body = null;\n /**\n * tree representing the northwest quadrant\n * @type {object}\n */\n this.quad = null;\n this.NW = null;\n this.NE = null;\n this.SW = null;\n this.SE = null;\n /**\n * threshold\n * @type {number}\n */\n this.theta = 0.5;\n if (param != null) this.quad = param;\n }\n // insert a body(node) into the tree\n insert(bo: Body) {\n // if this node does not contain a body, put the new body bo here\n if (this.body == null) {\n this.body = bo;\n return;\n }\n // internal node\n if (!this._isExternal()) {\n // update mass info\n this.body = this.body.add(bo);\n // insert body into quadrant\n this._putBody(bo);\n } else { // external node\n // divide this region into four children\n if (this.quad) {\n this.NW = new QuadTree(this.quad.NW());\n this.NE = new QuadTree(this.quad.NE());\n this.SW = new QuadTree(this.quad.SW());\n this.SE = new QuadTree(this.quad.SE());\n }\n\n // insert this body and bo\n this._putBody(this.body);\n this._putBody(bo);\n // update the mass info\n this.body = this.body.add(bo);\n\n }\n }\n // inserts bo into a quad\n // tslint:disable-next-line\n _putBody(bo: Body) {\n if (!this.quad) return;\n if (bo.in(this.quad.NW()) && this.NW) this.NW.insert(bo);\n else if (bo.in(this.quad.NE()) && this.NE) this.NE.insert(bo);\n else if (bo.in(this.quad.SW()) && this.SW )this.SW.insert(bo);\n else if (bo.in(this.quad.SE()) && this.SE) this.SE.insert(bo);\n }\n // tslint:disable-next-line\n _isExternal() {\n // four children are null\n return (this.NW == null && this.NE == null && this.SW == null && this.SE == null);\n }\n // update the forces\n updateForce(bo: Body) {\n if (this.body == null || bo === this.body) {\n return;\n }\n // if the current node is external\n if (this._isExternal()) bo.addForce(this.body);\n // internal nodes\n else {\n const s = this.quad ? this.quad.getLength() : 0;\n const d = this.body.distanceTo(bo);\n // b is far enough\n if ((s / d) < this.theta) bo.addForce(this.body);\n else {\n this.NW && this.NW.updateForce(bo);\n this.NE && this.NE.updateForce(bo);\n this.SW && this.SW.updateForce(bo);\n this.SE && this.SE.updateForce(bo);\n }\n }\n }\n}\n","/**\n * @fileOverview fruchterman layout\n * @author shiwu.wyy@antfin.com\n */\n\nimport {\n OutNode,\n Edge,\n PointTuple,\n IndexMap,\n Point,\n FruchtermanLayoutOptions\n} from \"./types\";\nimport { Base } from \"./base\";\nimport { getEdgeTerminal, isNumber } from \"../util\";\n\ntype NodeMap = {\n [key: string]: INode;\n};\n\ntype INode = OutNode & {\n cluster: string;\n};\n\nconst SPEED_DIVISOR = 800;\n\n/**\n * fruchterman 布局\n */\nexport class FruchtermanLayout extends Base {\n /** 布局中心 */\n public center: PointTuple;\n\n /** 停止迭代的最大迭代数 */\n public maxIteration: number = 1000;\n\n /** 是否启动 worker */\n public workerEnabled: boolean = false;\n\n /** 重力大小,影响图的紧凑程度 */\n public gravity: number = 10;\n\n /** 速度 */\n public speed: number = 5;\n\n /** 是否产生聚类力 */\n public clustering: boolean = false;\n\n /** 聚类力大小 */\n public clusterGravity: number = 10;\n\n public nodes: INode[] | null = [];\n\n public edges: Edge[] | null = [];\n\n public width: number = 300;\n\n public height: number = 300;\n\n public nodeMap: NodeMap = {};\n\n public nodeIdxMap: IndexMap = {};\n\n /** 迭代结束的回调函数 */\n public onLayoutEnd: () => void = () => {};\n\n /** 每次迭代结束的回调函数 */\n public tick: (() => void) | null = () => {};\n\n /** 是否使用 window.setInterval 运行迭代 */\n public animate: boolean = true;\n\n /** 迭代中的标识 */\n private timeInterval: number;\n\n constructor(options?: FruchtermanLayoutOptions) {\n super();\n this.updateCfg(options);\n }\n\n public getDefaultCfg() {\n return {\n maxIteration: 1000,\n gravity: 10,\n speed: 1,\n clustering: false,\n clusterGravity: 10,\n animate: true\n };\n }\n\n /**\n * 执行布局\n */\n public execute() {\n const self = this;\n const nodes = self.nodes;\n\n if (self.timeInterval !== undefined && typeof window !== \"undefined\") {\n window.clearInterval(self.timeInterval);\n }\n\n if (!nodes || nodes.length === 0) {\n self.onLayoutEnd?.();\n return;\n }\n\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n self.onLayoutEnd?.();\n return;\n }\n const nodeMap: NodeMap = {};\n const nodeIdxMap: IndexMap = {};\n nodes.forEach((node, i) => {\n if (!isNumber(node.x)) node.x = Math.random() * this.width;\n if (!isNumber(node.y)) node.y = Math.random() * this.height;\n nodeMap[node.id] = node;\n nodeIdxMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.nodeIdxMap = nodeIdxMap;\n // layout\n return self.run();\n }\n\n public run() {\n const self = this;\n const nodes = self.nodes;\n if (!nodes) return;\n const { edges, maxIteration, workerEnabled, clustering, animate } = self;\n const clusterMap: {\n [key: string]: {\n name: string | number;\n cx: number;\n cy: number;\n count: number;\n };\n } = {};\n if (clustering) {\n nodes.forEach((n) => {\n if (clusterMap[n.cluster] === undefined) {\n clusterMap[n.cluster] = {\n name: n.cluster,\n cx: 0,\n cy: 0,\n count: 0\n };\n }\n });\n }\n if (workerEnabled || !animate) {\n for (let i = 0; i < maxIteration; i++) {\n self.runOneStep(clusterMap);\n }\n self.onLayoutEnd?.();\n } else {\n if (typeof window === \"undefined\") return;\n let iter = 0;\n // interval for render the result after each iteration\n this.timeInterval = window.setInterval(() => {\n self.runOneStep(clusterMap);\n iter++;\n if (iter >= maxIteration) {\n self.onLayoutEnd?.();\n window.clearInterval(self.timeInterval);\n }\n }, 0);\n }\n return {\n nodes,\n edges\n };\n }\n\n private runOneStep(clusterMap: any) {\n const self = this;\n const nodes = self.nodes;\n if (!nodes) return;\n const { edges, center, gravity, speed, clustering } = self;\n const area = self.height * self.width;\n const maxDisplace = Math.sqrt(area) / 10;\n const k2 = area / (nodes.length + 1);\n const k = Math.sqrt(k2);\n const displacements: Point[] = [];\n nodes.forEach((_, j) => {\n displacements[j] = { x: 0, y: 0 };\n });\n self.applyCalculate(nodes, edges, displacements, k, k2);\n\n // gravity for clusters\n if (clustering) {\n // re-compute the clustering centers\n for (const key in clusterMap) {\n clusterMap[key].cx = 0;\n clusterMap[key].cy = 0;\n clusterMap[key].count = 0;\n }\n nodes.forEach((n) => {\n const c = clusterMap[n.cluster];\n if (isNumber(n.x)) {\n c.cx += n.x;\n }\n if (isNumber(n.y)) {\n c.cy += n.y;\n }\n c.count++;\n });\n for (const key in clusterMap) {\n clusterMap[key].cx /= clusterMap[key].count;\n clusterMap[key].cy /= clusterMap[key].count;\n }\n\n // compute the cluster gravity forces\n const clusterGravity = self.clusterGravity || gravity;\n nodes.forEach((n, j) => {\n if (!isNumber(n.x) || !isNumber(n.y)) return;\n const c = clusterMap[n.cluster];\n const distLength = Math.sqrt(\n (n.x - c.cx) * (n.x - c.cx) + (n.y - c.cy) * (n.y - c.cy)\n );\n const gravityForce = k * clusterGravity;\n displacements[j].x -= (gravityForce * (n.x - c.cx)) / distLength;\n displacements[j].y -= (gravityForce * (n.y - c.cy)) / distLength;\n });\n }\n\n // gravity\n nodes.forEach((n, j) => {\n if (!isNumber(n.x) || !isNumber(n.y)) return;\n const gravityForce = 0.01 * k * gravity;\n displacements[j].x -= gravityForce * (n.x - center[0]);\n displacements[j].y -= gravityForce * (n.y - center[1]);\n });\n\n // move\n nodes.forEach((n: any, j) => {\n if (isNumber(n.fx) && isNumber(n.fy)) {\n n.x = n.fx;\n n.y = n.fy;\n return;\n }\n if (!isNumber(n.x) || !isNumber(n.y)) return; \n const distLength = Math.sqrt(\n displacements[j].x * displacements[j].x +\n displacements[j].y * displacements[j].y\n );\n if (distLength > 0) {\n // && !n.isFixed()\n const limitedDist = Math.min(\n maxDisplace * (speed / SPEED_DIVISOR),\n distLength\n );\n n.x += (displacements[j].x / distLength) * limitedDist;\n n.y += (displacements[j].y / distLength) * limitedDist;\n }\n });\n\n self.tick?.();\n }\n\n private applyCalculate(\n nodes: INode[],\n edges: Edge[] | null,\n displacements: Point[],\n k: number,\n k2: number\n ) {\n const self = this;\n self.calRepulsive(nodes, displacements, k2);\n if (edges) self.calAttractive(edges, displacements, k);\n }\n\n private calRepulsive(nodes: INode[], displacements: Point[], k2: number) {\n nodes.forEach((v, i) => {\n displacements[i] = { x: 0, y: 0 };\n nodes.forEach((u, j) => {\n if (i === j) {\n return;\n }\n if (\n !isNumber(v.x) ||\n !isNumber(u.x) ||\n !isNumber(v.y) ||\n !isNumber(u.y)\n ) {\n return;\n }\n let vecX = v.x - u.x;\n let vecY = v.y - u.y;\n let vecLengthSqr = vecX * vecX + vecY * vecY;\n if (vecLengthSqr === 0) {\n vecLengthSqr = 1;\n const sign = i > j ? 1 : -1;\n vecX = 0.01 * sign;\n vecY = 0.01 * sign;\n }\n const common = k2 / vecLengthSqr;\n displacements[i].x += vecX * common;\n displacements[i].y += vecY * common;\n });\n });\n }\n\n private calAttractive(edges: Edge[], displacements: Point[], k: number) {\n edges.forEach((e) => {\n const source = getEdgeTerminal(e, 'source');\n const target = getEdgeTerminal(e, 'target');\n if (!source || !target) return;\n const uIndex = this.nodeIdxMap[source];\n const vIndex = this.nodeIdxMap[target];\n if (uIndex === vIndex) {\n return;\n }\n const u = this.nodeMap[source];\n const v = this.nodeMap[target];\n if (!isNumber(v.x) || !isNumber(u.x) || !isNumber(v.y) || !isNumber(u.y)) {\n return;\n }\n const vecX = v.x - u.x;\n const vecY = v.y - u.y;\n const vecLength = Math.sqrt(vecX * vecX + vecY * vecY);\n const common = (vecLength * vecLength) / k;\n displacements[vIndex].x -= (vecX / vecLength) * common;\n displacements[vIndex].y -= (vecY / vecLength) * common;\n displacements[uIndex].x += (vecX / vecLength) * common;\n displacements[uIndex].y += (vecY / vecLength) * common;\n });\n }\n\n public stop() {\n if (this.timeInterval && typeof window !== \"undefined\") {\n window.clearInterval(this.timeInterval);\n }\n }\n\n public destroy() {\n const self = this;\n self.stop();\n self.tick = null;\n self.nodes = null;\n self.edges = null;\n self.destroyed = true;\n }\n\n public getType() {\n return \"fruchterman\";\n }\n}\n","/**\n * @fileOverview fruchterman layout\n * @author shiwu.wyy@antfin.com\n */\n\n import {\n OutNode,\n Edge,\n PointTuple,\n IndexMap,\n Point,\n GForceLayoutOptions,\n Degree\n} from \"./types\";\nimport { Base } from \"./base\";\nimport { isNumber, isFunction, isArray, getDegree, isObject, getEdgeTerminal } from \"../util\";\n\ntype INode = OutNode & {\n size: number | PointTuple;\n};\n\ntype NodeMap = {\n [key: string]: INode;\n};\n\nconst proccessToFunc = (\n value: number | Function | undefined,\n defaultV?: number\n): ((d: any) => number) => {\n let func;\n if (!value) {\n func = (d: any): number => {\n return defaultV || 1;\n };\n } else if (isNumber(value)) {\n func = (d: any): number => {\n return value;\n };\n } else {\n func = value;\n }\n return func as any;\n};\n\n/**\n * graphin 中的 force 布局\n */\nexport class GForceLayout extends Base {\n /** 布局中心 */\n public center: PointTuple;\n\n /** 停止迭代的最大迭代数 */\n public maxIteration: number = 500;\n\n /** 是否启动 worker */\n public workerEnabled: boolean = false;\n\n /** 弹簧引力系数 */\n public edgeStrength: number | ((d?: any) => number) | undefined = 200;\n\n /** 斥力系数 */\n public nodeStrength: number | ((d?: any) => number) | undefined = 1000;\n\n /** 库伦系数 */\n public coulombDisScale: number = 0.005;\n\n /** 阻尼系数 */\n public damping: number = 0.9;\n\n /** 最大速度 */\n public maxSpeed: number = 1000;\n\n /** 一次迭代的平均移动距离小于该值时停止迭代 */\n public minMovement: number = 0.5;\n\n /** 迭代中衰减 */\n public interval: number = 0.02;\n\n /** 斥力的一个系数 */\n public factor: number = 1;\n\n /** 每个节点质量的回调函数,若不指定,则默认使用度数作为节点质量 */\n public getMass: ((d?: any) => number) | undefined;\n\n /** 每个节点中心力的 x、y、强度的回调函数,若不指定,则没有额外中心力 */\n public getCenter: ((d?: any, degree?: number) => number[]) | undefined;\n\n /** 理想边长 */\n public linkDistance: number | ((edge?: any, source?: any, target?: any) => number) | undefined = 1;\n\n /** 重力大小 */\n public gravity: number = 10;\n\n /** 是否防止重叠 */\n public preventOverlap: boolean = true;\n\n /** 防止重叠时的节点大小,默认从节点数据中取 size */\n public nodeSize: number | number[] | ((d?: any) => number) | undefined;\n\n /** 防止重叠的力大小参数 */\n public collideStrength: number = 1;\n\n /** 防止重叠时的节点之间最小间距 */\n public nodeSpacing: number | number[] | ((d?: any) => number) | undefined;\n\n /** 每次迭代结束的回调函数 */\n public tick: (() => void) | null = () => {};\n\n /** 是否允许每次迭代结束调用回调函数 */\n public enableTick: boolean;\n\n public nodes: INode[] | null = [];\n\n public edges: Edge[] | null = [];\n\n public width: number = 300;\n\n public height: number = 300;\n\n public nodeMap: NodeMap = {};\n\n public nodeIdxMap: IndexMap = {};\n\n public canvasEl: HTMLCanvasElement;\n\n public onLayoutEnd: () => void;\n\n /** 是否使用 window.setInterval 运行迭代 */\n public animate: Boolean = true;\n\n /** 存储节点度数 */\n private degrees: Degree[];\n\n /** 迭代中的标识 */\n private timeInterval: number;\n\n constructor(options?: GForceLayoutOptions) {\n super();\n this.updateCfg(options);\n }\n\n public getDefaultCfg() {\n return {\n maxIteration: 500,\n gravity: 10,\n enableTick: true,\n animate: true,\n };\n }\n\n /**\n * 执行布局\n */\n public execute() {\n const self = this;\n const nodes = self.nodes;\n\n if (self.timeInterval !== undefined && typeof window !== \"undefined\") {\n window.clearInterval(self.timeInterval);\n }\n\n if (!nodes || nodes.length === 0) {\n self.onLayoutEnd?.();\n return;\n }\n\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n self.onLayoutEnd?.();\n return;\n }\n const nodeMap: NodeMap = {};\n const nodeIdxMap: IndexMap = {};\n nodes.forEach((node, i) => {\n if (!isNumber(node.x)) node.x = Math.random() * self.width;\n if (!isNumber(node.y)) node.y = Math.random() * self.height;\n nodeMap[node.id] = node;\n nodeIdxMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.nodeIdxMap = nodeIdxMap;\n\n self.linkDistance = proccessToFunc(self.linkDistance, 1);\n self.nodeStrength = proccessToFunc(self.nodeStrength, 1);\n self.edgeStrength = proccessToFunc(self.edgeStrength, 1);\n\n // node size function\n const nodeSize = self.nodeSize;\n let nodeSizeFunc;\n if (self.preventOverlap) {\n const nodeSpacing = self.nodeSpacing;\n let nodeSpacingFunc: (d?: any) => number;\n if (isNumber(nodeSpacing)) {\n nodeSpacingFunc = () => nodeSpacing as number;\n } else if (isFunction(nodeSpacing)) {\n nodeSpacingFunc = nodeSpacing as (d?: any) => number;\n } else {\n nodeSpacingFunc = () => 0;\n }\n if (!nodeSize) {\n nodeSizeFunc = (d: INode) => {\n if (d.size) {\n if (isArray(d.size)) {\n return Math.max(d.size[0], d.size[1]) + nodeSpacingFunc(d);\n } if(isObject(d.size)) {\n return Math.max(d.size.width, d.size.height) + nodeSpacingFunc(d);\n }\n return (d.size as number) + nodeSpacingFunc(d);\n }\n return 10 + nodeSpacingFunc(d);\n };\n } else if (isArray(nodeSize)) {\n nodeSizeFunc = (d: INode) => {\n return Math.max(nodeSize[0], nodeSize[1]) + nodeSpacingFunc(d);\n };\n } else {\n nodeSizeFunc = (d: INode) => (nodeSize as number) + nodeSpacingFunc(d);\n }\n }\n self.nodeSize = nodeSizeFunc;\n\n const edges = self.edges;\n self.degrees = getDegree(nodes.length, self.nodeIdxMap, edges);\n if (!self.getMass) {\n self.getMass = (d) => {\n const mass = d.mass || self.degrees[self.nodeIdxMap[d.id]].all || 1;\n return mass;\n };\n }\n\n // layout\n self.run();\n }\n\n public run() {\n const self = this;\n const { maxIteration, nodes, workerEnabled, minMovement, animate } = self;\n\n if (!nodes) return;\n\n if (workerEnabled || !animate) {\n for (let i = 0; i < maxIteration; i++) {\n const previousPos = self.runOneStep(i);\n if (self.reachMoveThreshold(nodes, previousPos, minMovement)) {\n break;\n }\n }\n self.onLayoutEnd?.();\n } else {\n if (typeof window === \"undefined\") return;\n let iter = 0;\n // interval for render the result after each iteration\n this.timeInterval = window.setInterval(() => {\n if (!nodes) return;\n const previousPos = self.runOneStep(iter) || [];\n if (self.reachMoveThreshold(nodes, previousPos, minMovement)) {\n self.onLayoutEnd?.();\n window.clearInterval(self.timeInterval);\n }\n iter++;\n if (iter >= maxIteration) {\n self.onLayoutEnd?.();\n window.clearInterval(self.timeInterval);\n }\n }, 0);\n }\n }\n\n private reachMoveThreshold(nodes: any, previousPos: any, minMovement: number) {\n // whether to stop the iteration\n let movement = 0;\n nodes.forEach((node: any, j: number) => {\n const vx = node.x - previousPos[j].x;\n const vy = node.y - previousPos[j].y;\n movement += Math.sqrt(vx * vx + vy * vy);\n });\n movement /= nodes.length;\n return movement < minMovement;\n }\n\n private runOneStep(iter: number) {\n const self = this;\n const { nodes, edges } = self;\n const accArray: number[] = [];\n const velArray: number[] = [];\n if (!nodes) return;\n nodes.forEach((_, i) => {\n accArray[2 * i] = 0;\n accArray[2 * i + 1] = 0;\n velArray[2 * i] = 0;\n velArray[2 * i + 1] = 0;\n });\n self.calRepulsive(accArray, nodes);\n if (edges) self.calAttractive(accArray, edges);\n self.calGravity(accArray, nodes);\n const stepInterval = Math.max(0.02, self.interval - iter * 0.002);\n self.updateVelocity(accArray, velArray, stepInterval, nodes);\n const previousPos: Point[] = [];\n nodes.forEach((node) => {\n previousPos.push({\n x: node.x,\n y: node.y\n });\n });\n self.updatePosition(velArray, stepInterval, nodes);\n self.tick?.();\n return previousPos;\n }\n\n public calRepulsive(accArray: number[], nodes: INode[]) {\n const self = this;\n const { getMass, factor, coulombDisScale, preventOverlap, collideStrength = 1 } = self;\n const nodeStrength = self.nodeStrength as Function;\n const nodeSize = self.nodeSize as Function;\n nodes.forEach((ni: INode, i) => {\n const massi = getMass ? getMass(ni) : 1;\n nodes.forEach((nj, j) => {\n if (i >= j) return;\n // if (!accArray[j]) accArray[j] = 0;\n let vecX = ni.x - nj.x;\n let vecY = ni.y - nj.y;\n if (vecX === 0 && vecY === 0) {\n vecX = Math.random() * 0.01;\n vecY = Math.random() * 0.01;\n }\n const lengthSqr = vecX * vecX + vecY * vecY;\n const vecLength = Math.sqrt(lengthSqr);\n const nVecLength = (vecLength + 0.1) * coulombDisScale;\n const direX = vecX / vecLength;\n const direY = vecY / vecLength;\n const param =\n (((nodeStrength(ni) + nodeStrength(nj)) * 0.5) * factor) /\n (nVecLength * nVecLength);\n const massj = getMass ? getMass(nj) : 1;\n accArray[2 * i] += (direX * param);\n accArray[2 * i + 1] += (direY * param);\n accArray[2 * j] -= (direX * param);\n accArray[2 * j + 1] -= (direY * param);\n if (preventOverlap && (nodeSize(ni) + nodeSize(nj)) / 2 > vecLength) {\n const paramOverlap =\n collideStrength * (nodeStrength(ni) + nodeStrength(nj)) * 0.5 / lengthSqr;\n accArray[2 * i] += (direX * paramOverlap) / massi;\n accArray[2 * i + 1] += (direY * paramOverlap) / massi;\n accArray[2 * j] -= (direX * paramOverlap) / massj;\n accArray[2 * j + 1] -= (direY * paramOverlap) / massj;\n }\n });\n });\n }\n\n public calAttractive(accArray: number[], edges: Edge[]) {\n const self = this;\n const { nodeMap, nodeIdxMap, linkDistance, edgeStrength } = self;\n const nodeSize = self.nodeSize as Function;\n const getMass = self.getMass;\n edges.forEach((edge, i) => {\n const source = getEdgeTerminal(edge, 'source');\n const target = getEdgeTerminal(edge, 'target');\n const sourceNode = nodeMap[source];\n const targetNode = nodeMap[target];\n let vecX = targetNode.x - sourceNode.x;\n let vecY = targetNode.y - sourceNode.y;\n if (vecX === 0 && vecY === 0) {\n vecX = Math.random() * 0.01;\n vecY = Math.random() * 0.01;\n }\n const vecLength = Math.sqrt(vecX * vecX + vecY * vecY);\n const direX = vecX / vecLength;\n const direY = vecY / vecLength;\n const length = (linkDistance as Function)(edge, sourceNode, targetNode) || 1 + ((nodeSize(sourceNode) + nodeSize(targetNode)) || 0) / 2;\n const diff = length - vecLength;\n const param = diff * (edgeStrength as Function)(edge);\n const sourceIdx = nodeIdxMap[source];\n const targetIdx = nodeIdxMap[target];\n const massSource = getMass ? getMass(sourceNode) : 1;\n const massTarget = getMass ? getMass(targetNode) : 1;\n accArray[2 * sourceIdx] -= (direX * param) / massSource;\n accArray[2 * sourceIdx + 1] -= (direY * param) / massSource;\n accArray[2 * targetIdx] += (direX * param) / massTarget;\n accArray[2 * targetIdx + 1] += (direY * param) / massTarget;\n });\n }\n\n public calGravity(accArray: number[], nodes: INode[]) {\n const self = this;\n // const nodes = self.nodes;\n const center = self.center;\n const defaultGravity = self.gravity;\n const degrees = self.degrees;\n const nodeLength = nodes.length;\n for (let i = 0; i < nodeLength; i++) {\n const node = nodes[i];\n let vecX = node.x - center[0];\n let vecY = node.y - center[1];\n let gravity = defaultGravity;\n\n if (self.getCenter) {\n const customCenterOpt = self.getCenter(node, degrees[i].all);\n if (\n customCenterOpt &&\n isNumber(customCenterOpt[0]) &&\n isNumber(customCenterOpt[1]) &&\n isNumber(customCenterOpt[2])\n ) {\n vecX = node.x - customCenterOpt[0];\n vecY = node.y - customCenterOpt[1];\n gravity = customCenterOpt[2];\n }\n }\n if (!gravity) continue;\n\n accArray[2 * i] -= gravity * vecX;\n accArray[2 * i + 1] -= gravity * vecY;\n }\n }\n\n public updateVelocity(\n accArray: number[],\n velArray: number[],\n stepInterval: number,\n nodes: INode[]\n ) {\n const self = this;\n const param = stepInterval * self.damping;\n // const nodes = self.nodes;\n nodes.forEach((node, i) => {\n let vx = accArray[2 * i] * param || 0.01;\n let vy = accArray[2 * i + 1] * param || 0.01;\n const vLength = Math.sqrt(vx * vx + vy * vy);\n if (vLength > self.maxSpeed) {\n const param2 = self.maxSpeed / vLength;\n vx = param2 * vx;\n vy = param2 * vy;\n }\n velArray[2 * i] = vx;\n velArray[2 * i + 1] = vy;\n });\n }\n\n public updatePosition(\n velArray: number[],\n stepInterval: number,\n nodes: INode[]\n ) {\n nodes.forEach((node: any, i) => {\n if (isNumber(node.fx) && isNumber(node.fy)) {\n node.x = node.fx;\n node.y = node.fy;\n return;\n }\n const distX = velArray[2 * i] * stepInterval;\n const distY = velArray[2 * i + 1] * stepInterval;\n node.x += distX;\n node.y += distY;\n });\n }\n\n public stop() {\n if (this.timeInterval && typeof window !== \"undefined\") {\n window.clearInterval(this.timeInterval);\n }\n }\n\n public destroy() {\n const self = this;\n self.stop();\n self.tick = null;\n self.nodes = null;\n self.edges = null;\n self.destroyed = true;\n }\n\n public getType() {\n return \"gForce\";\n }\n}\n","// @ts-nocheck\n/**\n * @fileOverview fruchterman layout\n * @author shiwu.wyy@antfin.com\n */\n\nimport {\n OutNode,\n Edge,\n PointTuple,\n IndexMap,\n FruchtermanGPULayoutOptions\n} from \"../types\";\nimport { Base } from \"../base\";\nimport { isNumber } from \"../../util\";\n// @ts-ignore\nimport { World } from \"@antv/g-webgpu\";\n// compile at runtime in dev mode\nimport { buildTextureData, attributesToTextureData } from \"../../util/gpu\";\n// use compiled bundle in prod mode\nimport { fruchtermanBundle, clusterBundle } from \"./fruchtermanShader\";\nimport { LAYOUT_MESSAGE } from \"../constants\";\n// @ts-ignore\n// import { Compiler } from '@antv/g-webgpu-compiler'\n// import { fruchtermanCode, clusterCode } from './fruchtermanShader'\n\ntype INode = OutNode & {\n cluster: string | number;\n};\n\ntype NodeMap = {\n [key: string]: INode;\n};\n\n/**\n * fruchterman 布局\n */\nexport class FruchtermanGPULayout extends Base {\n /** 布局中心 */\n public center: PointTuple;\n\n /** 停止迭代的最大迭代数 */\n public maxIteration: number = 1000;\n\n /** 重力大小,影响图的紧凑程度 */\n public gravity: number = 10;\n\n /** 速度 */\n public speed: number = 1;\n\n /** 是否产生聚类力 */\n public clustering: boolean = false;\n\n /** 根据哪个字段聚类 */\n public clusterField: string = \"cluster\";\n\n /** 聚类力大小 */\n public clusterGravity: number = 10;\n\n /** 是否启用web worker。前提是在web worker里执行布局,否则无效\t*/\n public workerEnabled: boolean = false;\n\n public nodes: INode[] = [];\n\n public edges: Edge[] = [];\n\n public width: number = 300;\n\n public height: number = 300;\n\n public nodeMap: NodeMap = {};\n\n public nodeIdxMap: IndexMap = {};\n\n public canvasEl: HTMLCanvasElement;\n\n public onLayoutEnd: () => void;\n\n constructor(options?: FruchtermanGPULayoutOptions) {\n super();\n this.updateCfg(options);\n }\n\n public getDefaultCfg() {\n return {\n maxIteration: 1000,\n gravity: 10,\n speed: 1,\n clustering: false,\n clusterGravity: 10\n };\n }\n\n /**\n * 执行布局\n */\n public async execute() {\n const self = this;\n const nodes = self.nodes;\n\n if (!nodes || nodes.length === 0) {\n if (self.onLayoutEnd) self.onLayoutEnd();\n return;\n }\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd) self.onLayoutEnd();\n return;\n }\n const nodeMap: NodeMap = {};\n const nodeIdxMap: IndexMap = {};\n nodes.forEach((node, i) => {\n if (!isNumber(node.x)) node.x = Math.random() * this.width;\n if (!isNumber(node.y)) node.y = Math.random() * this.height;\n nodeMap[node.id] = node;\n nodeIdxMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.nodeIdxMap = nodeIdxMap;\n // layout\n await self.run();\n }\n\n public async executeWithWorker(canvas?: HTMLCanvasElement, ctx?: any) {\n const self = this;\n const nodes = self.nodes;\n const center = self.center;\n\n if (!nodes || nodes.length === 0) {\n return;\n }\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n return;\n }\n const nodeMap: NodeMap = {};\n const nodeIdxMap: IndexMap = {};\n nodes.forEach((node, i) => {\n if (!isNumber(node.x)) node.x = Math.random() * this.width;\n if (!isNumber(node.y)) node.y = Math.random() * this.height;\n nodeMap[node.id] = node;\n nodeIdxMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.nodeIdxMap = nodeIdxMap;\n // layout\n await self.run(canvas, ctx);\n }\n\n public async run(canvas?: HTMLCanvasElement, ctx?: any) {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges;\n const maxIteration = self.maxIteration;\n const center = self.center;\n const area = self.height * self.width;\n let maxDisplace = Math.sqrt(area) / 10;\n const k2 = area / (nodes.length + 1);\n const k = Math.sqrt(k2);\n const speed = self.speed;\n const clustering = self.clustering;\n\n const {\n array: attributeArray,\n count: clusterCount\n } = attributesToTextureData([self.clusterField], nodes);\n\n // pushing the fx and fy\n nodes.forEach((node, i) => {\n let fx = 0;\n let fy = 0;\n if (isNumber(node.fx) && isNumber(node.fy)) {\n fx = node.fx || 0.001;\n fy = node.fy || 0.001;\n }\n attributeArray[4 * i + 1] = fx;\n attributeArray[4 * i + 2] = fy;\n });\n\n\n const numParticles = nodes.length;\n const { maxEdgePerVetex, array: nodesEdgesArray } = buildTextureData(\n nodes,\n edges\n );\n\n const workerEnabled = self.workerEnabled;\n\n let world;\n\n if (workerEnabled) {\n world = World.create({\n canvas,\n engineOptions: {\n supportCompute: true\n }\n });\n } else {\n world = World.create({\n engineOptions: {\n supportCompute: true\n }\n });\n }\n\n // compile at runtime in dev mode\n // const compiler = new Compiler()\n // const fruchtermanBundle = compiler.compileBundle(fruchtermanCode)\n // const clusterBundle = compiler.compileBundle(clusterCode)\n\n // use compiled bundle in prod mode\n // console.log(fruchtermanBundle.toString())\n // console.log(clusterBundle.toString())\n\n const onLayoutEnd = self.onLayoutEnd;\n\n const clusterCenters = [];\n for (let i = 0; i < clusterCount; i++) {\n clusterCenters.push(0, 0, 0, 0);\n }\n\n const kernelFruchterman = world\n .createKernel(fruchtermanBundle)\n .setDispatch([numParticles, 1, 1])\n .setBinding({\n u_Data: nodesEdgesArray,\n u_K: k,\n u_K2: k2,\n u_Gravity: self.gravity,\n u_ClusterGravity: self.clusterGravity || self.gravity || 1,\n u_Speed: speed,\n u_MaxDisplace: maxDisplace,\n u_Clustering: clustering ? 1 : 0,\n u_Center: center,\n u_AttributeArray: attributeArray,\n u_ClusterCenters: clusterCenters,\n MAX_EDGE_PER_VERTEX: maxEdgePerVetex,\n VERTEX_COUNT: numParticles\n });\n\n let kernelCluster: any;\n if (clustering) {\n kernelCluster = world\n .createKernel(clusterBundle)\n .setDispatch([clusterCount, 1, 1])\n .setBinding({\n u_Data: nodesEdgesArray,\n u_NodeAttributes: attributeArray,\n u_ClusterCenters: clusterCenters,\n VERTEX_COUNT: numParticles,\n CLUSTER_COUNT: clusterCount\n });\n }\n\n const execute = async () => {\n for (let i = 0; i < maxIteration; i++) {\n // eslint-disable-next-line no-await-in-loop\n await kernelFruchterman.execute();\n\n if (clustering) {\n kernelCluster.setBinding({\n u_Data: kernelFruchterman\n });\n // eslint-disable-next-line no-await-in-loop\n await kernelCluster.execute();\n kernelFruchterman.setBinding({\n u_ClusterCenters: kernelCluster\n });\n }\n\n kernelFruchterman.setBinding({\n u_MaxDisplace: maxDisplace *= 0.99\n });\n }\n\n const finalParticleData = await kernelFruchterman.getOutput();\n\n if (canvas) {\n // 传递数据给主线程\n ctx.postMessage({\n type: LAYOUT_MESSAGE.GPUEND,\n vertexEdgeData: finalParticleData\n // edgeIndexBufferData,\n });\n } else {\n nodes.forEach((node, i) => {\n const x = finalParticleData[4 * i];\n const y = finalParticleData[4 * i + 1];\n node.x = x;\n node.y = y;\n });\n }\n if (onLayoutEnd) onLayoutEnd();\n };\n\n await execute();\n }\n\n public getType() {\n return \"fruchterman-gpu\";\n }\n}\n","export const fruchtermanCode = `\nimport { globalInvocationID } from 'g-webgpu';\nconst MAX_EDGE_PER_VERTEX;\nconst VERTEX_COUNT;\n@numthreads(1, 1, 1)\nclass Fruchterman {\n @in @out\n u_Data: vec4[];\n @in\n u_K: float;\n @in\n u_K2: float;\n \n @in\n u_Center: vec2;\n @in\n u_Gravity: float;\n @in\n u_ClusterGravity: float;\n @in\n u_Speed: float;\n @in\n u_MaxDisplace: float;\n @in\n u_Clustering: float;\n @in\n u_AttributeArray: vec4[];\n @in\n u_ClusterCenters: vec4[];\n calcRepulsive(i: int, currentNode: vec4): vec2 {\n let dx = 0, dy = 0;\n for (let j = 0; j < VERTEX_COUNT; j++) {\n if (i != j) {\n const nextNode = this.u_Data[j];\n const xDist = currentNode[0] - nextNode[0];\n const yDist = currentNode[1] - nextNode[1];\n const dist = (xDist * xDist + yDist * yDist) + 0.01;\n let param = this.u_K2 / dist;\n \n if (dist > 0.0) {\n dx += param * xDist;\n dy += param * yDist;\n if (xDist == 0 && yDist == 0) {\n const sign = i < j ? 1 : -1;\n dx += param * sign;\n dy += param * sign;\n }\n }\n }\n }\n return [dx, dy];\n }\n calcGravity(currentNode: vec4, nodeAttributes: vec4): vec2 { // \n let dx = 0, dy = 0;\n const vx = currentNode[0] - this.u_Center[0];\n const vy = currentNode[1] - this.u_Center[1];\n const gf = 0.01 * this.u_K * this.u_Gravity;\n dx = gf * vx;\n dy = gf * vy;\n if (this.u_Clustering == 1) {\n const clusterIdx = int(nodeAttributes[0]);\n const center = this.u_ClusterCenters[clusterIdx];\n const cvx = currentNode[0] - center[0];\n const cvy = currentNode[1] - center[1];\n const dist = sqrt(cvx * cvx + cvy * cvy) + 0.01;\n const parma = this.u_K * this.u_ClusterGravity / dist;\n dx += parma * cvx;\n dy += parma * cvy;\n }\n return [dx, dy];\n }\n calcAttractive(i: int, currentNode: vec4): vec2 {\n let dx = 0, dy = 0;\n const arr_offset = int(floor(currentNode[2] + 0.5));\n const length = int(floor(currentNode[3] + 0.5));\n const node_buffer: vec4;\n for (let p = 0; p < MAX_EDGE_PER_VERTEX; p++) {\n if (p >= length) break;\n const arr_idx = arr_offset + p;\n // when arr_idx % 4 == 0 update currentNodedx_buffer\n const buf_offset = arr_idx - arr_idx / 4 * 4;\n if (p == 0 || buf_offset == 0) {\n node_buffer = this.u_Data[int(arr_idx / 4)];\n }\n const float_j = buf_offset == 0 ? node_buffer[0] :\n buf_offset == 1 ? node_buffer[1] :\n buf_offset == 2 ? node_buffer[2] :\n node_buffer[3];\n const nextNode = this.u_Data[int(float_j)];\n const xDist = currentNode[0] - nextNode[0];\n const yDist = currentNode[1] - nextNode[1];\n const dist = sqrt(xDist * xDist + yDist * yDist) + 0.01;\n let attractiveF = dist / this.u_K;\n \n if (dist > 0.0) {\n dx -= xDist * attractiveF;\n dy -= yDist * attractiveF;\n if (xDist == 0 && yDist == 0) {\n const sign = i < int(float_j) ? 1 : -1;\n dx -= sign * attractiveF;\n dy -= sign * attractiveF;\n }\n }\n }\n return [dx, dy];\n }\n @main\n compute() {\n const i = globalInvocationID.x;\n const currentNode = this.u_Data[i];\n let dx = 0, dy = 0;\n if (i >= VERTEX_COUNT) {\n this.u_Data[i] = currentNode;\n return;\n }\n\n // [gravity, fx, fy, 0]\n const nodeAttributes = this.u_AttributeArray[i];\n\n if (nodeAttributes[1] != 0 && nodeAttributes[2] != 0) {\n // the node is fixed\n this.u_Data[i] = [\n nodeAttributes[1],\n nodeAttributes[2],\n currentNode[2],\n currentNode[3]\n ];\n return;\n }\n\n // repulsive\n const repulsive = this.calcRepulsive(i, currentNode);\n dx += repulsive[0];\n dy += repulsive[1];\n // attractive\n const attractive = this.calcAttractive(i, currentNode);\n dx += attractive[0];\n dy += attractive[1];\n // gravity\n const gravity = this.calcGravity(currentNode, nodeAttributes);\n dx -= gravity[0];\n dy -= gravity[1];\n // speed\n dx *= this.u_Speed;\n dy *= this.u_Speed;\n\n // move\n const distLength = sqrt(dx * dx + dy * dy);\n if (distLength > 0.0) {\n const limitedDist = min(this.u_MaxDisplace * this.u_Speed, distLength);\n this.u_Data[i] = [\n currentNode[0] + dx / distLength * limitedDist,\n currentNode[1] + dy / distLength * limitedDist,\n currentNode[2],\n currentNode[3]\n ];\n }\n }\n}\n`;\n\nexport const fruchtermanBundle = `{\"shaders\":{\"WGSL\":\"\",\"GLSL450\":\"\",\"GLSL100\":\"\\\\n\\\\nfloat epsilon = 0.00001;\\\\nvec2 addrTranslation_1Dto2D(float address1D, vec2 texSize) {\\\\n vec2 conv_const = vec2(1.0 / texSize.x, 1.0 / (texSize.x * texSize.y));\\\\n vec2 normAddr2D = float(address1D) * conv_const;\\\\n return vec2(fract(normAddr2D.x + epsilon), normAddr2D.y);\\\\n}\\\\n\\\\nvoid barrier() {}\\\\n \\\\n\\\\nuniform vec2 u_OutputTextureSize;\\\\nuniform int u_OutputTexelCount;\\\\nvarying vec2 v_TexCoord;\\\\n\\\\nbool gWebGPUDebug = false;\\\\nvec4 gWebGPUDebugOutput = vec4(0.0);\\\\n\\\\n#define MAX_EDGE_PER_VERTEX __DefineValuePlaceholder__MAX_EDGE_PER_VERTEX\\\\n#define VERTEX_COUNT __DefineValuePlaceholder__VERTEX_COUNT\\\\n\\\\nuniform sampler2D u_Data;\\\\nuniform vec2 u_DataSize;\\\\nvec4 getDatau_Data(vec2 address2D) {\\\\n return vec4(texture2D(u_Data, address2D).rgba);\\\\n}\\\\nvec4 getDatau_Data(float address1D) {\\\\n return getDatau_Data(addrTranslation_1Dto2D(address1D, u_DataSize));\\\\n}\\\\nvec4 getDatau_Data(int address1D) {\\\\n return getDatau_Data(float(address1D));\\\\n}\\\\nuniform float u_K;\\\\nuniform float u_K2;\\\\nuniform vec2 u_Center;\\\\nuniform float u_Gravity;\\\\nuniform float u_ClusterGravity;\\\\nuniform float u_Speed;\\\\nuniform float u_MaxDisplace;\\\\nuniform float u_Clustering;\\\\nuniform sampler2D u_AttributeArray;\\\\nuniform vec2 u_AttributeArraySize;\\\\nvec4 getDatau_AttributeArray(vec2 address2D) {\\\\n return vec4(texture2D(u_AttributeArray, address2D).rgba);\\\\n}\\\\nvec4 getDatau_AttributeArray(float address1D) {\\\\n return getDatau_AttributeArray(addrTranslation_1Dto2D(address1D, u_AttributeArraySize));\\\\n}\\\\nvec4 getDatau_AttributeArray(int address1D) {\\\\n return getDatau_AttributeArray(float(address1D));\\\\n}\\\\nuniform sampler2D u_ClusterCenters;\\\\nuniform vec2 u_ClusterCentersSize;\\\\nvec4 getDatau_ClusterCenters(vec2 address2D) {\\\\n return vec4(texture2D(u_ClusterCenters, address2D).rgba);\\\\n}\\\\nvec4 getDatau_ClusterCenters(float address1D) {\\\\n return getDatau_ClusterCenters(addrTranslation_1Dto2D(address1D, u_ClusterCentersSize));\\\\n}\\\\nvec4 getDatau_ClusterCenters(int address1D) {\\\\n return getDatau_ClusterCenters(float(address1D));\\\\n}\\\\nvec2 calcRepulsive(int i, vec4 currentNode) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat dx = 0.0;\\\\nfloat dy = 0.0;\\\\nfor (int j = 0; j < VERTEX_COUNT; j++) {if (i != j) {vec4 nextNode = getDatau_Data(j);\\\\nfloat xDist = currentNode.x - nextNode.x;\\\\nfloat yDist = currentNode.y - nextNode.y;\\\\nfloat dist = ((xDist * xDist) + (yDist * yDist)) + 0.01;\\\\nfloat param = u_K2 / dist;\\\\nif (dist > 0.0) {dx += param * xDist;\\\\ndy += param * yDist;\\\\nif ((xDist == 0.0) && (yDist == 0.0)) {float sign = (i < j) ? (1.0) : (-1.0);\\\\ndx += param * sign;\\\\ndy += param * sign;}}}}\\\\nreturn vec2(dx, dy);}\\\\nvec2 calcGravity(vec4 currentNode, vec4 nodeAttributes) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat dx = 0.0;\\\\nfloat dy = 0.0;\\\\nfloat vx = currentNode.x - u_Center.x;\\\\nfloat vy = currentNode.y - u_Center.y;\\\\nfloat gf = (0.01 * u_K) * u_Gravity;\\\\ndx = gf * vx;\\\\ndy = gf * vy;\\\\nif (u_Clustering == 1.0) {int clusterIdx = int(nodeAttributes.x);\\\\nvec4 center = getDatau_ClusterCenters(clusterIdx);\\\\nfloat cvx = currentNode.x - center.x;\\\\nfloat cvy = currentNode.y - center.y;\\\\nfloat dist = sqrt((cvx * cvx) + (cvy * cvy)) + 0.01;\\\\nfloat parma = (u_K * u_ClusterGravity) / dist;\\\\ndx += parma * cvx;\\\\ndy += parma * cvy;}\\\\nreturn vec2(dx, dy);}\\\\nvec2 calcAttractive(int i, vec4 currentNode) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat dx = 0.0;\\\\nfloat dy = 0.0;\\\\nint arr_offset = int(floor(currentNode.z + 0.5));\\\\nint length = int(floor(currentNode.w + 0.5));\\\\nvec4 node_buffer;\\\\nfor (int p = 0; p < MAX_EDGE_PER_VERTEX; p++) {if (p >= length) {break;}\\\\nint arr_idx = arr_offset + int(p);\\\\nint buf_offset = arr_idx - ((arr_idx / 4) * 4);\\\\nif ((p == 0) || (buf_offset == 0)) {node_buffer = getDatau_Data(int(arr_idx / 4));}\\\\nfloat float_j = (buf_offset == 0) ? (node_buffer.x) : ((buf_offset == 1) ? (node_buffer.y) : ((buf_offset == 2) ? (node_buffer.z) : (node_buffer.w)));\\\\nvec4 nextNode = getDatau_Data(int(float_j));\\\\nfloat xDist = currentNode.x - nextNode.x;\\\\nfloat yDist = currentNode.y - nextNode.y;\\\\nfloat dist = sqrt((xDist * xDist) + (yDist * yDist)) + 0.01;\\\\nfloat attractiveF = dist / u_K;\\\\nif (dist > 0.0) {dx -= xDist * attractiveF;\\\\ndy -= yDist * attractiveF;\\\\nif ((xDist == 0.0) && (yDist == 0.0)) {float sign = (i < int(float_j)) ? (1.0) : (-1.0);\\\\ndx -= sign * attractiveF;\\\\ndy -= sign * attractiveF;}}}\\\\nreturn vec2(dx, dy);}\\\\nvoid main() {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nint i = globalInvocationID.x;\\\\nvec4 currentNode = getDatau_Data(i);\\\\nfloat dx = 0.0;\\\\nfloat dy = 0.0;\\\\nif (i >= VERTEX_COUNT) {gl_FragColor = vec4(currentNode);\\\\nreturn ;}\\\\nvec4 nodeAttributes = getDatau_AttributeArray(i);\\\\nif ((nodeAttributes.y != 0.0) && (nodeAttributes.z != 0.0)) {gl_FragColor = vec4(vec4(nodeAttributes.y, nodeAttributes.z, currentNode.z, currentNode.w));\\\\nreturn ;}\\\\nvec2 repulsive = calcRepulsive(i, currentNode);\\\\ndx += repulsive.x;\\\\ndy += repulsive.y;\\\\nvec2 attractive = calcAttractive(i, currentNode);\\\\ndx += attractive.x;\\\\ndy += attractive.y;\\\\nvec2 gravity = calcGravity(currentNode, nodeAttributes);\\\\ndx -= gravity.x;\\\\ndy -= gravity.y;\\\\ndx *= u_Speed;\\\\ndy *= u_Speed;\\\\nfloat distLength = sqrt((dx * dx) + (dy * dy));\\\\nif (distLength > 0.0) {float limitedDist = min(u_MaxDisplace * u_Speed, distLength);\\\\ngl_FragColor = vec4(vec4(currentNode.x + ((dx / distLength) * limitedDist), currentNode.y + ((dy / distLength) * limitedDist), currentNode.z, currentNode.w));}if (gWebGPUDebug) {\\\\n gl_FragColor = gWebGPUDebugOutput;\\\\n}}\\\\n\"},\"context\":{\"name\":\"\",\"dispatch\":[1,1,1],\"threadGroupSize\":[1,1,1],\"maxIteration\":1,\"defines\":[{\"name\":\"MAX_EDGE_PER_VERTEX\",\"type\":\"Float\",\"runtime\":true},{\"name\":\"VERTEX_COUNT\",\"type\":\"Float\",\"runtime\":true}],\"uniforms\":[{\"name\":\"u_Data\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":false,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_K\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_K2\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_Center\",\"type\":\"vec2\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_Gravity\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_ClusterGravity\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_Speed\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_MaxDisplace\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_Clustering\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_AttributeArray\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_ClusterCenters\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]}],\"globalDeclarations\":[],\"output\":{\"name\":\"u_Data\",\"size\":[1,1],\"length\":1},\"needPingpong\":true}}`;\n\nexport const clusterCode = `\nimport { globalInvocationID } from 'g-webgpu';\nconst VERTEX_COUNT;\nconst CLUSTER_COUNT;\n@numthreads(1, 1, 1)\nclass CalcCenter {\n @in\n u_Data: vec4[];\n @in\n u_NodeAttributes: vec4[]; // [[clusterIdx, 0, 0, 0], ...]\n @in @out\n u_ClusterCenters: vec4[]; // [[cx, cy, nodeCount, clusterIdx], ...]\n @main\n compute() {\n const i = globalInvocationID.x;\n const center = this.u_ClusterCenters[i];\n let sumx = 0;\n let sumy = 0;\n let count = 0;\n for (let j = 0; j < VERTEX_COUNT; j++) {\n const attributes = this.u_NodeAttributes[j];\n const clusterIdx = int(attributes[0]);\n const vertex = this.u_Data[j];\n if (clusterIdx == i) {\n sumx += vertex.x;\n sumy += vertex.y;\n count += 1;\n }\n }\n this.u_ClusterCenters[i] = [\n sumx / count,\n sumy / count,\n count,\n i\n ];\n }\n}\n`;\n\nexport const clusterBundle = `{\"shaders\":{\"WGSL\":\"\",\"GLSL450\":\"\",\"GLSL100\":\"\\\\n\\\\nfloat epsilon = 0.00001;\\\\nvec2 addrTranslation_1Dto2D(float address1D, vec2 texSize) {\\\\n vec2 conv_const = vec2(1.0 / texSize.x, 1.0 / (texSize.x * texSize.y));\\\\n vec2 normAddr2D = float(address1D) * conv_const;\\\\n return vec2(fract(normAddr2D.x + epsilon), normAddr2D.y);\\\\n}\\\\n\\\\nvoid barrier() {}\\\\n \\\\n\\\\nuniform vec2 u_OutputTextureSize;\\\\nuniform int u_OutputTexelCount;\\\\nvarying vec2 v_TexCoord;\\\\n\\\\nbool gWebGPUDebug = false;\\\\nvec4 gWebGPUDebugOutput = vec4(0.0);\\\\n\\\\n#define VERTEX_COUNT __DefineValuePlaceholder__VERTEX_COUNT\\\\n#define CLUSTER_COUNT __DefineValuePlaceholder__CLUSTER_COUNT\\\\n\\\\nuniform sampler2D u_Data;\\\\nuniform vec2 u_DataSize;\\\\nvec4 getDatau_Data(vec2 address2D) {\\\\n return vec4(texture2D(u_Data, address2D).rgba);\\\\n}\\\\nvec4 getDatau_Data(float address1D) {\\\\n return getDatau_Data(addrTranslation_1Dto2D(address1D, u_DataSize));\\\\n}\\\\nvec4 getDatau_Data(int address1D) {\\\\n return getDatau_Data(float(address1D));\\\\n}\\\\nuniform sampler2D u_NodeAttributes;\\\\nuniform vec2 u_NodeAttributesSize;\\\\nvec4 getDatau_NodeAttributes(vec2 address2D) {\\\\n return vec4(texture2D(u_NodeAttributes, address2D).rgba);\\\\n}\\\\nvec4 getDatau_NodeAttributes(float address1D) {\\\\n return getDatau_NodeAttributes(addrTranslation_1Dto2D(address1D, u_NodeAttributesSize));\\\\n}\\\\nvec4 getDatau_NodeAttributes(int address1D) {\\\\n return getDatau_NodeAttributes(float(address1D));\\\\n}\\\\nuniform sampler2D u_ClusterCenters;\\\\nuniform vec2 u_ClusterCentersSize;\\\\nvec4 getDatau_ClusterCenters(vec2 address2D) {\\\\n return vec4(texture2D(u_ClusterCenters, address2D).rgba);\\\\n}\\\\nvec4 getDatau_ClusterCenters(float address1D) {\\\\n return getDatau_ClusterCenters(addrTranslation_1Dto2D(address1D, u_ClusterCentersSize));\\\\n}\\\\nvec4 getDatau_ClusterCenters(int address1D) {\\\\n return getDatau_ClusterCenters(float(address1D));\\\\n}\\\\nvoid main() {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nint i = globalInvocationID.x;\\\\nvec4 center = getDatau_ClusterCenters(i);\\\\nfloat sumx = 0.0;\\\\nfloat sumy = 0.0;\\\\nfloat count = 0.0;\\\\nfor (int j = 0; j < VERTEX_COUNT; j++) {vec4 attributes = getDatau_NodeAttributes(j);\\\\nint clusterIdx = int(attributes.x);\\\\nvec4 vertex = getDatau_Data(j);\\\\nif (clusterIdx == i) {sumx += vertex.x;\\\\nsumy += vertex.y;\\\\ncount += 1.0;}}\\\\ngl_FragColor = vec4(vec4(sumx / count, sumy / count, count, i));if (gWebGPUDebug) {\\\\n gl_FragColor = gWebGPUDebugOutput;\\\\n}}\\\\n\"},\"context\":{\"name\":\"\",\"dispatch\":[1,1,1],\"threadGroupSize\":[1,1,1],\"maxIteration\":1,\"defines\":[{\"name\":\"VERTEX_COUNT\",\"type\":\"Float\",\"runtime\":true},{\"name\":\"CLUSTER_COUNT\",\"type\":\"Float\",\"runtime\":true}],\"uniforms\":[{\"name\":\"u_Data\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_NodeAttributes\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_ClusterCenters\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":false,\"writeonly\":false,\"size\":[1,1]}],\"globalDeclarations\":[],\"output\":{\"name\":\"u_ClusterCenters\",\"size\":[1,1],\"length\":1},\"needPingpong\":true}}`;\n","// @ts-nocheck\n/**\n * @fileOverview fruchterman layout\n * @author shiwu.wyy@antfin.com\n */\n\nimport {\n IndexMap,\n OutNode,\n PointTuple,\n Edge,\n GForceGPULayoutOptions,\n Degree\n} from \"../types\";\nimport { Base } from \"../base\";\nimport { isNumber } from \"../../util\";\n// @ts-ignore\nimport { World } from \"@antv/g-webgpu\";\nimport {\n proccessToFunc,\n buildTextureDataWithTwoEdgeAttr,\n arrayToTextureData\n} from \"../../util/gpu\";\nimport { getDegree } from \"../../util/math\";\nimport { gForceBundle, aveMovementBundle } from \"./gForceShader\";\nimport { LAYOUT_MESSAGE } from \"../constants\";\n// @ts-ignore\n// import { Compiler } from '@antv/g-webgpu-compiler';\n// import { gForceCode, aveMovementCode } from './gForceShader';\n\ntype NodeMap = {\n [key: string]: OutNode;\n};\n\n/**\n * graphin 中的 force 布局\n */\nexport class GForceGPULayout extends Base {\n /** 布局中心 */\n public center: PointTuple;\n\n /** 停止迭代的最大迭代数 */\n public maxIteration: number = 1000;\n\n /** 弹簧引力系数 */\n public edgeStrength: number | ((d?: any) => number) | undefined = 200;\n\n /** 斥力系数 */\n public nodeStrength: number | ((d?: any) => number) | undefined = 1000;\n\n /** 库伦系数 */\n public coulombDisScale: number = 0.005;\n\n /** 阻尼系数 */\n public damping: number = 0.9;\n\n /** 最大速度 */\n public maxSpeed: number = 1000;\n\n /** 一次迭代的平均移动距离小于该值时停止迭代 */\n public minMovement: number = 0.5;\n\n /** 迭代中衰减 */\n public interval: number = 0.02;\n\n /** 斥力的一个系数 */\n public factor: number = 1;\n\n /** 每个节点质量的回调函数,若不指定,则默认使用度数作为节点质量 */\n public getMass: ((d?: any) => number) | undefined;\n\n /** 理想边长 */\n public linkDistance: number | ((d?: any) => number) | undefined = 1;\n\n /** 重力大小 */\n public gravity: number = 10;\n\n /** 每个节点中心力的 x、y、强度的回调函数,若不指定,则没有额外中心力 */\n public getCenter: ((d?: any, degree?: number) => number[]) | undefined;\n\n /** 是否启用web worker。前提是在web worker里执行布局,否则无效\t*/\n public workerEnabled: boolean = false;\n\n public nodes: OutNode[] = [];\n\n public edges: Edge[] = [];\n\n public width: number = 300;\n\n public height: number = 300;\n\n public nodeMap: NodeMap = {};\n\n public nodeIdxMap: IndexMap = {};\n\n public onLayoutEnd: () => void;\n\n /** 存储节点度数 */\n private degrees: Degree[];\n\n constructor(options?: GForceGPULayoutOptions) {\n super();\n this.updateCfg(options);\n }\n\n public getDefaultCfg() {\n return {\n maxIteration: 2000,\n gravity: 10,\n clustering: false,\n clusterGravity: 10\n };\n }\n\n /**\n * 执行布局\n */\n public async execute() {\n const self = this;\n const nodes = self.nodes;\n\n if (!nodes || nodes.length === 0) {\n if (self.onLayoutEnd) self.onLayoutEnd();\n return;\n }\n\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd) self.onLayoutEnd();\n return;\n }\n const nodeMap: NodeMap = {};\n const nodeIdxMap: IndexMap = {};\n nodes.forEach((node, i) => {\n if (!isNumber(node.x)) node.x = Math.random() * self.width;\n if (!isNumber(node.y)) node.y = Math.random() * self.height;\n nodeMap[node.id] = node;\n nodeIdxMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.nodeIdxMap = nodeIdxMap;\n\n self.nodeStrength = proccessToFunc(self.nodeStrength, 1);\n self.edgeStrength = proccessToFunc(self.edgeStrength, 1);\n\n // layout\n await self.run();\n }\n\n public executeWithWorker(canvas?: HTMLCanvasElement, ctx?: any) {\n const self = this;\n const nodes = self.nodes;\n const center = self.center;\n\n if (!nodes || nodes.length === 0) {\n return;\n }\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n return;\n }\n const nodeMap: NodeMap = {};\n const nodeIdxMap: IndexMap = {};\n nodes.forEach((node, i) => {\n if (!isNumber(node.x)) node.x = Math.random() * self.width;\n if (!isNumber(node.y)) node.y = Math.random() * self.height;\n nodeMap[node.id] = node;\n nodeIdxMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.nodeIdxMap = nodeIdxMap;\n\n self.nodeStrength = proccessToFunc(self.nodeStrength, 1);\n self.edgeStrength = proccessToFunc(self.edgeStrength, 1);\n\n // layout\n self.run(canvas, ctx);\n }\n\n public async run(canvas?: HTMLCanvasElement, ctx?: any) {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges;\n const maxIteration = self.maxIteration;\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n\n const numParticles = nodes.length;\n\n self.linkDistance = proccessToFunc(self.linkDistance) as ((\n d?: any\n ) => number);\n self.edgeStrength = proccessToFunc(self.edgeStrength) as ((\n d?: any\n ) => number);\n const {\n maxEdgePerVetex,\n array: nodesEdgesArray\n } = buildTextureDataWithTwoEdgeAttr(\n nodes,\n edges,\n self.linkDistance,\n self.edgeStrength\n );\n\n // init degree for mass\n self.degrees = getDegree(nodes.length, self.nodeIdxMap, edges).map((degree) => degree.all);\n const masses: number[] = [];\n const nodeStrengths: number[] = [];\n const centerXs: number[] = [];\n const centerYs: number[] = [];\n const centerGravities: number[] = [];\n const fxs: number[] = [];\n const fys: number[] = [];\n\n if (!self.getMass) {\n self.getMass = (d) => {\n return self.degrees[self.nodeIdxMap[d.id]] || 1;\n };\n }\n const gravity = self.gravity;\n const center = self.center;\n nodes.forEach((node, i) => {\n masses.push((self.getMass as (d?: any) => number)(node));\n nodeStrengths.push((self.nodeStrength as Function)(node));\n if (!self.degrees[i]) self.degrees[i] = 0;\n let nodeGravity = [center[0], center[1], gravity];\n if (self.getCenter) {\n const customCenter = self.getCenter(node, self.degrees[i]);\n if (\n customCenter &&\n isNumber(customCenter[0]) &&\n isNumber(customCenter[1]) &&\n isNumber(customCenter[2])\n ) {\n nodeGravity = customCenter;\n }\n }\n centerXs.push(nodeGravity[0]);\n centerYs.push(nodeGravity[1]);\n centerGravities.push(nodeGravity[2]);\n if (isNumber(node.fx) && isNumber(node.fy)) {\n fxs.push(node.fx || 0.001);\n fys.push(node.fy || 0.001);\n } else {\n fxs.push(0);\n fys.push(0);\n }\n });\n\n // 每个节点的额外属性占两个数组各一格,nodeAttributeArray1 中是:mass, degree, nodeSterngth, 0\n const nodeAttributeArray1 = arrayToTextureData([\n masses,\n self.degrees,\n nodeStrengths,\n fxs\n ]);\n // nodeAttributeArray2 中是:centerX, centerY, gravity, 0,\n const nodeAttributeArray2 = arrayToTextureData([\n centerXs,\n centerYs,\n centerGravities,\n fys\n ]);\n\n const workerEnabled = self.workerEnabled;\n let world;\n\n if (workerEnabled) {\n world = World.create({\n canvas,\n engineOptions: {\n supportCompute: true\n }\n });\n } else {\n world = World.create({\n engineOptions: {\n supportCompute: true\n }\n });\n }\n\n // TODO: 最终的预编译代码放入到 gForceShader.ts 中直接引入,不再需要下面三行\n // const compiler = new Compiler();\n // const gForceBundle = compiler.compileBundle(gForceCode);\n // console.log(gForceBundle.toString());\n\n const onLayoutEnd = self.onLayoutEnd;\n\n const initPreviousData = [];\n nodesEdgesArray.forEach((value) => {\n initPreviousData.push(value);\n });\n for (let i = 0; i < 4; i++) {\n initPreviousData.push(0);\n }\n\n const kernelGForce = world\n .createKernel(gForceBundle)\n .setDispatch([numParticles, 1, 1])\n .setBinding({\n u_Data: nodesEdgesArray, // 节点边输入输出\n u_damping: self.damping,\n u_maxSpeed: self.maxSpeed,\n u_minMovement: self.minMovement,\n u_coulombDisScale: self.coulombDisScale,\n u_factor: self.factor,\n u_NodeAttributeArray1: nodeAttributeArray1,\n u_NodeAttributeArray2: nodeAttributeArray2,\n MAX_EDGE_PER_VERTEX: maxEdgePerVetex,\n VERTEX_COUNT: numParticles,\n u_AveMovement: initPreviousData,\n u_interval: self.interval // 每次迭代更新,首次设置为 interval,在 onIterationCompleted 中更新\n });\n\n // const aveMovementBundle = compiler.compileBundle(aveMovementCode);\n // console.log(aveMovementBundle.toString());\n\n const kernelAveMovement = world\n .createKernel(aveMovementBundle)\n .setDispatch([1, 1, 1])\n .setBinding({\n u_Data: nodesEdgesArray,\n VERTEX_COUNT: numParticles,\n u_AveMovement: [0, 0, 0, 0]\n });\n\n // 执行迭代\n // let midRes = nodesEdgesArray;\n const execute = async () => {\n for (let i = 0; i < maxIteration; i++) {\n // TODO: 似乎都来自 kernelGForce 是一个引用\n // 当前坐标作为下一次迭代的 PreviousData\n // if (i > 0) {\n // kernelAveMovement.setBinding({\n // u_PreviousData: kernelGForce\n // });\n // }\n\n // eslint-disable-next-line no-await-in-loop\n await kernelGForce.execute();\n\n // midRes = await kernelGForce.getOutput();\n\n // 每次迭代完成后\n // 计算平均位移,用于提前终止迭代\n kernelAveMovement.setBinding({\n u_Data: kernelGForce\n });\n\n // eslint-disable-next-line no-await-in-loop\n await kernelAveMovement.execute();\n\n // 更新衰减函数\n const stepInterval = Math.max(0.02, self.interval - i * 0.002);\n kernelGForce.setBinding({\n u_interval: stepInterval,\n u_AveMovement: kernelAveMovement\n });\n }\n const finalParticleData = await kernelGForce.getOutput();\n\n // 所有迭代完成后\n if (canvas) {\n // 传递数据给主线程\n ctx.postMessage({\n type: LAYOUT_MESSAGE.GPUEND,\n vertexEdgeData: finalParticleData\n // edgeIndexBufferData,\n });\n } else {\n nodes.forEach((node, i) => {\n const x = finalParticleData[4 * i];\n const y = finalParticleData[4 * i + 1];\n node.x = x;\n node.y = y;\n });\n }\n\n if (onLayoutEnd) onLayoutEnd();\n };\n\n await execute();\n }\n\n public getType() {\n return \"gForce-gpu\";\n }\n}\n","export const gForceCode = `\nimport { globalInvocationID } from 'g-webgpu';\n\nconst MAX_EDGE_PER_VERTEX;\nconst VERTEX_COUNT;\nconst SHIFT_20 = 1048576;\n\n@numthreads(1, 1, 1)\nclass GGForce {\n @in @out\n u_Data: vec4[];\n\n @in\n u_damping: float;\n \n @in\n u_maxSpeed: float;\n\n @in\n u_minMovement: float;\n\n @in\n u_AveMovement: vec4[];\n\n @in\n u_coulombDisScale: float;\n\n @in\n u_factor: float;\n\n @in\n u_NodeAttributeArray1: vec4[];\n\n @in\n u_NodeAttributeArray2: vec4[];\n\n @in\n u_interval: float;\n\n unpack_float(packedValue: float): ivec2 {\n const packedIntValue = int(packedValue);\n const v0 = packedIntValue / SHIFT_20;\n return [v0, packedIntValue - v0 * SHIFT_20];\n }\n\n calcRepulsive(i: int, currentNode: vec4): vec2 {\n let ax = 0, ay = 0;\n for (let j: int = 0; j < VERTEX_COUNT; j++) {\n if (i != j) {\n const nextNode = this.u_Data[j];\n const vx = currentNode[0] - nextNode[0];\n const vy = currentNode[1] - nextNode[1];\n const dist = sqrt(vx * vx + vy * vy) + 0.01;\n const n_dist = (dist + 0.1) * this.u_coulombDisScale;\n const direx = vx / dist;\n const direy = vy / dist;\n const attributesi = this.u_NodeAttributeArray1[i];\n const attributesj = this.u_NodeAttributeArray1[j];\n const massi = attributesi[0];\n const nodeStrengthi = attributesi[2];\n const nodeStrengthj = attributesj[2];\n const nodeStrength = (nodeStrengthi + nodeStrengthj) / 2;\n // const param = nodeStrength * this.u_factor / (n_dist * n_dist * massi);\n const param = nodeStrength * this.u_factor / (n_dist * n_dist);\n ax += direx * param;\n ay += direy * param;\n }\n }\n return [ax, ay];\n }\n\n calcGravity(i: int, currentNode: vec4, attributes2: vec4): vec2 {\n // note: attributes2 = [centerX, centerY, gravity, 0]\n\n const vx = currentNode[0] - attributes2[0];\n const vy = currentNode[1] - attributes2[1];\n \n const ax = vx * attributes2[2];\n const ay = vy * attributes2[2];\n \n return [ax, ay];\n }\n\n calcAttractive(i: int, currentNode: vec4, attributes1: vec4): vec2 {\n // note: attributes1 = [mass, degree, nodeSterngth, 0]\n\n const mass = attributes1[0];\n let ax = 0, ay = 0;\n // const arr_offset = int(floor(currentNode[2] + 0.5));\n // const length = int(floor(currentNode[3] + 0.5));\n\n const compressed = this.unpack_float(currentNode[2]);\n const length = compressed[0];\n const arr_offset = compressed[1];\n\n const node_buffer: vec4;\n for (let p: int = 0; p < MAX_EDGE_PER_VERTEX; p++) {\n if (p >= length) break;\n const arr_idx = arr_offset + 4 * p; // i 节点的第 p 条边开始的小格子位置\n const buf_offset = arr_idx - arr_idx / 4 * 4;\n if (p == 0 || buf_offset == 0) {\n node_buffer = this.u_Data[int(arr_idx / 4)]; // 大格子,大格子位置=小个子位置 / 4,\n }\n\n let float_j: float = node_buffer[0];\n\n const nextNode = this.u_Data[int(float_j)];\n const vx = nextNode[0] - currentNode[0];\n const vy = nextNode[1] - currentNode[1];\n const dist = sqrt(vx * vx + vy * vy) + 0.01;\n const direx = vx / dist;\n const direy = vy / dist;\n const edgeLength = node_buffer[1];\n const edgeStrength = node_buffer[2];\n const diff: float = edgeLength - dist;//edgeLength\n // const param = diff * this.u_stiffness / mass; //\n const param = diff * edgeStrength / mass; // \n ax -= direx * param;\n ay -= direy * param;\n }\n return [ax, ay];\n }\n\n @main\n compute() {\n const i = globalInvocationID.x;\n const currentNode = this.u_Data[i];\n const movement = u_AveMovement[0];\n let ax = 0, ay = 0;\n\n if (i >= VERTEX_COUNT || movement.x < u_minMovement) {\n this.u_Data[i] = currentNode;\n return;\n }\n\n // 每个节点属性占两个数组中各一格\n // [mass, degree, nodeStrength, fx]\n const nodeAttributes1 = this.u_NodeAttributeArray1[i];\n // [centerX, centerY, centerGravity, fy]\n const nodeAttributes2 = this.u_NodeAttributeArray2[i];\n\n // repulsive\n const repulsive = this.calcRepulsive(i, currentNode);\n ax += repulsive[0];\n ay += repulsive[1];\n\n // attractive\n const attractive = this.calcAttractive(i, currentNode, nodeAttributes1);\n ax += attractive[0];\n ay += attractive[1];\n\n // gravity\n const gravity = this.calcGravity(i, currentNode, nodeAttributes2);\n ax -= gravity[0];\n ay -= gravity[1];\n\n // speed\n const param = this.u_interval * this.u_damping;\n let vx = ax * param;\n let vy = ay * param;\n const vlength = sqrt(vx * vx + vy * vy) + 0.0001;\n if (vlength > this.u_maxSpeed) {\n const param2 = this.u_maxSpeed / vlength;\n vx = param2 * vx;\n vy = param2 * vy;\n }\n\n // move\n if (nodeAttributes1[3] != 0 && nodeAttributes2[3] != 0) {\n this.u_Data[i] = [\n nodeAttributes1[3],\n nodeAttributes2[3],\n currentNode[2],\n 0\n ];\n } else {\n const distx = vx * this.u_interval;\n const disty = vy * this.u_interval;\n const distLength = sqrt(distx * distx + disty * disty);\n this.u_Data[i] = [\n currentNode[0] + distx,\n currentNode[1] + disty,\n currentNode[2],\n distLength\n ];\n }\n \n // the avarage move distance\n // need to share memory\n \n }\n}\n`;\n\nexport const gForceBundle = `{\"shaders\":{\"WGSL\":\"\",\"GLSL450\":\"\",\"GLSL100\":\"\\\\n\\\\nfloat epsilon = 0.00001;\\\\nvec2 addrTranslation_1Dto2D(float address1D, vec2 texSize) {\\\\n vec2 conv_const = vec2(1.0 / texSize.x, 1.0 / (texSize.x * texSize.y));\\\\n vec2 normAddr2D = float(address1D) * conv_const;\\\\n return vec2(fract(normAddr2D.x + epsilon), normAddr2D.y);\\\\n}\\\\n\\\\nvoid barrier() {}\\\\n \\\\n\\\\nuniform vec2 u_OutputTextureSize;\\\\nuniform int u_OutputTexelCount;\\\\nvarying vec2 v_TexCoord;\\\\n\\\\nbool gWebGPUDebug = false;\\\\nvec4 gWebGPUDebugOutput = vec4(0.0);\\\\n\\\\n#define MAX_EDGE_PER_VERTEX __DefineValuePlaceholder__MAX_EDGE_PER_VERTEX\\\\n#define VERTEX_COUNT __DefineValuePlaceholder__VERTEX_COUNT\\\\n#define SHIFT_20 1048576.0\\\\n\\\\nuniform sampler2D u_Data;\\\\nuniform vec2 u_DataSize;\\\\nvec4 getDatau_Data(vec2 address2D) {\\\\n return vec4(texture2D(u_Data, address2D).rgba);\\\\n}\\\\nvec4 getDatau_Data(float address1D) {\\\\n return getDatau_Data(addrTranslation_1Dto2D(address1D, u_DataSize));\\\\n}\\\\nvec4 getDatau_Data(int address1D) {\\\\n return getDatau_Data(float(address1D));\\\\n}\\\\nuniform float u_damping;\\\\nuniform float u_maxSpeed;\\\\nuniform float u_minMovement;\\\\nuniform sampler2D u_AveMovement;\\\\nuniform vec2 u_AveMovementSize;\\\\nvec4 getDatau_AveMovement(vec2 address2D) {\\\\n return vec4(texture2D(u_AveMovement, address2D).rgba);\\\\n}\\\\nvec4 getDatau_AveMovement(float address1D) {\\\\n return getDatau_AveMovement(addrTranslation_1Dto2D(address1D, u_AveMovementSize));\\\\n}\\\\nvec4 getDatau_AveMovement(int address1D) {\\\\n return getDatau_AveMovement(float(address1D));\\\\n}\\\\nuniform float u_coulombDisScale;\\\\nuniform float u_factor;\\\\nuniform sampler2D u_NodeAttributeArray1;\\\\nuniform vec2 u_NodeAttributeArray1Size;\\\\nvec4 getDatau_NodeAttributeArray1(vec2 address2D) {\\\\n return vec4(texture2D(u_NodeAttributeArray1, address2D).rgba);\\\\n}\\\\nvec4 getDatau_NodeAttributeArray1(float address1D) {\\\\n return getDatau_NodeAttributeArray1(addrTranslation_1Dto2D(address1D, u_NodeAttributeArray1Size));\\\\n}\\\\nvec4 getDatau_NodeAttributeArray1(int address1D) {\\\\n return getDatau_NodeAttributeArray1(float(address1D));\\\\n}\\\\nuniform sampler2D u_NodeAttributeArray2;\\\\nuniform vec2 u_NodeAttributeArray2Size;\\\\nvec4 getDatau_NodeAttributeArray2(vec2 address2D) {\\\\n return vec4(texture2D(u_NodeAttributeArray2, address2D).rgba);\\\\n}\\\\nvec4 getDatau_NodeAttributeArray2(float address1D) {\\\\n return getDatau_NodeAttributeArray2(addrTranslation_1Dto2D(address1D, u_NodeAttributeArray2Size));\\\\n}\\\\nvec4 getDatau_NodeAttributeArray2(int address1D) {\\\\n return getDatau_NodeAttributeArray2(float(address1D));\\\\n}\\\\nuniform float u_interval;\\\\nivec2 unpack_float(float packedValue) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nint packedIntValue = int(packedValue);\\\\nint v0 = packedIntValue / int(SHIFT_20);\\\\nreturn ivec2(v0, packedIntValue - (v0 * int(SHIFT_20)));}\\\\nvec2 calcRepulsive(int i, vec4 currentNode) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat ax = 0.0;\\\\nfloat ay = 0.0;\\\\nfor (int j = 0; j < VERTEX_COUNT; j++) {if (i != j) {vec4 nextNode = getDatau_Data(j);\\\\nfloat vx = currentNode.x - nextNode.x;\\\\nfloat vy = currentNode.y - nextNode.y;\\\\nfloat dist = sqrt((vx * vx) + (vy * vy)) + 0.01;\\\\nfloat n_dist = (dist + 0.1) * u_coulombDisScale;\\\\nfloat direx = vx / dist;\\\\nfloat direy = vy / dist;\\\\nvec4 attributesi = getDatau_NodeAttributeArray1(i);\\\\nvec4 attributesj = getDatau_NodeAttributeArray1(j);\\\\nfloat massi = attributesi.x;\\\\nfloat nodeStrengthi = attributesi.z;\\\\nfloat nodeStrengthj = attributesj.z;\\\\nfloat nodeStrength = (nodeStrengthi + nodeStrengthj) / 2.0;\\\\nfloat param = (nodeStrength * u_factor) / (n_dist * n_dist);\\\\nax += direx * param;\\\\nay += direy * param;}}\\\\nreturn vec2(ax, ay);}\\\\nvec2 calcGravity(int i, vec4 currentNode, vec4 attributes2) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat vx = currentNode.x - attributes2.x;\\\\nfloat vy = currentNode.y - attributes2.y;\\\\nfloat ax = vx * attributes2.z;\\\\nfloat ay = vy * attributes2.z;\\\\nreturn vec2(ax, ay);}\\\\nvec2 calcAttractive(int i, vec4 currentNode, vec4 attributes1) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat mass = attributes1.x;\\\\nfloat ax = 0.0;\\\\nfloat ay = 0.0;\\\\nivec2 compressed = unpack_float(currentNode.z);\\\\nint length = compressed.x;\\\\nint arr_offset = compressed.y;\\\\nvec4 node_buffer;\\\\nfor (int p = 0; p < MAX_EDGE_PER_VERTEX; p++) {if (p >= length) {break;}\\\\nint arr_idx = arr_offset + (4 * p);\\\\nint buf_offset = arr_idx - ((arr_idx / 4) * 4);\\\\nif ((p == 0) || (buf_offset == 0)) {node_buffer = getDatau_Data(int(arr_idx / 4));}\\\\nfloat float_j = node_buffer.x;\\\\nvec4 nextNode = getDatau_Data(int(float_j));\\\\nfloat vx = nextNode.x - currentNode.x;\\\\nfloat vy = nextNode.y - currentNode.y;\\\\nfloat dist = sqrt((vx * vx) + (vy * vy)) + 0.01;\\\\nfloat direx = vx / dist;\\\\nfloat direy = vy / dist;\\\\nfloat edgeLength = node_buffer.y;\\\\nfloat edgeStrength = node_buffer.z;\\\\nfloat diff = edgeLength - dist;\\\\nfloat param = (diff * edgeStrength) / mass;\\\\nax -= direx * param;\\\\nay -= direy * param;}\\\\nreturn vec2(ax, ay);}\\\\nvoid main() {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nint i = globalInvocationID.x;\\\\nvec4 currentNode = getDatau_Data(i);\\\\nvec4 movement = getDatau_AveMovement(0.0);\\\\nfloat ax = 0.0;\\\\nfloat ay = 0.0;\\\\nif ((i >= VERTEX_COUNT) || (movement.x < u_minMovement)) {gl_FragColor = vec4(currentNode);\\\\nreturn ;}\\\\nvec4 nodeAttributes1 = getDatau_NodeAttributeArray1(i);\\\\nvec4 nodeAttributes2 = getDatau_NodeAttributeArray2(i);\\\\nvec2 repulsive = calcRepulsive(i, currentNode);\\\\nax += repulsive.x;\\\\nay += repulsive.y;\\\\nvec2 attractive = calcAttractive(i, currentNode, nodeAttributes1);\\\\nax += attractive.x;\\\\nay += attractive.y;\\\\nvec2 gravity = calcGravity(i, currentNode, nodeAttributes2);\\\\nax -= gravity.x;\\\\nay -= gravity.y;\\\\nfloat param = u_interval * u_damping;\\\\nfloat vx = ax * param;\\\\nfloat vy = ay * param;\\\\nfloat vlength = sqrt((vx * vx) + (vy * vy)) + 0.0001;\\\\nif (vlength > u_maxSpeed) {float param2 = u_maxSpeed / vlength;\\\\nvx = param2 * vx;\\\\nvy = param2 * vy;}\\\\nif ((nodeAttributes1.w != 0.0) && (nodeAttributes2.w != 0.0)) {gl_FragColor = vec4(vec4(nodeAttributes1.w, nodeAttributes2.w, currentNode.z, 0.0));}else {float distx = vx * u_interval;\\\\nfloat disty = vy * u_interval;\\\\nfloat distLength = sqrt((distx * distx) + (disty * disty));\\\\ngl_FragColor = vec4(vec4(currentNode.x + distx, currentNode.y + disty, currentNode.z, distLength));}if (gWebGPUDebug) {\\\\n gl_FragColor = gWebGPUDebugOutput;\\\\n}}\\\\n\"},\"context\":{\"name\":\"\",\"dispatch\":[1,1,1],\"threadGroupSize\":[1,1,1],\"maxIteration\":1,\"defines\":[{\"name\":\"MAX_EDGE_PER_VERTEX\",\"type\":\"Float\",\"runtime\":true},{\"name\":\"VERTEX_COUNT\",\"type\":\"Float\",\"runtime\":true},{\"name\":\"SHIFT_20\",\"type\":\"Float\",\"value\":1048576,\"runtime\":false}],\"uniforms\":[{\"name\":\"u_Data\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":false,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_damping\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_maxSpeed\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_minMovement\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_AveMovement\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_coulombDisScale\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_factor\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_NodeAttributeArray1\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_NodeAttributeArray2\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_interval\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]}],\"globalDeclarations\":[],\"output\":{\"name\":\"u_Data\",\"size\":[1,1],\"length\":1},\"needPingpong\":true}}`;\n\nexport const aveMovementCode = `\nconst VERTEX_COUNT;\n@numthreads(1, 1, 1)\nclass CalcAveMovement {\n @in\n u_Data: vec4[];\n @in\n u_iter: float;\n @in @out\n u_AveMovement: vec4[];\n @main\n compute() {\n let movement = 0;\n for (let j: int = 0; j < VERTEX_COUNT; j++) {\n const vertex = this.u_Data[j];\n movement += vertex[3];\n }\n movement = movement / float(VERTEX_COUNT);\n this.u_AveMovement[0] = [movement, 0, 0, 0];\n }\n}\n`;\n\nexport const aveMovementBundle = `{\"shaders\":{\"WGSL\":\"\",\"GLSL450\":\"\",\"GLSL100\":\"\\\\n\\\\nfloat epsilon = 0.00001;\\\\nvec2 addrTranslation_1Dto2D(float address1D, vec2 texSize) {\\\\n vec2 conv_const = vec2(1.0 / texSize.x, 1.0 / (texSize.x * texSize.y));\\\\n vec2 normAddr2D = float(address1D) * conv_const;\\\\n return vec2(fract(normAddr2D.x + epsilon), normAddr2D.y);\\\\n}\\\\n\\\\nvoid barrier() {}\\\\n \\\\n\\\\nuniform vec2 u_OutputTextureSize;\\\\nuniform int u_OutputTexelCount;\\\\nvarying vec2 v_TexCoord;\\\\n\\\\nbool gWebGPUDebug = false;\\\\nvec4 gWebGPUDebugOutput = vec4(0.0);\\\\n\\\\n#define VERTEX_COUNT __DefineValuePlaceholder__VERTEX_COUNT\\\\n\\\\nuniform sampler2D u_Data;\\\\nuniform vec2 u_DataSize;\\\\nvec4 getDatau_Data(vec2 address2D) {\\\\n return vec4(texture2D(u_Data, address2D).rgba);\\\\n}\\\\nvec4 getDatau_Data(float address1D) {\\\\n return getDatau_Data(addrTranslation_1Dto2D(address1D, u_DataSize));\\\\n}\\\\nvec4 getDatau_Data(int address1D) {\\\\n return getDatau_Data(float(address1D));\\\\n}\\\\nuniform float u_iter;\\\\nuniform sampler2D u_AveMovement;\\\\nuniform vec2 u_AveMovementSize;\\\\nvec4 getDatau_AveMovement(vec2 address2D) {\\\\n return vec4(texture2D(u_AveMovement, address2D).rgba);\\\\n}\\\\nvec4 getDatau_AveMovement(float address1D) {\\\\n return getDatau_AveMovement(addrTranslation_1Dto2D(address1D, u_AveMovementSize));\\\\n}\\\\nvec4 getDatau_AveMovement(int address1D) {\\\\n return getDatau_AveMovement(float(address1D));\\\\n}\\\\nvoid main() {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat movement = 0.0;\\\\nfor (int j = 0; j < VERTEX_COUNT; j++) {vec4 vertex = getDatau_Data(j);\\\\nmovement += vertex.w;}\\\\nmovement = movement / float(VERTEX_COUNT);\\\\ngl_FragColor = vec4(vec4(movement, 0.0, 0.0, 0.0));if (gWebGPUDebug) {\\\\n gl_FragColor = gWebGPUDebugOutput;\\\\n}}\\\\n\"},\"context\":{\"name\":\"\",\"dispatch\":[1,1,1],\"threadGroupSize\":[1,1,1],\"maxIteration\":1,\"defines\":[{\"name\":\"VERTEX_COUNT\",\"type\":\"Float\",\"runtime\":true}],\"uniforms\":[{\"name\":\"u_Data\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_iter\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_AveMovement\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":false,\"writeonly\":false,\"size\":[1,1]}],\"globalDeclarations\":[],\"output\":{\"name\":\"u_AveMovement\",\"size\":[1,1],\"length\":1},\"needPingpong\":true}}`;\n","/**\n * @fileOverview grid layout\n * @author shiwu.wyy@antfin.com\n * this algorithm refers to - https://github.com/cytoscape/cytoscape.js/\n */\n\nimport { isString, getDegree, isNaN, getFuncByUnknownType, isArray } from \"../util\";\nimport { Base } from \"./base\";\nimport {\n OutNode,\n Edge,\n PointTuple,\n Size,\n IndexMap,\n GridLayoutOptions\n} from \"./types\";\n\ntype INode = OutNode & {\n degree: number;\n size: number | PointTuple | Size;\n};\n\n/**\n * 网格布局\n */\nexport class GridLayout extends Base {\n /** 布局起始点 */\n public begin: PointTuple = [0, 0];\n\n /** prevents node overlap, may overflow boundingBox if not enough space */\n public preventOverlap: boolean = true;\n\n /** extra spacing around nodes when preventOverlap: true */\n public preventOverlapPadding: number = 10;\n\n /** uses all available space on false, uses minimal space on true */\n public condense: boolean = false;\n\n /** force num of rows in the grid */\n public rows: number | undefined;\n\n /** force num of columns in the grid */\n public cols: number | undefined;\n\n /** the spacing between two nodes */\n public nodeSpacing: ((d?: unknown) => number) | number | undefined;\n\n /** returns { row, col } for element */\n public position:\n | ((node: INode) => { row?: number; col?: number })\n | undefined;\n\n /** a sorting function to order the nodes; e.g. function(a, b){ return a.datapublic ('weight') - b.data('weight') } */\n public sortBy: string = \"degree\";\n\n public nodeSize: number | number[] | { width: number, height: number } | undefined;\n\n public nodes: INode[] = [];\n\n public edges: Edge[] = [];\n\n public width: number = 300;\n\n public height: number = 300;\n\n private cells: number | undefined;\n\n private row: number = 0;\n\n private col: number = 0;\n\n private splits: number | undefined;\n\n private columns: number | undefined;\n\n private cellWidth: number = 0;\n\n private cellHeight: number = 0;\n\n private cellUsed: {\n [key: string]: boolean;\n } = {};\n\n private id2manPos: {\n [key: string]: {\n row: number;\n col: number;\n };\n } = {};\n\n /** 迭代结束的回调函数 */\n public onLayoutEnd: () => void = () => {};\n\n constructor(options?: GridLayoutOptions) {\n super();\n this.updateCfg(options);\n }\n\n public getDefaultCfg() {\n return {\n begin: [0, 0],\n preventOverlap: true,\n preventOverlapPadding: 10,\n condense: false,\n rows: undefined,\n cols: undefined,\n position: undefined,\n sortBy: \"degree\",\n nodeSize: 30\n };\n }\n\n /**\n * 执行布局\n */\n public execute() {\n const self = this;\n const { nodes, edges, begin } = self;\n const n = nodes.length;\n if (n === 0) {\n if (self.onLayoutEnd) self.onLayoutEnd();\n return {\n nodes,\n edges\n };\n }\n if (n === 1) {\n nodes[0].x = begin[0];\n nodes[0].y = begin[1];\n if (self.onLayoutEnd) self.onLayoutEnd();\n return {\n nodes,\n edges,\n };\n }\n\n let { sortBy, width, height } = self;\n const { condense, preventOverlapPadding, preventOverlap, nodeSpacing: paramNodeSpacing, nodeSize: paramNodeSize } = self;\n \n const layoutNodes: INode[] = [];\n nodes.forEach((node) => {\n layoutNodes.push(node);\n });\n const nodeIdxMap: IndexMap = {};\n layoutNodes.forEach((node, i) => {\n nodeIdxMap[node.id] = i;\n });\n if (\n sortBy === \"degree\" ||\n !isString(sortBy) ||\n (layoutNodes[0] as any)[sortBy] === undefined\n ) {\n sortBy = \"degree\";\n if (isNaN(nodes[0].degree)) {\n const values = getDegree(layoutNodes.length, nodeIdxMap, edges);\n layoutNodes.forEach((node, i) => {\n node.degree = values[i].all;\n });\n }\n }\n // sort nodes by value\n layoutNodes.sort(\n (n1, n2) => (n2 as any)[sortBy] - (n1 as any)[sortBy]\n );\n\n if (!width && typeof window !== \"undefined\") {\n width = window.innerWidth;\n }\n if (!height && typeof window !== \"undefined\") {\n height = window.innerHeight;\n }\n\n const oRows = self.rows;\n const oCols = self.cols != null ? self.cols : self.columns;\n self.cells = n;\n\n // if rows or columns were set in self, use those values\n if (oRows != null && oCols != null) {\n self.rows = oRows;\n self.cols = oCols;\n } else if (oRows != null && oCols == null) {\n self.rows = oRows;\n self.cols = Math.ceil(self.cells / self.rows);\n } else if (oRows == null && oCols != null) {\n self.cols = oCols;\n self.rows = Math.ceil(self.cells / self.cols);\n } else {\n // otherwise use the automatic values and adjust accordingly\t // otherwise use the automatic values and adjust accordingly\n // width/height * splits^2 = cells where splits is number of times to split width\n self.splits = Math.sqrt((self.cells * self.height) / self.width);\n self.rows = Math.round(self.splits);\n self.cols = Math.round((self.width / self.height) * self.splits);\n }\n self.rows = Math.max(self.rows, 1);\n self.cols = Math.max(self.cols, 1);\n if (self.cols * self.rows > self.cells) {\n // otherwise use the automatic values and adjust accordingly\n // if rounding was up, see if we can reduce rows or columns\n const sm = self.small() as number;\n const lg = self.large() as number;\n\n // reducing the small side takes away the most cells, so try it first\n if ((sm - 1) * lg >= self.cells) {\n self.small(sm - 1);\n } else if ((lg - 1) * sm >= self.cells) {\n self.large(lg - 1);\n }\n } else {\n // if rounding was too low, add rows or columns\n while (self.cols * self.rows < self.cells) {\n const sm = self.small() as number;\n const lg = self.large() as number;\n\n // try to add to larger side first (adds less in multiplication)\n if ((lg + 1) * sm >= self.cells) {\n self.large(lg + 1);\n } else {\n self.small(sm + 1);\n }\n }\n }\n\n self.cellWidth = width / self.cols;\n self.cellHeight = height / self.rows;\n\n if (condense) {\n self.cellWidth = 0;\n self.cellHeight = 0;\n }\n\n\n if (preventOverlap || paramNodeSpacing) {\n const nodeSpacing: Function = getFuncByUnknownType(10, paramNodeSpacing);\n const nodeSize: Function = getFuncByUnknownType(30, paramNodeSize, false);\n layoutNodes.forEach((node) => {\n if (!node.x || !node.y) {\n // for bb\n node.x = 0;\n node.y = 0;\n }\n\n const res = nodeSize(node) || 30;\n \n let nodeW;\n let nodeH;\n \n if (isArray(res)) {\n nodeW = res[0];\n nodeH = res[1];\n } else {\n nodeW = res;\n nodeH = res;\n }\n\n const p = nodeSpacing !== undefined ? nodeSpacing(node) : preventOverlapPadding;\n\n const w = nodeW + p;\n const h = nodeH + p;\n\n self.cellWidth = Math.max(self.cellWidth, w);\n self.cellHeight = Math.max(self.cellHeight, h);\n });\n }\n\n self.cellUsed = {}; // e.g. 'c-0-2' => true\n\n // to keep track of current cell position\n self.row = 0;\n self.col = 0;\n\n // get a cache of all the manual positions\n self.id2manPos = {};\n for (let i = 0; i < layoutNodes.length; i++) {\n const node = layoutNodes[i];\n let rcPos;\n if (self.position) {\n rcPos = self.position(node);\n }\n\n if (rcPos && (rcPos.row !== undefined || rcPos.col !== undefined)) {\n // must have at least row or col def'd\n const pos = {\n row: rcPos.row,\n col: rcPos.col\n };\n\n if (pos.col === undefined) {\n // find unused col\n pos.col = 0;\n\n while (self.used(pos.row, pos.col)) {\n pos.col++;\n }\n } else if (pos.row === undefined) {\n // find unused row\n pos.row = 0;\n\n while (self.used(pos.row, pos.col)) {\n pos.row++;\n }\n }\n\n self.id2manPos[node.id] = pos as { row: number; col: number };\n self.use(pos.row, pos.col);\n }\n self.getPos(node);\n }\n\n if (self.onLayoutEnd) self.onLayoutEnd();\n\n return {\n edges,\n nodes: layoutNodes\n };\n }\n\n private small(val?: number): number | undefined {\n const self = this;\n let res: number | undefined;\n const rows = self.rows || 5;\n const cols = self.cols || 5;\n if (val == null) {\n res = Math.min(rows, cols);\n } else {\n const min = Math.min(rows, cols);\n if (min === self.rows) {\n self.rows = val;\n } else {\n self.cols = val;\n }\n }\n return res;\n }\n\n private large(val?: number): number | undefined {\n const self = this;\n let res: number | undefined;\n const rows = self.rows || 5;\n const cols = self.cols || 5;\n if (val == null) {\n res = Math.max(rows, cols);\n } else {\n const max = Math.max(rows, cols);\n if (max === self.rows) {\n self.rows = val;\n } else {\n self.cols = val;\n }\n }\n return res;\n }\n\n private used(row: number | undefined, col: number | undefined) {\n const self = this;\n return self.cellUsed[`c-${row}-${col}`] || false;\n }\n\n private use(row: number | undefined, col: number | undefined) {\n const self = this;\n self.cellUsed[`c-${row}-${col}`] = true;\n }\n\n private moveToNextCell() {\n const self = this;\n const cols = self.cols || 5;\n self.col++;\n if (self.col >= cols) {\n self.col = 0;\n self.row++;\n }\n }\n\n private getPos(node: INode) {\n const self = this;\n const { begin, cellWidth, cellHeight } = self;\n let x: number;\n let y: number;\n\n // see if we have a manual position set\n const rcPos = self.id2manPos[node.id];\n if (rcPos) {\n x = rcPos.col * cellWidth + cellWidth / 2 + begin[0];\n y = rcPos.row * cellHeight + cellHeight / 2 + begin[1];\n } else {\n // otherwise set automatically\n\n while (self.used(self.row, self.col)) {\n self.moveToNextCell();\n }\n\n x = self.col * cellWidth + cellWidth / 2 + begin[0];\n y = self.row * cellHeight + cellHeight / 2 + begin[1];\n self.use(self.row, self.col);\n\n self.moveToNextCell();\n }\n node.x = x;\n node.y = y;\n }\n\n public getType() {\n return \"grid\";\n }\n}\n","import { GridLayout } from \"./grid\";\nimport { RandomLayout } from \"./random\";\nimport { GForceLayout } from \"./gForce\";\nimport { Force2Layout } from \"./force2\";\nimport { ForceLayout } from \"./force\";\nimport { CircularLayout } from \"./circular\";\nimport { DagreLayout } from \"./dagre\";\nimport { DagreCompoundLayout } from \"./dagreCompound\";\nimport { RadialLayout } from \"./radial\";\nimport { ConcentricLayout } from \"./concentric\";\nimport { MDSLayout } from \"./mds\";\nimport { FruchtermanLayout } from \"./fruchterman\";\nimport { FruchtermanGPULayout } from \"./gpu/fruchterman\";\nimport { GForceGPULayout } from \"./gpu/gForce\";\nimport { ComboForceLayout } from \"./comboForce\";\nimport { ComboCombinedLayout } from \"./comboCombined\";\nimport { ForceAtlas2Layout } from \"./forceAtlas2\";\nimport { ERLayout } from './er';\n\nimport { Layout, Layouts } from \"./layout\";\n\nexport { Layout, Layouts };\n\n// layout\nexport {\n GridLayout,\n RandomLayout,\n GForceLayout,\n Force2Layout,\n ForceLayout,\n CircularLayout,\n DagreLayout,\n DagreCompoundLayout,\n RadialLayout,\n ConcentricLayout,\n MDSLayout,\n FruchtermanLayout,\n FruchtermanGPULayout,\n GForceGPULayout,\n ComboForceLayout,\n ComboCombinedLayout,\n ForceAtlas2Layout,\n ERLayout\n};\n\n// types file\nexport * from \"./types\";\n","import { Base } from \"./base\";\nimport { Model, ILayout, Node } from \"./types\";\nimport { getLayoutByName } from \"../registy\";\nimport { GridLayout } from \"./grid\";\nimport { RandomLayout } from \"./random\";\nimport { Force2Layout } from \"./force2\";\nimport { GForceLayout } from \"./gForce\";\nimport { ForceLayout } from \"./force\";\nimport { CircularLayout } from \"./circular\";\nimport { DagreLayout } from \"./dagre\";\nimport { RadialLayout } from \"./radial\";\nimport { ConcentricLayout } from \"./concentric\";\nimport { MDSLayout } from \"./mds\";\nimport { FruchtermanLayout } from \"./fruchterman\";\nimport { FruchtermanGPULayout } from \"./gpu/fruchterman\";\nimport { GForceGPULayout } from \"./gpu/gForce\";\nimport { ComboForceLayout } from \"./comboForce\";\nimport { ComboCombinedLayout } from \"./comboCombined\";\nimport { ForceAtlas2Layout } from \"./forceAtlas2\";\nimport { ERLayout } from \"./er\";\nimport { DagreCompoundLayout } from \"./dagreCompound\";\nimport { isString } from \"../util\";\n\ninterface DagreNodeData extends Node {\n layer?: number;\n}\n\nexport class Layout {\n public readonly layoutInstance: Base;\n\n constructor(options: ILayout.LayoutOptions) {\n const layoutClass = getLayoutByName(options.type as string);\n this.layoutInstance = new layoutClass(options);\n }\n\n layout(data: Model) {\n return this.layoutInstance.layout(data);\n }\n\n updateCfg(cfg: ILayout.LayoutOptions) {\n this.layoutInstance.updateCfg(cfg);\n }\n\n init(data: Model) {\n this.correctLayers(data.nodes);\n this.layoutInstance.init(data);\n }\n\n /**\n * correcting the layers on the node data\n * if min(layer) <= 0, layers should begin from abs(min(layer)) + 1\n * @param nodes \n * @returns \n */\n correctLayers(nodes: DagreNodeData[] | undefined) {\n if (!nodes?.length) return;\n let minLayer = Infinity;\n const hasLayerNodes: DagreNodeData[] = [];\n nodes.forEach((node) => {\n if (isString(node.layer)) {\n node.layer = parseInt(node.layer, 10);\n }\n // keep node.layer === undefined for TS problem\n if (node.layer === undefined || isNaN(node.layer)) return;\n hasLayerNodes.push(node);\n if (node.layer < minLayer) minLayer = node.layer;\n });\n if (minLayer <= 0) {\n const layerOffset = Math.abs(minLayer) + 1;\n // @ts-ignore\n hasLayerNodes.forEach((node) => node.layer += layerOffset);\n }\n }\n\n execute() {\n this.layoutInstance.execute();\n }\n\n getDefaultCfg() {\n return this.layoutInstance.getDefaultCfg();\n }\n\n destroy() {\n return this.layoutInstance.destroy();\n }\n}\n\n// FIXME\n// FOR G6\n// tslint:disable-next-line\nexport const Layouts: { [key: string]: any } = {\n force: ForceLayout,\n fruchterman: FruchtermanLayout,\n forceAtlas2: ForceAtlas2Layout,\n gForce: GForceLayout,\n force2: Force2Layout,\n dagre: DagreLayout,\n dagreCompound: DagreCompoundLayout,\n circular: CircularLayout,\n radial: RadialLayout,\n concentric: ConcentricLayout,\n grid: GridLayout,\n mds: MDSLayout,\n comboForce: ComboForceLayout,\n comboCombined: ComboCombinedLayout,\n random: RandomLayout,\n 'gForce-gpu': GForceGPULayout,\n 'fruchterman-gpu': FruchtermanGPULayout,\n er: ERLayout,\n};\n","/**\n * @fileOverview MDS layout\n * @author shiwu.wyy@antfin.com\n */\n\nimport { Matrix as MLMatrix, SingularValueDecomposition } from \"ml-matrix\";\nimport { PointTuple, OutNode, Edge, Matrix, MDSLayoutOptions } from \"./types\";\nimport { floydWarshall, getAdjMatrix, scaleMatrix } from \"../util\";\nimport { Base } from \"./base\";\n\n/**\n * mds 布局\n */\nexport class MDSLayout extends Base {\n /** 布局中心 */\n public center: PointTuple = [0, 0];\n\n /** 边长度 */\n public linkDistance: number = 50;\n\n private scaledDistances: Matrix[];\n\n public nodes: OutNode[] = [];\n\n public edges: Edge[] = [];\n\n /** 迭代结束的回调函数 */\n public onLayoutEnd: () => void = () => {};\n\n constructor(options?: MDSLayoutOptions) {\n super();\n this.updateCfg(options);\n }\n\n public getDefaultCfg() {\n return {\n center: [0, 0],\n linkDistance: 50\n };\n }\n\n /**\n * 执行布局\n */\n public execute() {\n const self = this;\n const { nodes, edges = [] } = self;\n const center = self.center;\n if (!nodes || nodes.length === 0) {\n if (self.onLayoutEnd) self.onLayoutEnd();\n return;\n }\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd) self.onLayoutEnd();\n return;\n }\n const linkDistance = self.linkDistance;\n // the graph-theoretic distance (shortest path distance) matrix\n const adjMatrix = getAdjMatrix({ nodes, edges }, false);\n const distances = floydWarshall(adjMatrix);\n self.handleInfinity(distances);\n\n // scale the ideal edge length acoording to linkDistance\n const scaledD = scaleMatrix(distances, linkDistance);\n self.scaledDistances = scaledD;\n\n // get positions by MDS\n const positions = self.runMDS();\n self.positions = positions;\n positions.forEach((p: number[], i: number) => {\n nodes[i].x = p[0] + center[0];\n nodes[i].y = p[1] + center[1];\n });\n\n if (self.onLayoutEnd) self.onLayoutEnd();\n\n return {\n nodes,\n edges\n };\n }\n\n /**\n * mds 算法\n * @return {array} positions 计算后的节点位置数组\n */\n public runMDS(): PointTuple[] {\n const self = this;\n const dimension = 2;\n const distances = self.scaledDistances;\n\n // square distances\n const M = MLMatrix.mul(MLMatrix.pow(distances, 2), -0.5);\n\n // double centre the rows/columns\n const rowMeans = M.mean(\"row\");\n const colMeans = M.mean(\"column\");\n const totalMean = M.mean();\n M.add(totalMean)\n .subRowVector(rowMeans)\n .subColumnVector(colMeans);\n\n // take the SVD of the double centred matrix, and return the\n // points from it\n const ret = new SingularValueDecomposition(M);\n const eigenValues = MLMatrix.sqrt(ret.diagonalMatrix).diagonal();\n return ret.leftSingularVectors.toJSON().map((row: number[]) => {\n return MLMatrix.mul([row], [eigenValues])\n .toJSON()[0]\n .splice(0, dimension) as PointTuple;\n });\n }\n\n public handleInfinity(distances: Matrix[]) {\n let maxDistance = -999999;\n distances.forEach((row) => {\n row.forEach((value) => {\n if (value === Infinity) {\n return;\n }\n if (maxDistance < value) {\n maxDistance = value;\n }\n });\n });\n distances.forEach((row, i) => {\n row.forEach((value, j) => {\n if (value === Infinity) {\n distances[i][j] = maxDistance;\n }\n });\n });\n }\n\n public getType() {\n return \"mds\";\n }\n}\n","export * from './radial';","import { PointTuple, Matrix } from '../types';\nimport { Matrix as MLMatrix, SingularValueDecomposition } from 'ml-matrix';\n\nexport default class MDS {\n /** distance matrix */\n public distances: Matrix[];\n\n /** dimensions */\n public dimension: number;\n\n /** link distance */\n public linkDistance: number;\n\n constructor(params: { distances: Matrix[]; dimension?: number; linkDistance: number }) {\n this.distances = params.distances;\n this.dimension = params.dimension || 2;\n this.linkDistance = params.linkDistance;\n }\n\n public layout(): PointTuple[] {\n const self = this;\n const { dimension, distances, linkDistance } = self;\n\n try {\n // square distances\n const M = MLMatrix.mul(MLMatrix.pow(distances, 2), -0.5);\n\n // double centre the rows/columns\n const rowMeans = M.mean('row');\n const colMeans = M.mean('column');\n const totalMean = M.mean();\n M.add(totalMean).subRowVector(rowMeans).subColumnVector(colMeans);\n\n // take the SVD of the double centred matrix, and return the\n // points from it\n const ret = new SingularValueDecomposition(M);\n const eigenValues = MLMatrix.sqrt(ret.diagonalMatrix).diagonal();\n return ret.leftSingularVectors.toJSON().map((row: number[]) => {\n return MLMatrix.mul([row], [eigenValues]).toJSON()[0].splice(0, dimension) as PointTuple;\n });\n } catch {\n const res: PointTuple[] = [];\n for (let i = 0; i < distances.length; i++) {\n const x = Math.random() * linkDistance;\n const y = Math.random() * linkDistance;\n res.push([x, y]);\n }\n return res;\n }\n }\n}\n","/**\n * @fileOverview random layout\n * @author shiwu.wyy@antfin.com\n */\n\nimport {\n PointTuple,\n Node,\n OutNode,\n Edge,\n Matrix,\n RadialLayoutOptions\n} from \"../types\";\nimport {\n isNaN,\n isArray,\n isFunction,\n isNumber,\n isString,\n floydWarshall,\n getAdjMatrix,\n isObject\n} from \"../../util\";\nimport { Base } from \"../base\";\nimport MDS from \"./mds\";\nimport RadialNonoverlapForce, {\n RadialNonoverlapForceParam\n} from \"./radialNonoverlapForce\";\n\ntype INode = OutNode & {\n size?: number | PointTuple;\n};\n\nfunction getWeightMatrix(M: Matrix[]) {\n const rows = M.length;\n const cols = M[0].length;\n const result = [];\n for (let i = 0; i < rows; i++) {\n const row = [];\n for (let j = 0; j < cols; j++) {\n if (M[i][j] !== 0) {\n row.push(1 / (M[i][j] * M[i][j]));\n } else {\n row.push(0);\n }\n }\n result.push(row);\n }\n return result;\n}\n\nfunction getIndexById(array: any[], id: string) {\n let index = -1;\n array.forEach((a, i) => {\n if (a.id === id) {\n index = i;\n }\n });\n return index;\n}\n\nfunction getEDistance(p1: PointTuple, p2: PointTuple) {\n return Math.sqrt(\n (p1[0] - p2[0]) * (p1[0] - p2[0]) + (p1[1] - p2[1]) * (p1[1] - p2[1])\n );\n}\n\n/**\n * 辐射状布局\n */\nexport class RadialLayout extends Base {\n /** 布局中心 */\n public center: PointTuple;\n\n /** 停止迭代的最大迭代数 */\n public maxIteration: number = 1000;\n\n /** 中心点,默认为数据中第一个点 */\n public focusNode: string | Node | null = null;\n\n /** 每一圈半径 */\n public unitRadius: number | null = null;\n\n /** 默认边长度 */\n public linkDistance: number = 50;\n\n /** 是否防止重叠 */\n public preventOverlap: boolean = false;\n\n /** 节点直径 */\n public nodeSize: number | number[] | undefined;\n\n /** 节点间距,防止节点重叠时节点之间的最小距离(两节点边缘最短距离) */\n public nodeSpacing: number | Function | undefined;\n\n /** 是否必须是严格的 radial 布局,即每一层的节点严格布局在一个环上。preventOverlap 为 true 时生效 */\n public strictRadial: boolean = true;\n\n /** 防止重叠步骤的最大迭代次数 */\n public maxPreventOverlapIteration: number = 200;\n\n public sortBy: string | undefined;\n\n public sortStrength: number = 10;\n\n public width: number | undefined;\n\n public height: number | undefined;\n\n private focusIndex: number | undefined;\n\n private distances: Matrix[] | undefined;\n\n private eIdealDistances: Matrix[] | undefined;\n\n private weights: Matrix[] | undefined;\n\n private radii: number[] | undefined;\n\n public nodes: INode[] = [];\n\n public edges: Edge[] = [];\n\n public onLayoutEnd: () => void;\n\n constructor(options?: RadialLayoutOptions) {\n super();\n this.updateCfg(options);\n }\n\n public getDefaultCfg() {\n return {\n maxIteration: 1000,\n focusNode: null,\n unitRadius: null,\n linkDistance: 50,\n preventOverlap: false,\n nodeSize: undefined,\n nodeSpacing: undefined,\n strictRadial: true,\n maxPreventOverlapIteration: 200,\n sortBy: undefined,\n sortStrength: 10\n };\n }\n\n /**\n * 执行布局\n */\n public execute() {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges || [];\n if (!nodes || nodes.length === 0) {\n if (self.onLayoutEnd) self.onLayoutEnd();\n return;\n }\n\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width! / 2, self.height! / 2];\n }\n const center = self.center;\n\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd) self.onLayoutEnd();\n return;\n }\n const linkDistance = self.linkDistance;\n // layout\n let focusNode: INode | null = null;\n if (isString(self.focusNode)) {\n let found = false;\n for (let i = 0; i < nodes.length; i++) {\n if (nodes[i].id === self.focusNode) {\n focusNode = nodes[i];\n self.focusNode = focusNode;\n found = true;\n i = nodes.length;\n }\n }\n if (!found) {\n focusNode = null;\n }\n } else {\n focusNode = self.focusNode as INode;\n }\n // default focus node\n if (!focusNode) {\n focusNode = nodes[0];\n self.focusNode = focusNode;\n }\n // the index of the focusNode in data\n let focusIndex = getIndexById(nodes, focusNode.id);\n if (focusIndex < 0) focusIndex = 0;\n self.focusIndex = focusIndex;\n\n // the graph-theoretic distance (shortest path distance) matrix\n const adjMatrix = getAdjMatrix({ nodes, edges }, false);\n const D = floydWarshall(adjMatrix);\n const maxDistance = self.maxToFocus(D, focusIndex);\n // replace first node in unconnected component to the circle at (maxDistance + 1)\n self.handleInfinity(D, focusIndex, maxDistance + 1);\n self.distances = D;\n\n // the shortest path distance from each node to focusNode\n const focusNodeD = D[focusIndex];\n const width = self.width || 500;\n const height = self.height || 500;\n let semiWidth =\n width - center[0] > center[0] ? center[0] : width - center[0];\n let semiHeight =\n height - center[1] > center[1] ? center[1] : height - center[1];\n if (semiWidth === 0) {\n semiWidth = width / 2;\n }\n if (semiHeight === 0) {\n semiHeight = height / 2;\n }\n // the maxRadius of the graph\n const maxRadius = semiHeight > semiWidth ? semiWidth : semiHeight;\n const maxD = Math.max(...focusNodeD);\n // the radius for each nodes away from focusNode\n const radii: number[] = [];\n focusNodeD.forEach((value, i) => {\n if (!self.unitRadius) {\n self.unitRadius = maxRadius / maxD;\n }\n radii[i] = value * self.unitRadius;\n });\n self.radii = radii;\n\n const eIdealD = self.eIdealDisMatrix();\n // const eIdealD = scaleMatrix(D, linkDistance);\n self.eIdealDistances = eIdealD;\n // the weight matrix, Wij = 1 / dij^(-2)\n const W = getWeightMatrix(eIdealD);\n self.weights = W;\n\n // the initial positions from mds\n const mds = new MDS({ linkDistance, distances: eIdealD });\n let positions = mds.layout();\n positions.forEach((p: PointTuple) => {\n if (isNaN(p[0])) {\n p[0] = Math.random() * linkDistance;\n }\n if (isNaN(p[1])) {\n p[1] = Math.random() * linkDistance;\n }\n });\n self.positions = positions;\n positions.forEach((p: PointTuple, i: number) => {\n nodes[i].x = p[0] + center[0];\n nodes[i].y = p[1] + center[1];\n });\n // move the graph to origin, centered at focusNode\n positions.forEach((p: PointTuple) => {\n p[0] -= positions[focusIndex][0];\n p[1] -= positions[focusIndex][1];\n });\n self.run();\n const preventOverlap = self.preventOverlap;\n const nodeSize = self.nodeSize;\n let nodeSizeFunc;\n const strictRadial = self.strictRadial;\n // stagger the overlapped nodes\n if (preventOverlap) {\n const nodeSpacing = self.nodeSpacing;\n let nodeSpacingFunc: Function;\n if (isNumber(nodeSpacing)) {\n nodeSpacingFunc = () => nodeSpacing;\n } else if (isFunction(nodeSpacing)) {\n nodeSpacingFunc = nodeSpacing;\n } else {\n nodeSpacingFunc = () => 0;\n }\n if (!nodeSize) {\n nodeSizeFunc = (d: INode) => {\n if (d.size) {\n if (isArray(d.size)) {\n const res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];\n return res + nodeSpacingFunc(d);\n } if (isObject(d.size)) {\n const res = d.size.width > d.size.height ? d.size.width : d.size.height;\n return res + nodeSpacingFunc(d); \n }\n return d.size + nodeSpacingFunc(d);\n }\n return 10 + nodeSpacingFunc(d);\n };\n } else if (isArray(nodeSize)) {\n nodeSizeFunc = (d: INode) => {\n const res = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1];\n return res + nodeSpacingFunc(d);\n };\n } else {\n nodeSizeFunc = (d: INode) => nodeSize + nodeSpacingFunc(d);\n }\n const nonoverlapForceParams: RadialNonoverlapForceParam = {\n nodes,\n nodeSizeFunc,\n adjMatrix,\n positions,\n radii,\n height,\n width,\n strictRadial,\n focusID: focusIndex,\n iterations: self.maxPreventOverlapIteration || 200,\n k: positions.length / 4.5\n };\n const nonoverlapForce = new RadialNonoverlapForce(nonoverlapForceParams);\n positions = nonoverlapForce.layout();\n }\n // move the graph to center\n positions.forEach((p: PointTuple, i: number) => {\n nodes[i].x = p[0] + center[0];\n nodes[i].y = p[1] + center[1];\n });\n\n if (self.onLayoutEnd) self.onLayoutEnd();\n\n return {\n nodes,\n edges\n };\n }\n\n public run() {\n const self = this;\n const maxIteration = self.maxIteration;\n const positions = self.positions || [];\n const W = self.weights || [];\n const eIdealDis = self.eIdealDistances || [];\n const radii = self.radii || [];\n for (let i = 0; i <= maxIteration; i++) {\n const param = i / maxIteration;\n self.oneIteration(param, positions, radii, eIdealDis, W);\n }\n }\n\n private oneIteration(\n param: number,\n positions: PointTuple[],\n radii: number[],\n D: Matrix[],\n W: Matrix[]\n ) {\n const self = this;\n const vparam = 1 - param;\n const focusIndex = self.focusIndex;\n positions.forEach((v: PointTuple, i: number) => {\n // v\n const originDis = getEDistance(v, [0, 0]);\n const reciODis = originDis === 0 ? 0 : 1 / originDis;\n if (i === focusIndex) {\n return;\n }\n let xMolecule = 0;\n let yMolecule = 0;\n let denominator = 0;\n positions.forEach((u, j) => {\n // u\n if (i === j) {\n return;\n }\n // the euclidean distance between v and u\n const edis = getEDistance(v, u);\n const reciEdis = edis === 0 ? 0 : 1 / edis;\n const idealDis = D[j][i];\n // same for x and y\n denominator += W[i][j];\n // x\n xMolecule += W[i][j] * (u[0] + idealDis * (v[0] - u[0]) * reciEdis);\n // y\n yMolecule += W[i][j] * (u[1] + idealDis * (v[1] - u[1]) * reciEdis);\n });\n const reciR = radii[i] === 0 ? 0 : 1 / radii[i];\n denominator *= vparam;\n denominator += param * reciR * reciR;\n // x\n xMolecule *= vparam;\n xMolecule += param * reciR * v[0] * reciODis;\n v[0] = xMolecule / denominator;\n // y\n yMolecule *= vparam;\n yMolecule += param * reciR * v[1] * reciODis;\n v[1] = yMolecule / denominator;\n });\n }\n\n private eIdealDisMatrix(): Matrix[] {\n const self = this;\n const nodes = self.nodes;\n if (!nodes) return [];\n const D = self.distances;\n const linkDis = self.linkDistance;\n const radii = self.radii || [];\n const unitRadius = self.unitRadius || 50;\n const result: Matrix[] = [];\n if (D) {\n D.forEach((row, i) => {\n const newRow: Matrix = [];\n row.forEach((v, j) => {\n if (i === j) {\n newRow.push(0);\n } else if (radii[i] === radii[j]) {\n // i and j are on the same circle\n if (self.sortBy === \"data\") {\n // sort the nodes on the same circle according to the ordering of the data\n newRow.push(\n (v * (Math.abs(i - j) * self.sortStrength)) /\n (radii[i] / unitRadius)\n );\n } else if (self.sortBy) {\n // sort the nodes on the same circle according to the attributes\n let iValue: number | string =\n ((nodes[i] as any)[self.sortBy] as number | string) || 0;\n let jValue: number | string =\n ((nodes[j] as any)[self.sortBy] as number | string) || 0;\n if (isString(iValue)) {\n iValue = iValue.charCodeAt(0);\n }\n if (isString(jValue)) {\n jValue = jValue.charCodeAt(0);\n }\n newRow.push(\n (v * (Math.abs(iValue - jValue) * self.sortStrength)) /\n (radii[i] / unitRadius)\n );\n } else {\n newRow.push((v * linkDis) / (radii[i] / unitRadius));\n }\n } else {\n // i and j are on different circle\n // i and j are on different circle\n const link = (linkDis + unitRadius) / 2;\n newRow.push(v * link);\n }\n });\n result.push(newRow);\n });\n }\n return result;\n }\n\n private handleInfinity(matrix: Matrix[], focusIndex: number, step: number) {\n const length = matrix.length;\n // 遍历 matrix 中遍历 focus 对应行\n for (let i = 0; i < length; i++) {\n // matrix 关注点对应行的 Inf 项\n if (matrix[focusIndex][i] === Infinity) {\n matrix[focusIndex][i] = step;\n matrix[i][focusIndex] = step;\n // 遍历 matrix 中的 i 行,i 行中非 Inf 项若在 focus 行为 Inf,则替换 focus 行的那个 Inf\n for (let j = 0; j < length; j++) {\n if (matrix[i][j] !== Infinity && matrix[focusIndex][j] === Infinity) {\n matrix[focusIndex][j] = step + matrix[i][j];\n matrix[j][focusIndex] = step + matrix[i][j];\n }\n }\n }\n }\n // 处理其他行的 Inf。根据该行对应点与 focus 距离以及 Inf 项点 与 focus 距离,决定替换值\n for (let i = 0; i < length; i++) {\n if (i === focusIndex) {\n continue;\n }\n for (let j = 0; j < length; j++) {\n if (matrix[i][j] === Infinity) {\n let minus = Math.abs(matrix[focusIndex][i] - matrix[focusIndex][j]);\n minus = minus === 0 ? 1 : minus;\n matrix[i][j] = minus;\n }\n }\n }\n }\n\n private maxToFocus(matrix: Matrix[], focusIndex: number): number {\n let max = 0;\n for (let i = 0; i < matrix[focusIndex].length; i++) {\n if (matrix[focusIndex][i] === Infinity) {\n continue;\n }\n max = matrix[focusIndex][i] > max ? matrix[focusIndex][i] : max;\n }\n return max;\n }\n\n public getType() {\n return \"radial\";\n }\n}\n","import { Matrix, PointTuple, Point } from '../types';\n\nconst SPEED_DIVISOR = 800;\n\nexport type RadialNonoverlapForceParam = {\n positions: PointTuple[];\n adjMatrix: Matrix[];\n focusID: number;\n radii: number[];\n iterations?: number;\n height?: number;\n width?: number;\n speed?: number;\n gravity?: number;\n nodeSizeFunc: (node: any) => number;\n k: number;\n strictRadial: boolean;\n nodes: any[];\n};\n\nexport default class RadialNonoverlapForce {\n /** node positions */\n public positions: PointTuple[];\n\n /** adjacency matrix */\n public adjMatrix: Matrix[];\n\n /** focus node */\n public focusID: number;\n\n /** radii */\n public radii: number[];\n\n /** the number of iterations */\n public iterations: number;\n\n /** the height of the canvas */\n public height: number;\n\n /** the width of the canvas */\n public width: number;\n\n /** the moving speed */\n public speed: number;\n\n /** the gravity */\n public gravity: number;\n\n /** the node size */\n public nodeSizeFunc: (node: any) => number;\n\n /** the strength of forces */\n public k: number;\n\n /** if each circle can be separated into subcircles to avoid overlappings */\n public strictRadial: boolean;\n\n /** the nodes data */\n public nodes: any[];\n\n private maxDisplace: number | undefined;\n\n private disp: Point[] = [];\n\n constructor(params: RadialNonoverlapForceParam) {\n this.positions = params.positions;\n this.adjMatrix = params.adjMatrix;\n this.focusID = params.focusID;\n this.radii = params.radii;\n this.iterations = params.iterations || 10;\n this.height = params.height || 10;\n this.width = params.width || 10;\n this.speed = params.speed || 100;\n this.gravity = params.gravity || 10;\n this.nodeSizeFunc = params.nodeSizeFunc;\n this.k = params.k || 5;\n this.strictRadial = params.strictRadial;\n this.nodes = params.nodes;\n }\n\n public layout(): PointTuple[] {\n const self = this;\n const positions = self.positions;\n const disp: Point[] = [];\n const iterations = self.iterations;\n const maxDisplace = self.width / 10;\n self.maxDisplace = maxDisplace;\n self.disp = disp;\n for (let i = 0; i < iterations; i++) {\n positions.forEach((_, k) => {\n disp[k] = { x: 0, y: 0 };\n });\n // 给重叠的节点增加斥力\n self.getRepulsion();\n self.updatePositions();\n }\n return positions;\n }\n\n private getRepulsion() {\n const self = this;\n const positions = self.positions;\n const nodes = self.nodes;\n const disp = self.disp;\n const k = self.k;\n const radii = self.radii || [];\n\n positions.forEach((v: PointTuple, i: number) => {\n disp[i] = { x: 0, y: 0 };\n positions.forEach((u: PointTuple, j: number) => {\n if (i === j) {\n return;\n }\n // v and u are not on the same circle, return\n if (radii[i] !== radii[j]) {\n return;\n }\n let vecx = v[0] - u[0];\n let vecy = v[1] - u[1];\n let vecLength = Math.sqrt(vecx * vecx + vecy * vecy);\n if (vecLength === 0) {\n vecLength = 1;\n const sign = i > j ? 1 : -1;\n vecx = 0.01 * sign;\n vecy = 0.01 * sign;\n }\n // these two nodes overlap\n if (vecLength < self.nodeSizeFunc(nodes[i]) / 2 + self.nodeSizeFunc(nodes[j]) / 2) {\n const common = (k * k) / vecLength;\n disp[i].x += (vecx / vecLength) * common;\n disp[i].y += (vecy / vecLength) * common;\n }\n });\n });\n }\n\n private updatePositions() {\n const self = this;\n const positions = self.positions;\n const disp = self.disp;\n const speed = self.speed;\n const strictRadial = self.strictRadial;\n const f = self.focusID;\n const maxDisplace = self.maxDisplace || self.width / 10;\n\n if (strictRadial) {\n disp.forEach((di, i) => {\n const vx = positions[i][0] - positions[f][0];\n const vy = positions[i][1] - positions[f][1];\n const vLength = Math.sqrt(vx * vx + vy * vy);\n let vpx = vy / vLength;\n let vpy = -vx / vLength;\n const diLength = Math.sqrt(di.x * di.x + di.y * di.y);\n let alpha = Math.acos((vpx * di.x + vpy * di.y) / diLength);\n if (alpha > Math.PI / 2) {\n alpha -= Math.PI / 2;\n vpx *= -1;\n vpy *= -1;\n }\n const tdispLength = Math.cos(alpha) * diLength;\n di.x = vpx * tdispLength;\n di.y = vpy * tdispLength;\n });\n }\n\n // move\n const radii = self.radii;\n positions.forEach((n, i) => {\n if (i === f) {\n return;\n }\n const distLength = Math.sqrt(disp[i].x * disp[i].x + disp[i].y * disp[i].y);\n if (distLength > 0 && i !== f) {\n const limitedDist = Math.min(maxDisplace * (speed / SPEED_DIVISOR), distLength);\n n[0] += (disp[i].x / distLength) * limitedDist;\n n[1] += (disp[i].y / distLength) * limitedDist;\n if (strictRadial) {\n let vx = n[0] - positions[f][0];\n let vy = n[1] - positions[f][1];\n const nfDis = Math.sqrt(vx * vx + vy * vy);\n vx = (vx / nfDis) * radii[i];\n vy = (vy / nfDis) * radii[i];\n n[0] = positions[f][0] + vx;\n n[1] = positions[f][1] + vy;\n }\n }\n });\n }\n}\n","/**\n * @fileOverview random layout\n * @author shiwu.wyy@antfin.com\n */\n\nimport { PointTuple, OutNode, Edge, RandomLayoutOptions } from \"./types\";\nimport { Base } from \"./base\";\n\n/**\n * 随机布局\n */\nexport class RandomLayout extends Base {\n /** 布局中心 */\n public center: PointTuple = [0, 0];\n\n /** 宽度 */\n public width: number = 300;\n\n /** 高度 */\n public height: number = 300;\n\n public nodes: OutNode[] = [];\n\n public edges: Edge[] = [];\n\n /** 迭代结束的回调函数 */\n public onLayoutEnd: () => void = () => {};\n\n constructor(options?: RandomLayoutOptions) {\n super();\n this.updateCfg(options);\n }\n\n public getDefaultCfg() {\n return {\n center: [0, 0],\n width: 300,\n height: 300\n };\n }\n\n /**\n * 执行布局\n */\n public execute() {\n const self = this;\n const nodes = self.nodes;\n const layoutScale = 0.9;\n const center = self.center;\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n\n if (nodes) {\n nodes.forEach((node) => {\n node.x = (Math.random() - 0.5) * layoutScale * self.width + center[0];\n node.y = (Math.random() - 0.5) * layoutScale * self.height + center[1];\n });\n }\n\n if (self.onLayoutEnd) self.onLayoutEnd();\n\n return {\n nodes,\n edges: this.edges\n };\n }\n\n public getType() {\n return \"random\";\n }\n}\n","import { Base } from \"../layout/base\";\nimport { isObject } from \"../util\";\n\nconst map: Map = new Map();\n\nexport const registerLayout = (name: string, layoutOverride: any) => {\n if (map.get(name)) {\n console.warn(`The layout with the name ${name} exists already, it will be overridden`);\n }\n if (isObject(layoutOverride)) {\n // tslint:disable-next-line: max-classes-per-file\n class GLayout extends Base {\n constructor(cfg: any) {\n super();\n const self = this as any;\n const props: any = {};\n const defaultCfg = self.getDefaultCfg();\n Object.assign(props, defaultCfg, layoutOverride, cfg as unknown);\n Object.keys(props).forEach((key: string) => {\n const value = props[key];\n self[key] = value;\n });\n }\n }\n map.set(name, GLayout);\n } else {\n map.set(name, layoutOverride);\n }\n return map.get(name);\n};\n\nexport const unRegisterLayout = (name: string) => {\n if (map.has(name)) {\n map.delete(name);\n }\n};\n\nexport const getLayoutByName = (name: string) => {\n if (map.has(name)) {\n return map.get(name);\n }\n return null;\n};\n","export const isArray = Array.isArray;\n","import { isArray, isObject } from \".\";\nimport { isNumber } from \"./number\";\n\nexport const isFunction = (val: unknown): val is Function =>\n typeof val === 'function';\n\n\nexport const getFunc = (\n value: number,\n defaultValue: number,\n func?: ((d?: any) => number) | undefined,\n): Function => {\n let resultFunc;\n if (func) {\n resultFunc = func;\n } else if (isNumber(value)) {\n resultFunc = () => value;\n } else {\n resultFunc = () => defaultValue;\n }\n return resultFunc;\n};\n\nexport const getFuncByUnknownType = (\n defaultValue: number,\n value?: number | number[] | { width: number, height: number } | ((d?: any) => number) | undefined,\n resultIsNumber: boolean = true\n): (d?: any) => number | number[] => {\n if (!value && value !== 0) {\n return (d) => {\n if (d.size) {\n if (isArray(d.size)) return d.size[0] > d.size[1] ? d.size[0] : d.size[1];\n if (isObject(d.size)) return d.size.width > d.size.height ? d.size.width : d.size.height;\n return d.size;\n }\n return defaultValue;\n };\n }\n if (isFunction(value)) {\n return value;\n }\n if (isNumber(value)) {\n return () => value;\n }\n if (isArray(value)) {\n return () => {\n if (resultIsNumber) {\n const max = Math.max(...(value as number[]));\n return isNaN(max) ? defaultValue : max;\n }\n return value;\n };\n }\n if (isObject(value)) {\n return () => {\n if (resultIsNumber) {\n const max = Math.max(value.width, value.height);\n return isNaN(max) ? defaultValue : max;\n }\n return [value.width, value.height];\n };\n }\n return () => defaultValue;\n};\n","import { OutNode, Edge, IndexMap } from '../layout/types';\nimport { isNumber } from './';\nimport { getEdgeTerminal } from './math';\n\n\n/**\n * 将 number | Function 类型的参数转换为 return number 的 Function\n * @param {number | Function} value 需要被转换的值\n * @param {number} defaultV 返回函数的默认返回值\n * @return {Function} 转换后的函数 \n */\nexport const proccessToFunc = (value: number | Function | undefined, defaultV?: number): ((d?: any) => number) => {\n let func;\n if (!value) {\n func = () => {\n return defaultV || 1;\n };\n } else if (isNumber(value)) {\n func = () => {\n return value;\n };\n } else {\n func = value;\n }\n return func as ((d?: any) => number);\n};\n\n/**\n * 将节点和边数据转换为 GPU 可读的数组。并返回 maxEdgePerVetex,每个节点上最多的边数\n * @param {NodeConfig[]} nodes 需要被转换的值\n * @param {EdgeConfig[]} edges 返回函数的默认返回值\n * @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象\n */\nexport const buildTextureData = (nodes: OutNode[], edges: Edge[]): {\n array: Float32Array,\n maxEdgePerVetex: number\n} => {\n const dataArray = [];\n const nodeDict: any = [];\n const mapIdPos: IndexMap = {};\n let i = 0;\n for (i = 0; i < nodes.length; i++) {\n const n = nodes[i];\n mapIdPos[n.id] = i;\n dataArray.push(n.x);\n dataArray.push(n.y);\n dataArray.push(0);\n dataArray.push(0);\n nodeDict.push([]);\n }\n for (i = 0; i < edges.length; i++) {\n const e = edges[i];\n const source = getEdgeTerminal(e, 'source');\n const target = getEdgeTerminal(e, 'target');\n if (!isNaN(mapIdPos[source]) && !isNaN(mapIdPos[target])) {\n nodeDict[mapIdPos[source]].push(mapIdPos[target]);\n nodeDict[mapIdPos[target]].push(mapIdPos[source]);\n }\n }\n\n let maxEdgePerVetex = 0;\n for (i = 0; i < nodes.length; i++) {\n const offset: number = dataArray.length;\n const dests = nodeDict[i];\n const len = dests.length;\n dataArray[i * 4 + 2] = offset;\n dataArray[i * 4 + 3] = len;\n maxEdgePerVetex = Math.max(maxEdgePerVetex, len);\n for (let j = 0; j < len; ++j) {\n const dest = dests[j];\n dataArray.push(+dest);\n }\n }\n\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n return {\n maxEdgePerVetex,\n array: new Float32Array(dataArray),\n };\n};\n\n/**\n* 将节点和边数据转换为 GPU 可读的数组,每条边带有一个属性。并返回 maxEdgePerVetex,每个节点上最多的边数\n* @param {NodeConfig[]} nodes 节点数组\n* @param {EdgeConfig[]} edges 边数组\n* @param {Function} attrs 读取边属性的函数\n* @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象\n*/\n// export const buildTextureDataWithOneEdgeAttr = (nodes: OutNode[], edges: Edge[], attrs: Function): {\n// array: Float32Array,\n// maxEdgePerVetex: number\n// } => {\n// const dataArray = [];\n// const nodeDict: any = [];\n// const mapIdPos: IndexMap = {};\n// let i = 0;\n// for (i = 0; i < nodes.length; i++) {\n// const n = nodes[i];\n// mapIdPos[n.id] = i;\n// dataArray.push(n.x);\n// dataArray.push(n.y);\n// dataArray.push(0);\n// dataArray.push(0);\n// nodeDict.push([]);\n// }\n// for (i = 0; i < edges.length; i++) {\n// const e = edges[i];\n// nodeDict[mapIdPos[e.source]].push(mapIdPos[e.target]);\n// nodeDict[mapIdPos[e.source]].push(attrs(e)); // 理想边长,后续可以改成每条边不同\n// nodeDict[mapIdPos[e.target]].push(mapIdPos[e.source]);\n// nodeDict[mapIdPos[e.target]].push(attrs(e)); // 理想边长,后续可以改成每条边不同\n// }\n\n// let maxEdgePerVetex = 0;\n// for (i = 0; i < nodes.length; i++) {\n// const offset: number = dataArray.length;\n// const dests = nodeDict[i]; // dest 中节点 id 与边长间隔存储,即一位节点 id,一位边长……\n// const len = dests.length;\n// dataArray[i * 4 + 2] = offset;\n// dataArray[i * 4 + 3] = len / 2; // 第四位存储与该节点相关的所有节点个数\n// maxEdgePerVetex = Math.max(maxEdgePerVetex, len / 2);\n// for (let j = 0; j < len; ++j) {\n// const dest = dests[j];\n// dataArray.push(+dest);\n// }\n// }\n\n// // 不是 4 的倍数,填充 0\n// while (dataArray.length % 4 !== 0) {\n// dataArray.push(0);\n// }\n// return {\n// array: new Float32Array(dataArray),\n// maxEdgePerVetex\n// }\n// }\n\n/**\n* 将节点和边数据转换为 GPU 可读的数组,每条边带有一个以上属性。并返回 maxEdgePerVetex,每个节点上最多的边数\n* @param {NodeConfig[]} nodes 节点数组\n* @param {EdgeConfig[]} edges 边数组\n* @param {Function} attrs 读取边属性的函数\n* @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象\n*/\nexport const buildTextureDataWithTwoEdgeAttr = (nodes: OutNode[], edges: Edge[], attrs1: Function, attrs2: Function): {\n array: Float32Array,\n maxEdgePerVetex: number\n} => {\n const dataArray = [];\n const nodeDict: any = [];\n const mapIdPos: IndexMap = {};\n let i = 0;\n for (i = 0; i < nodes.length; i++) {\n const n = nodes[i];\n mapIdPos[n.id] = i;\n dataArray.push(n.x);\n dataArray.push(n.y);\n dataArray.push(0);\n dataArray.push(0);\n nodeDict.push([]);\n }\n for (i = 0; i < edges.length; i++) {\n const e = edges[i];\n const source = getEdgeTerminal(e, 'source');\n const target = getEdgeTerminal(e, 'target');\n nodeDict[mapIdPos[source]].push(mapIdPos[target]);\n nodeDict[mapIdPos[source]].push(attrs1(e));\n nodeDict[mapIdPos[source]].push(attrs2(e));\n nodeDict[mapIdPos[source]].push(0);\n nodeDict[mapIdPos[target]].push(mapIdPos[source]);\n nodeDict[mapIdPos[target]].push(attrs1(e));\n nodeDict[mapIdPos[target]].push(attrs2(e));\n nodeDict[mapIdPos[target]].push(0);\n }\n\n let maxEdgePerVetex = 0;\n for (i = 0; i < nodes.length; i++) {\n const offset: number = dataArray.length;\n const dests = nodeDict[i]; // dest 中节点 id 与边长间隔存储,即一位节点 id,一位边长……\n const len = dests.length;\n // dataArray[i * 4 + 2] = offset;\n // dataArray[i * 4 + 3] = len / 4; // 第四位存储与该节点相关的所有节点个数\n // pack offset & length into float32: offset 20bit, length 12bit\n dataArray[i * 4 + 2] = offset + 1048576 * len / 4;\n dataArray[i * 4 + 3] = 0; // 第四位存储与上一次的距离差值\n maxEdgePerVetex = Math.max(maxEdgePerVetex, len / 4);\n for (let j = 0; j < len; ++j) {\n const dest = dests[j];\n dataArray.push(+dest);\n }\n }\n\n // 不是 4 的倍数,填充 0\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n return {\n maxEdgePerVetex,\n array: new Float32Array(dataArray),\n };\n};\n/**\n* transform the extended attributes of nodes or edges to a texture array\n* @param {string[]} attributeNames attributes' name to be read from items and put into output array\n* @param {ModelConfig[]} items the items to be read\n* @return {Float32Array} the attributes' value array to be read by GPU\n*/\nexport const attributesToTextureData = (attributeNames: string[], items: any[]): { array: Float32Array, count: number } => {\n const dataArray: any[] = [];\n const attributeNum = attributeNames.length;\n const attributteStringMap: any = {};\n items.forEach((item: any) => {\n attributeNames.forEach((name: string, i) => {\n if (attributteStringMap[item[name]] === undefined) {\n attributteStringMap[item[name]] = Object.keys(attributteStringMap).length;\n }\n dataArray.push(attributteStringMap[item[name]]);\n // insure each node's attributes take inter number of grids\n if (i === attributeNum - 1) {\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n }\n });\n });\n return {\n array: new Float32Array(dataArray),\n count: Object.keys(attributteStringMap).length\n };\n};\n\n/**\n* transform the number array format of extended attributes of nodes or edges to a texture array\n* @param {string[]} attributeNames attributes' name to be read from items and put into output array\n* @return {Float32Array} the attributes' value array to be read by GPU\n*/\nexport const arrayToTextureData = (valueArrays: number[][]): Float32Array => {\n const dataArray: any[] = [];\n const attributeNum = valueArrays.length;\n const itemNum = valueArrays[0].length;\n for (let j = 0; j < itemNum; j++) {\n valueArrays.forEach((valueArray, i) => {\n dataArray.push(valueArray[j]);\n // insure each node's attributes take inter number of grids\n if (i === attributeNum - 1) {\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n }\n });\n }\n\n return new Float32Array(dataArray);\n};\n","export * from './string';\nexport * from './array';\nexport * from './number';\nexport * from './math';\nexport * from './object';\nexport * from './function';\n","import { Matrix, Model, IndexMap, Edge, Node, OutNode, Degree, NodeMap } from '../layout/types';\nimport { isArray } from './array';\nimport { isNumber } from './number';\nimport { isObject } from './object';\n\nexport const getEdgeTerminal = (edge: Edge, type: 'source' | 'target') => {\n const terminal = edge[type];\n if (isObject(terminal)) {\n return terminal.cell;\n }\n return terminal;\n};\n\nexport const getDegree = (n: number, nodeIdxMap: IndexMap, edges: Edge[] | null) => {\n const degrees: Degree[] = [];\n for (let i = 0; i < n; i++) {\n degrees[i] = {\n in: 0,\n out: 0,\n all: 0\n };\n }\n if (!edges) return degrees;\n edges.forEach((e) => {\n const source = getEdgeTerminal(e, 'source');\n const target = getEdgeTerminal(e, 'target');\n if (source && degrees[nodeIdxMap[source]]) {\n degrees[nodeIdxMap[source]].out += 1;\n degrees[nodeIdxMap[source]].all += 1;\n }\n if (target && degrees[nodeIdxMap[target]]) {\n degrees[nodeIdxMap[target]].in += 1;\n degrees[nodeIdxMap[target]].all += 1;\n }\n });\n return degrees;\n};\n\nexport const getDegreeMap = (nodes: Node[], edges: Edge[] | null) => {\n const degreesMap: { [id: string]: Degree } = {};\n nodes.forEach((node) => {\n degreesMap[node.id] = {\n in: 0,\n out: 0,\n all: 0\n };\n });\n\n if (!edges) return degreesMap;\n edges.forEach((e) => {\n const source = getEdgeTerminal(e, 'source');\n const target = getEdgeTerminal(e, 'target');\n if (source) {\n degreesMap[source].out += 1;\n degreesMap[source].all += 1;\n }\n if (target) {\n degreesMap[target].in += 1;\n degreesMap[target].all += 1;\n }\n });\n return degreesMap;\n};\n\nexport const floydWarshall = (adjMatrix: Matrix[]): Matrix[] => {\n // initialize\n const dist: Matrix[] = [];\n const size = adjMatrix.length;\n for (let i = 0; i < size; i += 1) {\n dist[i] = [];\n for (let j = 0; j < size; j += 1) {\n if (i === j) {\n dist[i][j] = 0;\n } else if (adjMatrix[i][j] === 0 || !adjMatrix[i][j]) {\n dist[i][j] = Infinity;\n } else {\n dist[i][j] = adjMatrix[i][j];\n }\n }\n }\n // floyd\n for (let k = 0; k < size; k += 1) {\n for (let i = 0; i < size; i += 1) {\n for (let j = 0; j < size; j += 1) {\n if (dist[i][j] > dist[i][k] + dist[k][j]) {\n dist[i][j] = dist[i][k] + dist[k][j];\n }\n }\n }\n }\n return dist;\n};\n\nexport const getAdjMatrix = (data: Model, directed: boolean): Matrix[] => {\n const {\n nodes,\n edges\n } = data;\n const matrix: Matrix[] = [];\n // map node with index in data.nodes\n const nodeMap: {\n [key: string]: number;\n } = {};\n\n if (!nodes) {\n throw new Error('invalid nodes data!');\n }\n if (nodes) {\n nodes.forEach((node, i) => {\n nodeMap[node.id] = i;\n const row: number[] = [];\n matrix.push(row);\n });\n }\n\n edges?.forEach((e) => {\n const source = getEdgeTerminal(e, 'source');\n const target = getEdgeTerminal(e, 'target');\n const sIndex = nodeMap[source as string];\n const tIndex = nodeMap[target as string];\n if (sIndex === undefined || tIndex === undefined) return;\n matrix[sIndex][tIndex] = 1;\n if (!directed) {\n matrix[tIndex][sIndex] = 1;\n }\n });\n return matrix;\n};\n\n/**\n * scale matrix\n * @param matrix [ [], [], [] ]\n * @param ratio\n */\nexport const scaleMatrix = (matrix: Matrix[], ratio: number) => {\n const result: Matrix[] = [];\n matrix.forEach((row) => {\n const newRow: number[] = [];\n row.forEach((v) => {\n newRow.push(v * ratio);\n });\n result.push(newRow);\n });\n return result;\n};\n\n/**\n * depth first traverse, from leaves to root, children in inverse order\n * if the fn returns false, terminate the traverse\n */\nconst traverseUp = (data: T, fn: (param: T) => boolean) => {\n if (data && data.children) {\n for (let i = data.children.length - 1; i >= 0; i--) {\n if (!traverseUp(data.children[i], fn)) return;\n }\n }\n\n if (!fn(data)) {\n return false;\n }\n return true;\n};\n\n/**\n * depth first traverse, from leaves to root, children in inverse order\n * if the fn returns false, terminate the traverse\n */\nexport const traverseTreeUp = (\n data: T,\n fn: (param: T) => boolean,\n) => {\n if (typeof fn !== 'function') {\n return;\n }\n traverseUp(data, fn);\n};\n\n/**\n * calculate the bounding box for the nodes according to their x, y, and size\n * @param nodes nodes in the layout\n * @returns \n */\nexport const getLayoutBBox = (nodes: OutNode[]) => {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n nodes.forEach((node) => {\n let size = node.size;\n if (isArray(size)) {\n if (size.length === 1) size = [size[0], size[0]];\n } else if (isNumber(size)) {\n size = [size, size];\n } else if (size === undefined || isNaN(size as any)) {\n size = [30, 30];\n }\n\n const halfSize = [size[0] / 2, size[1] / 2];\n const left = node.x - halfSize[0];\n const right = node.x + halfSize[0];\n const top = node.y - halfSize[1];\n const bottom = node.y + halfSize[1];\n\n if (minX > left) minX = left;\n if (minY > top) minY = top;\n if (maxX < right) maxX = right;\n if (maxY < bottom) maxY = bottom;\n });\n return { minX, minY, maxX, maxY };\n};\n\n/**\n * 获取节点集合的平均位置信息\n * @param nodes 节点集合\n * @returns 平局内置\n */\nexport const getAvgNodePosition = (nodes: OutNode[]) => {\n const totalNodes = { x: 0, y: 0 };\n nodes.forEach((node) => {\n totalNodes.x += node.x || 0;\n totalNodes.y += node.y || 0;\n });\n // 获取均值向量\n const length = nodes.length || 1;\n return {\n x: totalNodes.x / length,\n y: totalNodes.y / length,\n };\n};\n\n// 找出指定节点关联的边的起点或终点\nconst getCoreNode = (type: 'source' | 'target', node: Node, edges: Edge[]) => {\n if (type === 'source') {\n return (edges?.find((edge) => edge.target === node.id)?.source || {}) as Node;\n }\n return (edges?.find((edge) => edge.source === node.id)?.target || {}) as Node;\n};\n\n// 找出指定节点为起点或终点的所有一度叶子节点\nconst getRelativeNodeIds = (type: 'source' | 'target' | 'both', coreNode: Node, edges: Edge[]) => {\n let relativeNodes: string[] = [];\n switch (type) {\n case 'source':\n relativeNodes = edges?.filter((edge) => edge.source === coreNode.id).map((edge) => edge.target);\n break;\n case 'target':\n relativeNodes = edges?.filter((edge) => edge.target === coreNode.id).map((edge) => edge.source);\n break;\n case 'both':\n relativeNodes = edges\n ?.filter((edge) => edge.source === coreNode.id)\n .map((edge) => edge.target)\n .concat(edges?.filter((edge) => edge.target === coreNode.id).map((edge) => edge.source));\n break;\n default:\n break;\n }\n // 去重\n const set = new Set(relativeNodes);\n return Array.from(set);\n};\n// 找出同类型的节点\nconst getSameTypeNodes = (type: 'leaf' | 'all', nodeClusterBy: string, node: Node, relativeNodes: Node[], degreesMap: { [id: string]: Degree }) => {\n // @ts-ignore\n const typeName = node[nodeClusterBy] || '';\n // @ts-ignore\n let sameTypeNodes = relativeNodes?.filter((item) => item[nodeClusterBy] === typeName) || [];\n if (type === 'leaf') {\n sameTypeNodes = sameTypeNodes.filter((node) => degreesMap[node.id]?.in === 0 ||degreesMap[node.id]?.out === 0);\n }\n return sameTypeNodes;\n};\n\n\n// 找出与指定节点关联的边的起点或终点出发的所有一度叶子节点\nexport const getCoreNodeAndRelativeLeafNodes = (type: 'leaf' | 'all', node: Node, edges: Edge[], nodeClusterBy: string, degreesMap: { [id: string]: Degree }, nodeMap: NodeMap) => {\n const { in: inDegree, out: outDegree } = degreesMap[node.id];\n let coreNode: Node = node;\n let relativeLeafNodes: Node[] = [];\n if (inDegree === 0) {\n // 如果为没有出边的叶子节点,则找出与它关联的边的起点出发的所有一度节点\n coreNode = getCoreNode('source', node, edges);\n relativeLeafNodes = getRelativeNodeIds('both', coreNode, edges).map((nodeId) => nodeMap[nodeId]);\n } else if (outDegree === 0) {\n // 如果为没有入边边的叶子节点,则找出与它关联的边的起点出发的所有一度节点\n coreNode = getCoreNode('target', node, edges);\n relativeLeafNodes = getRelativeNodeIds('both', coreNode, edges).map((nodeId) => nodeMap[nodeId]);\n }\n relativeLeafNodes = relativeLeafNodes.filter(\n (node) => degreesMap[node.id] && (degreesMap[node.id].in === 0 || degreesMap[node.id].out === 0),\n );\n const sameTypeLeafNodes = getSameTypeNodes(type, nodeClusterBy, node, relativeLeafNodes, degreesMap);\n return { coreNode, relativeLeafNodes, sameTypeLeafNodes };\n};","export const isNumber = (val: unknown): val is Number => typeof val === 'number';\n\nexport const isNaN = (num: unknown) => Number.isNaN(Number(num));\n\nexport const toNumber = (val: any): any => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};","export const isObject = (val: unknown): val is Record =>\n val !== null && typeof val === 'object';\n\nexport const clone = (target: T): T => {\n if (target === null) {\n return target;\n }\n if (target instanceof Date) {\n return new Date(target.getTime()) as any;\n }\n if (target instanceof Array) {\n const cp = [] as any[]\n ;(target as any[]).forEach((v) => {\n cp.push(v);\n });\n return cp.map((n: any) => clone(n)) as any;\n }\n if (typeof target === 'object' && Object.keys(target).length) {\n const cp = { ...(target as { [key: string]: any }) } as {\n [key: string]: any\n };\n Object.keys(cp).forEach((k) => {\n cp[k] = clone(cp[k]);\n });\n return cp as T;\n }\n return target;\n};\n","export const isString = (val: unknown): val is string => typeof val === 'string';\n\nconst cacheStringFunction = string>(fn: T): T => {\n const cache: Record = Object.create(null);\n return ((str: string) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n }) as any;\n};\n\nconst camelizeRE = /-(\\w)/g;\nexport const camelize = cacheStringFunction((str: string): string => {\n return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''));\n});\n\n// export const capitalize = cacheStringFunction(\n// (str: string) => str.charAt(0).toUpperCase() + str.slice(1),\n// )\n","/**\n * @description 扩展方法,提供 gl-matrix 为提供的方法\n * */\nimport { mat3, vec2 } from 'gl-matrix';\n\ntype mat3Type = [number, number, number, number, number, number, number, number, number];\n\nexport function leftTranslate(out, a, v) {\n const transMat: mat3Type = [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n mat3.fromTranslation(transMat, v);\n return mat3.multiply(out, transMat, a);\n}\n\nexport function leftRotate(out, a, rad) {\n const rotateMat: mat3Type = [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n mat3.fromRotation(rotateMat, rad);\n return mat3.multiply(out, rotateMat, a);\n}\n\nexport function leftScale(out, a, v) {\n const scaleMat: mat3Type = [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n mat3.fromScaling(scaleMat, v);\n return mat3.multiply(out, scaleMat, a);\n}\n\nfunction leftMultiply(out, a, a1) {\n return mat3.multiply(out, a1, a);\n}\n/**\n * 根据 actions 来做 transform\n * @param m\n * @param actions\n */\nexport function transform(m: number[], actions: any[][]) {\n const matrix = m ? [].concat(m) : [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\n for (let i = 0, len = actions.length; i < len; i++) {\n const action = actions[i];\n switch (action[0]) {\n case 't':\n leftTranslate(matrix, matrix, [ action[1], action[2] ]);\n break;\n case 's':\n leftScale(matrix, matrix, [ action[1], action[2] ]);\n break;\n case 'r':\n leftRotate(matrix, matrix, action[1]);\n break;\n case 'm':\n leftMultiply(matrix, matrix, action[1]);\n break;\n default:\n break;\n }\n }\n\n return matrix;\n}\n\n/**\n * 向量 v1 到 向量 v2 夹角的方向\n * @param {Array} v1 向量\n * @param {Array} v2 向量\n * @return {Boolean} >= 0 顺时针 < 0 逆时针\n */\nexport function direction(v1: number[], v2: number[]): number {\n return v1[0] * v2[1] - v2[0] * v1[1];\n}\n\n/**\n * 二维向量 v1 到 v2 的夹角\n * @param v1\n * @param v2\n * @param direct\n */\nexport function angleTo(v1: [number, number], v2: [number, number], direct: boolean): number {\n const ang = vec2.angle(v1, v2);\n const angleLargeThanPI = direction(v1, v2) >= 0;\n if (direct) {\n if (angleLargeThanPI) {\n return Math.PI * 2 - ang;\n }\n return ang;\n }\n\n if (angleLargeThanPI) {\n return ang;\n }\n return Math.PI * 2 - ang;\n}\n\n/**\n * 计算二维向量的垂直向量\n * @param out\n * @param v\n * @param flag\n */\nexport function vertical(out: number[], v: number[], flag: boolean): number[] {\n if (flag) {\n out[0] = v[1];\n out[1] = -1 * v[0];\n } else {\n out[0] = -1 * v[1];\n out[1] = v[0];\n }\n\n return out;\n}\n","const isArrayLike = function(value: any): boolean {\n /**\n * isArrayLike([1, 2, 3]) => true\n * isArrayLike(document.body.children) => true\n * isArrayLike('abc') => true\n * isArrayLike(Function) => false\n */\n return value !== null && typeof value !== 'function' && isFinite(value.length);\n};\n\nexport default isArrayLike;\n","import isArrayLike from './is-array-like';\n\nconst contains = function(arr: any[], value: any): boolean {\n if (!isArrayLike(arr)) {\n return false;\n }\n return arr.indexOf(value) > -1;\n};\n\nexport default contains;\n","import isArrayLike from './is-array-like';\n\nconst filter = function (arr: T[], func: (v: T, idx: number) => boolean): T[] {\n if (!isArrayLike(arr)) {\n return arr;\n }\n const result: T[] = [];\n for (let index = 0; index < arr.length; index++) {\n const value = arr[index];\n if (func(value, index)) {\n result.push(value);\n }\n }\n\n return result;\n};\n\nexport default filter;\n","import filter from './filter';\nimport contains from './contains';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to inspect.\n * @param {Array} values The values to exclude.\n * @return {Array} Returns the new array of filtered values.\n * @example\n * difference([2, 1], [2, 3]); // => [1]\n */\nconst difference = function(arr: T[], values: T[] = []): T[] {\n return filter(arr, (value: any) => !contains(values, value));\n};\n\nexport default difference;\n","const toString = {}.toString;\n\nconst isType = (value: any, type: string): boolean => toString.call(value) === '[object ' + type + ']';\n\nexport default isType;\n","/**\n * 是否为函数\n * @param {*} fn 对象\n * @return {Boolean} 是否函数\n */\nimport isType from './is-type';\n\nexport default (value: any): value is Function => {\n return isType(value, 'Function');\n};\n","// isFinite,\nconst isNil = function(value: any): value is null | undefined {\n /**\n * isNil(null) => true\n * isNil() => true\n */\n return value === null || value === undefined;\n};\n\nexport default isNil;\n","import isType from './is-type';\n\nexport default (value: any): value is Array => {\n return Array.isArray ?\n Array.isArray(value) :\n isType(value, 'Array');\n}\n","export default (value: any): value is T => {\n /**\n * isObject({}) => true\n * isObject([1, 2, 3]) => true\n * isObject(Function) => true\n * isObject(null) => false\n */\n const type = typeof value;\n return value !== null && type === 'object' || type === 'function';\n};\n","import isArray from './is-array';\nimport isObject from './is-object';\n\nfunction each (elements: any[] | object, func: (v: any, k: any) => any): void {\n if (!elements) {\n return;\n }\n let rst;\n if (isArray(elements)) {\n for (let i = 0, len = elements.length; i < len; i++) {\n rst = func(elements[i], i);\n if (rst === false) {\n break;\n }\n }\n } else if (isObject(elements)) {\n for (const k in elements) {\n if (elements.hasOwnProperty(k)) {\n rst = func(elements[k], k);\n if (rst === false) {\n break;\n }\n }\n }\n }\n}\n\nexport default each;\n","import each from './each';\nimport isFunction from './is-function';\n\nconst keys = Object.keys ? obj => Object.keys(obj) : obj => {\n const result = [];\n each(obj, (value, key) => {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(key);\n }\n });\n return result;\n};\n\nexport default keys;\n","import isNil from './is-nil';\nimport keys from './keys';\n\nfunction isMatch(obj: any, attrs: any): boolean {\n const _keys = keys(attrs);\n const length = _keys.length;\n if (isNil(obj)) return !length;\n for (let i = 0; i < length; i += 1) {\n const key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isMatch;\n","const isObjectLike = function(value: any): value is object {\n /**\n * isObjectLike({}) => true\n * isObjectLike([1, 2, 3]) => true\n * isObjectLike(Function) => false\n * isObjectLike(null) => false\n */\n return typeof value === 'object' && value !== null;\n};\n\nexport default isObjectLike;\n","import isObjectLike from './is-object-like';\nimport isType from './is-type';\n\nconst isPlainObject = function(value: any): value is object {\n /**\n * isObjectLike(new Foo) => false\n * isObjectLike([1, 2, 3]) => false\n * isObjectLike({ x: 0, y: 0 }) => true\n * isObjectLike(Object.create(null)) => true\n */\n if (!isObjectLike(value) || !isType(value, 'Object')) {\n return false;\n }\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n let proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n};\n\nexport default isPlainObject;\n","import isFunction from './is-function';\nimport isMatch from './is-match';\nimport isArray from './is-array';\nimport isPlainObject from './is-plain-object';\n\nfunction find(arr: T[], predicate: Function): T;\nfunction find(arr: T[], predicate: object): T;\n\nfunction find(arr: T[], predicate: Function | object): T {\n if (!isArray(arr)) return null;\n\n let _predicate;\n if (isFunction(predicate)) {\n _predicate = predicate;\n }\n if (isPlainObject(predicate)) {\n _predicate = a => isMatch(a, predicate);\n }\n if (_predicate) {\n for (let i = 0; i < arr.length; i += 1) {\n if (_predicate(arr[i])) {\n return arr[i];\n }\n }\n }\n return null;\n}\n\nexport default find;\n","function findIndex(arr: T[], predicate: (item: T, idx?: number) => boolean, fromIndex: number = 0): number {\n for (let i = fromIndex; i < arr.length; i ++) {\n if (predicate(arr[i], i)) {\n // 找到终止循环\n return i;\n }\n }\n\n return -1;\n}\n\nexport default findIndex;\n","import isNil from './is-nil';\nimport isArray from './is-array';\n\nconst firstValue = function(data: object[], name: string): any {\n let rst = null;\n for (let i = 0; i < data.length; i++) {\n const obj = data[i];\n const value = obj[name];\n if (!isNil(value)) {\n if (isArray(value)) {\n rst = value[0]; // todo 这里是否应该使用递归,调用 firstValue @绝云\n } else {\n rst = value;\n }\n break;\n }\n }\n return rst;\n};\n\nexport default firstValue;\n","import isArray from './is-array';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flatten([1, [2, [3, [4]], 5]]); // => [1, 2, [3, [4]], 5]\n */\nconst flatten = function (arr: T[]): T[] {\n if (!isArray(arr)) {\n return [];\n }\n let rst: T[] = [];\n for (let i = 0; i < arr.length; i++) {\n rst = rst.concat(arr[i]);\n }\n return rst;\n};\n\nexport default flatten;\n","import isArray from './is-array';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @param {Array} result The array to return.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flattenDeep([1, [2, [3, [4]], 5]]); // => [1, 2, 3, 4, 5]\n */\nconst flattenDeep = function(arr: any[], result: any[] = []): any[] {\n if (!isArray(arr)) {\n result.push(arr);\n } else {\n for (let i = 0; i < arr.length; i += 1) {\n flattenDeep(arr[i], result);\n }\n }\n return result;\n};\n\nexport default flattenDeep;\n","import each from './each';\nimport isArray from './is-array';\n\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the maximum value.\n * @example\n *\n * max([1, 2]);\n * // => 2\n *\n * max([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * max(data);\n * // => 1250010\n * // Math.max(...data) will encounter \"Maximum call stack size exceeded\" error\n */\nexport default (arr: number[]): number | undefined => {\n if (!isArray(arr)) {\n return undefined;\n }\n return arr.reduce((prev, curr) => {\n return Math.max(prev, curr)\n }, arr[0]);\n};\n","import each from './each';\nimport isArray from './is-array';\n\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the minimum value.\n * @example\n *\n * min([1, 2]);\n * // => 1\n *\n * min([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * min(data);\n * // => 1250010\n * // Math.min(...data) will encounter \"Maximum call stack size exceeded\" error\n */\nexport default (arr: number[]): number | undefined => {\n if (!isArray(arr)) {\n return undefined;\n }\n return arr.reduce((prev, curr) => {\n return Math.min(prev, curr)\n }, arr[0]);\n};\n","import isArray from './is-array';\nimport { default as getMax } from './max';\nimport { default as getMin } from './min';\n\nexport interface RangeType {\n readonly min: number;\n readonly max: number;\n}\n\nconst getRange = function (values: number[]): RangeType {\n // 存在 NaN 时,min,max 判定会出问题\n let filterValues = values.filter((v) => !isNaN(v));\n if (!filterValues.length) {\n // 如果没有数值则直接返回0\n return {\n min: 0,\n max: 0,\n };\n }\n if (isArray(values[0])) {\n let tmp = [];\n for (let i = 0; i < values.length; i++) {\n tmp = tmp.concat(values[i]);\n }\n filterValues = tmp;\n }\n const max = getMax(filterValues);\n const min = getMin(filterValues);\n return {\n min,\n max,\n };\n};\n\nexport default getRange;\n","const arrPrototype = Array.prototype;\nconst splice = arrPrototype.splice;\nconst indexOf = arrPrototype.indexOf;\n\nconst pull = function(arr: T[], ...values: any[]): T[] {\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n let fromIndex = -1;\n while ((fromIndex = indexOf.call(arr, value)) > -1) {\n splice.call(arr, fromIndex, 1);\n }\n }\n return arr;\n};\n\nexport default pull;\n","import isArrayLike from './is-array-like';\n\nconst splice = Array.prototype.splice;\n\nconst pullAt = function pullAt (arr: T[], indexes: number[]): T[] {\n if (!isArrayLike(arr)) {\n return [];\n }\n let length = arr ? indexes.length : 0;\n const last = length - 1;\n\n while (length--) {\n let previous;\n const index = indexes[length];\n if (length === last || index !== previous) {\n previous = index;\n splice.call(arr, index, 1);\n }\n }\n return arr;\n};\n\nexport default pullAt;\n","import each from './each';\nimport isArray from './is-array';\nimport isPlainObject from './is-plain-object';\nimport { ObjectType } from './types';\n\nconst reduce = function(arr: G[]|ObjectType, fn: (result: T, data: G, idx: string | number) => T, init: T) {\n if (!isArray(arr) && !isPlainObject(arr)) {\n return arr;\n }\n let result = init;\n each(arr, (data, i) => {\n result = fn(result, data, i);\n });\n return result;\n};\n\nexport default reduce;\n","import isArrayLike from './is-array-like';\nimport pullAt from './pull-at';\n\nconst remove = function(arr: T[], predicate: (value: T, idx: number, arr?: T[]) => boolean): T[] {\n /**\n * const arr = [1, 2, 3, 4]\n * const evens = remove(arr, n => n % 2 == 0)\n * console.log(arr) // => [1, 3]\n * console.log(evens) // => [2, 4]\n */\n const result = [];\n if (!isArrayLike(arr)) {\n return result;\n }\n let i = -1;\n const indexes = [];\n const length = arr.length;\n\n while (++i < length) {\n const value = arr[i];\n if (predicate(value, i, arr)) {\n result.push(value);\n indexes.push(i);\n }\n }\n pullAt(arr, indexes);\n return result;\n};\n\nexport default remove;\n","import isType from './is-type';\n\nexport default (str: any): str is string => {\n return isType(str, 'String');\n}\n","import isArray from './is-array';\nimport isString from './is-string';\nimport isFunction from './is-function';\n\nexport interface ObjectType {\n [key: string]: T;\n}\n\nfunction sortBy (arr: ObjectType[], key: Function): ObjectType[];\nfunction sortBy (arr: ObjectType[], key: string): ObjectType[];\nfunction sortBy (arr: ObjectType[], key: string[]): ObjectType[];\n\nfunction sortBy (arr: ObjectType[], key: Function | string | string[]): ObjectType[] {\n let comparer;\n if (isFunction(key)) {\n comparer = (a, b) => key(a) - key(b);\n } else {\n let keys = [];\n if (isString(key)) {\n keys.push(key);\n } else if (isArray(key)) {\n keys = key;\n }\n comparer = (a, b) => {\n for (let i = 0; i < keys.length; i += 1) {\n const prop = keys[i];\n if (a[prop] > b[prop]) {\n return 1;\n }\n if (a[prop] < b[prop]) {\n return -1;\n }\n }\n return 0;\n };\n }\n\n arr.sort(comparer);\n return arr;\n}\n\nexport default sortBy;\n","export default function uniq(arr: any[], cache = new Map()) {\n const r = [];\n\n if (Array.isArray(arr)) {\n for (let i = 0, len = arr.length; i < len; i ++) {\n const item = arr[i];\n // 加一个 cache,提升性能\n if (!cache.has(item)) {\n r.push(item);\n cache.set(item, true);\n }\n }\n }\n return r;\n}\n","import uniq from './uniq';\n\nconst union = function(...sources) {\n return uniq([].concat(...sources));\n};\n\nexport default union;\n","import isArray from './is-array';\nimport isNil from './is-nil';\n\nexport default (data: any[], name: string): any[] => {\n const rst = [];\n const tmpMap = {};\n\n for (let i = 0; i < data.length; i++) {\n const obj = data[i];\n let value = obj[name] as string[];\n\n if (!isNil(value)) {\n // flatten\n if (!isArray(value)) {\n value = [ value ];\n }\n for (let j = 0; j < value.length; j++) {\n const val = value[j];\n // unique\n if (!tmpMap[val]) {\n rst.push(val);\n tmpMap[val] = true;\n }\n }\n }\n }\n\n return rst;\n};\n","import isArrayLike from './is-array-like';\n\nexport default function head(o: unknown) {\n if (isArrayLike(o)) {\n return (>o)[0];\n }\n return undefined;\n}\n","import isArrayLike from './is-array-like';\n\nexport default function last(o: unknown) {\n if (isArrayLike(o)) {\n const arr = o as ArrayLike;\n return arr[arr.length - 1];\n }\n return undefined;\n}\n","import isArray from './is-array';\nimport isString from './is-string';\n\nfunction startsWith(arr: string, e: string): boolean;\nfunction startsWith(arr: T[], e: T): boolean;\nfunction startsWith(arr: string | T[], e: string | T): boolean {\n return (isArray(arr) || isString(arr)) ? arr[0] === e : false;\n}\n\nexport default startsWith;\n","import isArray from './is-array';\nimport isString from './is-string';\n\nfunction endsWith(arr: string, e: string): boolean;\nfunction endsWith(arr: T[], e: T): boolean;\nfunction endsWith(arr: string | T[], e: string | T): boolean {\n return (isArray(arr) || isString(arr)) ? arr[arr.length - 1] === e : false;\n}\n\nexport default endsWith;\n","/**\n * 只要有一个不满足条件就返回 false\n * @param arr\n * @param func\n */\nconst every = function (arr: T[], func: (v: T, idx?: number) => any): boolean {\n for (let i = 0; i < arr.length; i ++) {\n if (!func(arr[i], i)) return false;\n }\n\n return true;\n};\n\nexport default every;\n","/**\n * 只要有一个满足条件就返回 true\n * @param arr\n * @param func\n */\nconst some = function (arr: T[], func: (v: T, idx?: number) => any): boolean {\n for (let i = 0; i < arr.length; i ++) {\n if (func(arr[i], i)) return true;\n }\n\n return false;\n};\n\nexport default some;\n","import isArray from './is-array';\nimport isFunction from './is-function';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nexport interface ObjectType {\n [key: string]: T[];\n}\n\nfunction groupBy(data: T[], condition: (item: T) => string): ObjectType;\nfunction groupBy(data: T[], condition: string): ObjectType;\nfunction groupBy(data: T[], condition: ((item: T) => string) | string): ObjectType {\n if (!condition || !isArray(data)) {\n return {};\n }\n const result: ObjectType = {};\n\n // 兼容方法和 字符串的写法\n const predicate = isFunction(condition) ? condition : (item) => item[condition];\n\n let key: string;\n for (let i = 0; i < data.length; i++) {\n const item = data[i];\n key = predicate(item);\n if (hasOwnProperty.call(result, key)) {\n result[key].push(item);\n } else {\n result[key] = [ item ];\n }\n }\n\n return result;\n}\n\nexport default groupBy;\n","import isArray from './is-array';\nimport isFunction from './is-function';\nimport groupBy from './group-by';\n\n/**\n * 将数据分组成 map\n * @param data \n * @param condition \n */\nexport default function groupToMap(data: any, condition: string[] | string | ((row: any) => string)) {\n if (!condition) {\n return {\n 0: data,\n };\n }\n if (!isFunction(condition)) {\n // 如果是字符串,则按照 a*b 风格成数组\n const paramscondition = isArray(condition) ? condition : condition.replace(/\\s+/g, '').split('*');\n condition = function (row) {\n let unique = '_'; // 避免出现数字作为Key的情况,会进行按照数字的排序\n \n // 根据字段列表的值,拼接成 key\n for (let i = 0, l = paramscondition.length; i < l; i++) {\n unique += row[paramscondition[i]] && row[paramscondition[i]].toString();\n }\n return unique;\n };\n }\n return groupBy(data, condition);\n}\n","import groupToMap from './group-to-map';\n\nexport default (data: T[], condition: ((v: T) => string) | string | string[]): T[][] => {\n if (!condition) {\n // 没有条件,则自身改成数组\n return [ data ];\n }\n const groups = groupToMap(data, condition) as { [key: string]: T };\n const array = [];\n for (const i in groups) {\n array.push(groups[i]);\n }\n return array;\n};\n","\n/**\n * 获取封装的事件\n * @protected\n * @param {Object} obj 对象\n * @param {String} action 事件名称\n * @return {Function} 返回事件处理函数\n */\nfunction getWrapBehavior(obj: object, action: string): Function {\n return obj['_wrap_' + action];\n}\n\nexport default getWrapBehavior;\n","\n/**\n * 封装事件,便于使用上下文this,和便于解除事件时使用\n * @protected\n * @param {Object} obj 对象\n * @param {String} action 事件名称\n * @return {Function} 返回事件处理函数\n */\nfunction wrapBehavior(obj: object, action: string): Function {\n if (obj['_wrap_' + action]) {\n return obj['_wrap_' + action];\n }\n const method = e => {\n obj[action](e);\n };\n obj['_wrap_' + action] = method;\n return method;\n}\n\nexport default wrapBehavior;\n","const numColorCache = {};\n\nfunction numberToColor(num: number): string {\n // 增加缓存\n let color = numColorCache[num];\n if (!color) {\n let str = num.toString(16);\n for (let i = str.length; i < 6; i++) {\n str = '0' + str;\n }\n color = '#' + str;\n numColorCache[num] = color;\n }\n return color;\n}\n\nexport default numberToColor;\n","import isArray from './is-array';\n\nexport interface RadiusType {\n r1: number;\n r2: number;\n r3: number;\n r4: number;\n}\n\nfunction parseRadius(radius: number): RadiusType;\nfunction parseRadius(radius: number[]): RadiusType;\n\nfunction parseRadius(radius: number | number[]): RadiusType {\n let r1 = 0,\n r2 = 0,\n r3 = 0,\n r4 = 0;\n if (isArray(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n } else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n } else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n } else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n } else {\n r1 = r2 = r3 = r4 = radius;\n }\n return {\n r1,\n r2,\n r3,\n r4\n };\n}\n\nexport default parseRadius;\n","const clamp = function(a: number, min: number, max: number): number {\n if (a < min) {\n return min;\n } else if (a > max) {\n return max;\n }\n return a;\n};\n\nexport default clamp;\n","const fixedBase = function(v: number, base: number | string): number {\n const str = base.toString();\n const index = str.indexOf('.');\n if (index === -1) {\n return Math.round(v);\n }\n let length = str.substr(index + 1).length;\n if (length > 20) {\n length = 20;\n }\n return parseFloat(v.toFixed(length));\n};\n\nexport default fixedBase;\n","/**\n * 判断是否数字\n * @return {Boolean} 是否数字\n */\nimport isType from './is-type';\n\nconst isNumber = function(value: any): value is number {\n return isType(value, 'Number');\n};\nexport default isNumber;\n","import isNumber from './is-number';\n\nconst isDecimal = function(num: any): boolean {\n return isNumber(num) && num % 1 !== 0;\n};\n\nexport default isDecimal;\n","import isNumber from './is-number';\n\nconst isEven = function(num: any): boolean {\n return isNumber(num) && num % 2 === 0;\n};\n\nexport default isEven;\n","import isNumber from './is-number';\n\nconst isInteger = Number.isInteger ? Number.isInteger : function(num: any): boolean {\n return isNumber(num) && num % 1 === 0;\n};\n\nexport default isInteger;\n","import isNumber from './is-number';\n\nconst isNegative = function(num: any): boolean {\n return isNumber(num) && num < 0;\n};\n\nexport default isNegative;\n","const PRECISION = 0.00001; // numbers less than this is considered as 0\n\nexport default function isNumberEqual(a: number, b: number, precision: number = PRECISION): boolean {\n return Math.abs((a - b)) < precision;\n};\n","import isNumber from './is-number';\n\nconst isOdd = function(num: any): boolean {\n return isNumber(num) && num % 2 !== 0;\n};\n\nexport default isOdd;\n","import isNumber from './is-number';\n\nconst isPositive = function(num: any): boolean {\n return isNumber(num) && num > 0;\n};\n\nexport default isPositive;\n","import each from './each';\nimport isArray from './is-array';\nimport isFunction from './is-function';\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nexport default (arr: T[], fn: ((v: T) => number) | string): T | undefined => {\n if (!isArray(arr)) {\n return undefined;\n }\n\n let maxItem;\n let max = -Infinity;\n\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n const v = isFunction(fn) ? fn(item) : item[fn];\n \n if (v > max) {\n maxItem = item;\n max = v;\n }\n }\n\n return maxItem;\n};\n","import each from './each';\nimport isArray from './is-array';\nimport isFunction from './is-function';\n\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nexport default (arr: T[], fn: ((v: T) => number) | string): T | undefined => {\n if (!isArray(arr)) {\n return undefined;\n }\n\n let minItem;\n let min = Infinity;\n\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n const v = isFunction(fn) ? fn(item) : item[fn];\n \n if (v < min) {\n minItem = item;\n min = v;\n }\n }\n\n return minItem;\n};\n","const mod = function(n: number, m: number): number {\n return ((n % m) + m) % m;\n};\n\nexport default mod;\n","const DEGREE = 180 / Math.PI;\n\nconst toDegree = function(radian: number): number {\n return DEGREE * radian;\n};\n\nexport default toDegree;\n","export default parseInt;\n","const RADIAN = Math.PI / 180;\n\nconst toRadian = function(degree: number): number {\n return RADIAN * degree;\n};\n\nexport default toRadian;\n","import each from './each';\n\nexport default each;\n","export default (obj: object, key: any): boolean => obj.hasOwnProperty(key);\n","import has from './has';\nexport default has;\n","import each from './each';\nimport isFunction from './is-function';\n\n// @ts-ignore\nconst values = Object.values ? obj => Object.values(obj) : obj => {\n const result = [];\n each(obj, (value, key) => {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(value);\n }\n });\n return result;\n};\n\nexport default values;\n","import contains from './contains';\nimport values from './values';\n\nexport default (obj: object, value: any): boolean => contains(values(obj), value);\n","import isNil from './is-nil';\n\nexport default (value: any): string => {\n if (isNil(value)) return '';\n return value.toString();\n}\n","import toString from './to-string';\n\nconst lowerCase = function(str: string): string {\n return toString(str).toLowerCase();\n};\n\nexport default lowerCase;\n","import toString from './to-string';\n\nconst lowerFirst = function(value: string): string {\n const str = toString(value);\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\nexport default lowerFirst;\n","export interface ObjectType {\n [key: string]: T;\n}\n\nfunction substitute (str: string, o: ObjectType) {\n if (!str || !o) {\n return str;\n }\n return str.replace(/\\\\?\\{([^{}]+)\\}/g, (match, name): any => {\n if (match.charAt(0) === '\\\\') {\n return match.slice(1);\n }\n return (o[name] === undefined) ? '' : o[name];\n });\n}\n\nexport default substitute;\n","import toString from './to-string';\n\nconst upperCase = function(str: string): string {\n return toString(str).toUpperCase();\n};\n\nexport default upperCase;\n","import toString from './to-string';\n\nconst upperFirst = function(value: string): string {\n const str = toString(value);\n return str.charAt(0).toUpperCase() + str.substring(1);\n};\n\nexport default upperFirst;\n","const toString = {}.toString;\n\nconst getType = function(value: any): string {\n return toString.call(value).replace(/^\\[object /, '').replace(/]$/, '');\n};\n\nexport default getType;\n","/**\n * 是否是参数类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\nimport isType from './is-type';\n\nconst isArguments = function(value: any): boolean {\n return isType(value, 'Arguments');\n};\n\nexport default isArguments;\n","/**\n * 是否是布尔类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\nimport isType from './is-type';\n\nconst isBoolean = function(value: any): value is boolean {\n return isType(value, 'Boolean');\n};\n\nexport default isBoolean;\n","import isType from './is-type';\n\nconst isDate = function(value: any): value is Date {\n return isType(value, 'Date');\n};\n\nexport default isDate;\n","/**\n * 是否是参数类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\nimport isType from './is-type';\n\nconst isError = function(value: any): value is Error {\n return isType(value, 'Error');\n};\n\nexport default isError;\n","/**\n * 判断是否为有限数\n * @return {Boolean}\n */\nimport isNumber from './is-number';\n\nexport default function(value: any) : value is number {\n return isNumber(value) && isFinite(value)\n}\n\n\n","const isNull = function(value): value is null {\n return value === null;\n};\n\nexport default isNull;\n","const objectProto = Object.prototype;\n\nconst isPrototype = function(value: any): boolean {\n const Ctor = value && value.constructor;\n const proto = (typeof Ctor === 'function' && Ctor.prototype) || objectProto;\n return value === proto;\n};\n\nexport default isPrototype;\n","import isType from './is-type';\n\nconst isRegExp = function(str: any): str is RegExp {\n return isType(str, 'RegExp');\n};\n\nexport default isRegExp;\n","const isUndefined = function(value: any): value is undefined {\n return value === undefined;\n};\n\nexport default isUndefined;\n","/**\n * 判断是否HTML元素\n * @return {Boolean} 是否HTML元素\n */\nconst isElement = function(o: any): boolean {\n return o instanceof Element || o instanceof HTMLDocument;\n};\nexport default isElement;\n","export default function requestAnimationFrame(fn: FrameRequestCallback) {\n const method = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n // @ts-ignore\n window.mozRequestAnimationFrame ||\n // @ts-ignore\n window.msRequestAnimationFrame ||\n function(f) {\n return setTimeout(f, 16);\n };\n\n return method(fn);\n};\n","export default function cancelAnimationFrame(handler: number) {\n const method = window.cancelAnimationFrame ||\n window.webkitCancelAnimationFrame ||\n // @ts-ignore\n window.mozCancelAnimationFrame ||\n // @ts-ignore\n window.msCancelAnimationFrame ||\n clearTimeout;\n\n method(handler);\n};\n","// FIXME: Mutable param should be forbidden in static lang.\nfunction _mix(dist: Base & Source, obj: Source): void {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && key !== 'constructor' && obj[key] !== undefined) {\n (dist)[key] = obj[key];\n }\n }\n}\n\nexport default function mix(dist: Base & A & B & C, src1?: A, src2?: B, src3?: C): Base & A & B & C {\n if (src1) _mix(dist, src1);\n if (src2) _mix(dist, src2);\n if (src3) _mix(dist, src3);\n return dist;\n}\n","import mix from './mix';\nimport isFunction from './is-function';\nimport toArray from './to-array';\n\nconst augment = function(...args:any[]) {\n const c = args[0];\n for (let i = 1; i < args.length; i++) {\n let obj = args[i];\n if (isFunction(obj)) {\n obj = obj.prototype;\n }\n mix(c.prototype, obj);\n }\n};\n\nexport default augment;\n","import isArray from './is-array';\n\nconst clone = function(obj) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n let rst;\n if (isArray(obj)) {\n rst = [];\n for (let i = 0, l = obj.length; i < l; i++) {\n if (typeof obj[i] === 'object' && obj[i] != null) {\n rst[i] = clone(obj[i]);\n } else {\n rst[i] = obj[i];\n }\n }\n } else {\n rst = {};\n for (const k in obj) {\n if (typeof obj[k] === 'object' && obj[k] != null) {\n rst[k] = clone(obj[k]);\n } else {\n rst[k] = obj[k];\n }\n }\n }\n\n return rst;\n};\n\nexport default clone;\n","\nfunction debounce(func: Function, wait?: number, immediate?: boolean) {\n let timeout;\n return function() {\n const context = this,\n args = arguments;\n const later = function() {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n\nexport default debounce;\n","import isFunction from './is-function';\n\n/**\n * _.memoize(calColor);\n * _.memoize(calColor, (...args) => args[0]);\n * @param f\n * @param resolver\n */\nexport default (f: Function, resolver?: (...args: any[]) => string) => {\n if (!isFunction(f)) {\n throw new TypeError('Expected a function')\n }\n\n const memoized = function(...args) {\n // 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key\n const key = resolver ? resolver.apply(this, args) : args[0];\n const cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key)\n }\n const result = f.apply(this, args);\n // 缓存起来\n cache.set(key, result);\n return result\n };\n\n memoized.cache = new Map();\n\n return memoized\n}\n","import isArray from './is-array';\nimport isPlainObject from './is-plain-object';\n\nconst MAX_MIX_LEVEL = 5;\n\nfunction _deepMix(dist, src, level?, maxLevel?) {\n level = level || 0;\n maxLevel = maxLevel || MAX_MIX_LEVEL;\n for (const key in src) {\n if (src.hasOwnProperty(key)) {\n const value = src[key];\n if (value !== null && isPlainObject(value)) {\n if (!isPlainObject(dist[key])) {\n dist[key] = {};\n }\n if (level < maxLevel) {\n _deepMix(dist[key], value, level + 1, maxLevel);\n } else {\n dist[key] = src[key];\n }\n } else if (isArray(value)) {\n dist[key] = [];\n dist[key] = dist[key].concat(value);\n } else if (value !== undefined) {\n dist[key] = value;\n }\n }\n }\n}\n\n// todo 重写\nconst deepMix = function(rst:any, ...args:any[]) {\n for (let i = 0; i < args.length; i += 1) {\n _deepMix(rst, args[i]);\n }\n return rst;\n};\n\nexport default deepMix;\n","import mix from './mix';\nimport isFunction from './is-function';\n\nconst extend = function(subclass, superclass, overrides?, staticOverrides?) {\n // 如果只提供父类构造函数,则自动生成子类构造函数\n if (!isFunction(superclass)) {\n overrides = superclass;\n superclass = subclass;\n subclass = function() {};\n }\n\n const create = Object.create ?\n function(proto, c) {\n return Object.create(proto, {\n constructor: {\n value: c\n }\n });\n } :\n function(proto, c) {\n function Tmp() {}\n Tmp.prototype = proto;\n const o = new Tmp();\n o.constructor = c;\n return o;\n };\n\n const superObj = create(superclass.prototype, subclass); // new superclass(),//实例化父类作为子类的prototype\n subclass.prototype = mix(superObj, subclass.prototype); // 指定子类的prototype\n subclass.superclass = create(superclass.prototype, superclass);\n mix(superObj, overrides);\n mix(subclass, staticOverrides);\n return subclass;\n};\n\nexport default extend;\n","import isArrayLike from './is-array-like';\n\nconst indexOf = function (arr: T[], obj: T): number {\n if (!isArrayLike(arr)) {\n return -1;\n }\n const m = Array.prototype.indexOf;\n if (m) {\n return m.call(arr, obj);\n }\n let index = -1;\n\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] === obj) {\n index = i;\n break;\n }\n }\n return index;\n};\n\nexport default indexOf;\n","import isNil from './is-nil';\nimport isArrayLike from './is-array-like';\nimport getType from './get-type';\nimport isPrototype from './is-prototype';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isEmpty(value: any): boolean {\n /**\n * isEmpty(null) => true\n * isEmpty() => true\n * isEmpty(true) => true\n * isEmpty(1) => true\n * isEmpty([1, 2, 3]) => false\n * isEmpty('abc') => false\n * isEmpty({ a: 1 }) => false\n */\n if (isNil(value)) {\n return true;\n }\n if (isArrayLike(value)) {\n return !value.length;\n }\n const type = getType(value);\n if (type === 'Map' || type === 'Set') {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !Object.keys(value).length;\n }\n for (const key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isEmpty;\n","import isObjectLike from './is-object-like';\nimport isArrayLike from './is-array-like';\nimport isString from './is-string';\n\nconst isEqual = (value: any, other: any): boolean => {\n if (value === other) {\n return true;\n }\n if (!value || !other) {\n return false;\n }\n if (isString(value) || isString(other)) {\n return false;\n }\n if (isArrayLike(value) || isArrayLike(other)) {\n if (value.length !== other.length) {\n return false;\n }\n let rst = true;\n for (let i = 0; i < value.length; i++) {\n rst = isEqual(value[i], other[i]);\n if (!rst) {\n break;\n }\n }\n return rst;\n }\n if (isObjectLike(value) || isObjectLike(other)) {\n const valueKeys = Object.keys(value);\n const otherKeys = Object.keys(other);\n if (valueKeys.length !== otherKeys.length) {\n return false;\n }\n let rst = true;\n for (let i = 0; i < valueKeys.length; i++) {\n rst = isEqual(value[valueKeys[i]], other[valueKeys[i]]);\n if (!rst) {\n break;\n }\n }\n return rst;\n }\n return false;\n};\n\nexport default isEqual;\n","import isFunction from './is-function';\nimport isEqual from './is-equal';\n/**\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [fn] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * isEqualWith(array, other, customizer); // => true\n */\n\nexport default (value: T, other: T, fn: (v1: T, v2: T) => boolean): boolean => {\n if (!isFunction(fn)) {\n return isEqual(value, other);\n }\n return !!fn(value, other);\n};\n","import isArrayLike from './is-array-like';\n\nconst map = (arr: T[], func: (v: T, idx: number) => G): G[] => {\n if (!isArrayLike(arr)) {\n // @ts-ignore\n return arr;\n }\n const result: G[] = [];\n\n for (let index = 0; index < arr.length; index++) {\n const value = arr[index];\n result.push(func(value, index));\n }\n return result;\n};\n\nexport default map;\n","import isNil from './is-nil';\nimport isObject from './is-object'\n\nconst identity = (v: T): T => v;\n\ninterface _Type {\n [key: string]: T;\n}\n\nexport default (object: { [key: string]: T }, func: (value: T, key: string) => any = identity): { [key: string]: any } => {\n const r: _Type = {};\n if (isObject(object) && !isNil(object)) {\n Object.keys(object).forEach(key => {\n // @ts-ignore\n r[key] = func(object[key], key);\n });\n }\n return r;\n}\n","import isString from './is-string';\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param key\n * @param defaultValue\n */\nexport default (obj: any, key: string | any[], defaultValue?: any): any => {\n let p = 0;\n\n const keyArr = isString(key) ? key.split('.') : key;\n\n while (obj && p < keyArr.length) {\n obj = obj[keyArr[p++]];\n }\n\n return (obj === undefined || p < keyArr.length) ? defaultValue : obj;\n}\n","import isObject from './is-object';\nimport isString from './is-string';\nimport isNumber from './is-number';\n\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param path\n * @param value\n */\nexport default (obj: any, path: string | any[], value: any): any => {\n let o = obj;\n\n const keyArr = isString(path) ? path.split('.') : path;\n\n keyArr.forEach((key: string | number, idx: number) => {\n // 不是最后一个\n if (idx < keyArr.length - 1) {\n if (!isObject(o[key])) {\n o[key] = isNumber(keyArr[idx + 1]) ? [] : {};\n }\n o = o[key]\n } else {\n o[key] = value;\n }\n });\n\n return obj;\n}\n","import each from './each';\nimport isPlainObject from './is-plain-object';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @param {Object} object The source object.\n * @param {...(string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n * pick(object, ['a', 'c']); // => { 'a': 1, 'c': 3 }\n */\n\nexport interface ObjectType {\n [key: string]: T;\n}\n\nexport default (object: ObjectType, keys: string[]): ObjectType => {\n if (object === null || !isPlainObject(object)) {\n return {};\n }\n const result: ObjectType = {};\n each(keys, key => {\n if (hasOwnProperty.call(object, key)) {\n result[key] = object[key];\n }\n });\n return result;\n};\n","import reduce from './reduce';\nimport { ObjectType } from './types';\n\nexport default (obj: ObjectType, keys: string[]): ObjectType => {\n return reduce(\n obj,\n (r: ObjectType, curr: T, key: string) => {\n if (!keys.includes(key)) {\n r[key] = curr;\n }\n return r;\n },\n {}\n );\n}\n","export interface OptionsType {\n leading?: boolean;\n trailing?: boolean;\n}\n\nexport default (func: Function, wait: number, options: OptionsType): Function => {\n let timeout,\n context,\n args,\n result;\n let previous = 0;\n if (!options) options = {};\n\n const later = function() {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n const throttled = function() {\n const now = Date.now();\n if (!previous && options.leading === false) previous = now;\n const remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n","import isArrayLike from './is-array-like';\n\nexport default (value: any): any[] => {\n return isArrayLike(value) ? Array.prototype.slice.call(value) : [];\n}\n","const map = {};\n\nexport default (prefix?: string): string => {\n prefix = prefix || 'g';\n if (!map[prefix]) {\n map[prefix] = 1;\n } else {\n map[prefix] += 1;\n }\n return prefix + map[prefix];\n};\n","export default () => {};\n","export default (v: T): T => v;\n","import isNil from './is-nil';\nimport isArraylike from './is-array-like';\n\nexport default function size(o: unknown) {\n if (isNil(o)) {\n return 0;\n }\n if (isArraylike(o)) {\n return (>o).length;\n }\n return Object.keys(o).length;\n}\n","import values from './values';\nimport memoize from './memoize';\nimport isString from './is-string';\nimport type { Properties } from 'csstype';\n\nexport type Font = Pick & {\n fontSize?: number;\n};\n\nlet ctx: CanvasRenderingContext2D;\n\n/**\n * 计算文本的宽度\n */\nexport default memoize(\n (text: any, font: Font = {}): number => {\n const { fontSize, fontFamily, fontWeight, fontStyle, fontVariant } = font;\n if (!ctx) {\n ctx = document.createElement('canvas').getContext('2d') as CanvasRenderingContext2D;\n }\n ctx!.font = [fontStyle, fontVariant, fontWeight, `${fontSize}px`, fontFamily].join(' ');\n return ctx!.measureText(isString(text) ? text : '').width;\n },\n (text: any, font: Font = {}) => [text, ...values(font)].join('')\n);\n","import isString from './is-string';\nimport toString from './to-string';\nimport { Font, default as measureTextWidth } from './measure-text-width';\n\n/**\n * 获取文本的 ... 文本。\n * 算法(减少每次 measureText 的长度,measureText 的性能跟字符串时间相关):\n * 1. 先通过 STEP 逐步计算,找到最后一个小于 maxWidth 的字符串\n * 2. 然后对最后这个字符串二分计算\n * @param text 需要计算的文本, 由于历史原因 除了支持string,还支持空值,number和数组等\n * @param maxWidth 最大宽度\n * @param font 字体\n * @param str 要替换的文本\n */\nexport default (text: string | number, maxWidth: number, font?: Font, str: string = '...') => {\n const STEP = 16; // 每次 16,调参工程师\n const PLACEHOLDER_WIDTH = measureTextWidth(str, font);\n let leftText = !isString(text) ? toString(text) : text;\n\n let leftWidth = maxWidth;\n\n const r = []; // 最终的分段字符串\n let currentText;\n let currentWidth;\n\n if (measureTextWidth(text, font) <= maxWidth) {\n return text;\n }\n\n // 首先通过 step 计算,找出最大的未超出长度的\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // 更新字符串\n currentText = leftText.substr(0, STEP);\n // 计算宽度\n currentWidth = measureTextWidth(currentText, font);\n // 超出剩余宽度,则停止\n if (currentWidth + PLACEHOLDER_WIDTH > leftWidth) {\n if (currentWidth > leftWidth) {\n break;\n }\n }\n\n r.push(currentText);\n // 没有超出,则计算剩余宽度\n leftWidth -= currentWidth;\n leftText = leftText.substr(STEP);\n // 字符串整体没有超出\n if (!leftText) {\n return r.join('');\n }\n }\n\n // 最下的最后一个 STEP,使用 1 递增(用二分效果更高)\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // 更新字符串\n currentText = leftText.substr(0, 1);\n // 计算宽度\n currentWidth = measureTextWidth(currentText, font);\n // 超出剩余宽度,则停止\n if (currentWidth + PLACEHOLDER_WIDTH > leftWidth) {\n break;\n }\n r.push(currentText);\n // 没有超出,则计算剩余宽度\n leftWidth -= currentWidth;\n leftText = leftText.substr(1);\n\n if (!leftText) {\n return r.join('');\n }\n }\n return `${r.join('')}${str}`;\n};\n","/**\n * k-v 存储\n */\nexport default class {\n map: { [key: string]: T } = {};\n\n has(key: string): boolean {\n return this.map[key] !== undefined;\n }\n\n get(key: string, def?: T): T | undefined {\n const v = this.map[key];\n return v === undefined ? def : v;\n }\n\n set(key: string, value: T): void {\n this.map[key] = value;\n }\n\n clear() {\n this.map = {};\n }\n\n delete(key: string) {\n delete this.map[key];\n }\n\n size(): number {\n return Object.keys(this.map).length;\n }\n}\n","var v1 = require('./v1');\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\n\nmodule.exports = uuid;\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([\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++]],\n bth[buf[i++]], bth[buf[i++]]\n ]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\nvar _clockseq;\n\n// Previous uuid creation time\nvar _lastMSecs = 0;\nvar _lastNSecs = 0;\n\n// See https://github.com/uuidjs/uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n if (node == null || clockseq == null) {\n var seedBytes = rng();\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [\n seedBytes[0] | 0x01,\n seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]\n ];\n }\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n }\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\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\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || defaults.transitional;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","module.exports = {\n \"version\": \"0.26.0\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar VERSION = require('../env/data').version;\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return toString.call(val) === '[object FormData]';\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return toString.call(val) === '[object URLSearchParams]';\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","import {\n BLOCK_SIZE,\n DIGEST_LENGTH,\n INIT,\n KEY,\n MAX_HASHABLE_LENGTH\n} from \"./constants\";\n\n/**\n * @internal\n */\nexport class RawSha256 {\n private state: Int32Array = Int32Array.from(INIT);\n private temp: Int32Array = new Int32Array(64);\n private buffer: Uint8Array = new Uint8Array(64);\n private bufferLength: number = 0;\n private bytesHashed: number = 0;\n\n /**\n * @internal\n */\n finished: boolean = false;\n\n update(data: Uint8Array): void {\n if (this.finished) {\n throw new Error(\"Attempted to update an already finished hash.\");\n }\n\n let position = 0;\n let { byteLength } = data;\n this.bytesHashed += byteLength;\n\n if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) {\n throw new Error(\"Cannot hash more than 2^53 - 1 bits\");\n }\n\n while (byteLength > 0) {\n this.buffer[this.bufferLength++] = data[position++];\n byteLength--;\n\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n }\n\n digest(): Uint8Array {\n if (!this.finished) {\n const bitsHashed = this.bytesHashed * 8;\n const bufferView = new DataView(\n this.buffer.buffer,\n this.buffer.byteOffset,\n this.buffer.byteLength\n );\n\n const undecoratedLength = this.bufferLength;\n bufferView.setUint8(this.bufferLength++, 0x80);\n\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (let i = this.bufferLength; i < BLOCK_SIZE; i++) {\n bufferView.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n\n for (let i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n bufferView.setUint8(i, 0);\n }\n bufferView.setUint32(\n BLOCK_SIZE - 8,\n Math.floor(bitsHashed / 0x100000000),\n true\n );\n bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed);\n\n this.hashBuffer();\n\n this.finished = true;\n }\n\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n const out = new Uint8Array(DIGEST_LENGTH);\n for (let i = 0; i < 8; i++) {\n out[i * 4] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n\n return out;\n }\n\n private hashBuffer(): void {\n const { buffer, state } = this;\n\n let state0 = state[0],\n state1 = state[1],\n state2 = state[2],\n state3 = state[3],\n state4 = state[4],\n state5 = state[5],\n state6 = state[6],\n state7 = state[7];\n\n for (let i = 0; i < BLOCK_SIZE; i++) {\n if (i < 16) {\n this.temp[i] =\n ((buffer[i * 4] & 0xff) << 24) |\n ((buffer[i * 4 + 1] & 0xff) << 16) |\n ((buffer[i * 4 + 2] & 0xff) << 8) |\n (buffer[i * 4 + 3] & 0xff);\n } else {\n let u = this.temp[i - 2];\n const t1 =\n ((u >>> 17) | (u << 15)) ^ ((u >>> 19) | (u << 13)) ^ (u >>> 10);\n\n u = this.temp[i - 15];\n const t2 =\n ((u >>> 7) | (u << 25)) ^ ((u >>> 18) | (u << 14)) ^ (u >>> 3);\n\n this.temp[i] =\n ((t1 + this.temp[i - 7]) | 0) + ((t2 + this.temp[i - 16]) | 0);\n }\n\n const t1 =\n ((((((state4 >>> 6) | (state4 << 26)) ^\n ((state4 >>> 11) | (state4 << 21)) ^\n ((state4 >>> 25) | (state4 << 7))) +\n ((state4 & state5) ^ (~state4 & state6))) |\n 0) +\n ((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) |\n 0;\n\n const t2 =\n ((((state0 >>> 2) | (state0 << 30)) ^\n ((state0 >>> 13) | (state0 << 19)) ^\n ((state0 >>> 22) | (state0 << 10))) +\n ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) |\n 0;\n\n state7 = state6;\n state6 = state5;\n state5 = state4;\n state4 = (state3 + t1) | 0;\n state3 = state2;\n state2 = state1;\n state1 = state0;\n state0 = (t1 + t2) | 0;\n }\n\n state[0] += state0;\n state[1] += state1;\n state[2] += state2;\n state[3] += state3;\n state[4] += state4;\n state[5] += state5;\n state[6] += state6;\n state[7] += state7;\n }\n}\n","/**\n * @internal\n */\nexport const BLOCK_SIZE: number = 64;\n\n/**\n * @internal\n */\nexport const DIGEST_LENGTH: number = 32;\n\n/**\n * @internal\n */\nexport const KEY = new Uint32Array([\n 0x428a2f98,\n 0x71374491,\n 0xb5c0fbcf,\n 0xe9b5dba5,\n 0x3956c25b,\n 0x59f111f1,\n 0x923f82a4,\n 0xab1c5ed5,\n 0xd807aa98,\n 0x12835b01,\n 0x243185be,\n 0x550c7dc3,\n 0x72be5d74,\n 0x80deb1fe,\n 0x9bdc06a7,\n 0xc19bf174,\n 0xe49b69c1,\n 0xefbe4786,\n 0x0fc19dc6,\n 0x240ca1cc,\n 0x2de92c6f,\n 0x4a7484aa,\n 0x5cb0a9dc,\n 0x76f988da,\n 0x983e5152,\n 0xa831c66d,\n 0xb00327c8,\n 0xbf597fc7,\n 0xc6e00bf3,\n 0xd5a79147,\n 0x06ca6351,\n 0x14292967,\n 0x27b70a85,\n 0x2e1b2138,\n 0x4d2c6dfc,\n 0x53380d13,\n 0x650a7354,\n 0x766a0abb,\n 0x81c2c92e,\n 0x92722c85,\n 0xa2bfe8a1,\n 0xa81a664b,\n 0xc24b8b70,\n 0xc76c51a3,\n 0xd192e819,\n 0xd6990624,\n 0xf40e3585,\n 0x106aa070,\n 0x19a4c116,\n 0x1e376c08,\n 0x2748774c,\n 0x34b0bcb5,\n 0x391c0cb3,\n 0x4ed8aa4a,\n 0x5b9cca4f,\n 0x682e6ff3,\n 0x748f82ee,\n 0x78a5636f,\n 0x84c87814,\n 0x8cc70208,\n 0x90befffa,\n 0xa4506ceb,\n 0xbef9a3f7,\n 0xc67178f2\n]);\n\n/**\n * @internal\n */\nexport const INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19\n];\n\n/**\n * @internal\n */\nexport const MAX_HASHABLE_LENGTH = 2 ** 53 - 1;\n","export * from \"./jsSha256\";\n","import { BLOCK_SIZE } from \"./constants\";\nimport { RawSha256 } from \"./RawSha256\";\nimport { Hash, SourceData } from \"@aws-sdk/types\";\nimport { fromUtf8 } from \"@aws-sdk/util-utf8-browser\";\n\nexport class Sha256 implements Hash {\n private readonly hash = new RawSha256();\n private readonly outer?: RawSha256;\n private error: any;\n\n constructor(secret?: SourceData) {\n if (secret) {\n this.outer = new RawSha256();\n const inner = bufferFromSecret(secret);\n const outer = new Uint8Array(BLOCK_SIZE);\n outer.set(inner);\n\n for (let i = 0; i < BLOCK_SIZE; i++) {\n inner[i] ^= 0x36;\n outer[i] ^= 0x5c;\n }\n\n this.hash.update(inner);\n this.outer.update(outer);\n\n // overwrite the copied key in memory\n for (let i = 0; i < inner.byteLength; i++) {\n inner[i] = 0;\n }\n }\n }\n\n update(toHash: SourceData): void {\n if (isEmptyData(toHash) || this.error) {\n return;\n }\n\n try {\n this.hash.update(convertToBuffer(toHash));\n } catch (e) {\n this.error = e;\n }\n }\n\n /* This synchronous method keeps compatibility\n * with the v2 aws-sdk.\n */\n digestSync(): Uint8Array {\n if (this.error) {\n throw this.error;\n }\n\n if (this.outer) {\n if (!this.outer.finished) {\n this.outer.update(this.hash.digest());\n }\n\n return this.outer.digest();\n }\n\n return this.hash.digest();\n }\n\n /* The underlying digest method here is synchronous.\n * To keep the same interface with the other hash functions\n * the default is to expose this as an async method.\n * However, it can sometimes be useful to have a sync method.\n */\n async digest(): Promise {\n return this.digestSync();\n }\n}\n\nfunction bufferFromSecret(secret: SourceData): Uint8Array {\n let input = convertToBuffer(secret);\n\n if (input.byteLength > BLOCK_SIZE) {\n const bufferHash = new RawSha256();\n bufferHash.update(input);\n input = bufferHash.digest();\n }\n\n const buffer = new Uint8Array(BLOCK_SIZE);\n buffer.set(input);\n return buffer;\n}\n\nfunction isEmptyData(data: SourceData): boolean {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n\n return data.byteLength === 0;\n}\n\nfunction convertToBuffer(data: SourceData): Uint8Array {\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(\n data.buffer,\n data.byteOffset,\n data.byteLength / Uint8Array.BYTES_PER_ELEMENT\n );\n }\n\n return new Uint8Array(data);\n}\n","import { fromUtf8 as jsFromUtf8, toUtf8 as jsToUtf8 } from \"./pureJs\";\nimport { fromUtf8 as textEncoderFromUtf8, toUtf8 as textEncoderToUtf8 } from \"./whatwgEncodingApi\";\n\ndeclare const TextDecoder: Function | undefined;\ndeclare const TextEncoder: Function | undefined;\n\nexport const fromUtf8 = (input: string): Uint8Array =>\n typeof TextEncoder === \"function\" ? textEncoderFromUtf8(input) : jsFromUtf8(input);\n\nexport const toUtf8 = (input: Uint8Array): string =>\n typeof TextDecoder === \"function\" ? textEncoderToUtf8(input) : jsToUtf8(input);\n","/**\n * A declaration of the global TextEncoder and TextDecoder constructors.\n *\n * @see https://encoding.spec.whatwg.org/\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Encoding {\n interface TextDecoderOptions {\n fatal?: boolean;\n ignoreBOM?: boolean;\n }\n\n interface TextDecodeOptions {\n stream?: boolean;\n }\n\n interface TextDecoder {\n readonly encoding: string;\n readonly fatal: boolean;\n readonly ignoreBOM: boolean;\n decode(input?: ArrayBuffer | ArrayBufferView, options?: TextDecodeOptions): string;\n }\n\n export interface TextDecoderConstructor {\n new (label?: string, options?: TextDecoderOptions): TextDecoder;\n }\n\n interface TextEncoder {\n readonly encoding: \"utf-8\";\n encode(input?: string): Uint8Array;\n }\n\n export interface TextEncoderConstructor {\n new (): TextEncoder;\n }\n}\n\ndeclare const TextDecoder: Encoding.TextDecoderConstructor;\n\ndeclare const TextEncoder: Encoding.TextEncoderConstructor;\n\nexport function fromUtf8(input: string): Uint8Array {\n return new TextEncoder().encode(input);\n}\n\nexport function toUtf8(input: Uint8Array): string {\n return new TextDecoder(\"utf-8\").decode(input);\n}\n","/**\n * Converts a JS string from its native UCS-2/UTF-16 representation into a\n * Uint8Array of the bytes used to represent the equivalent characters in UTF-8.\n *\n * Cribbed from the `goog.crypt.stringToUtf8ByteArray` function in the Google\n * Closure library, though updated to use typed arrays.\n */\nexport const fromUtf8 = (input: string): Uint8Array => {\n const bytes: Array = [];\n for (let i = 0, len = input.length; i < len; i++) {\n const value = input.charCodeAt(i);\n if (value < 0x80) {\n bytes.push(value);\n } else if (value < 0x800) {\n bytes.push((value >> 6) | 0b11000000, (value & 0b111111) | 0b10000000);\n } else if (i + 1 < input.length && (value & 0xfc00) === 0xd800 && (input.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\n const surrogatePair = 0x10000 + ((value & 0b1111111111) << 10) + (input.charCodeAt(++i) & 0b1111111111);\n bytes.push(\n (surrogatePair >> 18) | 0b11110000,\n ((surrogatePair >> 12) & 0b111111) | 0b10000000,\n ((surrogatePair >> 6) & 0b111111) | 0b10000000,\n (surrogatePair & 0b111111) | 0b10000000\n );\n } else {\n bytes.push((value >> 12) | 0b11100000, ((value >> 6) & 0b111111) | 0b10000000, (value & 0b111111) | 0b10000000);\n }\n }\n\n return Uint8Array.from(bytes);\n};\n\n/**\n * Converts a typed array of bytes containing UTF-8 data into a native JS\n * string.\n *\n * Partly cribbed from the `goog.crypt.utf8ByteArrayToString` function in the\n * Google Closure library, though updated to use typed arrays and to better\n * handle astral plane code points.\n */\nexport const toUtf8 = (input: Uint8Array): string => {\n let decoded = \"\";\n for (let i = 0, len = input.length; i < len; i++) {\n const byte = input[i];\n if (byte < 0x80) {\n decoded += String.fromCharCode(byte);\n } else if (0b11000000 <= byte && byte < 0b11100000) {\n const nextByte = input[++i];\n decoded += String.fromCharCode(((byte & 0b11111) << 6) | (nextByte & 0b111111));\n } else if (0b11110000 <= byte && byte < 0b101101101) {\n const surrogatePair = [byte, input[++i], input[++i], input[++i]];\n const encoded = \"%\" + surrogatePair.map((byteValue) => byteValue.toString(16)).join(\"%\");\n decoded += decodeURIComponent(encoded);\n } else {\n decoded += String.fromCharCode(\n ((byte & 0b1111) << 12) | ((input[++i] & 0b111111) << 6) | (input[++i] & 0b111111)\n );\n }\n }\n\n return decoded;\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","var v1 = require('./v1');\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\n\nmodule.exports = uuid;\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([\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++]],\n bth[buf[i++]], bth[buf[i++]]\n ]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\nvar _clockseq;\n\n// Previous uuid creation time\nvar _lastMSecs = 0;\nvar _lastNSecs = 0;\n\n// See https://github.com/uuidjs/uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n if (node == null || clockseq == null) {\n var seedBytes = rng();\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [\n seedBytes[0] | 0x01,\n seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]\n ];\n }\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n }\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\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\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || defaults.transitional;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","module.exports = {\n \"version\": \"0.26.0\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar VERSION = require('../env/data').version;\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return toString.call(val) === '[object FormData]';\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return toString.call(val) === '[object URLSearchParams]';\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/*\n * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nexport * from './Anchor.css';\nexport * from './Button.css';\nexport * from './Form.css';\nexport * from './Hint.css';\nexport * from './Input.css';\nexport * from './Nav.css';\nexport * from './PhotoPicker.css';\nexport * from './Section.css';\nexport * from './SelectInput.css';\nexport * from './Strike.css';\nexport * from './Toast.css';\nexport * from './Totp.css';\nexport * from './XR.css';\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"a\":\"Anchor__a___1_Iz8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"Button__button___vS7Mv\",\"signInButton\":\"Button__signInButton___3bUH-\",\"googleSignInButton\":\"Button__googleSignInButton___1YiCu\",\"signInButtonIcon\":\"Button__signInButtonIcon___ihN75\",\"auth0SignInButton\":\"Button__auth0SignInButton___znnCj\",\"facebookSignInButton\":\"Button__facebookSignInButton___34Txh\",\"amazonSignInButton\":\"Button__amazonSignInButton___2EMtl\",\"oAuthSignInButton\":\"Button__oAuthSignInButton___3UGOl\",\"signInButtonContent\":\"Button__signInButtonContent___xqTXJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"formContainer\":\"Form__formContainer___1GA3x\",\"formSection\":\"Form__formSection___1PPvW\",\"formField\":\"Form__formField___38Ikl\",\"formRow\":\"Form__formRow___2mwRs\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"hint\":\"Hint__hint___2XngB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"input\":\"Input__input___3e_bf\",\"inputLabel\":\"Input__inputLabel___3VF0S\",\"label\":\"Input__label___23sO8\",\"radio\":\"Input__radio___2hllK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"navBar\":\"Nav__navBar___xtCFA\",\"navRight\":\"Nav__navRight___1QG2J\",\"nav\":\"Nav__nav___2Dx2Y\",\"navItem\":\"Nav__navItem___1LtFQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"photoPickerButton\":\"PhotoPicker__photoPickerButton___2XdVn\",\"photoPlaceholder\":\"PhotoPicker__photoPlaceholder___2JXO4\",\"photoPlaceholderIcon\":\"PhotoPicker__photoPlaceholderIcon___3Et71\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Section__container___3YYTG\",\"actionRow\":\"Section__actionRow___2LWSU\",\"sectionHeader\":\"Section__sectionHeader___2djyg\",\"sectionHeaderHint\":\"Section__sectionHeaderHint___3Wxdc\",\"sectionBody\":\"Section__sectionBody___ihqqd\",\"sectionHeaderContent\":\"Section__sectionHeaderContent___1UCqa\",\"sectionFooter\":\"Section__sectionFooter___1T54C\",\"sectionFooterPrimaryContent\":\"Section__sectionFooterPrimaryContent___2r9ZX\",\"sectionFooterSecondaryContent\":\"Section__sectionFooterSecondaryContent___Nj41Q\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"selectInput\":\"SelectInput__selectInput___3efO4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"strike\":\"Strike__strike___1XV1b\",\"strikeContent\":\"Strike__strikeContent___10gLb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"toast\":\"Toast__toast___XXr3v\",\"toastClose\":\"Toast__toastClose___18lU4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"totpQrcode\":\"Totp__totpQrcode___1crLx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"sumerianSceneContainer\":\"XR__sumerianSceneContainer___3nVMt\",\"sumerianScene\":\"XR__sumerianScene___2Tt7-\",\"loadingOverlay\":\"XR__loadingOverlay___IbqcI\",\"loadingContainer\":\"XR__loadingContainer___2Itxb\",\"loadingLogo\":\"XR__loadingLogo___Ub7xQ\",\"loadingSceneName\":\"XR__loadingSceneName___3__ne\",\"loadingBar\":\"XR__loadingBar___2vcke\",\"loadingBarFill\":\"XR__loadingBarFill___3M-D9\",\"sceneErrorText\":\"XR__sceneErrorText___2y0tp\",\"sceneBar\":\"XR__sceneBar___2ShrP\",\"sceneName\":\"XR__sceneName___1ApHr\",\"sceneActions\":\"XR__sceneActions___7plGs\",\"actionButton\":\"XR__actionButton___2poIM\",\"tooltip\":\"XR__tooltip___UYyhn\",\"actionIcon\":\"XR__actionIcon___2qnd2\",\"autoShowTooltip\":\"XR__autoShowTooltip___V1QH7\"};","import { MsSubtleCrypto } from \"./MsSubtleCrypto\";\n\ntype SubtleCryptoMethod =\n | \"decrypt\"\n | \"digest\"\n | \"encrypt\"\n | \"exportKey\"\n | \"generateKey\"\n | \"importKey\"\n | \"sign\"\n | \"verify\";\n\nconst msSubtleCryptoMethods: Array = [\n \"decrypt\",\n \"digest\",\n \"encrypt\",\n \"exportKey\",\n \"generateKey\",\n \"importKey\",\n \"sign\",\n \"verify\"\n];\n\n/**\n * The value accessible as `window.msCrypto` in Internet Explorer 11.\n */\nexport interface MsCrypto {\n getRandomValues: (toFill: Uint8Array) => void;\n subtle: MsSubtleCrypto;\n}\n\n/**\n * The `window` object in Internet Explorer 11. This interface does not\n * exhaustively document the prefixed features of `window` in IE11.\n */\nexport interface MsWindow extends Window {\n MSInputMethodContext: any;\n msCrypto: MsCrypto;\n}\n\nfunction quacksLikeAnMsWindow(window: Window): window is MsWindow {\n return \"MSInputMethodContext\" in window && \"msCrypto\" in window;\n}\n\n/**\n * Determines if the provided window is (or is like) the window object one would\n * expect to encounter in Internet Explorer 11.\n */\nexport function isMsWindow(window: Window): window is MsWindow {\n if (quacksLikeAnMsWindow(window) && window.msCrypto.subtle !== undefined) {\n const { getRandomValues, subtle } = window.msCrypto;\n return msSubtleCryptoMethods\n .map(methodName => subtle[methodName])\n .concat(getRandomValues)\n .every(method => typeof method === \"function\");\n }\n\n return false;\n}\n","export * from \"./CryptoOperation\";\nexport * from \"./Key\";\nexport * from \"./KeyOperation\";\nexport * from \"./MsSubtleCrypto\";\nexport * from \"./MsWindow\";\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export const SHA_256_HASH: { name: \"SHA-256\" } = { name: \"SHA-256\" };\n\nexport const SHA_256_HMAC_ALGO: { name: \"HMAC\"; hash: { name: \"SHA-256\" } } = {\n name: \"HMAC\",\n hash: SHA_256_HASH\n};\n\nexport const EMPTY_DATA_SHA_256 = new Uint8Array([\n 227,\n 176,\n 196,\n 66,\n 152,\n 252,\n 28,\n 20,\n 154,\n 251,\n 244,\n 200,\n 153,\n 111,\n 185,\n 36,\n 39,\n 174,\n 65,\n 228,\n 100,\n 155,\n 147,\n 76,\n 164,\n 149,\n 153,\n 27,\n 120,\n 82,\n 184,\n 85\n]);\n","import { Sha256 as Ie11Sha256 } from \"./ie11Sha256\";\nimport { Sha256 as WebCryptoSha256 } from \"./webCryptoSha256\";\nimport { Sha256 as JsSha256 } from \"@aws-crypto/sha256-js\";\nimport { Hash, SourceData } from \"@aws-sdk/types\";\nimport { supportsWebCrypto } from \"@aws-crypto/supports-web-crypto\";\nimport { isMsWindow } from \"@aws-crypto/ie11-detection\";\nimport { locateWindow } from \"@aws-sdk/util-locate-window\";\n\nexport class Sha256 implements Hash {\n private readonly hash: Hash;\n\n constructor(secret?: SourceData) {\n if (supportsWebCrypto(locateWindow())) {\n this.hash = new WebCryptoSha256(secret);\n } else if (isMsWindow(locateWindow())) {\n this.hash = new Ie11Sha256(secret);\n } else {\n this.hash = new JsSha256(secret);\n }\n }\n\n update(data: SourceData, encoding?: \"utf8\" | \"ascii\" | \"latin1\"): void {\n this.hash.update(data, encoding);\n }\n\n digest(): Promise {\n return this.hash.digest();\n }\n}\n","import { isEmptyData } from \"./isEmptyData\";\nimport { SHA_256_HMAC_ALGO } from \"./constants\";\nimport { Hash, SourceData } from \"@aws-sdk/types\";\nimport { fromUtf8 } from \"@aws-sdk/util-utf8-browser\";\nimport { CryptoOperation, Key, MsWindow } from \"@aws-crypto/ie11-detection\";\nimport { locateWindow } from \"@aws-sdk/util-locate-window\";\n\nexport class Sha256 implements Hash {\n private operation: Promise;\n\n constructor(secret?: SourceData) {\n if (secret) {\n this.operation = getKeyPromise(secret).then(keyData =>\n (locateWindow() as MsWindow).msCrypto.subtle.sign(\n SHA_256_HMAC_ALGO,\n keyData\n )\n );\n this.operation.catch(() => {});\n } else {\n this.operation = Promise.resolve(\n (locateWindow() as MsWindow).msCrypto.subtle.digest(\"SHA-256\")\n );\n }\n }\n\n update(toHash: SourceData): void {\n if (isEmptyData(toHash)) {\n return;\n }\n\n this.operation = this.operation.then(operation => {\n operation.onerror = () => {\n this.operation = Promise.reject(\n new Error(\"Error encountered updating hash\")\n );\n };\n operation.process(toArrayBufferView(toHash));\n\n return operation;\n });\n this.operation.catch(() => {});\n }\n\n digest(): Promise {\n return this.operation.then(\n operation =>\n new Promise((resolve, reject) => {\n operation.onerror = () => {\n reject(new Error(\"Error encountered finalizing hash\"));\n };\n operation.oncomplete = () => {\n if (operation.result) {\n resolve(new Uint8Array(operation.result));\n }\n reject(new Error(\"Error encountered finalizing hash\"));\n };\n\n operation.finish();\n })\n );\n }\n}\n\nfunction getKeyPromise(secret: SourceData): Promise {\n return new Promise((resolve, reject) => {\n const keyOperation = (locateWindow() as MsWindow).msCrypto.subtle.importKey(\n \"raw\",\n toArrayBufferView(secret),\n SHA_256_HMAC_ALGO,\n false,\n [\"sign\"]\n );\n\n keyOperation.oncomplete = () => {\n if (keyOperation.result) {\n resolve(keyOperation.result);\n }\n\n reject(new Error(\"ImportKey completed without importing key.\"));\n };\n keyOperation.onerror = () => {\n reject(new Error(\"ImportKey failed to import key.\"));\n };\n });\n}\n\nfunction toArrayBufferView(data: SourceData): Uint8Array {\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(\n data.buffer,\n data.byteOffset,\n data.byteLength / Uint8Array.BYTES_PER_ELEMENT\n );\n }\n\n return new Uint8Array(data);\n}\n","export * from \"./crossPlatformSha256\";\nexport { Sha256 as Ie11Sha256 } from \"./ie11Sha256\";\nexport { Sha256 as WebCryptoSha256 } from \"./webCryptoSha256\";\n","import { SourceData } from \"@aws-sdk/types\";\n\nexport function isEmptyData(data: SourceData): boolean {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n\n return data.byteLength === 0;\n}\n","import { Hash, SourceData } from \"@aws-sdk/types\";\nimport { isEmptyData, convertToBuffer } from \"@aws-crypto/util\";\nimport {\n EMPTY_DATA_SHA_256,\n SHA_256_HASH,\n SHA_256_HMAC_ALGO,\n} from \"./constants\";\nimport { locateWindow } from \"@aws-sdk/util-locate-window\";\n\nexport class Sha256 implements Hash {\n private readonly key: Promise | undefined;\n private toHash: Uint8Array = new Uint8Array(0);\n\n constructor(secret?: SourceData) {\n if (secret !== void 0) {\n this.key = new Promise((resolve, reject) => {\n locateWindow()\n .crypto.subtle.importKey(\n \"raw\",\n convertToBuffer(secret),\n SHA_256_HMAC_ALGO,\n false,\n [\"sign\"]\n )\n .then(resolve, reject);\n });\n this.key.catch(() => {});\n }\n }\n\n update(data: SourceData): void {\n if (isEmptyData(data)) {\n return;\n }\n\n const update = convertToBuffer(data);\n const typedArray = new Uint8Array(\n this.toHash.byteLength + update.byteLength\n );\n typedArray.set(this.toHash, 0);\n typedArray.set(update, this.toHash.byteLength);\n this.toHash = typedArray;\n }\n\n digest(): Promise {\n if (this.key) {\n return this.key.then((key) =>\n locateWindow()\n .crypto.subtle.sign(SHA_256_HMAC_ALGO, key, this.toHash)\n .then((data) => new Uint8Array(data))\n );\n }\n\n if (isEmptyData(this.toHash)) {\n return Promise.resolve(EMPTY_DATA_SHA_256);\n }\n\n return Promise.resolve()\n .then(() =>\n locateWindow().crypto.subtle.digest(SHA_256_HASH, this.toHash)\n )\n .then((data) => Promise.resolve(new Uint8Array(data)));\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import {\n BLOCK_SIZE,\n DIGEST_LENGTH,\n INIT,\n KEY,\n MAX_HASHABLE_LENGTH\n} from \"./constants\";\n\n/**\n * @internal\n */\nexport class RawSha256 {\n private state: Int32Array = Int32Array.from(INIT);\n private temp: Int32Array = new Int32Array(64);\n private buffer: Uint8Array = new Uint8Array(64);\n private bufferLength: number = 0;\n private bytesHashed: number = 0;\n\n /**\n * @internal\n */\n finished: boolean = false;\n\n update(data: Uint8Array): void {\n if (this.finished) {\n throw new Error(\"Attempted to update an already finished hash.\");\n }\n\n let position = 0;\n let { byteLength } = data;\n this.bytesHashed += byteLength;\n\n if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) {\n throw new Error(\"Cannot hash more than 2^53 - 1 bits\");\n }\n\n while (byteLength > 0) {\n this.buffer[this.bufferLength++] = data[position++];\n byteLength--;\n\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n }\n\n digest(): Uint8Array {\n if (!this.finished) {\n const bitsHashed = this.bytesHashed * 8;\n const bufferView = new DataView(\n this.buffer.buffer,\n this.buffer.byteOffset,\n this.buffer.byteLength\n );\n\n const undecoratedLength = this.bufferLength;\n bufferView.setUint8(this.bufferLength++, 0x80);\n\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (let i = this.bufferLength; i < BLOCK_SIZE; i++) {\n bufferView.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n\n for (let i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n bufferView.setUint8(i, 0);\n }\n bufferView.setUint32(\n BLOCK_SIZE - 8,\n Math.floor(bitsHashed / 0x100000000),\n true\n );\n bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed);\n\n this.hashBuffer();\n\n this.finished = true;\n }\n\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n const out = new Uint8Array(DIGEST_LENGTH);\n for (let i = 0; i < 8; i++) {\n out[i * 4] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n\n return out;\n }\n\n private hashBuffer(): void {\n const { buffer, state } = this;\n\n let state0 = state[0],\n state1 = state[1],\n state2 = state[2],\n state3 = state[3],\n state4 = state[4],\n state5 = state[5],\n state6 = state[6],\n state7 = state[7];\n\n for (let i = 0; i < BLOCK_SIZE; i++) {\n if (i < 16) {\n this.temp[i] =\n ((buffer[i * 4] & 0xff) << 24) |\n ((buffer[i * 4 + 1] & 0xff) << 16) |\n ((buffer[i * 4 + 2] & 0xff) << 8) |\n (buffer[i * 4 + 3] & 0xff);\n } else {\n let u = this.temp[i - 2];\n const t1 =\n ((u >>> 17) | (u << 15)) ^ ((u >>> 19) | (u << 13)) ^ (u >>> 10);\n\n u = this.temp[i - 15];\n const t2 =\n ((u >>> 7) | (u << 25)) ^ ((u >>> 18) | (u << 14)) ^ (u >>> 3);\n\n this.temp[i] =\n ((t1 + this.temp[i - 7]) | 0) + ((t2 + this.temp[i - 16]) | 0);\n }\n\n const t1 =\n ((((((state4 >>> 6) | (state4 << 26)) ^\n ((state4 >>> 11) | (state4 << 21)) ^\n ((state4 >>> 25) | (state4 << 7))) +\n ((state4 & state5) ^ (~state4 & state6))) |\n 0) +\n ((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) |\n 0;\n\n const t2 =\n ((((state0 >>> 2) | (state0 << 30)) ^\n ((state0 >>> 13) | (state0 << 19)) ^\n ((state0 >>> 22) | (state0 << 10))) +\n ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) |\n 0;\n\n state7 = state6;\n state6 = state5;\n state5 = state4;\n state4 = (state3 + t1) | 0;\n state3 = state2;\n state2 = state1;\n state1 = state0;\n state0 = (t1 + t2) | 0;\n }\n\n state[0] += state0;\n state[1] += state1;\n state[2] += state2;\n state[3] += state3;\n state[4] += state4;\n state[5] += state5;\n state[6] += state6;\n state[7] += state7;\n }\n}\n","/**\n * @internal\n */\nexport const BLOCK_SIZE: number = 64;\n\n/**\n * @internal\n */\nexport const DIGEST_LENGTH: number = 32;\n\n/**\n * @internal\n */\nexport const KEY = new Uint32Array([\n 0x428a2f98,\n 0x71374491,\n 0xb5c0fbcf,\n 0xe9b5dba5,\n 0x3956c25b,\n 0x59f111f1,\n 0x923f82a4,\n 0xab1c5ed5,\n 0xd807aa98,\n 0x12835b01,\n 0x243185be,\n 0x550c7dc3,\n 0x72be5d74,\n 0x80deb1fe,\n 0x9bdc06a7,\n 0xc19bf174,\n 0xe49b69c1,\n 0xefbe4786,\n 0x0fc19dc6,\n 0x240ca1cc,\n 0x2de92c6f,\n 0x4a7484aa,\n 0x5cb0a9dc,\n 0x76f988da,\n 0x983e5152,\n 0xa831c66d,\n 0xb00327c8,\n 0xbf597fc7,\n 0xc6e00bf3,\n 0xd5a79147,\n 0x06ca6351,\n 0x14292967,\n 0x27b70a85,\n 0x2e1b2138,\n 0x4d2c6dfc,\n 0x53380d13,\n 0x650a7354,\n 0x766a0abb,\n 0x81c2c92e,\n 0x92722c85,\n 0xa2bfe8a1,\n 0xa81a664b,\n 0xc24b8b70,\n 0xc76c51a3,\n 0xd192e819,\n 0xd6990624,\n 0xf40e3585,\n 0x106aa070,\n 0x19a4c116,\n 0x1e376c08,\n 0x2748774c,\n 0x34b0bcb5,\n 0x391c0cb3,\n 0x4ed8aa4a,\n 0x5b9cca4f,\n 0x682e6ff3,\n 0x748f82ee,\n 0x78a5636f,\n 0x84c87814,\n 0x8cc70208,\n 0x90befffa,\n 0xa4506ceb,\n 0xbef9a3f7,\n 0xc67178f2\n]);\n\n/**\n * @internal\n */\nexport const INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19\n];\n\n/**\n * @internal\n */\nexport const MAX_HASHABLE_LENGTH = 2 ** 53 - 1;\n","export * from \"./jsSha256\";\n","import { BLOCK_SIZE } from \"./constants\";\nimport { RawSha256 } from \"./RawSha256\";\nimport { Hash, SourceData } from \"@aws-sdk/types\";\nimport { isEmptyData, convertToBuffer } from \"@aws-crypto/util\";\n\nexport class Sha256 implements Hash {\n private readonly hash = new RawSha256();\n private readonly outer?: RawSha256;\n private error: any;\n\n constructor(secret?: SourceData) {\n if (secret) {\n this.outer = new RawSha256();\n const inner = bufferFromSecret(secret);\n const outer = new Uint8Array(BLOCK_SIZE);\n outer.set(inner);\n\n for (let i = 0; i < BLOCK_SIZE; i++) {\n inner[i] ^= 0x36;\n outer[i] ^= 0x5c;\n }\n\n this.hash.update(inner);\n this.outer.update(outer);\n\n // overwrite the copied key in memory\n for (let i = 0; i < inner.byteLength; i++) {\n inner[i] = 0;\n }\n }\n }\n\n update(toHash: SourceData): void {\n if (isEmptyData(toHash) || this.error) {\n return;\n }\n\n try {\n this.hash.update(convertToBuffer(toHash));\n } catch (e) {\n this.error = e;\n }\n }\n\n /* This synchronous method keeps compatibility\n * with the v2 aws-sdk.\n */\n digestSync(): Uint8Array {\n if (this.error) {\n throw this.error;\n }\n\n if (this.outer) {\n if (!this.outer.finished) {\n this.outer.update(this.hash.digest());\n }\n\n return this.outer.digest();\n }\n\n return this.hash.digest();\n }\n\n /* The underlying digest method here is synchronous.\n * To keep the same interface with the other hash functions\n * the default is to expose this as an async method.\n * However, it can sometimes be useful to have a sync method.\n */\n async digest(): Promise {\n return this.digestSync();\n }\n}\n\nfunction bufferFromSecret(secret: SourceData): Uint8Array {\n let input = convertToBuffer(secret);\n\n if (input.byteLength > BLOCK_SIZE) {\n const bufferHash = new RawSha256();\n bufferHash.update(input);\n input = bufferHash.digest();\n }\n\n const buffer = new Uint8Array(BLOCK_SIZE);\n buffer.set(input);\n return buffer;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export * from \"./supportsWebCrypto\";\n","type SubtleCryptoMethod =\n | \"decrypt\"\n | \"digest\"\n | \"encrypt\"\n | \"exportKey\"\n | \"generateKey\"\n | \"importKey\"\n | \"sign\"\n | \"verify\";\n\nconst subtleCryptoMethods: Array = [\n \"decrypt\",\n \"digest\",\n \"encrypt\",\n \"exportKey\",\n \"generateKey\",\n \"importKey\",\n \"sign\",\n \"verify\"\n];\n\nexport function supportsWebCrypto(window: Window): boolean {\n if (\n supportsSecureRandom(window) &&\n typeof window.crypto.subtle === \"object\"\n ) {\n const { subtle } = window.crypto;\n\n return supportsSubtleCrypto(subtle);\n }\n\n return false;\n}\n\nexport function supportsSecureRandom(window: Window): boolean {\n if (typeof window === \"object\" && typeof window.crypto === \"object\") {\n const { getRandomValues } = window.crypto;\n\n return typeof getRandomValues === \"function\";\n }\n\n return false;\n}\n\nexport function supportsSubtleCrypto(subtle: SubtleCrypto) {\n return (\n subtle &&\n subtleCryptoMethods.every(\n methodName => typeof subtle[methodName] === \"function\"\n )\n );\n}\n\nexport async function supportsZeroByteGCM(subtle: SubtleCrypto) {\n if (!supportsSubtleCrypto(subtle)) return false;\n try {\n const key = await subtle.generateKey(\n { name: \"AES-GCM\", length: 128 },\n false,\n [\"encrypt\"]\n );\n const zeroByteAuthTag = await subtle.encrypt(\n {\n name: \"AES-GCM\",\n iv: new Uint8Array(Array(12)),\n additionalData: new Uint8Array(Array(16)),\n tagLength: 128\n },\n key,\n new Uint8Array(0)\n );\n return zeroByteAuthTag.byteLength === 16;\n } catch {\n return false;\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SourceData } from \"@aws-sdk/types\";\nimport { fromUtf8 as fromUtf8Browser } from \"@aws-sdk/util-utf8-browser\";\n\n// Quick polyfill\nconst fromUtf8 =\n typeof Buffer !== \"undefined\" && Buffer.from\n ? (input: string) => Buffer.from(input, \"utf8\")\n : fromUtf8Browser;\n\nexport function convertToBuffer(data: SourceData): Uint8Array {\n // Already a Uint8, do nothing\n if (data instanceof Uint8Array) return data;\n\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(\n data.buffer,\n data.byteOffset,\n data.byteLength / Uint8Array.BYTES_PER_ELEMENT\n );\n }\n\n return new Uint8Array(data);\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport { convertToBuffer } from \"./convertToBuffer\";\nexport { isEmptyData } from \"./isEmptyData\";\nexport { numToUint8 } from \"./numToUint8\";\nexport {uint32ArrayFrom} from './uint32ArrayFrom';\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SourceData } from \"@aws-sdk/types\";\n\nexport function isEmptyData(data: SourceData): boolean {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n\n return data.byteLength === 0;\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport function numToUint8(num: number) {\n return new Uint8Array([\n (num & 0xff000000) >> 24,\n (num & 0x00ff0000) >> 16,\n (num & 0x0000ff00) >> 8,\n num & 0x000000ff,\n ]);\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// IE 11 does not support Array.from, so we do it manually\nexport function uint32ArrayFrom(a_lookUpTable: Array): Uint32Array {\n if (!Array.from) {\n const return_array = new Uint32Array(a_lookUpTable.length)\n let a_index = 0\n while (a_index < a_lookUpTable.length) {\n return_array[a_index] = a_lookUpTable[a_index]\n }\n return return_array\n }\n return Uint32Array.from(a_lookUpTable)\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Hash, SourceData } from \"@aws-sdk/types\";\nimport { convertToBuffer, isEmptyData, numToUint8 } from \"@aws-crypto/util\";\nimport { Crc32 } from \"./index\";\n\nexport class AwsCrc32 implements Hash {\n private readonly crc32 = new Crc32();\n\n update(toHash: SourceData) {\n if (isEmptyData(toHash)) return;\n\n this.crc32.update(convertToBuffer(toHash));\n }\n\n async digest(): Promise {\n return numToUint8(this.crc32.digest());\n }\n}\n","import {uint32ArrayFrom} from \"@aws-crypto/util\";\n\nexport function crc32(data: Uint8Array): number {\n return new Crc32().update(data).digest();\n}\n\nexport class Crc32 {\n private checksum = 0xffffffff;\n\n update(data: Uint8Array): this {\n for (const byte of data) {\n this.checksum =\n (this.checksum >>> 8) ^ lookupTable[(this.checksum ^ byte) & 0xff];\n }\n\n return this;\n }\n\n digest(): number {\n return (this.checksum ^ 0xffffffff) >>> 0;\n }\n}\n\n// prettier-ignore\nconst a_lookUpTable = [\n 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,\n 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,\n 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,\n 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,\n 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,\n 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,\n 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,\n 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,\n 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,\n 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,\n 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,\n 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,\n 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,\n 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,\n 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,\n 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,\n 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,\n 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,\n 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,\n 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,\n 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,\n 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,\n 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,\n 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,\n 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,\n 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,\n 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,\n 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,\n 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,\n 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,\n 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,\n 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,\n 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,\n 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,\n 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,\n 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,\n 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,\n 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,\n 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,\n 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,\n 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,\n 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,\n 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,\n 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,\n 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,\n 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,\n 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,\n 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,\n 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,\n 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,\n 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,\n 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,\n 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,\n 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,\n 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,\n 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,\n 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,\n 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D,\n];\nconst lookupTable: Uint32Array = uint32ArrayFrom(a_lookUpTable)\nexport { AwsCrc32 } from \"./aws_crc32\";\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SourceData } from \"@aws-sdk/types\";\nimport { fromUtf8 as fromUtf8Browser } from \"@aws-sdk/util-utf8-browser\";\n\n// Quick polyfill\nconst fromUtf8 =\n typeof Buffer !== \"undefined\" && Buffer.from\n ? (input: string) => Buffer.from(input, \"utf8\")\n : fromUtf8Browser;\n\nexport function convertToBuffer(data: SourceData): Uint8Array {\n // Already a Uint8, do nothing\n if (data instanceof Uint8Array) return data;\n\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(\n data.buffer,\n data.byteOffset,\n data.byteLength / Uint8Array.BYTES_PER_ELEMENT\n );\n }\n\n return new Uint8Array(data);\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport { convertToBuffer } from \"./convertToBuffer\";\nexport { isEmptyData } from \"./isEmptyData\";\nexport { numToUint8 } from \"./numToUint8\";\nexport {uint32ArrayFrom} from './uint32ArrayFrom';\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SourceData } from \"@aws-sdk/types\";\n\nexport function isEmptyData(data: SourceData): boolean {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n\n return data.byteLength === 0;\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport function numToUint8(num: number) {\n return new Uint8Array([\n (num & 0xff000000) >> 24,\n (num & 0x00ff0000) >> 16,\n (num & 0x0000ff00) >> 8,\n num & 0x000000ff,\n ]);\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// IE 11 does not support Array.from, so we do it manually\nexport function uint32ArrayFrom(a_lookUpTable: Array): Uint32Array {\n if (!Array.from) {\n const return_array = new Uint32Array(a_lookUpTable.length)\n let a_index = 0\n while (a_index < a_lookUpTable.length) {\n return_array[a_index] = a_lookUpTable[a_index]\n }\n return return_array\n }\n return Uint32Array.from(a_lookUpTable)\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","var v1 = require('./v1');\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\n\nmodule.exports = uuid;\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([\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++]],\n bth[buf[i++]], bth[buf[i++]]\n ]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\nvar _clockseq;\n\n// Previous uuid creation time\nvar _lastMSecs = 0;\nvar _lastNSecs = 0;\n\n// See https://github.com/uuidjs/uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n if (node == null || clockseq == null) {\n var seedBytes = rng();\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [\n seedBytes[0] | 0x01,\n seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]\n ];\n }\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n }\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\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\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","const fallbackWindow = {};\nexport function locateWindow() {\n if (typeof window !== \"undefined\") {\n return window;\n }\n else if (typeof self !== \"undefined\") {\n return self;\n }\n return fallbackWindow;\n}\n","import { fromUtf8 as jsFromUtf8, toUtf8 as jsToUtf8 } from \"./pureJs\";\nimport { fromUtf8 as textEncoderFromUtf8, toUtf8 as textEncoderToUtf8 } from \"./whatwgEncodingApi\";\n\ndeclare const TextDecoder: Function | undefined;\ndeclare const TextEncoder: Function | undefined;\n\nexport const fromUtf8 = (input: string): Uint8Array =>\n typeof TextEncoder === \"function\" ? textEncoderFromUtf8(input) : jsFromUtf8(input);\n\nexport const toUtf8 = (input: Uint8Array): string =>\n typeof TextDecoder === \"function\" ? textEncoderToUtf8(input) : jsToUtf8(input);\n","/**\n * A declaration of the global TextEncoder and TextDecoder constructors.\n *\n * @see https://encoding.spec.whatwg.org/\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Encoding {\n interface TextDecoderOptions {\n fatal?: boolean;\n ignoreBOM?: boolean;\n }\n\n interface TextDecodeOptions {\n stream?: boolean;\n }\n\n interface TextDecoder {\n readonly encoding: string;\n readonly fatal: boolean;\n readonly ignoreBOM: boolean;\n decode(input?: ArrayBuffer | ArrayBufferView, options?: TextDecodeOptions): string;\n }\n\n export interface TextDecoderConstructor {\n new (label?: string, options?: TextDecoderOptions): TextDecoder;\n }\n\n interface TextEncoder {\n readonly encoding: \"utf-8\";\n encode(input?: string): Uint8Array;\n }\n\n export interface TextEncoderConstructor {\n new (): TextEncoder;\n }\n}\n\ndeclare const TextDecoder: Encoding.TextDecoderConstructor;\n\ndeclare const TextEncoder: Encoding.TextEncoderConstructor;\n\nexport function fromUtf8(input: string): Uint8Array {\n return new TextEncoder().encode(input);\n}\n\nexport function toUtf8(input: Uint8Array): string {\n return new TextDecoder(\"utf-8\").decode(input);\n}\n","/**\n * Converts a JS string from its native UCS-2/UTF-16 representation into a\n * Uint8Array of the bytes used to represent the equivalent characters in UTF-8.\n *\n * Cribbed from the `goog.crypt.stringToUtf8ByteArray` function in the Google\n * Closure library, though updated to use typed arrays.\n */\nexport const fromUtf8 = (input: string): Uint8Array => {\n const bytes: Array = [];\n for (let i = 0, len = input.length; i < len; i++) {\n const value = input.charCodeAt(i);\n if (value < 0x80) {\n bytes.push(value);\n } else if (value < 0x800) {\n bytes.push((value >> 6) | 0b11000000, (value & 0b111111) | 0b10000000);\n } else if (i + 1 < input.length && (value & 0xfc00) === 0xd800 && (input.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\n const surrogatePair = 0x10000 + ((value & 0b1111111111) << 10) + (input.charCodeAt(++i) & 0b1111111111);\n bytes.push(\n (surrogatePair >> 18) | 0b11110000,\n ((surrogatePair >> 12) & 0b111111) | 0b10000000,\n ((surrogatePair >> 6) & 0b111111) | 0b10000000,\n (surrogatePair & 0b111111) | 0b10000000\n );\n } else {\n bytes.push((value >> 12) | 0b11100000, ((value >> 6) & 0b111111) | 0b10000000, (value & 0b111111) | 0b10000000);\n }\n }\n\n return Uint8Array.from(bytes);\n};\n\n/**\n * Converts a typed array of bytes containing UTF-8 data into a native JS\n * string.\n *\n * Partly cribbed from the `goog.crypt.utf8ByteArrayToString` function in the\n * Google Closure library, though updated to use typed arrays and to better\n * handle astral plane code points.\n */\nexport const toUtf8 = (input: Uint8Array): string => {\n let decoded = \"\";\n for (let i = 0, len = input.length; i < len; i++) {\n const byte = input[i];\n if (byte < 0x80) {\n decoded += String.fromCharCode(byte);\n } else if (0b11000000 <= byte && byte < 0b11100000) {\n const nextByte = input[++i];\n decoded += String.fromCharCode(((byte & 0b11111) << 6) | (nextByte & 0b111111));\n } else if (0b11110000 <= byte && byte < 0b101101101) {\n const surrogatePair = [byte, input[++i], input[++i], input[++i]];\n const encoded = \"%\" + surrogatePair.map((byteValue) => byteValue.toString(16)).join(\"%\");\n decoded += decodeURIComponent(encoded);\n } else {\n decoded += String.fromCharCode(\n ((byte & 0b1111) << 12) | ((input[++i] & 0b111111) << 6) | (input[++i] & 0b111111)\n );\n }\n }\n\n return decoded;\n};\n","/**\n * @copyright 2015, Andrey Popp <8mayday@gmail.com>\n *\n * The decorator may be used on classes or methods\n * ```\n * @autobind\n * class FullBound {}\n *\n * class PartBound {\n * @autobind\n * method () {}\n * }\n * ```\n */\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports['default'] = autobind;\n\nfunction autobind() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 1) {\n return boundClass.apply(undefined, args);\n } else {\n return boundMethod.apply(undefined, args);\n }\n}\n\n/**\n * Use boundMethod to bind all methods on the target.prototype\n */\nfunction boundClass(target) {\n // (Using reflect to get all keys including symbols)\n var keys = undefined;\n // Use Reflect if exists\n if (typeof Reflect !== 'undefined' && typeof Reflect.ownKeys === 'function') {\n keys = Reflect.ownKeys(target.prototype);\n } else {\n keys = Object.getOwnPropertyNames(target.prototype);\n // use symbols if support is provided\n if (typeof Object.getOwnPropertySymbols === 'function') {\n keys = keys.concat(Object.getOwnPropertySymbols(target.prototype));\n }\n }\n\n keys.forEach(function (key) {\n // Ignore special case target method\n if (key === 'constructor') {\n return;\n }\n\n var descriptor = Object.getOwnPropertyDescriptor(target.prototype, key);\n\n // Only methods need binding\n if (typeof descriptor.value === 'function') {\n Object.defineProperty(target.prototype, key, boundMethod(target, key, descriptor));\n }\n });\n return target;\n}\n\n/**\n * Return a descriptor removing the value and returning a getter\n * The getter will return a .bind version of the function\n * and memoize the result against a symbol on the instance\n */\nfunction boundMethod(target, key, descriptor) {\n var fn = descriptor.value;\n\n if (typeof fn !== 'function') {\n throw new Error('@autobind decorator can only be applied to methods not: ' + typeof fn);\n }\n\n // In IE11 calling Object.defineProperty has a side-effect of evaluating the\n // getter for the property which is being replaced. This causes infinite\n // recursion and an \"Out of stack space\" error.\n var definingProperty = false;\n\n return {\n configurable: true,\n get: function get() {\n if (definingProperty || this === target.prototype || this.hasOwnProperty(key)) {\n return fn;\n }\n\n var boundFn = fn.bind(this);\n definingProperty = true;\n Object.defineProperty(this, key, {\n value: boundFn,\n configurable: true,\n writable: true\n });\n definingProperty = false;\n return boundFn;\n }\n };\n}\nmodule.exports = exports['default'];\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.bowser=t():e.bowser=t()}(this,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=90)}({17:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n=r(18),i=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||\"\"},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||\"\"},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case\"NT\":return\"NT\";case\"XP\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.1\":return\"XP\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return}},e.getMacOSVersionName=function(e){var t=e.split(\".\").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return\"Leopard\";case 6:return\"Snow Leopard\";case 7:return\"Lion\";case 8:return\"Mountain Lion\";case 9:return\"Mavericks\";case 10:return\"Yosemite\";case 11:return\"El Capitan\";case 12:return\"Sierra\";case 13:return\"High Sierra\";case 14:return\"Mojave\";case 15:return\"Catalina\";default:return}},e.getAndroidVersionName=function(e){var t=e.split(\".\").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?\"Cupcake\":1===t[0]&&t[1]>=6?\"Donut\":2===t[0]&&t[1]<2?\"Eclair\":2===t[0]&&2===t[1]?\"Froyo\":2===t[0]&&t[1]>2?\"Gingerbread\":3===t[0]?\"Honeycomb\":4===t[0]&&t[1]<1?\"Ice Cream Sandwich\":4===t[0]&&t[1]<4?\"Jelly Bean\":4===t[0]&&t[1]>=4?\"KitKat\":5===t[0]?\"Lollipop\":6===t[0]?\"Marshmallow\":7===t[0]?\"Nougat\":8===t[0]?\"Oreo\":9===t[0]?\"Pie\":void 0},e.getVersionPrecision=function(e){return e.split(\".\").length},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),s=e.getVersionPrecision(r),a=Math.max(i,s),o=0,u=e.map([t,r],(function(t){var r=a-e.getVersionPrecision(t),n=t+new Array(r+1).join(\".0\");return e.map(n.split(\".\"),(function(e){return new Array(20-e.length).join(\"0\")+e})).reverse()}));for(n&&(o=a-Math.min(i,s)),a-=1;a>=o;){if(u[0][a]>u[1][a])return 1;if(u[0][a]===u[1][a]){if(a===o)return 0;a-=1}else if(u[0][a]1?i-1:0),a=1;a0){var a=Object.keys(r),u=o.default.find(a,(function(e){return t.isOS(e)}));if(u){var d=this.satisfies(r[u]);if(void 0!==d)return d}var c=o.default.find(a,(function(e){return t.isPlatform(e)}));if(c){var f=this.satisfies(r[c]);if(void 0!==f)return f}}if(s>0){var l=Object.keys(i),h=o.default.find(l,(function(e){return t.isBrowser(e,!0)}));if(void 0!==h)return this.compareVersion(i[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=o.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if(\"string\"==typeof i)return\">\"===e[0]||\"<\"===e[0]?(r=e.substr(1),\"=\"===e[1]?(n=!0,r=e.substr(2)):t=[],\">\"===e[0]?t.push(1):t.push(-1)):\"=\"===e[0]?r=e.substr(1):\"~\"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(o.default.compareVersions(i,r,n))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=d,e.exports=t.default},92:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n};var s=/version\\/(\\d+(\\.?_?\\d+)+)/i,a=[{test:[/googlebot/i],describe:function(e){var t={name:\"Googlebot\"},r=i.default.getFirstMatch(/googlebot\\/(\\d+(\\.\\d+))/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:\"Opera\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:opera)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\\/|opios/i],describe:function(e){var t={name:\"Opera\"},r=i.default.getFirstMatch(/(?:opr|opios)[\\s/](\\S+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:\"Samsung Internet for Android\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:\"NAVER Whale Browser\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:whale)[\\s/](\\d+(?:\\.\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:\"MZ Browser\"},r=i.default.getFirstMatch(/(?:MZBrowser)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:\"Focus\"},r=i.default.getFirstMatch(/(?:focus)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:\"Swing\"},r=i.default.getFirstMatch(/(?:swing)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:\"Opera Coast\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:coast)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\\/\\d+(?:.?_?\\d+)+/i],describe:function(e){var t={name:\"Opera Touch\"},r=i.default.getFirstMatch(/(?:opt)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:\"Yandex Browser\"},r=i.default.getFirstMatch(/(?:yabrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:\"UC Browser\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:ucbrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:\"Maxthon\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:\"Epiphany\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:epiphany)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:\"Puffin\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:puffin)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:\"Sleipnir\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:sleipnir)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:\"K-Meleon\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:k-meleon)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:\"WeChat\"},r=i.default.getFirstMatch(/(?:micromessenger)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?\"QQ Browser Lite\":\"QQ Browser\"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:\"Internet Explorer\"},r=i.default.getFirstMatch(/(?:msie |rv:)(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\\sedg\\//i],describe:function(e){var t={name:\"Microsoft Edge\"},r=i.default.getFirstMatch(/\\sedg\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:\"Microsoft Edge\"},r=i.default.getSecondMatch(/edg([ea]|ios)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:\"Vivaldi\"},r=i.default.getFirstMatch(/vivaldi\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:\"SeaMonkey\"},r=i.default.getFirstMatch(/seamonkey\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:\"Sailfish\"},r=i.default.getFirstMatch(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:\"Amazon Silk\"},r=i.default.getFirstMatch(/silk\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:\"PhantomJS\"},r=i.default.getFirstMatch(/phantomjs\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:\"SlimerJS\"},r=i.default.getFirstMatch(/slimerjs\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\\bbb\\d+/i,/rim\\stablet/i],describe:function(e){var t={name:\"BlackBerry\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/blackberry[\\d]+\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:\"WebOS Browser\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:\"Bada\"},r=i.default.getFirstMatch(/dolfin\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:\"Tizen\"},r=i.default.getFirstMatch(/(?:tizen\\s?)?browser\\/(\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:\"QupZilla\"},r=i.default.getFirstMatch(/(?:qupzilla)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:\"Firefox\"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:\"Electron\"},r=i.default.getFirstMatch(/(?:electron)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:\"Miui\"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:\"Chromium\"},r=i.default.getFirstMatch(/(?:chromium)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:\"Chrome\"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:\"Google Search\"},r=i.default.getFirstMatch(/(?:GSA)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:\"Android Browser\"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:\"PlayStation 4\"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:\"Safari\"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search(\"\\\\(\")?/^(.*)\\/(.*)[ \\t]\\((.*)/:/^(.*)\\/(.*) /;return{name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=a,e.exports=t.default},93:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/Roku\\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\\/DVP-(\\d+\\.\\d+)/i,e);return{name:s.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i,e),r=i.default.getWindowsVersionName(t);return{name:s.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\\//],describe:function(e){var t={name:s.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\\/)(\\d[\\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\\d+(\\.?_?\\d+)+)/i,e).replace(/[_\\s]/g,\".\"),r=i.default.getMacOSVersionName(t),n={name:s.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\\d+([_\\s]\\d+)*) like mac os x/i,e).replace(/[_\\s]/g,\".\");return{name:s.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=i.default.getFirstMatch(/android[\\s/-](\\d+(\\.\\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:s.OS_MAP.Android,version:t};return r&&(n.versionName=r),n}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\\/(\\d+(\\.\\d+)*)/i,e),r={name:s.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\\bbb\\d+/i,/rim\\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\\d+\\/(\\d+([_\\s]\\d+)*)/i,e)||i.default.getFirstMatch(/\\bbb(\\d+)/i,e);return{name:s.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\\/(\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\\s](\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:s.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:s.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\\s](\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.PlayStation4,version:t}}}];t.default=a,e.exports=t.default},94:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/googlebot/i],describe:function(){return{type:\"bot\",vendor:\"Google\"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&\"Nova\",r={type:s.PLATFORMS_MAP.mobile,vendor:\"Huawei\"};return t&&(r.model=t),r}},{test:[/nexus\\s*(?:7|8|9|10).*/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Nexus\"}}},{test:[/ipad/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Apple\",model:\"iPad\"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\\//],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Apple\",model:\"iPad\"}}},{test:[/kftt build/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Amazon\",model:\"Kindle Fire HD 7\"}}},{test:[/silk/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Amazon\"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:s.PLATFORMS_MAP.mobile,vendor:\"Apple\",model:t}}},{test:[/nexus\\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:\"Nexus\"}}},{test:[/[^-]mobi/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return\"blackberry\"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:\"BlackBerry\"}}},{test:function(e){return\"bada\"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return\"windows phone\"===e.getBrowserName()},describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:\"Microsoft\"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(\".\")[0]);return\"android\"===e.getOSName(!0)&&t>=3},describe:function(){return{type:s.PLATFORMS_MAP.tablet}}},{test:function(e){return\"android\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return\"macos\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop,vendor:\"Apple\"}}},{test:function(e){return\"windows\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return\"linux\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return\"playstation 4\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}},{test:function(e){return\"roku\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}}];t.default=a,e.exports=t.default},95:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:function(e){return\"microsoft edge\"===e.getBrowserName(!0)},describe:function(e){if(/\\sedg\\//i.test(e))return{name:s.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\\/(\\d+(\\.?_?\\d+)+)/i,e);return{name:s.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:s.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:s.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:s.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\\/537\\.36/i],describe:function(){return{name:s.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:s.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=a,e.exports=t.default}})}));","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = Object.create(null);\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","'use strict';\n\nvar colorString = require('color-string');\nvar convert = require('color-convert');\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (obj == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS.HmacSHA256;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));","export default function(x, y) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(random) {\n return (random() - 0.5) * 1e-6;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n random,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n y = target.y + target.vy - source.y - source.vy || jiggle(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n node,\n random,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(radius, x, y) {\n var nodes,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n",null,null,null,null,null,"/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","var arrayEach = require('./_arrayEach'),\n baseEach = require('./_baseEach'),\n castFunction = require('./_castFunction'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n","module.exports = require('./forEach');\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n clone: require(\"lodash/clone\"),\n constant: require(\"lodash/constant\"),\n each: require(\"lodash/each\"),\n filter: require(\"lodash/filter\"),\n has: require(\"lodash/has\"),\n isArray: require(\"lodash/isArray\"),\n isEmpty: require(\"lodash/isEmpty\"),\n isFunction: require(\"lodash/isFunction\"),\n isUndefined: require(\"lodash/isUndefined\"),\n keys: require(\"lodash/keys\"),\n map: require(\"lodash/map\"),\n reduce: require(\"lodash/reduce\"),\n size: require(\"lodash/size\"),\n transform: require(\"lodash/transform\"),\n union: require(\"lodash/union\"),\n values: require(\"lodash/values\")\n };\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nmodule.exports = isUndefined;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseReduce;\n","var arrayReduce = require('./_arrayReduce'),\n baseEach = require('./_baseEach'),\n baseIteratee = require('./_baseIteratee'),\n baseReduce = require('./_baseReduce'),\n isArray = require('./isArray');\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nmodule.exports = reduce;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseProperty = require('./_baseProperty');\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nmodule.exports = asciiSize;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n}\n\nmodule.exports = unicodeSize;\n","var asciiSize = require('./_asciiSize'),\n hasUnicode = require('./_hasUnicode'),\n unicodeSize = require('./_unicodeSize');\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\nmodule.exports = stringSize;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var baseFlatten = require('./_baseFlatten'),\n baseRest = require('./_baseRest'),\n baseUniq = require('./_baseUniq'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nmodule.exports = union;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n stringSize = require('./_stringSize');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\nfunction size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n}\n\nmodule.exports = size;\n","var arrayEach = require('./_arrayEach'),\n baseCreate = require('./_baseCreate'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee'),\n getPrototype = require('./_getPrototype'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isTypedArray = require('./isTypedArray');\n\n/**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\nfunction transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = baseIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n}\n\nmodule.exports = transform;\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\n\nmodule.exports = Graph;\n\nvar DEFAULT_EDGE_NAME = \"\\x00\";\nvar GRAPH_NODE = \"\\x00\";\nvar EDGE_KEY_DELIM = \"\\x01\";\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\n\nfunction Graph(opts) {\n this._isDirected = _.has(opts, \"directed\") ? opts.directed : true;\n this._isMultigraph = _.has(opts, \"multigraph\") ? opts.multigraph : false;\n this._isCompound = _.has(opts, \"compound\") ? opts.compound : false;\n\n // Label for the graph itself\n this._label = undefined;\n\n // Defaults to be set when creating a new node\n this._defaultNodeLabelFn = _.constant(undefined);\n\n // Defaults to be set when creating a new edge\n this._defaultEdgeLabelFn = _.constant(undefined);\n\n // v -> label\n this._nodes = {};\n\n if (this._isCompound) {\n // v -> parent\n this._parent = {};\n\n // v -> children\n this._children = {};\n this._children[GRAPH_NODE] = {};\n }\n\n // v -> edgeObj\n this._in = {};\n\n // u -> v -> Number\n this._preds = {};\n\n // v -> edgeObj\n this._out = {};\n\n // v -> w -> Number\n this._sucs = {};\n\n // e -> edgeObj\n this._edgeObjs = {};\n\n // e -> label\n this._edgeLabels = {};\n}\n\n/* Number of nodes in the graph. Should only be changed by the implementation. */\nGraph.prototype._nodeCount = 0;\n\n/* Number of edges in the graph. Should only be changed by the implementation. */\nGraph.prototype._edgeCount = 0;\n\n\n/* === Graph functions ========= */\n\nGraph.prototype.isDirected = function() {\n return this._isDirected;\n};\n\nGraph.prototype.isMultigraph = function() {\n return this._isMultigraph;\n};\n\nGraph.prototype.isCompound = function() {\n return this._isCompound;\n};\n\nGraph.prototype.setGraph = function(label) {\n this._label = label;\n return this;\n};\n\nGraph.prototype.graph = function() {\n return this._label;\n};\n\n\n/* === Node functions ========== */\n\nGraph.prototype.setDefaultNodeLabel = function(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultNodeLabelFn = newDefault;\n return this;\n};\n\nGraph.prototype.nodeCount = function() {\n return this._nodeCount;\n};\n\nGraph.prototype.nodes = function() {\n return _.keys(this._nodes);\n};\n\nGraph.prototype.sources = function() {\n var self = this;\n return _.filter(this.nodes(), function(v) {\n return _.isEmpty(self._in[v]);\n });\n};\n\nGraph.prototype.sinks = function() {\n var self = this;\n return _.filter(this.nodes(), function(v) {\n return _.isEmpty(self._out[v]);\n });\n};\n\nGraph.prototype.setNodes = function(vs, value) {\n var args = arguments;\n var self = this;\n _.each(vs, function(v) {\n if (args.length > 1) {\n self.setNode(v, value);\n } else {\n self.setNode(v);\n }\n });\n return this;\n};\n\nGraph.prototype.setNode = function(v, value) {\n if (_.has(this._nodes, v)) {\n if (arguments.length > 1) {\n this._nodes[v] = value;\n }\n return this;\n }\n\n this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);\n if (this._isCompound) {\n this._parent[v] = GRAPH_NODE;\n this._children[v] = {};\n this._children[GRAPH_NODE][v] = true;\n }\n this._in[v] = {};\n this._preds[v] = {};\n this._out[v] = {};\n this._sucs[v] = {};\n ++this._nodeCount;\n return this;\n};\n\nGraph.prototype.node = function(v) {\n return this._nodes[v];\n};\n\nGraph.prototype.hasNode = function(v) {\n return _.has(this._nodes, v);\n};\n\nGraph.prototype.removeNode = function(v) {\n var self = this;\n if (_.has(this._nodes, v)) {\n var removeEdge = function(e) { self.removeEdge(self._edgeObjs[e]); };\n delete this._nodes[v];\n if (this._isCompound) {\n this._removeFromParentsChildList(v);\n delete this._parent[v];\n _.each(this.children(v), function(child) {\n self.setParent(child);\n });\n delete this._children[v];\n }\n _.each(_.keys(this._in[v]), removeEdge);\n delete this._in[v];\n delete this._preds[v];\n _.each(_.keys(this._out[v]), removeEdge);\n delete this._out[v];\n delete this._sucs[v];\n --this._nodeCount;\n }\n return this;\n};\n\nGraph.prototype.setParent = function(v, parent) {\n if (!this._isCompound) {\n throw new Error(\"Cannot set parent in a non-compound graph\");\n }\n\n if (_.isUndefined(parent)) {\n parent = GRAPH_NODE;\n } else {\n // Coerce parent to string\n parent += \"\";\n for (var ancestor = parent;\n !_.isUndefined(ancestor);\n ancestor = this.parent(ancestor)) {\n if (ancestor === v) {\n throw new Error(\"Setting \" + parent+ \" as parent of \" + v +\n \" would create a cycle\");\n }\n }\n\n this.setNode(parent);\n }\n\n this.setNode(v);\n this._removeFromParentsChildList(v);\n this._parent[v] = parent;\n this._children[parent][v] = true;\n return this;\n};\n\nGraph.prototype._removeFromParentsChildList = function(v) {\n delete this._children[this._parent[v]][v];\n};\n\nGraph.prototype.parent = function(v) {\n if (this._isCompound) {\n var parent = this._parent[v];\n if (parent !== GRAPH_NODE) {\n return parent;\n }\n }\n};\n\nGraph.prototype.children = function(v) {\n if (_.isUndefined(v)) {\n v = GRAPH_NODE;\n }\n\n if (this._isCompound) {\n var children = this._children[v];\n if (children) {\n return _.keys(children);\n }\n } else if (v === GRAPH_NODE) {\n return this.nodes();\n } else if (this.hasNode(v)) {\n return [];\n }\n};\n\nGraph.prototype.predecessors = function(v) {\n var predsV = this._preds[v];\n if (predsV) {\n return _.keys(predsV);\n }\n};\n\nGraph.prototype.successors = function(v) {\n var sucsV = this._sucs[v];\n if (sucsV) {\n return _.keys(sucsV);\n }\n};\n\nGraph.prototype.neighbors = function(v) {\n var preds = this.predecessors(v);\n if (preds) {\n return _.union(preds, this.successors(v));\n }\n};\n\nGraph.prototype.isLeaf = function (v) {\n var neighbors;\n if (this.isDirected()) {\n neighbors = this.successors(v);\n } else {\n neighbors = this.neighbors(v);\n }\n return neighbors.length === 0;\n};\n\nGraph.prototype.filterNodes = function(filter) {\n var copy = new this.constructor({\n directed: this._isDirected,\n multigraph: this._isMultigraph,\n compound: this._isCompound\n });\n\n copy.setGraph(this.graph());\n\n var self = this;\n _.each(this._nodes, function(value, v) {\n if (filter(v)) {\n copy.setNode(v, value);\n }\n });\n\n _.each(this._edgeObjs, function(e) {\n if (copy.hasNode(e.v) && copy.hasNode(e.w)) {\n copy.setEdge(e, self.edge(e));\n }\n });\n\n var parents = {};\n function findParent(v) {\n var parent = self.parent(v);\n if (parent === undefined || copy.hasNode(parent)) {\n parents[v] = parent;\n return parent;\n } else if (parent in parents) {\n return parents[parent];\n } else {\n return findParent(parent);\n }\n }\n\n if (this._isCompound) {\n _.each(copy.nodes(), function(v) {\n copy.setParent(v, findParent(v));\n });\n }\n\n return copy;\n};\n\n/* === Edge functions ========== */\n\nGraph.prototype.setDefaultEdgeLabel = function(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultEdgeLabelFn = newDefault;\n return this;\n};\n\nGraph.prototype.edgeCount = function() {\n return this._edgeCount;\n};\n\nGraph.prototype.edges = function() {\n return _.values(this._edgeObjs);\n};\n\nGraph.prototype.setPath = function(vs, value) {\n var self = this;\n var args = arguments;\n _.reduce(vs, function(v, w) {\n if (args.length > 1) {\n self.setEdge(v, w, value);\n } else {\n self.setEdge(v, w);\n }\n return w;\n });\n return this;\n};\n\n/*\n * setEdge(v, w, [value, [name]])\n * setEdge({ v, w, [name] }, [value])\n */\nGraph.prototype.setEdge = function() {\n var v, w, name, value;\n var valueSpecified = false;\n var arg0 = arguments[0];\n\n if (typeof arg0 === \"object\" && arg0 !== null && \"v\" in arg0) {\n v = arg0.v;\n w = arg0.w;\n name = arg0.name;\n if (arguments.length === 2) {\n value = arguments[1];\n valueSpecified = true;\n }\n } else {\n v = arg0;\n w = arguments[1];\n name = arguments[3];\n if (arguments.length > 2) {\n value = arguments[2];\n valueSpecified = true;\n }\n }\n\n v = \"\" + v;\n w = \"\" + w;\n if (!_.isUndefined(name)) {\n name = \"\" + name;\n }\n\n var e = edgeArgsToId(this._isDirected, v, w, name);\n if (_.has(this._edgeLabels, e)) {\n if (valueSpecified) {\n this._edgeLabels[e] = value;\n }\n return this;\n }\n\n if (!_.isUndefined(name) && !this._isMultigraph) {\n throw new Error(\"Cannot set a named edge when isMultigraph = false\");\n }\n\n // It didn't exist, so we need to create it.\n // First ensure the nodes exist.\n this.setNode(v);\n this.setNode(w);\n\n this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);\n\n var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);\n // Ensure we add undirected edges in a consistent way.\n v = edgeObj.v;\n w = edgeObj.w;\n\n Object.freeze(edgeObj);\n this._edgeObjs[e] = edgeObj;\n incrementOrInitEntry(this._preds[w], v);\n incrementOrInitEntry(this._sucs[v], w);\n this._in[w][e] = edgeObj;\n this._out[v][e] = edgeObj;\n this._edgeCount++;\n return this;\n};\n\nGraph.prototype.edge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n return this._edgeLabels[e];\n};\n\nGraph.prototype.hasEdge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n return _.has(this._edgeLabels, e);\n};\n\nGraph.prototype.removeEdge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n var edge = this._edgeObjs[e];\n if (edge) {\n v = edge.v;\n w = edge.w;\n delete this._edgeLabels[e];\n delete this._edgeObjs[e];\n decrementOrRemoveEntry(this._preds[w], v);\n decrementOrRemoveEntry(this._sucs[v], w);\n delete this._in[w][e];\n delete this._out[v][e];\n this._edgeCount--;\n }\n return this;\n};\n\nGraph.prototype.inEdges = function(v, u) {\n var inV = this._in[v];\n if (inV) {\n var edges = _.values(inV);\n if (!u) {\n return edges;\n }\n return _.filter(edges, function(edge) { return edge.v === u; });\n }\n};\n\nGraph.prototype.outEdges = function(v, w) {\n var outV = this._out[v];\n if (outV) {\n var edges = _.values(outV);\n if (!w) {\n return edges;\n }\n return _.filter(edges, function(edge) { return edge.w === w; });\n }\n};\n\nGraph.prototype.nodeEdges = function(v, w) {\n var inEdges = this.inEdges(v, w);\n if (inEdges) {\n return inEdges.concat(this.outEdges(v, w));\n }\n};\n\nfunction incrementOrInitEntry(map, k) {\n if (map[k]) {\n map[k]++;\n } else {\n map[k] = 1;\n }\n}\n\nfunction decrementOrRemoveEntry(map, k) {\n if (!--map[k]) { delete map[k]; }\n}\n\nfunction edgeArgsToId(isDirected, v_, w_, name) {\n var v = \"\" + v_;\n var w = \"\" + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM +\n (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name);\n}\n\nfunction edgeArgsToObj(isDirected, v_, w_, name) {\n var v = \"\" + v_;\n var w = \"\" + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n var edgeObj = { v: v, w: w };\n if (name) {\n edgeObj.name = name;\n }\n return edgeObj;\n}\n\nfunction edgeObjToId(isDirected, edgeObj) {\n return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);\n}\n","module.exports = '2.1.8';\n","// Includes only the \"core\" of graphlib\nmodule.exports = {\n Graph: require(\"./graph\"),\n version: require(\"./version\")\n};\n","var _ = require(\"./lodash\");\nvar Graph = require(\"./graph\");\n\nmodule.exports = {\n write: write,\n read: read\n};\n\nfunction write(g) {\n var json = {\n options: {\n directed: g.isDirected(),\n multigraph: g.isMultigraph(),\n compound: g.isCompound()\n },\n nodes: writeNodes(g),\n edges: writeEdges(g)\n };\n if (!_.isUndefined(g.graph())) {\n json.value = _.clone(g.graph());\n }\n return json;\n}\n\nfunction writeNodes(g) {\n return _.map(g.nodes(), function(v) {\n var nodeValue = g.node(v);\n var parent = g.parent(v);\n var node = { v: v };\n if (!_.isUndefined(nodeValue)) {\n node.value = nodeValue;\n }\n if (!_.isUndefined(parent)) {\n node.parent = parent;\n }\n return node;\n });\n}\n\nfunction writeEdges(g) {\n return _.map(g.edges(), function(e) {\n var edgeValue = g.edge(e);\n var edge = { v: e.v, w: e.w };\n if (!_.isUndefined(e.name)) {\n edge.name = e.name;\n }\n if (!_.isUndefined(edgeValue)) {\n edge.value = edgeValue;\n }\n return edge;\n });\n}\n\nfunction read(json) {\n var g = new Graph(json.options).setGraph(json.value);\n _.each(json.nodes, function(entry) {\n g.setNode(entry.v, entry.value);\n if (entry.parent) {\n g.setParent(entry.v, entry.parent);\n }\n });\n _.each(json.edges, function(entry) {\n g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value);\n });\n return g;\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = components;\n\nfunction components(g) {\n var visited = {};\n var cmpts = [];\n var cmpt;\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n cmpt.push(v);\n _.each(g.successors(v), dfs);\n _.each(g.predecessors(v), dfs);\n }\n\n _.each(g.nodes(), function(v) {\n cmpt = [];\n dfs(v);\n if (cmpt.length) {\n cmpts.push(cmpt);\n }\n });\n\n return cmpts;\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = PriorityQueue;\n\n/**\n * A min-priority queue data structure. This algorithm is derived from Cormen,\n * et al., \"Introduction to Algorithms\". The basic idea of a min-priority\n * queue is that you can efficiently (in O(1) time) get the smallest key in\n * the queue. Adding and removing elements takes O(log n) time. A key can\n * have its priority decreased in O(log n) time.\n */\nfunction PriorityQueue() {\n this._arr = [];\n this._keyIndices = {};\n}\n\n/**\n * Returns the number of elements in the queue. Takes `O(1)` time.\n */\nPriorityQueue.prototype.size = function() {\n return this._arr.length;\n};\n\n/**\n * Returns the keys that are in the queue. Takes `O(n)` time.\n */\nPriorityQueue.prototype.keys = function() {\n return this._arr.map(function(x) { return x.key; });\n};\n\n/**\n * Returns `true` if **key** is in the queue and `false` if not.\n */\nPriorityQueue.prototype.has = function(key) {\n return _.has(this._keyIndices, key);\n};\n\n/**\n * Returns the priority for **key**. If **key** is not present in the queue\n * then this function returns `undefined`. Takes `O(1)` time.\n *\n * @param {Object} key\n */\nPriorityQueue.prototype.priority = function(key) {\n var index = this._keyIndices[key];\n if (index !== undefined) {\n return this._arr[index].priority;\n }\n};\n\n/**\n * Returns the key for the minimum element in this queue. If the queue is\n * empty this function throws an Error. Takes `O(1)` time.\n */\nPriorityQueue.prototype.min = function() {\n if (this.size() === 0) {\n throw new Error(\"Queue underflow\");\n }\n return this._arr[0].key;\n};\n\n/**\n * Inserts a new key into the priority queue. If the key already exists in\n * the queue this function returns `false`; otherwise it will return `true`.\n * Takes `O(n)` time.\n *\n * @param {Object} key the key to add\n * @param {Number} priority the initial priority for the key\n */\nPriorityQueue.prototype.add = function(key, priority) {\n var keyIndices = this._keyIndices;\n key = String(key);\n if (!_.has(keyIndices, key)) {\n var arr = this._arr;\n var index = arr.length;\n keyIndices[key] = index;\n arr.push({key: key, priority: priority});\n this._decrease(index);\n return true;\n }\n return false;\n};\n\n/**\n * Removes and returns the smallest key in the queue. Takes `O(log n)` time.\n */\nPriorityQueue.prototype.removeMin = function() {\n this._swap(0, this._arr.length - 1);\n var min = this._arr.pop();\n delete this._keyIndices[min.key];\n this._heapify(0);\n return min.key;\n};\n\n/**\n * Decreases the priority for **key** to **priority**. If the new priority is\n * greater than the previous priority, this function will throw an Error.\n *\n * @param {Object} key the key for which to raise priority\n * @param {Number} priority the new priority for the key\n */\nPriorityQueue.prototype.decrease = function(key, priority) {\n var index = this._keyIndices[key];\n if (priority > this._arr[index].priority) {\n throw new Error(\"New priority is greater than current priority. \" +\n \"Key: \" + key + \" Old: \" + this._arr[index].priority + \" New: \" + priority);\n }\n this._arr[index].priority = priority;\n this._decrease(index);\n};\n\nPriorityQueue.prototype._heapify = function(i) {\n var arr = this._arr;\n var l = 2 * i;\n var r = l + 1;\n var largest = i;\n if (l < arr.length) {\n largest = arr[l].priority < arr[largest].priority ? l : largest;\n if (r < arr.length) {\n largest = arr[r].priority < arr[largest].priority ? r : largest;\n }\n if (largest !== i) {\n this._swap(i, largest);\n this._heapify(largest);\n }\n }\n};\n\nPriorityQueue.prototype._decrease = function(index) {\n var arr = this._arr;\n var priority = arr[index].priority;\n var parent;\n while (index !== 0) {\n parent = index >> 1;\n if (arr[parent].priority < priority) {\n break;\n }\n this._swap(index, parent);\n index = parent;\n }\n};\n\nPriorityQueue.prototype._swap = function(i, j) {\n var arr = this._arr;\n var keyIndices = this._keyIndices;\n var origArrI = arr[i];\n var origArrJ = arr[j];\n arr[i] = origArrJ;\n arr[j] = origArrI;\n keyIndices[origArrJ.key] = i;\n keyIndices[origArrI.key] = j;\n};\n","var _ = require(\"../lodash\");\nvar PriorityQueue = require(\"../data/priority-queue\");\n\nmodule.exports = dijkstra;\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\nfunction dijkstra(g, source, weightFn, edgeFn) {\n return runDijkstra(g, String(source),\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn || function(v) { return g.outEdges(v); });\n}\n\nfunction runDijkstra(g, source, weightFn, edgeFn) {\n var results = {};\n var pq = new PriorityQueue();\n var v, vEntry;\n\n var updateNeighbors = function(edge) {\n var w = edge.v !== v ? edge.v : edge.w;\n var wEntry = results[w];\n var weight = weightFn(edge);\n var distance = vEntry.distance + weight;\n\n if (weight < 0) {\n throw new Error(\"dijkstra does not allow negative edge weights. \" +\n \"Bad edge: \" + edge + \" Weight: \" + weight);\n }\n\n if (distance < wEntry.distance) {\n wEntry.distance = distance;\n wEntry.predecessor = v;\n pq.decrease(w, distance);\n }\n };\n\n g.nodes().forEach(function(v) {\n var distance = v === source ? 0 : Number.POSITIVE_INFINITY;\n results[v] = { distance: distance };\n pq.add(v, distance);\n });\n\n while (pq.size() > 0) {\n v = pq.removeMin();\n vEntry = results[v];\n if (vEntry.distance === Number.POSITIVE_INFINITY) {\n break;\n }\n\n edgeFn(v).forEach(updateNeighbors);\n }\n\n return results;\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = tarjan;\n\nfunction tarjan(g) {\n var index = 0;\n var stack = [];\n var visited = {}; // node id -> { onStack, lowlink, index }\n var results = [];\n\n function dfs(v) {\n var entry = visited[v] = {\n onStack: true,\n lowlink: index,\n index: index++\n };\n stack.push(v);\n\n g.successors(v).forEach(function(w) {\n if (!_.has(visited, w)) {\n dfs(w);\n entry.lowlink = Math.min(entry.lowlink, visited[w].lowlink);\n } else if (visited[w].onStack) {\n entry.lowlink = Math.min(entry.lowlink, visited[w].index);\n }\n });\n\n if (entry.lowlink === entry.index) {\n var cmpt = [];\n var w;\n do {\n w = stack.pop();\n visited[w].onStack = false;\n cmpt.push(w);\n } while (v !== w);\n results.push(cmpt);\n }\n }\n\n g.nodes().forEach(function(v) {\n if (!_.has(visited, v)) {\n dfs(v);\n }\n });\n\n return results;\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = floydWarshall;\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\nfunction floydWarshall(g, weightFn, edgeFn) {\n return runFloydWarshall(g,\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn || function(v) { return g.outEdges(v); });\n}\n\nfunction runFloydWarshall(g, weightFn, edgeFn) {\n var results = {};\n var nodes = g.nodes();\n\n nodes.forEach(function(v) {\n results[v] = {};\n results[v][v] = { distance: 0 };\n nodes.forEach(function(w) {\n if (v !== w) {\n results[v][w] = { distance: Number.POSITIVE_INFINITY };\n }\n });\n edgeFn(v).forEach(function(edge) {\n var w = edge.v === v ? edge.w : edge.v;\n var d = weightFn(edge);\n results[v][w] = { distance: d, predecessor: v };\n });\n });\n\n nodes.forEach(function(k) {\n var rowK = results[k];\n nodes.forEach(function(i) {\n var rowI = results[i];\n nodes.forEach(function(j) {\n var ik = rowI[k];\n var kj = rowK[j];\n var ij = rowI[j];\n var altDistance = ik.distance + kj.distance;\n if (altDistance < ij.distance) {\n ij.distance = altDistance;\n ij.predecessor = kj.predecessor;\n }\n });\n });\n });\n\n return results;\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = topsort;\ntopsort.CycleException = CycleException;\n\nfunction topsort(g) {\n var visited = {};\n var stack = {};\n var results = [];\n\n function visit(node) {\n if (_.has(stack, node)) {\n throw new CycleException();\n }\n\n if (!_.has(visited, node)) {\n stack[node] = true;\n visited[node] = true;\n _.each(g.predecessors(node), visit);\n delete stack[node];\n results.push(node);\n }\n }\n\n _.each(g.sinks(), visit);\n\n if (_.size(visited) !== g.nodeCount()) {\n throw new CycleException();\n }\n\n return results;\n}\n\nfunction CycleException() {}\nCycleException.prototype = new Error(); // must be an instance of Error to pass testing","var _ = require(\"../lodash\");\n\nmodule.exports = dfs;\n\n/*\n * A helper that preforms a pre- or post-order traversal on the input graph\n * and returns the nodes in the order they were visited. If the graph is\n * undirected then this algorithm will navigate using neighbors. If the graph\n * is directed then this algorithm will navigate using successors.\n *\n * Order must be one of \"pre\" or \"post\".\n */\nfunction dfs(g, vs, order) {\n if (!_.isArray(vs)) {\n vs = [vs];\n }\n\n var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g);\n\n var acc = [];\n var visited = {};\n _.each(vs, function(v) {\n if (!g.hasNode(v)) {\n throw new Error(\"Graph does not have node: \" + v);\n }\n\n doDfs(g, v, order === \"post\", visited, navigation, acc);\n });\n return acc;\n}\n\nfunction doDfs(g, v, postorder, visited, navigation, acc) {\n if (!_.has(visited, v)) {\n visited[v] = true;\n\n if (!postorder) { acc.push(v); }\n _.each(navigation(v), function(w) {\n doDfs(g, w, postorder, visited, navigation, acc);\n });\n if (postorder) { acc.push(v); }\n }\n}\n","module.exports = {\n components: require(\"./components\"),\n dijkstra: require(\"./dijkstra\"),\n dijkstraAll: require(\"./dijkstra-all\"),\n findCycles: require(\"./find-cycles\"),\n floydWarshall: require(\"./floyd-warshall\"),\n isAcyclic: require(\"./is-acyclic\"),\n postorder: require(\"./postorder\"),\n preorder: require(\"./preorder\"),\n prim: require(\"./prim\"),\n tarjan: require(\"./tarjan\"),\n topsort: require(\"./topsort\")\n};\n","/* global window */\n\nvar graphlib;\n\nif (typeof require === \"function\") {\n try {\n graphlib = require(\"graphlib\");\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!graphlib) {\n graphlib = window.graphlib;\n}\n\nmodule.exports = graphlib;\n","/**\n * Copyright (c) 2014, Chris Pettitt\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar lib = require(\"./lib\");\n\nmodule.exports = {\n Graph: lib.Graph,\n json: require(\"./lib/json\"),\n alg: require(\"./lib/alg\"),\n version: lib.version\n};\n","var dijkstra = require(\"./dijkstra\");\nvar _ = require(\"../lodash\");\n\nmodule.exports = dijkstraAll;\n\nfunction dijkstraAll(g, weightFunc, edgeFunc) {\n return _.transform(g.nodes(), function(acc, v) {\n acc[v] = dijkstra(g, v, weightFunc, edgeFunc);\n }, {});\n}\n","var _ = require(\"../lodash\");\nvar tarjan = require(\"./tarjan\");\n\nmodule.exports = findCycles;\n\nfunction findCycles(g) {\n return _.filter(tarjan(g), function(cmpt) {\n return cmpt.length > 1 || (cmpt.length === 1 && g.hasEdge(cmpt[0], cmpt[0]));\n });\n}\n","var topsort = require(\"./topsort\");\n\nmodule.exports = isAcyclic;\n\nfunction isAcyclic(g) {\n try {\n topsort(g);\n } catch (e) {\n if (e instanceof topsort.CycleException) {\n return false;\n }\n throw e;\n }\n return true;\n}\n","var dfs = require(\"./dfs\");\n\nmodule.exports = postorder;\n\nfunction postorder(g, vs) {\n return dfs(g, vs, \"post\");\n}\n","var dfs = require(\"./dfs\");\n\nmodule.exports = preorder;\n\nfunction preorder(g, vs) {\n return dfs(g, vs, \"pre\");\n}\n","var _ = require(\"../lodash\");\nvar Graph = require(\"../graph\");\nvar PriorityQueue = require(\"../data/priority-queue\");\n\nmodule.exports = prim;\n\nfunction prim(g, weightFunc) {\n var result = new Graph();\n var parents = {};\n var pq = new PriorityQueue();\n var v;\n\n function updateNeighbors(edge) {\n var w = edge.v === v ? edge.w : edge.v;\n var pri = pq.priority(w);\n if (pri !== undefined) {\n var edgeWeight = weightFunc(edge);\n if (edgeWeight < pri) {\n parents[w] = v;\n pq.decrease(w, edgeWeight);\n }\n }\n }\n\n if (g.nodeCount() === 0) {\n return result;\n }\n\n _.each(g.nodes(), function(v) {\n pq.add(v, Number.POSITIVE_INFINITY);\n result.setNode(v);\n });\n\n // Start from an arbitrary node\n pq.decrease(g.nodes()[0], 0);\n\n var init = false;\n while (pq.size() > 0) {\n v = pq.removeMin();\n if (_.has(parents, v)) {\n result.setEdge(v, parents[v]);\n } else if (init) {\n throw new Error(\"Input graph is not connected: \" + g);\n } else {\n init = true;\n }\n\n g.nodeEdges(v).forEach(updateNeighbors);\n }\n\n return result;\n}\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n cloneDeep: require(\"lodash/cloneDeep\"),\n constant: require(\"lodash/constant\"),\n defaults: require(\"lodash/defaults\"),\n each: require(\"lodash/each\"),\n filter: require(\"lodash/filter\"),\n find: require(\"lodash/find\"),\n flatten: require(\"lodash/flatten\"),\n forEach: require(\"lodash/forEach\"),\n forIn: require(\"lodash/forIn\"),\n has: require(\"lodash/has\"),\n isUndefined: require(\"lodash/isUndefined\"),\n last: require(\"lodash/last\"),\n map: require(\"lodash/map\"),\n mapValues: require(\"lodash/mapValues\"),\n max: require(\"lodash/max\"),\n merge: require(\"lodash/merge\"),\n min: require(\"lodash/min\"),\n minBy: require(\"lodash/minBy\"),\n now: require(\"lodash/now\"),\n pick: require(\"lodash/pick\"),\n range: require(\"lodash/range\"),\n reduce: require(\"lodash/reduce\"),\n sortBy: require(\"lodash/sortBy\"),\n uniqueId: require(\"lodash/uniqueId\"),\n values: require(\"lodash/values\"),\n zipObject: require(\"lodash/zipObject\"),\n };\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var baseRest = require('./_baseRest'),\n eq = require('./eq'),\n isIterateeCall = require('./_isIterateeCall'),\n keysIn = require('./keysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nmodule.exports = defaults;\n","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var isSymbol = require('./isSymbol');\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseExtremum;\n","/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var basePickBy = require('./_basePickBy'),\n hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","var basePick = require('./_basePick'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","var baseFor = require('./_baseFor'),\n castFunction = require('./_castFunction'),\n keysIn = require('./keysIn');\n\n/**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\nfunction forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, castFunction(iteratee), keysIn);\n}\n\nmodule.exports = forIn;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n identity = require('./identity');\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n}\n\nmodule.exports = max;\n","var baseExtremum = require('./_baseExtremum'),\n baseLt = require('./_baseLt'),\n identity = require('./identity');\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nmodule.exports = min;\n","var baseExtremum = require('./_baseExtremum'),\n baseIteratee = require('./_baseIteratee'),\n baseLt = require('./_baseLt');\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n : undefined;\n}\n\nmodule.exports = minBy;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var assignValue = require('./_assignValue'),\n baseZipObject = require('./_baseZipObject');\n\n/**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n}\n\nmodule.exports = zipObject;\n","/**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\nfunction baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n}\n\nmodule.exports = baseZipObject;\n","/*\n * Simple doubly linked list implementation derived from Cormen, et al.,\n * \"Introduction to Algorithms\".\n */\n\nmodule.exports = List;\n\nfunction List() {\n var sentinel = {};\n sentinel._next = sentinel._prev = sentinel;\n this._sentinel = sentinel;\n}\n\nList.prototype.dequeue = function() {\n var sentinel = this._sentinel;\n var entry = sentinel._prev;\n if (entry !== sentinel) {\n unlink(entry);\n return entry;\n }\n};\n\nList.prototype.enqueue = function(entry) {\n var sentinel = this._sentinel;\n if (entry._prev && entry._next) {\n unlink(entry);\n }\n entry._next = sentinel._next;\n sentinel._next._prev = entry;\n sentinel._next = entry;\n entry._prev = sentinel;\n};\n\nList.prototype.toString = function() {\n var strs = [];\n var sentinel = this._sentinel;\n var curr = sentinel._prev;\n while (curr !== sentinel) {\n strs.push(JSON.stringify(curr, filterOutLinks));\n curr = curr._prev;\n }\n return \"[\" + strs.join(\", \") + \"]\";\n};\n\nfunction unlink(entry) {\n entry._prev._next = entry._next;\n entry._next._prev = entry._prev;\n delete entry._next;\n delete entry._prev;\n}\n\nfunction filterOutLinks(k, v) {\n if (k !== \"_next\" && k !== \"_prev\") {\n return v;\n }\n}\n","var _ = require(\"./lodash\");\nvar Graph = require(\"./graphlib\").Graph;\nvar List = require(\"./data/list\");\n\n/*\n * A greedy heuristic for finding a feedback arc set for a graph. A feedback\n * arc set is a set of edges that can be removed to make a graph acyclic.\n * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, \"A fast and\n * effective heuristic for the feedback arc set problem.\" This implementation\n * adjusts that from the paper to allow for weighted edges.\n */\nmodule.exports = greedyFAS;\n\nvar DEFAULT_WEIGHT_FN = _.constant(1);\n\nfunction greedyFAS(g, weightFn) {\n if (g.nodeCount() <= 1) {\n return [];\n }\n var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);\n var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);\n\n // Expand multi-edges\n return _.flatten(_.map(results, function(e) {\n return g.outEdges(e.v, e.w);\n }), true);\n}\n\nfunction doGreedyFAS(g, buckets, zeroIdx) {\n var results = [];\n var sources = buckets[buckets.length - 1];\n var sinks = buckets[0];\n\n var entry;\n while (g.nodeCount()) {\n while ((entry = sinks.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n while ((entry = sources.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n if (g.nodeCount()) {\n for (var i = buckets.length - 2; i > 0; --i) {\n entry = buckets[i].dequeue();\n if (entry) {\n results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));\n break;\n }\n }\n }\n }\n\n return results;\n}\n\nfunction removeNode(g, buckets, zeroIdx, entry, collectPredecessors) {\n var results = collectPredecessors ? [] : undefined;\n\n _.forEach(g.inEdges(entry.v), function(edge) {\n var weight = g.edge(edge);\n var uEntry = g.node(edge.v);\n\n if (collectPredecessors) {\n results.push({ v: edge.v, w: edge.w });\n }\n\n uEntry.out -= weight;\n assignBucket(buckets, zeroIdx, uEntry);\n });\n\n _.forEach(g.outEdges(entry.v), function(edge) {\n var weight = g.edge(edge);\n var w = edge.w;\n var wEntry = g.node(w);\n wEntry[\"in\"] -= weight;\n assignBucket(buckets, zeroIdx, wEntry);\n });\n\n g.removeNode(entry.v);\n\n return results;\n}\n\nfunction buildState(g, weightFn) {\n var fasGraph = new Graph();\n var maxIn = 0;\n var maxOut = 0;\n\n _.forEach(g.nodes(), function(v) {\n fasGraph.setNode(v, { v: v, \"in\": 0, out: 0 });\n });\n\n // Aggregate weights on nodes, but also sum the weights across multi-edges\n // into a single edge for the fasGraph.\n _.forEach(g.edges(), function(e) {\n var prevWeight = fasGraph.edge(e.v, e.w) || 0;\n var weight = weightFn(e);\n var edgeWeight = prevWeight + weight;\n fasGraph.setEdge(e.v, e.w, edgeWeight);\n maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight);\n maxIn = Math.max(maxIn, fasGraph.node(e.w)[\"in\"] += weight);\n });\n\n var buckets = _.range(maxOut + maxIn + 3).map(function() { return new List(); });\n var zeroIdx = maxIn + 1;\n\n _.forEach(fasGraph.nodes(), function(v) {\n assignBucket(buckets, zeroIdx, fasGraph.node(v));\n });\n\n return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx };\n}\n\nfunction assignBucket(buckets, zeroIdx, entry) {\n if (!entry.out) {\n buckets[0].enqueue(entry);\n } else if (!entry[\"in\"]) {\n buckets[buckets.length - 1].enqueue(entry);\n } else {\n buckets[entry.out - entry[\"in\"] + zeroIdx].enqueue(entry);\n }\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar greedyFAS = require(\"./greedy-fas\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\nfunction run(g) {\n var fas = (g.graph().acyclicer === \"greedy\"\n ? greedyFAS(g, weightFn(g))\n : dfsFAS(g));\n _.forEach(fas, function(e) {\n var label = g.edge(e);\n g.removeEdge(e);\n label.forwardName = e.name;\n label.reversed = true;\n g.setEdge(e.w, e.v, label, _.uniqueId(\"rev\"));\n });\n\n function weightFn(g) {\n return function(e) {\n return g.edge(e).weight;\n };\n }\n}\n\nfunction dfsFAS(g) {\n var fas = [];\n var stack = {};\n var visited = {};\n\n function dfs(v) {\n if (_.has(visited, v)) {\n return;\n }\n visited[v] = true;\n stack[v] = true;\n _.forEach(g.outEdges(v), function(e) {\n if (_.has(stack, e.w)) {\n fas.push(e);\n } else {\n dfs(e.w);\n }\n });\n delete stack[v];\n }\n\n _.forEach(g.nodes(), dfs);\n return fas;\n}\n\nfunction undo(g) {\n _.forEach(g.edges(), function(e) {\n var label = g.edge(e);\n if (label.reversed) {\n g.removeEdge(e);\n\n var forwardName = label.forwardName;\n delete label.reversed;\n delete label.forwardName;\n g.setEdge(e.w, e.v, label, forwardName);\n }\n });\n}\n","/* eslint \"no-console\": off */\n\n\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = {\n addDummyNode: addDummyNode,\n simplify: simplify,\n asNonCompoundGraph: asNonCompoundGraph,\n successorWeights: successorWeights,\n predecessorWeights: predecessorWeights,\n intersectRect: intersectRect,\n buildLayerMatrix: buildLayerMatrix,\n normalizeRanks: normalizeRanks,\n removeEmptyRanks: removeEmptyRanks,\n addBorderNode: addBorderNode,\n maxRank: maxRank,\n partition: partition,\n time: time,\n notime: notime\n};\n\n/*\n * Adds a dummy node to the graph and return v.\n */\nfunction addDummyNode(g, type, attrs, name) {\n var v;\n do {\n v = _.uniqueId(name);\n } while (g.hasNode(v));\n\n attrs.dummy = type;\n g.setNode(v, attrs);\n return v;\n}\n\n/*\n * Returns a new graph with only simple edges. Handles aggregation of data\n * associated with multi-edges.\n */\nfunction simplify(g) {\n var simplified = new Graph().setGraph(g.graph());\n _.forEach(g.nodes(), function(v) { simplified.setNode(v, g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 };\n var label = g.edge(e);\n simplified.setEdge(e.v, e.w, {\n weight: simpleLabel.weight + label.weight,\n minlen: Math.max(simpleLabel.minlen, label.minlen)\n });\n });\n return simplified;\n}\n\nfunction asNonCompoundGraph(g) {\n var simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph());\n _.forEach(g.nodes(), function(v) {\n if (!g.children(v).length) {\n simplified.setNode(v, g.node(v));\n }\n });\n _.forEach(g.edges(), function(e) {\n simplified.setEdge(e, g.edge(e));\n });\n return simplified;\n}\n\nfunction successorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var sucs = {};\n _.forEach(g.outEdges(v), function(e) {\n sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight;\n });\n return sucs;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\nfunction predecessorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var preds = {};\n _.forEach(g.inEdges(v), function(e) {\n preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight;\n });\n return preds;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\n/*\n * Finds where a line starting at point ({x, y}) would intersect a rectangle\n * ({x, y, width, height}) if it were pointing at the rectangle's center.\n */\nfunction intersectRect(rect, point) {\n var x = rect.x;\n var y = rect.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = rect.width / 2;\n var h = rect.height / 2;\n\n if (!dx && !dy) {\n throw new Error(\"Not possible to find intersection inside of the rectangle\");\n }\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = h * dx / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = w * dy / dx;\n }\n\n return { x: x + sx, y: y + sy };\n}\n\n/*\n * Given a DAG with each node assigned \"rank\" and \"order\" properties, this\n * function will produce a matrix with the ids of each node.\n */\nfunction buildLayerMatrix(g) {\n var layering = _.map(_.range(maxRank(g) + 1), function() { return []; });\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n var rank = node.rank;\n if (!_.isUndefined(rank)) {\n layering[rank][node.order] = v;\n }\n });\n return layering;\n}\n\n/*\n * Adjusts the ranks for all nodes in the graph such that all nodes v have\n * rank(v) >= 0 and at least one node w has rank(w) = 0.\n */\nfunction normalizeRanks(g) {\n var min = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (_.has(node, \"rank\")) {\n node.rank -= min;\n }\n });\n}\n\nfunction removeEmptyRanks(g) {\n // Ranks may not start at 0, so we need to offset them\n var offset = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n\n var layers = [];\n _.forEach(g.nodes(), function(v) {\n var rank = g.node(v).rank - offset;\n if (!layers[rank]) {\n layers[rank] = [];\n }\n layers[rank].push(v);\n });\n\n var delta = 0;\n var nodeRankFactor = g.graph().nodeRankFactor;\n _.forEach(layers, function(vs, i) {\n if (_.isUndefined(vs) && i % nodeRankFactor !== 0) {\n --delta;\n } else if (delta) {\n _.forEach(vs, function(v) { g.node(v).rank += delta; });\n }\n });\n}\n\nfunction addBorderNode(g, prefix, rank, order) {\n var node = {\n width: 0,\n height: 0\n };\n if (arguments.length >= 4) {\n node.rank = rank;\n node.order = order;\n }\n return addDummyNode(g, \"border\", node, prefix);\n}\n\nfunction maxRank(g) {\n return _.max(_.map(g.nodes(), function(v) {\n var rank = g.node(v).rank;\n if (!_.isUndefined(rank)) {\n return rank;\n }\n }));\n}\n\n/*\n * Partition a collection into two groups: `lhs` and `rhs`. If the supplied\n * function returns true for an entry it goes into `lhs`. Otherwise it goes\n * into `rhs.\n */\nfunction partition(collection, fn) {\n var result = { lhs: [], rhs: [] };\n _.forEach(collection, function(value) {\n if (fn(value)) {\n result.lhs.push(value);\n } else {\n result.rhs.push(value);\n }\n });\n return result;\n}\n\n/*\n * Returns a new function that wraps `fn` with a timer. The wrapper logs the\n * time it takes to execute the function.\n */\nfunction time(name, fn) {\n var start = _.now();\n try {\n return fn();\n } finally {\n console.log(name + \" time: \" + (_.now() - start) + \"ms\");\n }\n}\n\nfunction notime(name, fn) {\n return fn();\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\n/*\n * Breaks any long edges in the graph into short segments that span 1 layer\n * each. This operation is undoable with the denormalize function.\n *\n * Pre-conditions:\n *\n * 1. The input graph is a DAG.\n * 2. Each node in the graph has a \"rank\" property.\n *\n * Post-condition:\n *\n * 1. All edges in the graph have a length of 1.\n * 2. Dummy nodes are added where edges have been split into segments.\n * 3. The graph is augmented with a \"dummyChains\" attribute which contains\n * the first dummy in each chain of dummy nodes produced.\n */\nfunction run(g) {\n g.graph().dummyChains = [];\n _.forEach(g.edges(), function(edge) { normalizeEdge(g, edge); });\n}\n\nfunction normalizeEdge(g, e) {\n var v = e.v;\n var vRank = g.node(v).rank;\n var w = e.w;\n var wRank = g.node(w).rank;\n var name = e.name;\n var edgeLabel = g.edge(e);\n var labelRank = edgeLabel.labelRank;\n\n if (wRank === vRank + 1) return;\n\n g.removeEdge(e);\n\n var dummy, attrs, i;\n for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {\n edgeLabel.points = [];\n attrs = {\n width: 0, height: 0,\n edgeLabel: edgeLabel, edgeObj: e,\n rank: vRank\n };\n dummy = util.addDummyNode(g, \"edge\", attrs, \"_d\");\n if (vRank === labelRank) {\n attrs.width = edgeLabel.width;\n attrs.height = edgeLabel.height;\n attrs.dummy = \"edge-label\";\n attrs.labelpos = edgeLabel.labelpos;\n }\n g.setEdge(v, dummy, { weight: edgeLabel.weight }, name);\n if (i === 0) {\n g.graph().dummyChains.push(dummy);\n }\n v = dummy;\n }\n\n g.setEdge(v, w, { weight: edgeLabel.weight }, name);\n}\n\nfunction undo(g) {\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v);\n var origLabel = node.edgeLabel;\n var w;\n g.setEdge(node.edgeObj, origLabel);\n while (node.dummy) {\n w = g.successors(v)[0];\n g.removeNode(v);\n origLabel.points.push({ x: node.x, y: node.y });\n if (node.dummy === \"edge-label\") {\n origLabel.x = node.x;\n origLabel.y = node.y;\n origLabel.width = node.width;\n origLabel.height = node.height;\n }\n v = w;\n node = g.node(v);\n }\n });\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = {\n longestPath: longestPath,\n slack: slack\n};\n\n/*\n * Initializes ranks for the input graph using the longest path algorithm. This\n * algorithm scales well and is fast in practice, it yields rather poor\n * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom\n * ranks wide and leaving edges longer than necessary. However, due to its\n * speed, this algorithm is good for getting an initial ranking that can be fed\n * into other algorithms.\n *\n * This algorithm does not normalize layers because it will be used by other\n * algorithms in most cases. If using this algorithm directly, be sure to\n * run normalize at the end.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG.\n * 2. Input graph node labels can be assigned properties.\n *\n * Post-conditions:\n *\n * 1. Each node will be assign an (unnormalized) \"rank\" property.\n */\nfunction longestPath(g) {\n var visited = {};\n\n function dfs(v) {\n var label = g.node(v);\n if (_.has(visited, v)) {\n return label.rank;\n }\n visited[v] = true;\n\n var rank = _.min(_.map(g.outEdges(v), function(e) {\n return dfs(e.w) - g.edge(e).minlen;\n }));\n\n if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3\n rank === undefined || // return value of _.map([]) for Lodash 4\n rank === null) { // return value of _.map([null])\n rank = 0;\n }\n\n return (label.rank = rank);\n }\n\n _.forEach(g.sources(), dfs);\n}\n\n/*\n * Returns the amount of slack for the given edge. The slack is defined as the\n * difference between the length of the edge and its minimum length.\n */\nfunction slack(g, e) {\n return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\nvar slack = require(\"./util\").slack;\n\nmodule.exports = feasibleTree;\n\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nfunction feasibleTree(g) {\n var t = new Graph({ directed: false });\n\n // Choose arbitrary node from which to start our tree\n var start = g.nodes()[0];\n var size = g.nodeCount();\n t.setNode(start, {});\n\n var edge, delta;\n while (tightTree(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge);\n shiftRanks(t, g, delta);\n }\n\n return t;\n}\n\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nfunction tightTree(t, g) {\n function dfs(v) {\n _.forEach(g.nodeEdges(v), function(e) {\n var edgeV = e.v,\n w = (v === edgeV) ? e.w : edgeV;\n if (!t.hasNode(w) && !slack(g, e)) {\n t.setNode(w, {});\n t.setEdge(v, w, {});\n dfs(w);\n }\n });\n }\n\n _.forEach(t.nodes(), dfs);\n return t.nodeCount();\n}\n\n/*\n * Finds the edge with the smallest slack that is incident on tree and returns\n * it.\n */\nfunction findMinSlackEdge(t, g) {\n return _.minBy(g.edges(), function(e) {\n if (t.hasNode(e.v) !== t.hasNode(e.w)) {\n return slack(g, e);\n }\n });\n}\n\nfunction shiftRanks(t, g, delta) {\n _.forEach(t.nodes(), function(v) {\n g.node(v).rank += delta;\n });\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar feasibleTree = require(\"./feasible-tree\");\nvar slack = require(\"./util\").slack;\nvar initRank = require(\"./util\").longestPath;\nvar preorder = require(\"../graphlib\").alg.preorder;\nvar postorder = require(\"../graphlib\").alg.postorder;\nvar simplify = require(\"../util\").simplify;\n\nmodule.exports = networkSimplex;\n\n// Expose some internals for testing purposes\nnetworkSimplex.initLowLimValues = initLowLimValues;\nnetworkSimplex.initCutValues = initCutValues;\nnetworkSimplex.calcCutValue = calcCutValue;\nnetworkSimplex.leaveEdge = leaveEdge;\nnetworkSimplex.enterEdge = enterEdge;\nnetworkSimplex.exchangeEdges = exchangeEdges;\n\n/*\n * The network simplex algorithm assigns ranks to each node in the input graph\n * and iteratively improves the ranking to reduce the length of edges.\n *\n * Preconditions:\n *\n * 1. The input graph must be a DAG.\n * 2. All nodes in the graph must have an object value.\n * 3. All edges in the graph must have \"minlen\" and \"weight\" attributes.\n *\n * Postconditions:\n *\n * 1. All nodes in the graph will have an assigned \"rank\" attribute that has\n * been optimized by the network simplex algorithm. Ranks start at 0.\n *\n *\n * A rough sketch of the algorithm is as follows:\n *\n * 1. Assign initial ranks to each node. We use the longest path algorithm,\n * which assigns ranks to the lowest position possible. In general this\n * leads to very wide bottom ranks and unnecessarily long edges.\n * 2. Construct a feasible tight tree. A tight tree is one such that all\n * edges in the tree have no slack (difference between length of edge\n * and minlen for the edge). This by itself greatly improves the assigned\n * rankings by shorting edges.\n * 3. Iteratively find edges that have negative cut values. Generally a\n * negative cut value indicates that the edge could be removed and a new\n * tree edge could be added to produce a more compact graph.\n *\n * Much of the algorithms here are derived from Gansner, et al., \"A Technique\n * for Drawing Directed Graphs.\" The structure of the file roughly follows the\n * structure of the overall algorithm.\n */\nfunction networkSimplex(g) {\n g = simplify(g);\n initRank(g);\n var t = feasibleTree(g);\n initLowLimValues(t);\n initCutValues(t, g);\n\n var e, f;\n while ((e = leaveEdge(t))) {\n f = enterEdge(t, g, e);\n exchangeEdges(t, g, e, f);\n }\n}\n\n/*\n * Initializes cut values for all edges in the tree.\n */\nfunction initCutValues(t, g) {\n var vs = postorder(t, t.nodes());\n vs = vs.slice(0, vs.length - 1);\n _.forEach(vs, function(v) {\n assignCutValue(t, g, v);\n });\n}\n\nfunction assignCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n t.edge(child, parent).cutvalue = calcCutValue(t, g, child);\n}\n\n/*\n * Given the tight tree, its graph, and a child in the graph calculate and\n * return the cut value for the edge between the child and its parent.\n */\nfunction calcCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n // True if the child is on the tail end of the edge in the directed graph\n var childIsTail = true;\n // The graph's view of the tree edge we're inspecting\n var graphEdge = g.edge(child, parent);\n // The accumulated cut value for the edge between this node and its parent\n var cutValue = 0;\n\n if (!graphEdge) {\n childIsTail = false;\n graphEdge = g.edge(parent, child);\n }\n\n cutValue = graphEdge.weight;\n\n _.forEach(g.nodeEdges(child), function(e) {\n var isOutEdge = e.v === child,\n other = isOutEdge ? e.w : e.v;\n\n if (other !== parent) {\n var pointsToHead = isOutEdge === childIsTail,\n otherWeight = g.edge(e).weight;\n\n cutValue += pointsToHead ? otherWeight : -otherWeight;\n if (isTreeEdge(t, child, other)) {\n var otherCutValue = t.edge(child, other).cutvalue;\n cutValue += pointsToHead ? -otherCutValue : otherCutValue;\n }\n }\n });\n\n return cutValue;\n}\n\nfunction initLowLimValues(tree, root) {\n if (arguments.length < 2) {\n root = tree.nodes()[0];\n }\n dfsAssignLowLim(tree, {}, 1, root);\n}\n\nfunction dfsAssignLowLim(tree, visited, nextLim, v, parent) {\n var low = nextLim;\n var label = tree.node(v);\n\n visited[v] = true;\n _.forEach(tree.neighbors(v), function(w) {\n if (!_.has(visited, w)) {\n nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v);\n }\n });\n\n label.low = low;\n label.lim = nextLim++;\n if (parent) {\n label.parent = parent;\n } else {\n // TODO should be able to remove this when we incrementally update low lim\n delete label.parent;\n }\n\n return nextLim;\n}\n\nfunction leaveEdge(tree) {\n return _.find(tree.edges(), function(e) {\n return tree.edge(e).cutvalue < 0;\n });\n}\n\nfunction enterEdge(t, g, edge) {\n var v = edge.v;\n var w = edge.w;\n\n // For the rest of this function we assume that v is the tail and w is the\n // head, so if we don't have this edge in the graph we should flip it to\n // match the correct orientation.\n if (!g.hasEdge(v, w)) {\n v = edge.w;\n w = edge.v;\n }\n\n var vLabel = t.node(v);\n var wLabel = t.node(w);\n var tailLabel = vLabel;\n var flip = false;\n\n // If the root is in the tail of the edge then we need to flip the logic that\n // checks for the head and tail nodes in the candidates function below.\n if (vLabel.lim > wLabel.lim) {\n tailLabel = wLabel;\n flip = true;\n }\n\n var candidates = _.filter(g.edges(), function(edge) {\n return flip === isDescendant(t, t.node(edge.v), tailLabel) &&\n flip !== isDescendant(t, t.node(edge.w), tailLabel);\n });\n\n return _.minBy(candidates, function(edge) { return slack(g, edge); });\n}\n\nfunction exchangeEdges(t, g, e, f) {\n var v = e.v;\n var w = e.w;\n t.removeEdge(v, w);\n t.setEdge(f.v, f.w, {});\n initLowLimValues(t);\n initCutValues(t, g);\n updateRanks(t, g);\n}\n\nfunction updateRanks(t, g) {\n var root = _.find(t.nodes(), function(v) { return !g.node(v).parent; });\n var vs = preorder(t, root);\n vs = vs.slice(1);\n _.forEach(vs, function(v) {\n var parent = t.node(v).parent,\n edge = g.edge(v, parent),\n flipped = false;\n\n if (!edge) {\n edge = g.edge(parent, v);\n flipped = true;\n }\n\n g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen);\n });\n}\n\n/*\n * Returns true if the edge is in the tree.\n */\nfunction isTreeEdge(tree, u, v) {\n return tree.hasEdge(u, v);\n}\n\n/*\n * Returns true if the specified node is descendant of the root node per the\n * assigned low and lim attributes in the tree.\n */\nfunction isDescendant(tree, vLabel, rootLabel) {\n return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim;\n}\n","\"use strict\";\n\nvar rankUtil = require(\"./util\");\nvar longestPath = rankUtil.longestPath;\nvar feasibleTree = require(\"./feasible-tree\");\nvar networkSimplex = require(\"./network-simplex\");\n\nmodule.exports = rank;\n\n/*\n * Assigns a rank to each node in the input graph that respects the \"minlen\"\n * constraint specified on edges between nodes.\n *\n * This basic structure is derived from Gansner, et al., \"A Technique for\n * Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a connected DAG\n * 2. Graph nodes must be objects\n * 3. Graph edges must have \"weight\" and \"minlen\" attributes\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have a \"rank\" attribute based on the results of the\n * algorithm. Ranks can start at any index (including negative), we'll\n * fix them up later.\n */\nfunction rank(g) {\n switch(g.graph().ranker) {\n case \"network-simplex\": networkSimplexRanker(g); break;\n case \"tight-tree\": tightTreeRanker(g); break;\n case \"longest-path\": longestPathRanker(g); break;\n default: networkSimplexRanker(g);\n }\n}\n\n// A fast and simple ranker, but results are far from optimal.\nvar longestPathRanker = longestPath;\n\nfunction tightTreeRanker(g) {\n longestPath(g);\n feasibleTree(g);\n}\n\nfunction networkSimplexRanker(g) {\n networkSimplex(g);\n}\n","var _ = require(\"./lodash\");\n\nmodule.exports = parentDummyChains;\n\nfunction parentDummyChains(g) {\n var postorderNums = postorder(g);\n\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v);\n var edgeObj = node.edgeObj;\n var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);\n var path = pathData.path;\n var lca = pathData.lca;\n var pathIdx = 0;\n var pathV = path[pathIdx];\n var ascending = true;\n\n while (v !== edgeObj.w) {\n node = g.node(v);\n\n if (ascending) {\n while ((pathV = path[pathIdx]) !== lca &&\n g.node(pathV).maxRank < node.rank) {\n pathIdx++;\n }\n\n if (pathV === lca) {\n ascending = false;\n }\n }\n\n if (!ascending) {\n while (pathIdx < path.length - 1 &&\n g.node(pathV = path[pathIdx + 1]).minRank <= node.rank) {\n pathIdx++;\n }\n pathV = path[pathIdx];\n }\n\n g.setParent(v, pathV);\n v = g.successors(v)[0];\n }\n });\n}\n\n// Find a path from v to w through the lowest common ancestor (LCA). Return the\n// full path and the LCA.\nfunction findPath(g, postorderNums, v, w) {\n var vPath = [];\n var wPath = [];\n var low = Math.min(postorderNums[v].low, postorderNums[w].low);\n var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);\n var parent;\n var lca;\n\n // Traverse up from v to find the LCA\n parent = v;\n do {\n parent = g.parent(parent);\n vPath.push(parent);\n } while (parent &&\n (postorderNums[parent].low > low || lim > postorderNums[parent].lim));\n lca = parent;\n\n // Traverse from w to LCA\n parent = w;\n while ((parent = g.parent(parent)) !== lca) {\n wPath.push(parent);\n }\n\n return { path: vPath.concat(wPath.reverse()), lca: lca };\n}\n\nfunction postorder(g) {\n var result = {};\n var lim = 0;\n\n function dfs(v) {\n var low = lim;\n _.forEach(g.children(v), dfs);\n result[v] = { low: low, lim: lim++ };\n }\n _.forEach(g.children(), dfs);\n\n return result;\n}\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = {\n run: run,\n cleanup: cleanup\n};\n\n/*\n * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,\n * adds appropriate edges to ensure that all cluster nodes are placed between\n * these boundries, and ensures that the graph is connected.\n *\n * In addition we ensure, through the use of the minlen property, that nodes\n * and subgraph border nodes to not end up on the same rank.\n *\n * Preconditions:\n *\n * 1. Input graph is a DAG\n * 2. Nodes in the input graph has a minlen attribute\n *\n * Postconditions:\n *\n * 1. Input graph is connected.\n * 2. Dummy nodes are added for the tops and bottoms of subgraphs.\n * 3. The minlen attribute for nodes is adjusted to ensure nodes do not\n * get placed on the same rank as subgraph border nodes.\n *\n * The nesting graph idea comes from Sander, \"Layout of Compound Directed\n * Graphs.\"\n */\nfunction run(g) {\n var root = util.addDummyNode(g, \"root\", {}, \"_root\");\n var depths = treeDepths(g);\n var height = _.max(_.values(depths)) - 1; // Note: depths is an Object not an array\n var nodeSep = 2 * height + 1;\n\n g.graph().nestingRoot = root;\n\n // Multiply minlen by nodeSep to align nodes on non-border ranks.\n _.forEach(g.edges(), function(e) { g.edge(e).minlen *= nodeSep; });\n\n // Calculate a weight that is sufficient to keep subgraphs vertically compact\n var weight = sumWeights(g) + 1;\n\n // Create border nodes and link them up\n _.forEach(g.children(), function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n });\n\n // Save the multiplier for node layers for later removal of empty border\n // layers.\n g.graph().nodeRankFactor = nodeSep;\n}\n\nfunction dfs(g, root, nodeSep, weight, height, depths, v) {\n var children = g.children(v);\n if (!children.length) {\n if (v !== root) {\n g.setEdge(root, v, { weight: 0, minlen: nodeSep });\n }\n return;\n }\n\n var top = util.addBorderNode(g, \"_bt\");\n var bottom = util.addBorderNode(g, \"_bb\");\n var label = g.node(v);\n\n g.setParent(top, v);\n label.borderTop = top;\n g.setParent(bottom, v);\n label.borderBottom = bottom;\n\n _.forEach(children, function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n\n var childNode = g.node(child);\n var childTop = childNode.borderTop ? childNode.borderTop : child;\n var childBottom = childNode.borderBottom ? childNode.borderBottom : child;\n var thisWeight = childNode.borderTop ? weight : 2 * weight;\n var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;\n\n g.setEdge(top, childTop, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n\n g.setEdge(childBottom, bottom, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n });\n\n if (!g.parent(v)) {\n g.setEdge(root, top, { weight: 0, minlen: height + depths[v] });\n }\n}\n\nfunction treeDepths(g) {\n var depths = {};\n function dfs(v, depth) {\n var children = g.children(v);\n if (children && children.length) {\n _.forEach(children, function(child) {\n dfs(child, depth + 1);\n });\n }\n depths[v] = depth;\n }\n _.forEach(g.children(), function(v) { dfs(v, 1); });\n return depths;\n}\n\nfunction sumWeights(g) {\n return _.reduce(g.edges(), function(acc, e) {\n return acc + g.edge(e).weight;\n }, 0);\n}\n\nfunction cleanup(g) {\n var graphLabel = g.graph();\n g.removeNode(graphLabel.nestingRoot);\n delete graphLabel.nestingRoot;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.nestingEdge) {\n g.removeEdge(e);\n }\n });\n}\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = addBorderSegments;\n\nfunction addBorderSegments(g) {\n function dfs(v) {\n var children = g.children(v);\n var node = g.node(v);\n if (children.length) {\n _.forEach(children, dfs);\n }\n\n if (_.has(node, \"minRank\")) {\n node.borderLeft = [];\n node.borderRight = [];\n for (var rank = node.minRank, maxRank = node.maxRank + 1;\n rank < maxRank;\n ++rank) {\n addBorderNode(g, \"borderLeft\", \"_bl\", v, node, rank);\n addBorderNode(g, \"borderRight\", \"_br\", v, node, rank);\n }\n }\n }\n\n _.forEach(g.children(), dfs);\n}\n\nfunction addBorderNode(g, prop, prefix, sg, sgNode, rank) {\n var label = { width: 0, height: 0, rank: rank, borderType: prop };\n var prev = sgNode[prop][rank - 1];\n var curr = util.addDummyNode(g, \"border\", label, prefix);\n sgNode[prop][rank] = curr;\n g.setParent(curr, sg);\n if (prev) {\n g.setEdge(prev, curr, { weight: 1 });\n }\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\n\nmodule.exports = {\n adjust: adjust,\n undo: undo\n};\n\nfunction adjust(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapWidthHeight(g);\n }\n}\n\nfunction undo(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"bt\" || rankDir === \"rl\") {\n reverseY(g);\n }\n\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapXY(g);\n swapWidthHeight(g);\n }\n}\n\nfunction swapWidthHeight(g) {\n _.forEach(g.nodes(), function(v) { swapWidthHeightOne(g.node(v)); });\n _.forEach(g.edges(), function(e) { swapWidthHeightOne(g.edge(e)); });\n}\n\nfunction swapWidthHeightOne(attrs) {\n var w = attrs.width;\n attrs.width = attrs.height;\n attrs.height = w;\n}\n\nfunction reverseY(g) {\n _.forEach(g.nodes(), function(v) { reverseYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, reverseYOne);\n if (_.has(edge, \"y\")) {\n reverseYOne(edge);\n }\n });\n}\n\nfunction reverseYOne(attrs) {\n attrs.y = -attrs.y;\n}\n\nfunction swapXY(g) {\n _.forEach(g.nodes(), function(v) { swapXYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, swapXYOne);\n if (_.has(edge, \"x\")) {\n swapXYOne(edge);\n }\n });\n}\n\nfunction swapXYOne(attrs) {\n var x = attrs.x;\n attrs.x = attrs.y;\n attrs.y = x;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = initOrder;\n\n/*\n * Assigns an initial order value for each node by performing a DFS search\n * starting from nodes in the first rank. Nodes are assigned an order in their\n * rank as they are first visited.\n *\n * This approach comes from Gansner, et al., \"A Technique for Drawing Directed\n * Graphs.\"\n *\n * Returns a layering matrix with an array per layer and each layer sorted by\n * the order of its nodes.\n */\nfunction initOrder(g) {\n var visited = {};\n var simpleNodes = _.filter(g.nodes(), function(v) {\n return !g.children(v).length;\n });\n var maxRank = _.max(_.map(simpleNodes, function(v) { return g.node(v).rank; }));\n var layers = _.map(_.range(maxRank + 1), function() { return []; });\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n var node = g.node(v);\n layers[node.rank].push(v);\n _.forEach(g.successors(v), dfs);\n }\n\n var orderedVs = _.sortBy(simpleNodes, function(v) { return g.node(v).rank; });\n _.forEach(orderedVs, dfs);\n\n return layers;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = crossCount;\n\n/*\n * A function that takes a layering (an array of layers, each with an array of\n * ordererd nodes) and a graph and returns a weighted crossing count.\n *\n * Pre-conditions:\n *\n * 1. Input graph must be simple (not a multigraph), directed, and include\n * only simple edges.\n * 2. Edges in the input graph must have assigned weights.\n *\n * Post-conditions:\n *\n * 1. The graph and layering matrix are left unchanged.\n *\n * This algorithm is derived from Barth, et al., \"Bilayer Cross Counting.\"\n */\nfunction crossCount(g, layering) {\n var cc = 0;\n for (var i = 1; i < layering.length; ++i) {\n cc += twoLayerCrossCount(g, layering[i-1], layering[i]);\n }\n return cc;\n}\n\nfunction twoLayerCrossCount(g, northLayer, southLayer) {\n // Sort all of the edges between the north and south layers by their position\n // in the north layer and then the south. Map these edges to the position of\n // their head in the south layer.\n var southPos = _.zipObject(southLayer,\n _.map(southLayer, function (v, i) { return i; }));\n var southEntries = _.flatten(_.map(northLayer, function(v) {\n return _.sortBy(_.map(g.outEdges(v), function(e) {\n return { pos: southPos[e.w], weight: g.edge(e).weight };\n }), \"pos\");\n }), true);\n\n // Build the accumulator tree\n var firstIndex = 1;\n while (firstIndex < southLayer.length) firstIndex <<= 1;\n var treeSize = 2 * firstIndex - 1;\n firstIndex -= 1;\n var tree = _.map(new Array(treeSize), function() { return 0; });\n\n // Calculate the weighted crossings\n var cc = 0;\n _.forEach(southEntries.forEach(function(entry) {\n var index = entry.pos + firstIndex;\n tree[index] += entry.weight;\n var weightSum = 0;\n while (index > 0) {\n if (index % 2) {\n weightSum += tree[index + 1];\n }\n index = (index - 1) >> 1;\n tree[index] += entry.weight;\n }\n cc += entry.weight * weightSum;\n }));\n\n return cc;\n}\n","var _ = require(\"../lodash\");\nvar util = require(\"../util\");\n\nmodule.exports = sort;\n\nfunction sort(entries, biasRight) {\n var parts = util.partition(entries, function(entry) {\n return _.has(entry, \"barycenter\");\n });\n var sortable = parts.lhs,\n unsortable = _.sortBy(parts.rhs, function(entry) { return -entry.i; }),\n vs = [],\n sum = 0,\n weight = 0,\n vsIndex = 0;\n\n sortable.sort(compareWithBias(!!biasRight));\n\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n\n _.forEach(sortable, function (entry) {\n vsIndex += entry.vs.length;\n vs.push(entry.vs);\n sum += entry.barycenter * entry.weight;\n weight += entry.weight;\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n });\n\n var result = { vs: _.flatten(vs, true) };\n if (weight) {\n result.barycenter = sum / weight;\n result.weight = weight;\n }\n return result;\n}\n\nfunction consumeUnsortable(vs, unsortable, index) {\n var last;\n while (unsortable.length && (last = _.last(unsortable)).i <= index) {\n unsortable.pop();\n vs.push(last.vs);\n index++;\n }\n return index;\n}\n\nfunction compareWithBias(bias) {\n return function(entryV, entryW) {\n if (entryV.barycenter < entryW.barycenter) {\n return -1;\n } else if (entryV.barycenter > entryW.barycenter) {\n return 1;\n }\n\n return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;\n };\n}\n","var _ = require(\"../lodash\");\nvar barycenter = require(\"./barycenter\");\nvar resolveConflicts = require(\"./resolve-conflicts\");\nvar sort = require(\"./sort\");\n\nmodule.exports = sortSubgraph;\n\nfunction sortSubgraph(g, v, cg, biasRight) {\n var movable = g.children(v);\n var node = g.node(v);\n var bl = node ? node.borderLeft : undefined;\n var br = node ? node.borderRight: undefined;\n var subgraphs = {};\n\n if (bl) {\n movable = _.filter(movable, function(w) {\n return w !== bl && w !== br;\n });\n }\n\n var barycenters = barycenter(g, movable);\n _.forEach(barycenters, function(entry) {\n if (g.children(entry.v).length) {\n var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);\n subgraphs[entry.v] = subgraphResult;\n if (_.has(subgraphResult, \"barycenter\")) {\n mergeBarycenters(entry, subgraphResult);\n }\n }\n });\n\n var entries = resolveConflicts(barycenters, cg);\n expandSubgraphs(entries, subgraphs);\n\n var result = sort(entries, biasRight);\n\n if (bl) {\n result.vs = _.flatten([bl, result.vs, br], true);\n if (g.predecessors(bl).length) {\n var blPred = g.node(g.predecessors(bl)[0]),\n brPred = g.node(g.predecessors(br)[0]);\n if (!_.has(result, \"barycenter\")) {\n result.barycenter = 0;\n result.weight = 0;\n }\n result.barycenter = (result.barycenter * result.weight +\n blPred.order + brPred.order) / (result.weight + 2);\n result.weight += 2;\n }\n }\n\n return result;\n}\n\nfunction expandSubgraphs(entries, subgraphs) {\n _.forEach(entries, function(entry) {\n entry.vs = _.flatten(entry.vs.map(function(v) {\n if (subgraphs[v]) {\n return subgraphs[v].vs;\n }\n return v;\n }), true);\n });\n}\n\nfunction mergeBarycenters(target, other) {\n if (!_.isUndefined(target.barycenter)) {\n target.barycenter = (target.barycenter * target.weight +\n other.barycenter * other.weight) /\n (target.weight + other.weight);\n target.weight += other.weight;\n } else {\n target.barycenter = other.barycenter;\n target.weight = other.weight;\n }\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = barycenter;\n\nfunction barycenter(g, movable) {\n return _.map(movable, function(v) {\n var inV = g.inEdges(v);\n if (!inV.length) {\n return { v: v };\n } else {\n var result = _.reduce(inV, function(acc, e) {\n var edge = g.edge(e),\n nodeU = g.node(e.v);\n return {\n sum: acc.sum + (edge.weight * nodeU.order),\n weight: acc.weight + edge.weight\n };\n }, { sum: 0, weight: 0 });\n\n return {\n v: v,\n barycenter: result.sum / result.weight,\n weight: result.weight\n };\n }\n });\n}\n\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = resolveConflicts;\n\n/*\n * Given a list of entries of the form {v, barycenter, weight} and a\n * constraint graph this function will resolve any conflicts between the\n * constraint graph and the barycenters for the entries. If the barycenters for\n * an entry would violate a constraint in the constraint graph then we coalesce\n * the nodes in the conflict into a new node that respects the contraint and\n * aggregates barycenter and weight information.\n *\n * This implementation is based on the description in Forster, \"A Fast and\n * Simple Hueristic for Constrained Two-Level Crossing Reduction,\" thought it\n * differs in some specific details.\n *\n * Pre-conditions:\n *\n * 1. Each entry has the form {v, barycenter, weight}, or if the node has\n * no barycenter, then {v}.\n *\n * Returns:\n *\n * A new list of entries of the form {vs, i, barycenter, weight}. The list\n * `vs` may either be a singleton or it may be an aggregation of nodes\n * ordered such that they do not violate constraints from the constraint\n * graph. The property `i` is the lowest original index of any of the\n * elements in `vs`.\n */\nfunction resolveConflicts(entries, cg) {\n var mappedEntries = {};\n _.forEach(entries, function(entry, i) {\n var tmp = mappedEntries[entry.v] = {\n indegree: 0,\n \"in\": [],\n out: [],\n vs: [entry.v],\n i: i\n };\n if (!_.isUndefined(entry.barycenter)) {\n tmp.barycenter = entry.barycenter;\n tmp.weight = entry.weight;\n }\n });\n\n _.forEach(cg.edges(), function(e) {\n var entryV = mappedEntries[e.v];\n var entryW = mappedEntries[e.w];\n if (!_.isUndefined(entryV) && !_.isUndefined(entryW)) {\n entryW.indegree++;\n entryV.out.push(mappedEntries[e.w]);\n }\n });\n\n var sourceSet = _.filter(mappedEntries, function(entry) {\n return !entry.indegree;\n });\n\n return doResolveConflicts(sourceSet);\n}\n\nfunction doResolveConflicts(sourceSet) {\n var entries = [];\n\n function handleIn(vEntry) {\n return function(uEntry) {\n if (uEntry.merged) {\n return;\n }\n if (_.isUndefined(uEntry.barycenter) ||\n _.isUndefined(vEntry.barycenter) ||\n uEntry.barycenter >= vEntry.barycenter) {\n mergeEntries(vEntry, uEntry);\n }\n };\n }\n\n function handleOut(vEntry) {\n return function(wEntry) {\n wEntry[\"in\"].push(vEntry);\n if (--wEntry.indegree === 0) {\n sourceSet.push(wEntry);\n }\n };\n }\n\n while (sourceSet.length) {\n var entry = sourceSet.pop();\n entries.push(entry);\n _.forEach(entry[\"in\"].reverse(), handleIn(entry));\n _.forEach(entry.out, handleOut(entry));\n }\n\n return _.map(_.filter(entries, function(entry) { return !entry.merged; }),\n function(entry) {\n return _.pick(entry, [\"vs\", \"i\", \"barycenter\", \"weight\"]);\n });\n\n}\n\nfunction mergeEntries(target, source) {\n var sum = 0;\n var weight = 0;\n\n if (target.weight) {\n sum += target.barycenter * target.weight;\n weight += target.weight;\n }\n\n if (source.weight) {\n sum += source.barycenter * source.weight;\n weight += source.weight;\n }\n\n target.vs = source.vs.concat(target.vs);\n target.barycenter = sum / weight;\n target.weight = weight;\n target.i = Math.min(source.i, target.i);\n source.merged = true;\n}\n","var _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\n\nmodule.exports = buildLayerGraph;\n\n/*\n * Constructs a graph that can be used to sort a layer of nodes. The graph will\n * contain all base and subgraph nodes from the request layer in their original\n * hierarchy and any edges that are incident on these nodes and are of the type\n * requested by the \"relationship\" parameter.\n *\n * Nodes from the requested rank that do not have parents are assigned a root\n * node in the output graph, which is set in the root graph attribute. This\n * makes it easy to walk the hierarchy of movable nodes during ordering.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG\n * 2. Base nodes in the input graph have a rank attribute\n * 3. Subgraph nodes in the input graph has minRank and maxRank attributes\n * 4. Edges have an assigned weight\n *\n * Post-conditions:\n *\n * 1. Output graph has all nodes in the movable rank with preserved\n * hierarchy.\n * 2. Root nodes in the movable layer are made children of the node\n * indicated by the root attribute of the graph.\n * 3. Non-movable nodes incident on movable nodes, selected by the\n * relationship parameter, are included in the graph (without hierarchy).\n * 4. Edges incident on movable nodes, selected by the relationship\n * parameter, are added to the output graph.\n * 5. The weights for copied edges are aggregated as need, since the output\n * graph is not a multi-graph.\n */\nfunction buildLayerGraph(g, rank, relationship) {\n var root = createRootNode(g),\n result = new Graph({ compound: true }).setGraph({ root: root })\n .setDefaultNodeLabel(function(v) { return g.node(v); });\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v),\n parent = g.parent(v);\n\n if (node.rank === rank || node.minRank <= rank && rank <= node.maxRank) {\n result.setNode(v);\n result.setParent(v, parent || root);\n\n // This assumes we have only short edges!\n _.forEach(g[relationship](v), function(e) {\n var u = e.v === v ? e.w : e.v,\n edge = result.edge(u, v),\n weight = !_.isUndefined(edge) ? edge.weight : 0;\n result.setEdge(u, v, { weight: g.edge(e).weight + weight });\n });\n\n if (_.has(node, \"minRank\")) {\n result.setNode(v, {\n borderLeft: node.borderLeft[rank],\n borderRight: node.borderRight[rank]\n });\n }\n }\n });\n\n return result;\n}\n\nfunction createRootNode(g) {\n var v;\n while (g.hasNode((v = _.uniqueId(\"_root\"))));\n return v;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar initOrder = require(\"./init-order\");\nvar crossCount = require(\"./cross-count\");\nvar sortSubgraph = require(\"./sort-subgraph\");\nvar buildLayerGraph = require(\"./build-layer-graph\");\nvar addSubgraphConstraints = require(\"./add-subgraph-constraints\");\nvar Graph = require(\"../graphlib\").Graph;\nvar util = require(\"../util\");\n\nmodule.exports = order;\n\n/*\n * Applies heuristics to minimize edge crossings in the graph and sets the best\n * order solution as an order attribute on each node.\n *\n * Pre-conditions:\n *\n * 1. Graph must be DAG\n * 2. Graph nodes must be objects with a \"rank\" attribute\n * 3. Graph edges must have the \"weight\" attribute\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have an \"order\" attribute based on the results of the\n * algorithm.\n */\nfunction order(g) {\n var maxRank = util.maxRank(g),\n downLayerGraphs = buildLayerGraphs(g, _.range(1, maxRank + 1), \"inEdges\"),\n upLayerGraphs = buildLayerGraphs(g, _.range(maxRank - 1, -1, -1), \"outEdges\");\n\n var layering = initOrder(g);\n assignOrder(g, layering);\n\n var bestCC = Number.POSITIVE_INFINITY,\n best;\n\n for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);\n\n layering = util.buildLayerMatrix(g);\n var cc = crossCount(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = _.cloneDeep(layering);\n bestCC = cc;\n }\n }\n\n assignOrder(g, best);\n}\n\nfunction buildLayerGraphs(g, ranks, relationship) {\n return _.map(ranks, function(rank) {\n return buildLayerGraph(g, rank, relationship);\n });\n}\n\nfunction sweepLayerGraphs(layerGraphs, biasRight) {\n var cg = new Graph();\n _.forEach(layerGraphs, function(lg) {\n var root = lg.graph().root;\n var sorted = sortSubgraph(lg, root, cg, biasRight);\n _.forEach(sorted.vs, function(v, i) {\n lg.node(v).order = i;\n });\n addSubgraphConstraints(lg, cg, sorted.vs);\n });\n}\n\nfunction assignOrder(g, layering) {\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, i) {\n g.node(v).order = i;\n });\n });\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = addSubgraphConstraints;\n\nfunction addSubgraphConstraints(g, cg, vs) {\n var prev = {},\n rootPrev;\n\n _.forEach(vs, function(v) {\n var child = g.parent(v),\n parent,\n prevChild;\n while (child) {\n parent = g.parent(child);\n if (parent) {\n prevChild = prev[parent];\n prev[parent] = child;\n } else {\n prevChild = rootPrev;\n rootPrev = child;\n }\n if (prevChild && prevChild !== child) {\n cg.setEdge(prevChild, child);\n return;\n }\n child = parent;\n }\n });\n\n /*\n function dfs(v) {\n var children = v ? g.children(v) : g.children();\n if (children.length) {\n var min = Number.POSITIVE_INFINITY,\n subgraphs = [];\n _.each(children, function(child) {\n var childMin = dfs(child);\n if (g.children(child).length) {\n subgraphs.push({ v: child, order: childMin });\n }\n min = Math.min(min, childMin);\n });\n _.reduce(_.sortBy(subgraphs, \"order\"), function(prev, curr) {\n cg.setEdge(prev.v, curr.v);\n return curr;\n });\n return min;\n }\n return g.node(v).order;\n }\n dfs(undefined);\n */\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\nvar util = require(\"../util\");\n\n/*\n * This module provides coordinate assignment based on Brandes and Köpf, \"Fast\n * and Simple Horizontal Coordinate Assignment.\"\n */\n\nmodule.exports = {\n positionX: positionX,\n findType1Conflicts: findType1Conflicts,\n findType2Conflicts: findType2Conflicts,\n addConflict: addConflict,\n hasConflict: hasConflict,\n verticalAlignment: verticalAlignment,\n horizontalCompaction: horizontalCompaction,\n alignCoordinates: alignCoordinates,\n findSmallestWidthAlignment: findSmallestWidthAlignment,\n balance: balance\n};\n\n/*\n * Marks all edges in the graph with a type-1 conflict with the \"type1Conflict\"\n * property. A type-1 conflict is one where a non-inner segment crosses an\n * inner segment. An inner segment is an edge with both incident nodes marked\n * with the \"dummy\" property.\n *\n * This algorithm scans layer by layer, starting with the second, for type-1\n * conflicts between the current layer and the previous layer. For each layer\n * it scans the nodes from left to right until it reaches one that is incident\n * on an inner segment. It then scans predecessors to determine if they have\n * edges that cross that inner segment. At the end a final scan is done for all\n * nodes on the current rank to see if they cross the last visited inner\n * segment.\n *\n * This algorithm (safely) assumes that a dummy node will only be incident on a\n * single node in the layers being scanned.\n */\nfunction findType1Conflicts(g, layering) {\n var conflicts = {};\n\n function visitLayer(prevLayer, layer) {\n var\n // last visited node in the previous layer that is incident on an inner\n // segment.\n k0 = 0,\n // Tracks the last node in this layer scanned for crossings with a type-1\n // segment.\n scanPos = 0,\n prevLayerLength = prevLayer.length,\n lastNode = _.last(layer);\n\n _.forEach(layer, function(v, i) {\n var w = findOtherInnerSegmentNode(g, v),\n k1 = w ? g.node(w).order : prevLayerLength;\n\n if (w || v === lastNode) {\n _.forEach(layer.slice(scanPos, i +1), function(scanNode) {\n _.forEach(g.predecessors(scanNode), function(u) {\n var uLabel = g.node(u),\n uPos = uLabel.order;\n if ((uPos < k0 || k1 < uPos) &&\n !(uLabel.dummy && g.node(scanNode).dummy)) {\n addConflict(conflicts, u, scanNode);\n }\n });\n });\n scanPos = i + 1;\n k0 = k1;\n }\n });\n\n return layer;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findType2Conflicts(g, layering) {\n var conflicts = {};\n\n function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) {\n var v;\n _.forEach(_.range(southPos, southEnd), function(i) {\n v = south[i];\n if (g.node(v).dummy) {\n _.forEach(g.predecessors(v), function(u) {\n var uNode = g.node(u);\n if (uNode.dummy &&\n (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) {\n addConflict(conflicts, u, v);\n }\n });\n }\n });\n }\n\n\n function visitLayer(north, south) {\n var prevNorthPos = -1,\n nextNorthPos,\n southPos = 0;\n\n _.forEach(south, function(v, southLookahead) {\n if (g.node(v).dummy === \"border\") {\n var predecessors = g.predecessors(v);\n if (predecessors.length) {\n nextNorthPos = g.node(predecessors[0]).order;\n scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos);\n southPos = southLookahead;\n prevNorthPos = nextNorthPos;\n }\n }\n scan(south, southPos, south.length, nextNorthPos, north.length);\n });\n\n return south;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findOtherInnerSegmentNode(g, v) {\n if (g.node(v).dummy) {\n return _.find(g.predecessors(v), function(u) {\n return g.node(u).dummy;\n });\n }\n}\n\nfunction addConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n\n var conflictsV = conflicts[v];\n if (!conflictsV) {\n conflicts[v] = conflictsV = {};\n }\n conflictsV[w] = true;\n}\n\nfunction hasConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return _.has(conflicts[v], w);\n}\n\n/*\n * Try to align nodes into vertical \"blocks\" where possible. This algorithm\n * attempts to align a node with one of its median neighbors. If the edge\n * connecting a neighbor is a type-1 conflict then we ignore that possibility.\n * If a previous node has already formed a block with a node after the node\n * we're trying to form a block with, we also ignore that possibility - our\n * blocks would be split in that scenario.\n */\nfunction verticalAlignment(g, layering, conflicts, neighborFn) {\n var root = {},\n align = {},\n pos = {};\n\n // We cache the position here based on the layering because the graph and\n // layering may be out of sync. The layering matrix is manipulated to\n // generate different extreme alignments.\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, order) {\n root[v] = v;\n align[v] = v;\n pos[v] = order;\n });\n });\n\n _.forEach(layering, function(layer) {\n var prevIdx = -1;\n _.forEach(layer, function(v) {\n var ws = neighborFn(v);\n if (ws.length) {\n ws = _.sortBy(ws, function(w) { return pos[w]; });\n var mp = (ws.length - 1) / 2;\n for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {\n var w = ws[i];\n if (align[v] === v &&\n prevIdx < pos[w] &&\n !hasConflict(conflicts, v, w)) {\n align[w] = v;\n align[v] = root[v] = root[w];\n prevIdx = pos[w];\n }\n }\n }\n });\n });\n\n return { root: root, align: align };\n}\n\nfunction horizontalCompaction(g, layering, root, align, reverseSep) {\n // This portion of the algorithm differs from BK due to a number of problems.\n // Instead of their algorithm we construct a new block graph and do two\n // sweeps. The first sweep places blocks with the smallest possible\n // coordinates. The second sweep removes unused space by moving blocks to the\n // greatest coordinates without violating separation.\n var xs = {},\n blockG = buildBlockGraph(g, layering, root, reverseSep),\n borderType = reverseSep ? \"borderLeft\" : \"borderRight\";\n\n function iterate(setXsFunc, nextNodesFunc) {\n var stack = blockG.nodes();\n var elem = stack.pop();\n var visited = {};\n while (elem) {\n if (visited[elem]) {\n setXsFunc(elem);\n } else {\n visited[elem] = true;\n stack.push(elem);\n stack = stack.concat(nextNodesFunc(elem));\n }\n\n elem = stack.pop();\n }\n }\n\n // First pass, assign smallest coordinates\n function pass1(elem) {\n xs[elem] = blockG.inEdges(elem).reduce(function(acc, e) {\n return Math.max(acc, xs[e.v] + blockG.edge(e));\n }, 0);\n }\n\n // Second pass, assign greatest coordinates\n function pass2(elem) {\n var min = blockG.outEdges(elem).reduce(function(acc, e) {\n return Math.min(acc, xs[e.w] - blockG.edge(e));\n }, Number.POSITIVE_INFINITY);\n\n var node = g.node(elem);\n if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) {\n xs[elem] = Math.max(xs[elem], min);\n }\n }\n\n iterate(pass1, blockG.predecessors.bind(blockG));\n iterate(pass2, blockG.successors.bind(blockG));\n\n // Assign x coordinates to all nodes\n _.forEach(align, function(v) {\n xs[v] = xs[root[v]];\n });\n\n return xs;\n}\n\n\nfunction buildBlockGraph(g, layering, root, reverseSep) {\n var blockGraph = new Graph(),\n graphLabel = g.graph(),\n sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep);\n\n _.forEach(layering, function(layer) {\n var u;\n _.forEach(layer, function(v) {\n var vRoot = root[v];\n blockGraph.setNode(vRoot);\n if (u) {\n var uRoot = root[u],\n prevMax = blockGraph.edge(uRoot, vRoot);\n blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0));\n }\n u = v;\n });\n });\n\n return blockGraph;\n}\n\n/*\n * Returns the alignment that has the smallest width of the given alignments.\n */\nfunction findSmallestWidthAlignment(g, xss) {\n return _.minBy(_.values(xss), function (xs) {\n var max = Number.NEGATIVE_INFINITY;\n var min = Number.POSITIVE_INFINITY;\n\n _.forIn(xs, function (x, v) {\n var halfWidth = width(g, v) / 2;\n\n max = Math.max(x + halfWidth, max);\n min = Math.min(x - halfWidth, min);\n });\n\n return max - min;\n });\n}\n\n/*\n * Align the coordinates of each of the layout alignments such that\n * left-biased alignments have their minimum coordinate at the same point as\n * the minimum coordinate of the smallest width alignment and right-biased\n * alignments have their maximum coordinate at the same point as the maximum\n * coordinate of the smallest width alignment.\n */\nfunction alignCoordinates(xss, alignTo) {\n var alignToVals = _.values(alignTo),\n alignToMin = _.min(alignToVals),\n alignToMax = _.max(alignToVals);\n\n _.forEach([\"u\", \"d\"], function(vert) {\n _.forEach([\"l\", \"r\"], function(horiz) {\n var alignment = vert + horiz,\n xs = xss[alignment],\n delta;\n if (xs === alignTo) return;\n\n var xsVals = _.values(xs);\n delta = horiz === \"l\" ? alignToMin - _.min(xsVals) : alignToMax - _.max(xsVals);\n\n if (delta) {\n xss[alignment] = _.mapValues(xs, function(x) { return x + delta; });\n }\n });\n });\n}\n\nfunction balance(xss, align) {\n return _.mapValues(xss.ul, function(ignore, v) {\n if (align) {\n return xss[align.toLowerCase()][v];\n } else {\n var xs = _.sortBy(_.map(xss, v));\n return (xs[1] + xs[2]) / 2;\n }\n });\n}\n\nfunction positionX(g) {\n var layering = util.buildLayerMatrix(g);\n var conflicts = _.merge(\n findType1Conflicts(g, layering),\n findType2Conflicts(g, layering));\n\n var xss = {};\n var adjustedLayering;\n _.forEach([\"u\", \"d\"], function(vert) {\n adjustedLayering = vert === \"u\" ? layering : _.values(layering).reverse();\n _.forEach([\"l\", \"r\"], function(horiz) {\n if (horiz === \"r\") {\n adjustedLayering = _.map(adjustedLayering, function(inner) {\n return _.values(inner).reverse();\n });\n }\n\n var neighborFn = (vert === \"u\" ? g.predecessors : g.successors).bind(g);\n var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);\n var xs = horizontalCompaction(g, adjustedLayering,\n align.root, align.align, horiz === \"r\");\n if (horiz === \"r\") {\n xs = _.mapValues(xs, function(x) { return -x; });\n }\n xss[vert + horiz] = xs;\n });\n });\n\n var smallestWidth = findSmallestWidthAlignment(g, xss);\n alignCoordinates(xss, smallestWidth);\n return balance(xss, g.graph().align);\n}\n\nfunction sep(nodeSep, edgeSep, reverseSep) {\n return function(g, v, w) {\n var vLabel = g.node(v);\n var wLabel = g.node(w);\n var sum = 0;\n var delta;\n\n sum += vLabel.width / 2;\n if (_.has(vLabel, \"labelpos\")) {\n switch (vLabel.labelpos.toLowerCase()) {\n case \"l\": delta = -vLabel.width / 2; break;\n case \"r\": delta = vLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n sum += (vLabel.dummy ? edgeSep : nodeSep) / 2;\n sum += (wLabel.dummy ? edgeSep : nodeSep) / 2;\n\n sum += wLabel.width / 2;\n if (_.has(wLabel, \"labelpos\")) {\n switch (wLabel.labelpos.toLowerCase()) {\n case \"l\": delta = wLabel.width / 2; break;\n case \"r\": delta = -wLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n return sum;\n };\n}\n\nfunction width(g, v) {\n return g.node(v).width;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar util = require(\"../util\");\nvar positionX = require(\"./bk\").positionX;\n\nmodule.exports = position;\n\nfunction position(g) {\n g = util.asNonCompoundGraph(g);\n\n positionY(g);\n _.forEach(positionX(g), function(x, v) {\n g.node(v).x = x;\n });\n}\n\nfunction positionY(g) {\n var layering = util.buildLayerMatrix(g);\n var rankSep = g.graph().ranksep;\n var prevY = 0;\n _.forEach(layering, function(layer) {\n var maxHeight = _.max(_.map(layer, function(v) { return g.node(v).height; }));\n _.forEach(layer, function(v) {\n g.node(v).y = prevY + maxHeight / 2;\n });\n prevY += maxHeight + rankSep;\n });\n}\n\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar acyclic = require(\"./acyclic\");\nvar normalize = require(\"./normalize\");\nvar rank = require(\"./rank\");\nvar normalizeRanks = require(\"./util\").normalizeRanks;\nvar parentDummyChains = require(\"./parent-dummy-chains\");\nvar removeEmptyRanks = require(\"./util\").removeEmptyRanks;\nvar nestingGraph = require(\"./nesting-graph\");\nvar addBorderSegments = require(\"./add-border-segments\");\nvar coordinateSystem = require(\"./coordinate-system\");\nvar order = require(\"./order\");\nvar position = require(\"./position\");\nvar util = require(\"./util\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = layout;\n\nfunction layout(g, opts) {\n var time = opts && opts.debugTiming ? util.time : util.notime;\n time(\"layout\", function() {\n var layoutGraph = \n time(\" buildLayoutGraph\", function() { return buildLayoutGraph(g); });\n time(\" runLayout\", function() { runLayout(layoutGraph, time); });\n time(\" updateInputGraph\", function() { updateInputGraph(g, layoutGraph); });\n });\n}\n\nfunction runLayout(g, time) {\n time(\" makeSpaceForEdgeLabels\", function() { makeSpaceForEdgeLabels(g); });\n time(\" removeSelfEdges\", function() { removeSelfEdges(g); });\n time(\" acyclic\", function() { acyclic.run(g); });\n time(\" nestingGraph.run\", function() { nestingGraph.run(g); });\n time(\" rank\", function() { rank(util.asNonCompoundGraph(g)); });\n time(\" injectEdgeLabelProxies\", function() { injectEdgeLabelProxies(g); });\n time(\" removeEmptyRanks\", function() { removeEmptyRanks(g); });\n time(\" nestingGraph.cleanup\", function() { nestingGraph.cleanup(g); });\n time(\" normalizeRanks\", function() { normalizeRanks(g); });\n time(\" assignRankMinMax\", function() { assignRankMinMax(g); });\n time(\" removeEdgeLabelProxies\", function() { removeEdgeLabelProxies(g); });\n time(\" normalize.run\", function() { normalize.run(g); });\n time(\" parentDummyChains\", function() { parentDummyChains(g); });\n time(\" addBorderSegments\", function() { addBorderSegments(g); });\n time(\" order\", function() { order(g); });\n time(\" insertSelfEdges\", function() { insertSelfEdges(g); });\n time(\" adjustCoordinateSystem\", function() { coordinateSystem.adjust(g); });\n time(\" position\", function() { position(g); });\n time(\" positionSelfEdges\", function() { positionSelfEdges(g); });\n time(\" removeBorderNodes\", function() { removeBorderNodes(g); });\n time(\" normalize.undo\", function() { normalize.undo(g); });\n time(\" fixupEdgeLabelCoords\", function() { fixupEdgeLabelCoords(g); });\n time(\" undoCoordinateSystem\", function() { coordinateSystem.undo(g); });\n time(\" translateGraph\", function() { translateGraph(g); });\n time(\" assignNodeIntersects\", function() { assignNodeIntersects(g); });\n time(\" reversePoints\", function() { reversePointsForReversedEdges(g); });\n time(\" acyclic.undo\", function() { acyclic.undo(g); });\n}\n\n/*\n * Copies final layout information from the layout graph back to the input\n * graph. This process only copies whitelisted attributes from the layout graph\n * to the input graph, so it serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction updateInputGraph(inputGraph, layoutGraph) {\n _.forEach(inputGraph.nodes(), function(v) {\n var inputLabel = inputGraph.node(v);\n var layoutLabel = layoutGraph.node(v);\n\n if (inputLabel) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n\n if (layoutGraph.children(v).length) {\n inputLabel.width = layoutLabel.width;\n inputLabel.height = layoutLabel.height;\n }\n }\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var inputLabel = inputGraph.edge(e);\n var layoutLabel = layoutGraph.edge(e);\n\n inputLabel.points = layoutLabel.points;\n if (_.has(layoutLabel, \"x\")) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n }\n });\n\n inputGraph.graph().width = layoutGraph.graph().width;\n inputGraph.graph().height = layoutGraph.graph().height;\n}\n\nvar graphNumAttrs = [\"nodesep\", \"edgesep\", \"ranksep\", \"marginx\", \"marginy\"];\nvar graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: \"tb\" };\nvar graphAttrs = [\"acyclicer\", \"ranker\", \"rankdir\", \"align\"];\nvar nodeNumAttrs = [\"width\", \"height\"];\nvar nodeDefaults = { width: 0, height: 0 };\nvar edgeNumAttrs = [\"minlen\", \"weight\", \"width\", \"height\", \"labeloffset\"];\nvar edgeDefaults = {\n minlen: 1, weight: 1, width: 0, height: 0,\n labeloffset: 10, labelpos: \"r\"\n};\nvar edgeAttrs = [\"labelpos\"];\n\n/*\n * Constructs a new graph from the input graph, which can be used for layout.\n * This process copies only whitelisted attributes from the input graph to the\n * layout graph. Thus this function serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction buildLayoutGraph(inputGraph) {\n var g = new Graph({ multigraph: true, compound: true });\n var graph = canonicalize(inputGraph.graph());\n\n g.setGraph(_.merge({},\n graphDefaults,\n selectNumberAttrs(graph, graphNumAttrs),\n _.pick(graph, graphAttrs)));\n\n _.forEach(inputGraph.nodes(), function(v) {\n var node = canonicalize(inputGraph.node(v));\n g.setNode(v, _.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults));\n g.setParent(v, inputGraph.parent(v));\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var edge = canonicalize(inputGraph.edge(e));\n g.setEdge(e, _.merge({},\n edgeDefaults,\n selectNumberAttrs(edge, edgeNumAttrs),\n _.pick(edge, edgeAttrs)));\n });\n\n return g;\n}\n\n/*\n * This idea comes from the Gansner paper: to account for edge labels in our\n * layout we split each rank in half by doubling minlen and halving ranksep.\n * Then we can place labels at these mid-points between nodes.\n *\n * We also add some minimal padding to the width to push the label for the edge\n * away from the edge itself a bit.\n */\nfunction makeSpaceForEdgeLabels(g) {\n var graph = g.graph();\n graph.ranksep /= 2;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n edge.minlen *= 2;\n if (edge.labelpos.toLowerCase() !== \"c\") {\n if (graph.rankdir === \"TB\" || graph.rankdir === \"BT\") {\n edge.width += edge.labeloffset;\n } else {\n edge.height += edge.labeloffset;\n }\n }\n });\n}\n\n/*\n * Creates temporary dummy nodes that capture the rank in which each edge's\n * label is going to, if it has one of non-zero width and height. We do this\n * so that we can safely remove empty ranks while preserving balance for the\n * label's position.\n */\nfunction injectEdgeLabelProxies(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.width && edge.height) {\n var v = g.node(e.v);\n var w = g.node(e.w);\n var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e };\n util.addDummyNode(g, \"edge-proxy\", label, \"_ep\");\n }\n });\n}\n\nfunction assignRankMinMax(g) {\n var maxRank = 0;\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.borderTop) {\n node.minRank = g.node(node.borderTop).rank;\n node.maxRank = g.node(node.borderBottom).rank;\n maxRank = _.max(maxRank, node.maxRank);\n }\n });\n g.graph().maxRank = maxRank;\n}\n\nfunction removeEdgeLabelProxies(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"edge-proxy\") {\n g.edge(node.e).labelRank = node.rank;\n g.removeNode(v);\n }\n });\n}\n\nfunction translateGraph(g) {\n var minX = Number.POSITIVE_INFINITY;\n var maxX = 0;\n var minY = Number.POSITIVE_INFINITY;\n var maxY = 0;\n var graphLabel = g.graph();\n var marginX = graphLabel.marginx || 0;\n var marginY = graphLabel.marginy || 0;\n\n function getExtremes(attrs) {\n var x = attrs.x;\n var y = attrs.y;\n var w = attrs.width;\n var h = attrs.height;\n minX = Math.min(minX, x - w / 2);\n maxX = Math.max(maxX, x + w / 2);\n minY = Math.min(minY, y - h / 2);\n maxY = Math.max(maxY, y + h / 2);\n }\n\n _.forEach(g.nodes(), function(v) { getExtremes(g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n getExtremes(edge);\n }\n });\n\n minX -= marginX;\n minY -= marginY;\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n node.x -= minX;\n node.y -= minY;\n });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, function(p) {\n p.x -= minX;\n p.y -= minY;\n });\n if (_.has(edge, \"x\")) { edge.x -= minX; }\n if (_.has(edge, \"y\")) { edge.y -= minY; }\n });\n\n graphLabel.width = maxX - minX + marginX;\n graphLabel.height = maxY - minY + marginY;\n}\n\nfunction assignNodeIntersects(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n var nodeV = g.node(e.v);\n var nodeW = g.node(e.w);\n var p1, p2;\n if (!edge.points) {\n edge.points = [];\n p1 = nodeW;\n p2 = nodeV;\n } else {\n p1 = edge.points[0];\n p2 = edge.points[edge.points.length - 1];\n }\n edge.points.unshift(util.intersectRect(nodeV, p1));\n edge.points.push(util.intersectRect(nodeW, p2));\n });\n}\n\nfunction fixupEdgeLabelCoords(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n if (edge.labelpos === \"l\" || edge.labelpos === \"r\") {\n edge.width -= edge.labeloffset;\n }\n switch (edge.labelpos) {\n case \"l\": edge.x -= edge.width / 2 + edge.labeloffset; break;\n case \"r\": edge.x += edge.width / 2 + edge.labeloffset; break;\n }\n }\n });\n}\n\nfunction reversePointsForReversedEdges(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.reversed) {\n edge.points.reverse();\n }\n });\n}\n\nfunction removeBorderNodes(g) {\n _.forEach(g.nodes(), function(v) {\n if (g.children(v).length) {\n var node = g.node(v);\n var t = g.node(node.borderTop);\n var b = g.node(node.borderBottom);\n var l = g.node(_.last(node.borderLeft));\n var r = g.node(_.last(node.borderRight));\n\n node.width = Math.abs(r.x - l.x);\n node.height = Math.abs(b.y - t.y);\n node.x = l.x + node.width / 2;\n node.y = t.y + node.height / 2;\n }\n });\n\n _.forEach(g.nodes(), function(v) {\n if (g.node(v).dummy === \"border\") {\n g.removeNode(v);\n }\n });\n}\n\nfunction removeSelfEdges(g) {\n _.forEach(g.edges(), function(e) {\n if (e.v === e.w) {\n var node = g.node(e.v);\n if (!node.selfEdges) {\n node.selfEdges = [];\n }\n node.selfEdges.push({ e: e, label: g.edge(e) });\n g.removeEdge(e);\n }\n });\n}\n\nfunction insertSelfEdges(g) {\n var layers = util.buildLayerMatrix(g);\n _.forEach(layers, function(layer) {\n var orderShift = 0;\n _.forEach(layer, function(v, i) {\n var node = g.node(v);\n node.order = i + orderShift;\n _.forEach(node.selfEdges, function(selfEdge) {\n util.addDummyNode(g, \"selfedge\", {\n width: selfEdge.label.width,\n height: selfEdge.label.height,\n rank: node.rank,\n order: i + (++orderShift),\n e: selfEdge.e,\n label: selfEdge.label\n }, \"_se\");\n });\n delete node.selfEdges;\n });\n });\n}\n\nfunction positionSelfEdges(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"selfedge\") {\n var selfNode = g.node(node.e.v);\n var x = selfNode.x + selfNode.width / 2;\n var y = selfNode.y;\n var dx = node.x - x;\n var dy = selfNode.height / 2;\n g.setEdge(node.e, node.label);\n g.removeNode(v);\n node.label.points = [\n { x: x + 2 * dx / 3, y: y - dy },\n { x: x + 5 * dx / 6, y: y - dy },\n { x: x + dx , y: y },\n { x: x + 5 * dx / 6, y: y + dy },\n { x: x + 2 * dx / 3, y: y + dy }\n ];\n node.label.x = node.x;\n node.label.y = node.y;\n }\n });\n}\n\nfunction selectNumberAttrs(obj, attrs) {\n return _.mapValues(_.pick(obj, attrs), Number);\n}\n\nfunction canonicalize(attrs) {\n var newAttrs = {};\n _.forEach(attrs, function(v, k) {\n newAttrs[k.toLowerCase()] = v;\n });\n return newAttrs;\n}\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = {\n debugOrdering: debugOrdering\n};\n\n/* istanbul ignore next */\nfunction debugOrdering(g) {\n var layerMatrix = util.buildLayerMatrix(g);\n\n var h = new Graph({ compound: true, multigraph: true }).setGraph({});\n\n _.forEach(g.nodes(), function(v) {\n h.setNode(v, { label: v });\n h.setParent(v, \"layer\" + g.node(v).rank);\n });\n\n _.forEach(g.edges(), function(e) {\n h.setEdge(e.v, e.w, {}, e.name);\n });\n\n _.forEach(layerMatrix, function(layer, i) {\n var layerV = \"layer\" + i;\n h.setNode(layerV, { rank: \"same\" });\n _.reduce(layer, function(u, v) {\n h.setEdge(u, v, { style: \"invis\" });\n return v;\n });\n });\n\n return h;\n}\n","module.exports = \"0.8.5\";\n","/*\nCopyright (c) 2012-2014 Chris Pettitt\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nmodule.exports = {\n graphlib: require(\"./lib/graphlib\"),\n\n layout: require(\"./lib/layout\"),\n debug: require(\"./lib/debug\"),\n util: {\n time: require(\"./lib/util\").time,\n notime: require(\"./lib/util\").notime\n },\n version: require(\"./lib/version\")\n};\n",null,null,null,null,null,"/*! For license information please see index.js.LICENSE.txt */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.docx=t():e.docx=t()}(globalThis,(()=>(()=>{var e={9742:(e,t)=>{\"use strict\";t.byteLength=function(e){var t=c(e),r=t[0],n=t[1];return 3*(r+n)/4-n},t.toByteArray=function(e){var t,r,i=c(e),o=i[0],a=i[1],u=new s(function(e,t,r){return 3*(t+r)/4-r}(0,o,a)),l=0,h=a>0?o-4:o;for(r=0;r>16&255,u[l++]=t>>8&255,u[l++]=255&t;return 2===a&&(t=n[e.charCodeAt(r)]<<2|n[e.charCodeAt(r+1)]>>4,u[l++]=255&t),1===a&&(t=n[e.charCodeAt(r)]<<10|n[e.charCodeAt(r+1)]<<4|n[e.charCodeAt(r+2)]>>2,u[l++]=t>>8&255,u[l++]=255&t),u},t.fromByteArray=function(e){for(var t,n=e.length,s=n%3,i=[],o=16383,a=0,c=n-s;ac?c:a+o));return 1===s?(t=e[n-1],i.push(r[t>>2]+r[t<<4&63]+\"==\")):2===s&&(t=(e[n-2]<<8)+e[n-1],i.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+\"=\")),i.join(\"\")};for(var r=[],n=[],s=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,i=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",o=0,a=i.length;o0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=e.indexOf(\"=\");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function u(e,t,n){for(var s,i,o=[],a=t;a>18&63]+r[i>>12&63]+r[i>>6&63]+r[63&i]);return o.join(\"\")}n[\"-\".charCodeAt(0)]=62,n[\"_\".charCodeAt(0)]=63},8764:(e,t,r)=>{\"use strict\";const n=r(9742),s=r(645),i=\"function\"==typeof Symbol&&\"function\"==typeof Symbol.for?Symbol.for(\"nodejs.util.inspect.custom\"):null;t.Buffer=c,t.SlowBuffer=function(e){return+e!=e&&(e=0),c.alloc(+e)},t.INSPECT_MAX_BYTES=50;const o=2147483647;function a(e){if(e>o)throw new RangeError('The value \"'+e+'\" is invalid for option \"size\"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,c.prototype),t}function c(e,t,r){if(\"number\"==typeof e){if(\"string\"==typeof t)throw new TypeError('The \"string\" argument must be of type string. Received type number');return h(e)}return u(e,t,r)}function u(e,t,r){if(\"string\"==typeof e)return function(e,t){if(\"string\"==typeof t&&\"\"!==t||(t=\"utf8\"),!c.isEncoding(t))throw new TypeError(\"Unknown encoding: \"+t);const r=0|m(e,t);let n=a(r);const s=n.write(e,t);return s!==r&&(n=n.slice(0,s)),n}(e,t);if(ArrayBuffer.isView(e))return function(e){if(q(e,Uint8Array)){const t=new Uint8Array(e);return d(t.buffer,t.byteOffset,t.byteLength)}return p(e)}(e);if(null==e)throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof e);if(q(e,ArrayBuffer)||e&&q(e.buffer,ArrayBuffer))return d(e,t,r);if(\"undefined\"!=typeof SharedArrayBuffer&&(q(e,SharedArrayBuffer)||e&&q(e.buffer,SharedArrayBuffer)))return d(e,t,r);if(\"number\"==typeof e)throw new TypeError('The \"value\" argument must not be of type number. Received type number');const n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return c.from(n,t,r);const s=function(e){if(c.isBuffer(e)){const t=0|f(e.length),r=a(t);return 0===r.length||e.copy(r,0,0,t),r}return void 0!==e.length?\"number\"!=typeof e.length||Z(e.length)?a(0):p(e):\"Buffer\"===e.type&&Array.isArray(e.data)?p(e.data):void 0}(e);if(s)return s;if(\"undefined\"!=typeof Symbol&&null!=Symbol.toPrimitive&&\"function\"==typeof e[Symbol.toPrimitive])return c.from(e[Symbol.toPrimitive](\"string\"),t,r);throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof e)}function l(e){if(\"number\"!=typeof e)throw new TypeError('\"size\" argument must be of type number');if(e<0)throw new RangeError('The value \"'+e+'\" is invalid for option \"size\"')}function h(e){return l(e),a(e<0?0:0|f(e))}function p(e){const t=e.length<0?0:0|f(e.length),r=a(t);for(let n=0;n=o)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+o.toString(16)+\" bytes\");return 0|e}function m(e,t){if(c.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||q(e,ArrayBuffer))return e.byteLength;if(\"string\"!=typeof e)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let s=!1;for(;;)switch(t){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":return V(e).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return $(e).length;default:if(s)return n?-1:V(e).length;t=(\"\"+t).toLowerCase(),s=!0}}function w(e,t,r){let n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(t>>>=0))return\"\";for(e||(e=\"utf8\");;)switch(e){case\"hex\":return C(this,t,r);case\"utf8\":case\"utf-8\":return S(this,t,r);case\"ascii\":return R(this,t,r);case\"latin1\":case\"binary\":return N(this,t,r);case\"base64\":return A(this,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return O(this,t,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+e);e=(e+\"\").toLowerCase(),n=!0}}function g(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}function y(e,t,r,n,s){if(0===e.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),Z(r=+r)&&(r=s?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(s)return-1;r=e.length-1}else if(r<0){if(!s)return-1;r=0}if(\"string\"==typeof t&&(t=c.from(t,n)),c.isBuffer(t))return 0===t.length?-1:b(e,t,r,n,s);if(\"number\"==typeof t)return t&=255,\"function\"==typeof Uint8Array.prototype.indexOf?s?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):b(e,[t],r,n,s);throw new TypeError(\"val must be string, number or Buffer\")}function b(e,t,r,n,s){let i,o=1,a=e.length,c=t.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(e.length<2||t.length<2)return-1;o=2,a/=2,c/=2,r/=2}function u(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(s){let n=-1;for(i=r;ia&&(r=a-c),i=r;i>=0;i--){let r=!0;for(let n=0;ns&&(n=s):n=s;const i=t.length;let o;for(n>i/2&&(n=i/2),o=0;o>8,s=r%256,i.push(s),i.push(n);return i}(t,e.length-r),e,r,n)}function A(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function S(e,t,r){r=Math.min(e.length,r);const n=[];let s=t;for(;s239?4:t>223?3:t>191?2:1;if(s+o<=r){let r,n,a,c;switch(o){case 1:t<128&&(i=t);break;case 2:r=e[s+1],128==(192&r)&&(c=(31&t)<<6|63&r,c>127&&(i=c));break;case 3:r=e[s+1],n=e[s+2],128==(192&r)&&128==(192&n)&&(c=(15&t)<<12|(63&r)<<6|63&n,c>2047&&(c<55296||c>57343)&&(i=c));break;case 4:r=e[s+1],n=e[s+2],a=e[s+3],128==(192&r)&&128==(192&n)&&128==(192&a)&&(c=(15&t)<<18|(63&r)<<12|(63&n)<<6|63&a,c>65535&&c<1114112&&(i=c))}}null===i?(i=65533,o=1):i>65535&&(i-=65536,n.push(i>>>10&1023|55296),i=56320|1023&i),n.push(i),s+=o}return function(e){const t=e.length;if(t<=I)return String.fromCharCode.apply(String,e);let r=\"\",n=0;for(;nn.length?(c.isBuffer(t)||(t=c.from(t)),t.copy(n,s)):Uint8Array.prototype.set.call(n,t,s);else{if(!c.isBuffer(t))throw new TypeError('\"list\" argument must be an Array of Buffers');t.copy(n,s)}s+=t.length}return n},c.byteLength=m,c.prototype._isBuffer=!0,c.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(let t=0;tr&&(e+=\" ... \"),\"\"},i&&(c.prototype[i]=c.prototype.inspect),c.prototype.compare=function(e,t,r,n,s){if(q(e,Uint8Array)&&(e=c.from(e,e.offset,e.byteLength)),!c.isBuffer(e))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===s&&(s=this.length),t<0||r>e.length||n<0||s>this.length)throw new RangeError(\"out of range index\");if(n>=s&&t>=r)return 0;if(n>=s)return-1;if(t>=r)return 1;if(this===e)return 0;let i=(s>>>=0)-(n>>>=0),o=(r>>>=0)-(t>>>=0);const a=Math.min(i,o),u=this.slice(n,s),l=e.slice(t,r);for(let e=0;e>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n=\"utf8\")):(n=r,r=void 0)}const s=this.length-t;if((void 0===r||r>s)&&(r=s),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");let i=!1;for(;;)switch(n){case\"hex\":return x(this,e,t,r);case\"utf8\":case\"utf-8\":return v(this,e,t,r);case\"ascii\":case\"latin1\":case\"binary\":return _(this,e,t,r);case\"base64\":return E(this,e,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return T(this,e,t,r);default:if(i)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),i=!0}},c.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};const I=4096;function R(e,t,r){let n=\"\";r=Math.min(e.length,r);for(let s=t;sn)&&(r=n);let s=\"\";for(let n=t;nr)throw new RangeError(\"Trying to access beyond buffer length\")}function L(e,t,r,n,s,i){if(!c.isBuffer(e))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(t>s||te.length)throw new RangeError(\"Index out of range\")}function D(e,t,r,n,s){j(t,n,s,e,r,7);let i=Number(t&BigInt(4294967295));e[r++]=i,i>>=8,e[r++]=i,i>>=8,e[r++]=i,i>>=8,e[r++]=i;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,r}function P(e,t,r,n,s){j(t,n,s,e,r,7);let i=Number(t&BigInt(4294967295));e[r+7]=i,i>>=8,e[r+6]=i,i>>=8,e[r+5]=i,i>>=8,e[r+4]=i;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=o,o>>=8,e[r+2]=o,o>>=8,e[r+1]=o,o>>=8,e[r]=o,r+8}function F(e,t,r,n,s,i){if(r+n>e.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function B(e,t,r,n,i){return t=+t,r>>>=0,i||F(e,0,r,4),s.write(e,t,r,n,23,4),r+4}function M(e,t,r,n,i){return t=+t,r>>>=0,i||F(e,0,r,8),s.write(e,t,r,n,52,8),r+8}c.prototype.slice=function(e,t){const r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||k(e,t,this.length);let n=this[e],s=1,i=0;for(;++i>>=0,t>>>=0,r||k(e,t,this.length);let n=this[e+--t],s=1;for(;t>0&&(s*=256);)n+=this[e+--t]*s;return n},c.prototype.readUint8=c.prototype.readUInt8=function(e,t){return e>>>=0,t||k(e,1,this.length),this[e]},c.prototype.readUint16LE=c.prototype.readUInt16LE=function(e,t){return e>>>=0,t||k(e,2,this.length),this[e]|this[e+1]<<8},c.prototype.readUint16BE=c.prototype.readUInt16BE=function(e,t){return e>>>=0,t||k(e,2,this.length),this[e]<<8|this[e+1]},c.prototype.readUint32LE=c.prototype.readUInt32LE=function(e,t){return e>>>=0,t||k(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},c.prototype.readUint32BE=c.prototype.readUInt32BE=function(e,t){return e>>>=0,t||k(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},c.prototype.readBigUInt64LE=J((function(e){W(e>>>=0,\"offset\");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||K(e,this.length-8);const n=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,s=this[++e]+256*this[++e]+65536*this[++e]+r*2**24;return BigInt(n)+(BigInt(s)<>>=0,\"offset\");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||K(e,this.length-8);const n=t*2**24+65536*this[++e]+256*this[++e]+this[++e],s=this[++e]*2**24+65536*this[++e]+256*this[++e]+r;return(BigInt(n)<>>=0,t>>>=0,r||k(e,t,this.length);let n=this[e],s=1,i=0;for(;++i=s&&(n-=Math.pow(2,8*t)),n},c.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||k(e,t,this.length);let n=t,s=1,i=this[e+--n];for(;n>0&&(s*=256);)i+=this[e+--n]*s;return s*=128,i>=s&&(i-=Math.pow(2,8*t)),i},c.prototype.readInt8=function(e,t){return e>>>=0,t||k(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},c.prototype.readInt16LE=function(e,t){e>>>=0,t||k(e,2,this.length);const r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},c.prototype.readInt16BE=function(e,t){e>>>=0,t||k(e,2,this.length);const r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},c.prototype.readInt32LE=function(e,t){return e>>>=0,t||k(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},c.prototype.readInt32BE=function(e,t){return e>>>=0,t||k(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},c.prototype.readBigInt64LE=J((function(e){W(e>>>=0,\"offset\");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||K(e,this.length-8);const n=this[e+4]+256*this[e+5]+65536*this[e+6]+(r<<24);return(BigInt(n)<>>=0,\"offset\");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||K(e,this.length-8);const n=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(n)<>>=0,t||k(e,4,this.length),s.read(this,e,!0,23,4)},c.prototype.readFloatBE=function(e,t){return e>>>=0,t||k(e,4,this.length),s.read(this,e,!1,23,4)},c.prototype.readDoubleLE=function(e,t){return e>>>=0,t||k(e,8,this.length),s.read(this,e,!0,52,8)},c.prototype.readDoubleBE=function(e,t){return e>>>=0,t||k(e,8,this.length),s.read(this,e,!1,52,8)},c.prototype.writeUintLE=c.prototype.writeUIntLE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||L(this,e,t,r,Math.pow(2,8*r)-1,0);let s=1,i=0;for(this[t]=255&e;++i>>=0,r>>>=0,n||L(this,e,t,r,Math.pow(2,8*r)-1,0);let s=r-1,i=1;for(this[t+s]=255&e;--s>=0&&(i*=256);)this[t+s]=e/i&255;return t+r},c.prototype.writeUint8=c.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,1,255,0),this[t]=255&e,t+1},c.prototype.writeUint16LE=c.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},c.prototype.writeUint16BE=c.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},c.prototype.writeUint32LE=c.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},c.prototype.writeUint32BE=c.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},c.prototype.writeBigUInt64LE=J((function(e,t=0){return D(this,e,t,BigInt(0),BigInt(\"0xffffffffffffffff\"))})),c.prototype.writeBigUInt64BE=J((function(e,t=0){return P(this,e,t,BigInt(0),BigInt(\"0xffffffffffffffff\"))})),c.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);L(this,e,t,r,n-1,-n)}let s=0,i=1,o=0;for(this[t]=255&e;++s>0)-o&255;return t+r},c.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);L(this,e,t,r,n-1,-n)}let s=r-1,i=1,o=0;for(this[t+s]=255&e;--s>=0&&(i*=256);)e<0&&0===o&&0!==this[t+s+1]&&(o=1),this[t+s]=(e/i>>0)-o&255;return t+r},c.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},c.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},c.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},c.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},c.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},c.prototype.writeBigInt64LE=J((function(e,t=0){return D(this,e,t,-BigInt(\"0x8000000000000000\"),BigInt(\"0x7fffffffffffffff\"))})),c.prototype.writeBigInt64BE=J((function(e,t=0){return P(this,e,t,-BigInt(\"0x8000000000000000\"),BigInt(\"0x7fffffffffffffff\"))})),c.prototype.writeFloatLE=function(e,t,r){return B(this,e,t,!0,r)},c.prototype.writeFloatBE=function(e,t,r){return B(this,e,t,!1,r)},c.prototype.writeDoubleLE=function(e,t,r){return M(this,e,t,!0,r)},c.prototype.writeDoubleBE=function(e,t,r){return M(this,e,t,!1,r)},c.prototype.copy=function(e,t,r,n){if(!c.isBuffer(e))throw new TypeError(\"argument should be a Buffer\");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError(\"Index out of range\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),e.length-t>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),\"number\"==typeof e)for(s=t;s=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function j(e,t,r,n,s,i){if(e>r||e3?0===t||t===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(i+1)}${n}`:`>= -(2${n} ** ${8*(i+1)-1}${n}) and < 2 ** ${8*(i+1)-1}${n}`:`>= ${t}${n} and <= ${r}${n}`,new U.ERR_OUT_OF_RANGE(\"value\",s,e)}!function(e,t,r){W(t,\"offset\"),void 0!==e[t]&&void 0!==e[t+r]||K(t,e.length-(r+1))}(n,s,i)}function W(e,t){if(\"number\"!=typeof e)throw new U.ERR_INVALID_ARG_TYPE(t,\"number\",e)}function K(e,t,r){if(Math.floor(e)!==e)throw W(e,r),new U.ERR_OUT_OF_RANGE(r||\"offset\",\"an integer\",e);if(t<0)throw new U.ERR_BUFFER_OUT_OF_BOUNDS;throw new U.ERR_OUT_OF_RANGE(r||\"offset\",`>= ${r?1:0} and <= ${t}`,e)}H(\"ERR_BUFFER_OUT_OF_BOUNDS\",(function(e){return e?`${e} is outside of buffer bounds`:\"Attempt to access memory outside buffer bounds\"}),RangeError),H(\"ERR_INVALID_ARG_TYPE\",(function(e,t){return`The \"${e}\" argument must be of type number. Received type ${typeof t}`}),TypeError),H(\"ERR_OUT_OF_RANGE\",(function(e,t,r){let n=`The value of \"${e}\" is out of range.`,s=r;return Number.isInteger(r)&&Math.abs(r)>2**32?s=z(String(r)):\"bigint\"==typeof r&&(s=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(s=z(s)),s+=\"n\"),n+=` It must be ${t}. Received ${s}`,n}),RangeError);const G=/[^+/0-9A-Za-z-_]/g;function V(e,t){let r;t=t||1/0;const n=e.length;let s=null;const i=[];for(let o=0;o55295&&r<57344){if(!s){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&i.push(239,191,189);continue}s=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),s=r;continue}r=65536+(s-55296<<10|r-56320)}else s&&(t-=3)>-1&&i.push(239,191,189);if(s=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function $(e){return n.toByteArray(function(e){if((e=(e=e.split(\"=\")[0]).trim().replace(G,\"\")).length<2)return\"\";for(;e.length%4!=0;)e+=\"=\";return e}(e))}function X(e,t,r,n){let s;for(s=0;s=t.length||s>=e.length);++s)t[s+r]=e[s];return s}function q(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function Z(e){return e!=e}const Y=function(){const e=\"0123456789abcdef\",t=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let s=0;s<16;++s)t[n+s]=e[r]+e[s]}return t}();function J(e){return\"undefined\"==typeof BigInt?Q:e}function Q(){throw new Error(\"BigInt not supported\")}},7187:e=>{\"use strict\";var t,r=\"object\"==typeof Reflect?Reflect:null,n=r&&\"function\"==typeof r.apply?r.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};t=r&&\"function\"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var s=Number.isNaN||function(e){return e!=e};function i(){i.init.call(this)}e.exports=i,e.exports.once=function(e,t){return new Promise((function(r,n){function s(r){e.removeListener(t,i),n(r)}function i(){\"function\"==typeof e.removeListener&&e.removeListener(\"error\",s),r([].slice.call(arguments))}m(e,t,i,{once:!0}),\"error\"!==t&&function(e,t,r){\"function\"==typeof e.on&&m(e,\"error\",t,{once:!0})}(e,s)}))},i.EventEmitter=i,i.prototype._events=void 0,i.prototype._eventsCount=0,i.prototype._maxListeners=void 0;var o=10;function a(e){if(\"function\"!=typeof e)throw new TypeError('The \"listener\" argument must be of type Function. Received type '+typeof e)}function c(e){return void 0===e._maxListeners?i.defaultMaxListeners:e._maxListeners}function u(e,t,r,n){var s,i,o,u;if(a(r),void 0===(i=e._events)?(i=e._events=Object.create(null),e._eventsCount=0):(void 0!==i.newListener&&(e.emit(\"newListener\",t,r.listener?r.listener:r),i=e._events),o=i[t]),void 0===o)o=i[t]=r,++e._eventsCount;else if(\"function\"==typeof o?o=i[t]=n?[r,o]:[o,r]:n?o.unshift(r):o.push(r),(s=c(e))>0&&o.length>s&&!o.warned){o.warned=!0;var l=new Error(\"Possible EventEmitter memory leak detected. \"+o.length+\" \"+String(t)+\" listeners added. Use emitter.setMaxListeners() to increase limit\");l.name=\"MaxListenersExceededWarning\",l.emitter=e,l.type=t,l.count=o.length,u=l,console&&console.warn&&console.warn(u)}return e}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function h(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},s=l.bind(n);return s.listener=r,n.wrapFn=s,s}function p(e,t,r){var n=e._events;if(void 0===n)return[];var s=n[t];return void 0===s?[]:\"function\"==typeof s?r?[s.listener||s]:[s]:r?function(e){for(var t=new Array(e.length),r=0;r0&&(o=t[0]),o instanceof Error)throw o;var a=new Error(\"Unhandled error.\"+(o?\" (\"+o.message+\")\":\"\"));throw a.context=o,a}var c=i[e];if(void 0===c)return!1;if(\"function\"==typeof c)n(c,this,t);else{var u=c.length,l=f(c,u);for(r=0;r=0;i--)if(r[i]===t||r[i].listener===t){o=r[i].listener,s=i;break}if(s<0)return this;0===s?r.shift():function(e,t){for(;t+1=0;n--)this.removeListener(e,t[n]);return this},i.prototype.listeners=function(e){return p(this,e,!0)},i.prototype.rawListeners=function(e){return p(this,e,!1)},i.listenerCount=function(e,t){return\"function\"==typeof e.listenerCount?e.listenerCount(t):d.call(e,t)},i.prototype.listenerCount=d,i.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},645:(e,t)=>{t.read=function(e,t,r,n,s){var i,o,a=8*s-n-1,c=(1<>1,l=-7,h=r?s-1:0,p=r?-1:1,d=e[t+h];for(h+=p,i=d&(1<<-l)-1,d>>=-l,l+=a;l>0;i=256*i+e[t+h],h+=p,l-=8);for(o=i&(1<<-l)-1,i>>=-l,l+=n;l>0;o=256*o+e[t+h],h+=p,l-=8);if(0===i)i=1-u;else{if(i===c)return o?NaN:1/0*(d?-1:1);o+=Math.pow(2,n),i-=u}return(d?-1:1)*o*Math.pow(2,i-n)},t.write=function(e,t,r,n,s,i){var o,a,c,u=8*i-s-1,l=(1<>1,p=23===s?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:i-1,f=n?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-o))<1&&(o--,c*=2),(t+=o+h>=1?p/c:p*Math.pow(2,1-h))*c>=2&&(o++,c/=2),o+h>=l?(a=0,o=l):o+h>=1?(a=(t*c-1)*Math.pow(2,s),o+=h):(a=t*Math.pow(2,h-1)*Math.pow(2,s),o=0));s>=8;e[r+d]=255&a,d+=f,a/=256,s-=8);for(o=o<0;e[r+d]=255&o,d+=f,o/=256,u-=8);e[r+d-f]|=128*m}},5705:(e,t,r)=>{\"use strict\";var n,s,i=r.g.MutationObserver||r.g.WebKitMutationObserver;if(i){var o=0,a=new i(h),c=r.g.document.createTextNode(\"\");a.observe(c,{characterData:!0}),n=function(){c.data=o=++o%2}}else if(r.g.setImmediate||void 0===r.g.MessageChannel)n=\"document\"in r.g&&\"onreadystatechange\"in r.g.document.createElement(\"script\")?function(){var e=r.g.document.createElement(\"script\");e.onreadystatechange=function(){h(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},r.g.document.documentElement.appendChild(e)}:function(){setTimeout(h,0)};else{var u=new r.g.MessageChannel;u.port1.onmessage=h,n=function(){u.port2.postMessage(0)}}var l=[];function h(){var e,t;s=!0;for(var r=l.length;r;){for(t=l,l=[],e=-1;++e{\"function\"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}}},8458:(e,t,r)=>{\"use strict\";var n=r(8910),s=r(3790),i=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";t.encode=function(e){for(var t,r,s,o,a,c,u,l=[],h=0,p=e.length,d=p,f=\"string\"!==n.getTypeOf(e);h>2,a=(3&t)<<4|r>>4,c=d>1?(15&r)<<2|s>>6:64,u=d>2?63&s:64,l.push(i.charAt(o)+i.charAt(a)+i.charAt(c)+i.charAt(u));return l.join(\"\")},t.decode=function(e){var t,r,n,o,a,c,u=0,l=0,h=\"data:\";if(e.substr(0,h.length)===h)throw new Error(\"Invalid base64 input, it looks like a data url.\");var p,d=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,\"\")).length/4;if(e.charAt(e.length-1)===i.charAt(64)&&d--,e.charAt(e.length-2)===i.charAt(64)&&d--,d%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(p=s.uint8array?new Uint8Array(0|d):new Array(0|d);u>4,r=(15&o)<<4|(a=i.indexOf(e.charAt(u++)))>>2,n=(3&a)<<6|(c=i.indexOf(e.charAt(u++))),p[l++]=t,64!==a&&(p[l++]=r),64!==c&&(p[l++]=n);return p}},7326:(e,t,r)=>{\"use strict\";var n=r(8565),s=r(5301),i=r(2541),o=r(5977);function a(e,t,r,n,s){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=s}a.prototype={getContentWorker:function(){var e=new s(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new o(\"data_length\")),t=this;return e.on(\"end\",(function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")})),e},getCompressedWorker:function(){return new s(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},a.createWorkerFrom=function(e,t,r){return e.pipe(new i).pipe(new o(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new o(\"compressedSize\")).withStreamInfo(\"compression\",t)},e.exports=a},1678:(e,t,r)=>{\"use strict\";var n=r(3718);t.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},t.DEFLATE=r(1033)},6988:(e,t,r)=>{\"use strict\";var n=r(8910),s=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();e.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=s,o=0+r;e^=-1;for(var a=0;a>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length):function(e,t,r,n){var i=s,o=0+r;e^=-1;for(var a=0;a>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length):0}},6032:(e,t)=>{\"use strict\";t.base64=!1,t.binary=!1,t.dir=!1,t.createFolders=!0,t.date=null,t.compression=null,t.compressionOptions=null,t.comment=null,t.unixPermissions=null,t.dosPermissions=null},8565:(e,t,r)=>{\"use strict\";var n;n=\"undefined\"!=typeof Promise?Promise:r(3389),e.exports={Promise:n}},1033:(e,t,r)=>{\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,s=r(9591),i=r(8910),o=r(3718),a=n?\"uint8array\":\"array\";function c(e,t){o.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}t.magic=\"\\b\\0\",i.inherits(c,o),c.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(i.transformTo(a,e.data),!1)},c.prototype.flush=function(){o.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},c.prototype.cleanUp=function(){o.prototype.cleanUp.call(this),this._pako=null},c.prototype._createPako=function(){this._pako=new s[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}},t.compressWorker=function(e){return new c(\"Deflate\",e)},t.uncompressWorker=function(){return new c(\"Inflate\",{})}},4979:(e,t,r)=>{\"use strict\";var n=r(8910),s=r(3718),i=r(3600),o=r(6988),a=r(1141),c=function(e,t){var r,n=\"\";for(r=0;r>>=8;return n},u=function(e,t,r,s,u,l){var h,p,d=e.file,f=e.compression,m=l!==i.utf8encode,w=n.transformTo(\"string\",l(d.name)),g=n.transformTo(\"string\",i.utf8encode(d.name)),y=d.comment,b=n.transformTo(\"string\",l(y)),x=n.transformTo(\"string\",i.utf8encode(y)),v=g.length!==d.name.length,_=x.length!==y.length,E=\"\",T=\"\",A=\"\",S=d.dir,I=d.date,R={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(R.crc32=e.crc32,R.compressedSize=e.compressedSize,R.uncompressedSize=e.uncompressedSize);var N=0;t&&(N|=8),m||!v&&!_||(N|=2048);var C,O,k=0,L=0;S&&(k|=16),\"UNIX\"===u?(L=798,k|=(O=C=d.unixPermissions,C||(O=S?16893:33204),(65535&O)<<16)):(L=20,k|=63&(d.dosPermissions||0)),h=I.getUTCHours(),h<<=6,h|=I.getUTCMinutes(),h<<=5,h|=I.getUTCSeconds()/2,p=I.getUTCFullYear()-1980,p<<=4,p|=I.getUTCMonth()+1,p<<=5,p|=I.getUTCDate(),v&&(T=c(1,1)+c(o(w),4)+g,E+=\"up\"+c(T.length,2)+T),_&&(A=c(1,1)+c(o(b),4)+x,E+=\"uc\"+c(A.length,2)+A);var D=\"\";return D+=\"\\n\\0\",D+=c(N,2),D+=f.magic,D+=c(h,2),D+=c(p,2),D+=c(R.crc32,4),D+=c(R.compressedSize,4),D+=c(R.uncompressedSize,4),D+=c(w.length,2),D+=c(E.length,2),{fileRecord:a.LOCAL_FILE_HEADER+D+w+E,dirRecord:a.CENTRAL_FILE_HEADER+c(L,2)+D+c(b.length,2)+\"\\0\\0\\0\\0\"+c(k,4)+c(s,4)+w+E+b}},l=function(e){return a.DATA_DESCRIPTOR+c(e.crc32,4)+c(e.compressedSize,4)+c(e.uncompressedSize,4)};function h(e,t,r,n){s.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}n.inherits(h,s),h.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,s.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},h.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=u(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},h.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=u(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:l(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},h.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t{\"use strict\";var n=r(1678),s=r(4979);t.generateWorker=function(e,t,r){var i=new s(t.streamFiles,r,t.platform,t.encodeFileName),o=0;try{e.forEach((function(e,r){o++;var s=function(e,t){var r=e||t,s=n[r];if(!s)throw new Error(r+\" is not a valid compression method !\");return s}(r.options.compression,t.compression),a=r.options.compressionOptions||t.compressionOptions||{},c=r.dir,u=r.date;r._compressWorker(s,a).withStreamInfo(\"file\",{name:e,dir:c,date:u,comment:r.comment||\"\",unixPermissions:r.unixPermissions,dosPermissions:r.dosPermissions}).pipe(i)})),i.entriesCount=o}catch(e){i.error(e)}return i}},6085:(e,t,r)=>{\"use strict\";function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");this.files=Object.create(null),this.comment=null,this.root=\"\",this.clone=function(){var e=new n;for(var t in this)\"function\"!=typeof this[t]&&(e[t]=this[t]);return e}}n.prototype=r(7132),n.prototype.loadAsync=r(1062),n.support=r(3790),n.defaults=r(6032),n.version=\"3.10.1\",n.loadAsync=function(e,t){return(new n).loadAsync(e,t)},n.external=r(8565),e.exports=n},1062:(e,t,r)=>{\"use strict\";var n=r(8910),s=r(8565),i=r(3600),o=r(6624),a=r(2541),c=r(2182);function u(e){return new s.Promise((function(t,r){var n=e.decompressed.getContentWorker().pipe(new a);n.on(\"error\",(function(e){r(e)})).on(\"end\",(function(){n.streamInfo.crc32!==e.decompressed.crc32?r(new Error(\"Corrupted zip : CRC32 mismatch\")):t()})).resume()}))}e.exports=function(e,t){var r=this;return t=n.extend(t||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:i.utf8decode}),c.isNode&&c.isStream(e)?s.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\")):n.prepareContent(\"the loaded zip file\",e,!0,t.optimizedBinaryString,t.base64).then((function(e){var r=new o(t);return r.load(e),r})).then((function(e){var r=[s.Promise.resolve(e)],n=e.files;if(t.checkCRC32)for(var i=0;i{\"use strict\";e.exports={isNode:\"undefined\"!=typeof Buffer,newBufferFrom:function(e,t){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(e,t);if(\"number\"==typeof e)throw new Error('The \"data\" argument must not be a number');return new Buffer(e,t)},allocBuffer:function(e){if(Buffer.alloc)return Buffer.alloc(e);var t=new Buffer(e);return t.fill(0),t},isBuffer:function(e){return Buffer.isBuffer(e)},isStream:function(e){return e&&\"function\"==typeof e.on&&\"function\"==typeof e.pause&&\"function\"==typeof e.resume}}},660:(e,t,r)=>{\"use strict\";var n=r(8910),s=r(3718);function i(e,t){s.call(this,\"Nodejs stream input adapter for \"+e),this._upstreamEnded=!1,this._bindStream(t)}n.inherits(i,s),i.prototype._bindStream=function(e){var t=this;this._stream=e,e.pause(),e.on(\"data\",(function(e){t.push({data:e,meta:{percent:0}})})).on(\"error\",(function(e){t.isPaused?this.generatedError=e:t.error(e)})).on(\"end\",(function(){t.isPaused?t._upstreamEnded=!0:t.end()}))},i.prototype.pause=function(){return!!s.prototype.pause.call(this)&&(this._stream.pause(),!0)},i.prototype.resume=function(){return!!s.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},e.exports=i},1220:(e,t,r)=>{\"use strict\";var n=r(749).Readable;function s(e,t,r){n.call(this,t),this._helper=e;var s=this;e.on(\"data\",(function(e,t){s.push(e)||s._helper.pause(),r&&r(t)})).on(\"error\",(function(e){s.emit(\"error\",e)})).on(\"end\",(function(){s.push(null)}))}r(8910).inherits(s,n),s.prototype._read=function(){this._helper.resume()},e.exports=s},7132:(e,t,r)=>{\"use strict\";var n=r(3600),s=r(8910),i=r(3718),o=r(1285),a=r(6032),c=r(7326),u=r(6859),l=r(7834),h=r(2182),p=r(660),d=function(e,t,r){var n,o=s.getTypeOf(t),l=s.extend(r||{},a);l.date=l.date||new Date,null!==l.compression&&(l.compression=l.compression.toUpperCase()),\"string\"==typeof l.unixPermissions&&(l.unixPermissions=parseInt(l.unixPermissions,8)),l.unixPermissions&&16384&l.unixPermissions&&(l.dir=!0),l.dosPermissions&&16&l.dosPermissions&&(l.dir=!0),l.dir&&(e=m(e)),l.createFolders&&(n=f(e))&&w.call(this,n,!0);var d=\"string\"===o&&!1===l.binary&&!1===l.base64;r&&void 0!==r.binary||(l.binary=!d),(t instanceof c&&0===t.uncompressedSize||l.dir||!t||0===t.length)&&(l.base64=!1,l.binary=!0,t=\"\",l.compression=\"STORE\",o=\"string\");var g;g=t instanceof c||t instanceof i?t:h.isNode&&h.isStream(t)?new p(e,t):s.prepareContent(e,t,l.binary,l.optimizedBinaryString,l.base64);var y=new u(e,g,l);this.files[e]=y},f=function(e){\"/\"===e.slice(-1)&&(e=e.substring(0,e.length-1));var t=e.lastIndexOf(\"/\");return t>0?e.substring(0,t):\"\"},m=function(e){return\"/\"!==e.slice(-1)&&(e+=\"/\"),e},w=function(e,t){return t=void 0!==t?t:a.createFolders,e=m(e),this.files[e]||d.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]};function g(e){return\"[object RegExp]\"===Object.prototype.toString.call(e)}var y={load:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},forEach:function(e){var t,r,n;for(t in this.files)n=this.files[t],(r=t.slice(this.root.length,t.length))&&t.slice(0,this.root.length)===this.root&&e(r,n)},filter:function(e){var t=[];return this.forEach((function(r,n){e(r,n)&&t.push(n)})),t},file:function(e,t,r){if(1===arguments.length){if(g(e)){var n=e;return this.filter((function(e,t){return!t.dir&&n.test(e)}))}var s=this.files[this.root+e];return s&&!s.dir?s:null}return e=this.root+e,d.call(this,e,t,r),this},folder:function(e){if(!e)return this;if(g(e))return this.filter((function(t,r){return r.dir&&e.test(t)}));var t=this.root+e,r=w.call(this,t),n=this.clone();return n.root=r.name,n},remove:function(e){e=this.root+e;var t=this.files[e];if(t||(\"/\"!==e.slice(-1)&&(e+=\"/\"),t=this.files[e]),t&&!t.dir)delete this.files[e];else for(var r=this.filter((function(t,r){return r.name.slice(0,e.length)===e})),n=0;n{\"use strict\";e.exports=r(2830)},2370:(e,t,r)=>{\"use strict\";var n=r(8542);function s(e){n.call(this,e);for(var t=0;t=0;--i)if(this.data[i]===t&&this.data[i+1]===r&&this.data[i+2]===n&&this.data[i+3]===s)return i-this.zero;return-1},s.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),s=e.charCodeAt(3),i=this.readData(4);return t===i[0]&&r===i[1]&&n===i[2]&&s===i[3]},s.prototype.readData=function(e){if(this.checkOffset(e),0===e)return[];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},e.exports=s},8542:(e,t,r)=>{\"use strict\";var n=r(8910);function s(e){this.data=e,this.length=e.length,this.index=0,this.zero=0}s.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},e.exports=s},9583:(e,t,r)=>{\"use strict\";var n=r(414);function s(e){n.call(this,e)}r(8910).inherits(s,n),s.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},e.exports=s},9226:(e,t,r)=>{\"use strict\";var n=r(8542);function s(e){n.call(this,e)}r(8910).inherits(s,n),s.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},s.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},s.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},s.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},e.exports=s},414:(e,t,r)=>{\"use strict\";var n=r(2370);function s(e){n.call(this,e)}r(8910).inherits(s,n),s.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},e.exports=s},8435:(e,t,r)=>{\"use strict\";var n=r(8910),s=r(3790),i=r(2370),o=r(9226),a=r(9583),c=r(414);e.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||s.uint8array?\"nodebuffer\"===t?new a(e):s.uint8array?new c(n.transformTo(\"uint8array\",e)):new i(n.transformTo(\"array\",e)):new o(e)}},1141:(e,t)=>{\"use strict\";t.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",t.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",t.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",t.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",t.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",t.DATA_DESCRIPTOR=\"PK\u0007\\b\"},4293:(e,t,r)=>{\"use strict\";var n=r(3718),s=r(8910);function i(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}s.inherits(i,n),i.prototype.processChunk=function(e){this.push({data:s.transformTo(this.destType,e.data),meta:e.meta})},e.exports=i},2541:(e,t,r)=>{\"use strict\";var n=r(3718),s=r(6988);function i(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}r(8910).inherits(i,n),i.prototype.processChunk=function(e){this.streamInfo.crc32=s(e.data,this.streamInfo.crc32||0),this.push(e)},e.exports=i},5977:(e,t,r)=>{\"use strict\";var n=r(8910),s=r(3718);function i(e){s.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(i,s),i.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}s.prototype.processChunk.call(this,e)},e.exports=i},5301:(e,t,r)=>{\"use strict\";var n=r(8910),s=r(3718);function i(e){s.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then((function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()}),(function(e){t.error(e)}))}n.inherits(i,s),i.prototype.cleanUp=function(){s.prototype.cleanUp.call(this),this.data=null},i.prototype.resume=function(){return!!s.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},i.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},i.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},e.exports=i},3718:e=>{\"use strict\";function t(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}t.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},e.exports=t},1285:(e,t,r)=>{\"use strict\";var n=r(8910),s=r(4293),i=r(3718),o=r(8458),a=r(3790),c=r(8565),u=null;if(a.nodestream)try{u=r(1220)}catch(e){}function l(e,t,r){var o=t;switch(t){case\"blob\":case\"arraybuffer\":o=\"uint8array\";break;case\"base64\":o=\"string\"}try{this._internalType=o,this._outputType=t,this._mimeType=r,n.checkSupport(o),this._worker=e.pipe(new s(o)),e.lock()}catch(e){this._worker=new i(\"error\"),this._worker.error(e)}}l.prototype={accumulate:function(e){return t=this,r=e,new c.Promise((function(e,s){var i=[],a=t._internalType,c=t._outputType,u=t._mimeType;t.on(\"data\",(function(e,t){i.push(e),r&&r(t)})).on(\"error\",(function(e){i=[],s(e)})).on(\"end\",(function(){try{var t=function(e,t,r){switch(e){case\"blob\":return n.newBlob(n.transformTo(\"arraybuffer\",t),r);case\"base64\":return o.encode(t);default:return n.transformTo(e,t)}}(c,function(e,t){var r,n=0,s=null,i=0;for(r=0;r{\"use strict\";if(t.base64=!0,t.array=!0,t.string=!0,t.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,t.nodebuffer=\"undefined\"!=typeof Buffer,t.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)t.blob=!1;else{var n=new ArrayBuffer(0);try{t.blob=0===new Blob([n],{type:\"application/zip\"}).size}catch(e){try{var s=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);s.append(n),t.blob=0===s.getBlob(\"application/zip\").size}catch(e){t.blob=!1}}}try{t.nodestream=!!r(749).Readable}catch(e){t.nodestream=!1}},3600:(e,t,r)=>{\"use strict\";for(var n=r(8910),s=r(3790),i=r(2182),o=r(3718),a=new Array(256),c=0;c<256;c++)a[c]=c>=252?6:c>=248?5:c>=240?4:c>=224?3:c>=192?2:1;function u(){o.call(this,\"utf-8 decode\"),this.leftOver=null}function l(){o.call(this,\"utf-8 encode\")}a[254]=a[254]=1,t.utf8encode=function(e){return s.nodebuffer?i.newBufferFrom(e,\"utf-8\"):function(e){var t,r,n,i,o,a=e.length,c=0;for(i=0;i>>6,t[o++]=128|63&r):r<65536?(t[o++]=224|r>>>12,t[o++]=128|r>>>6&63,t[o++]=128|63&r):(t[o++]=240|r>>>18,t[o++]=128|r>>>12&63,t[o++]=128|r>>>6&63,t[o++]=128|63&r);return t}(e)},t.utf8decode=function(e){return s.nodebuffer?n.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,s,i,o=e.length,c=new Array(2*o);for(r=0,t=0;t4)c[r++]=65533,t+=i-1;else{for(s&=2===i?31:3===i?15:7;i>1&&t1?c[r++]=65533:s<65536?c[r++]=s:(s-=65536,c[r++]=55296|s>>10&1023,c[r++]=56320|1023&s)}return c.length!==r&&(c.subarray?c=c.subarray(0,r):c.length=r),n.applyFromCharCode(c)}(e=n.transformTo(s.uint8array?\"uint8array\":\"array\",e))},n.inherits(u,o),u.prototype.processChunk=function(e){var r=n.transformTo(s.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(s.uint8array){var i=r;(r=new Uint8Array(i.length+this.leftOver.length)).set(this.leftOver,0),r.set(i,this.leftOver.length)}else r=this.leftOver.concat(r);this.leftOver=null}var o=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;r>=0&&128==(192&e[r]);)r--;return r<0||0===r?t:r+a[e[r]]>t?r:t}(r),c=r;o!==r.length&&(s.uint8array?(c=r.subarray(0,o),this.leftOver=r.subarray(o,r.length)):(c=r.slice(0,o),this.leftOver=r.slice(o,r.length))),this.push({data:t.utf8decode(c),meta:e.meta})},u.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:t.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},t.Utf8DecodeWorker=u,n.inherits(l,o),l.prototype.processChunk=function(e){this.push({data:t.utf8encode(e.data),meta:e.meta})},t.Utf8EncodeWorker=l},8910:(e,t,r)=>{\"use strict\";var n=r(3790),s=r(8458),i=r(2182),o=r(8565);function a(e){return e}function c(e,t){for(var r=0;r1;)try{return u.stringifyByChunk(e,n,r)}catch(e){r=Math.floor(r/2)}return u.stringifyByChar(e)}function h(e,t){for(var r=0;r{\"use strict\";var n=r(8435),s=r(8910),i=r(1141),o=r(9392),a=r(3790);function c(e){this.files=[],this.loadOptions=e}c.prototype={checkSignature:function(e){if(!this.reader.readAndCheckSignature(e)){this.reader.index-=4;var t=this.reader.readString(4);throw new Error(\"Corrupted zip or bug: unexpected signature (\"+s.pretty(t)+\", expected \"+s.pretty(e)+\")\")}},isSignature:function(e,t){var r=this.reader.index;this.reader.setIndex(e);var n=this.reader.readString(4)===t;return this.reader.setIndex(r),n},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var e=this.reader.readData(this.zipCommentLength),t=a.uint8array?\"uint8array\":\"array\",r=s.transformTo(t,e);this.zipComment=this.loadOptions.decodeFileName(r)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var e,t,r,n=this.zip64EndOfCentralSize-44;01)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var e,t;for(e=0;e0)this.isSignature(t,i.CENTRAL_FILE_HEADER)||(this.reader.zero=n);else if(n<0)throw new Error(\"Corrupted zip: missing \"+Math.abs(n)+\" bytes.\")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},e.exports=c},9392:(e,t,r)=>{\"use strict\";var n=r(8435),s=r(8910),i=r(7326),o=r(6988),a=r(3600),c=r(1678),u=r(3790);function l(e,t){this.options=e,this.loadOptions=t}l.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)\");if(null===(t=function(e){for(var t in c)if(Object.prototype.hasOwnProperty.call(c,t)&&c[t].magic===e)return c[t];return null}(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+s.pretty(this.compressionMethod)+\" unknown (inner file : \"+s.transformTo(\"string\",this.fileName)+\")\");this.decompressed=new i(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0===e&&(this.dosPermissions=63&this.externalFileAttributes),3===e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,s=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4{\"use strict\";var n=r(1285),s=r(5301),i=r(3600),o=r(7326),a=r(3718),c=function(e,t,r){this.name=e,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=t,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions}};c.prototype={internalStream:function(e){var t=null,r=\"string\";try{if(!e)throw new Error(\"No output type specified.\");var s=\"string\"===(r=e.toLowerCase())||\"text\"===r;\"binarystring\"!==r&&\"text\"!==r||(r=\"string\"),t=this._decompressWorker();var o=!this._dataBinary;o&&!s&&(t=t.pipe(new i.Utf8EncodeWorker)),!o&&s&&(t=t.pipe(new i.Utf8DecodeWorker))}catch(e){(t=new a(\"error\")).error(e)}return new n(t,r,\"\")},async:function(e,t){return this.internalStream(e).accumulate(t)},nodeStream:function(e,t){return this.internalStream(e||\"nodebuffer\").toNodejsStream(t)},_compressWorker:function(e,t){if(this._data instanceof o&&this._data.compression.magic===e.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new i.Utf8EncodeWorker)),o.createWorkerFrom(r,e,t)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof a?this._data:new s(this._data)}};for(var u=[\"asText\",\"asBinary\",\"asNodeBuffer\",\"asUint8Array\",\"asArrayBuffer\"],l=function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},h=0;h{\"use strict\";var n=r(5705);function s(){}var i={},o=[\"REJECTED\"],a=[\"FULFILLED\"],c=[\"PENDING\"];function u(e){if(\"function\"!=typeof e)throw new TypeError(\"resolver must be a function\");this.state=c,this.queue=[],this.outcome=void 0,e!==s&&d(this,e)}function l(e,t,r){this.promise=e,\"function\"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),\"function\"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function h(e,t,r){n((function(){var n;try{n=t(r)}catch(t){return i.reject(e,t)}n===e?i.reject(e,new TypeError(\"Cannot resolve promise with itself\")):i.resolve(e,n)}))}function p(e){var t=e&&e.then;if(e&&(\"object\"==typeof e||\"function\"==typeof e)&&\"function\"==typeof t)return function(){t.apply(e,arguments)}}function d(e,t){var r=!1;function n(t){r||(r=!0,i.reject(e,t))}function s(t){r||(r=!0,i.resolve(e,t))}var o=f((function(){t(s,n)}));\"error\"===o.status&&n(o.value)}function f(e,t){var r={};try{r.value=e(t),r.status=\"success\"}catch(e){r.status=\"error\",r.value=e}return r}e.exports=u,u.prototype.finally=function(e){if(\"function\"!=typeof e)return this;var t=this.constructor;return this.then((function(r){return t.resolve(e()).then((function(){return r}))}),(function(r){return t.resolve(e()).then((function(){throw r}))}))},u.prototype.catch=function(e){return this.then(null,e)},u.prototype.then=function(e,t){if(\"function\"!=typeof e&&this.state===a||\"function\"!=typeof t&&this.state===o)return this;var r=new this.constructor(s);return this.state!==c?h(r,this.state===a?e:t,this.outcome):this.queue.push(new l(r,e,t)),r},l.prototype.callFulfilled=function(e){i.resolve(this.promise,e)},l.prototype.otherCallFulfilled=function(e){h(this.promise,this.onFulfilled,e)},l.prototype.callRejected=function(e){i.reject(this.promise,e)},l.prototype.otherCallRejected=function(e){h(this.promise,this.onRejected,e)},i.resolve=function(e,t){var r=f(p,t);if(\"error\"===r.status)return i.reject(e,r.value);var n=r.value;if(n)d(e,n);else{e.state=a,e.outcome=t;for(var s=-1,o=e.queue.length;++s{\"use strict\";var n={};(0,r(4236).assign)(n,r(4555),r(8843),r(1619)),e.exports=n},4555:(e,t,r)=>{\"use strict\";var n=r(405),s=r(4236),i=r(9373),o=r(8898),a=r(2292),c=Object.prototype.toString;function u(e){if(!(this instanceof u))return new u(e);this.options=s.assign({level:-1,method:8,chunkSize:16384,windowBits:15,memLevel:8,strategy:0,to:\"\"},e||{});var t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new a,this.strm.avail_out=0;var r=n.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(0!==r)throw new Error(o[r]);if(t.header&&n.deflateSetHeader(this.strm,t.header),t.dictionary){var l;if(l=\"string\"==typeof t.dictionary?i.string2buf(t.dictionary):\"[object ArrayBuffer]\"===c.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,0!==(r=n.deflateSetDictionary(this.strm,l)))throw new Error(o[r]);this._dict_set=!0}}function l(e,t){var r=new u(t);if(r.push(e,!0),r.err)throw r.msg||o[r.err];return r.result}u.prototype.push=function(e,t){var r,o,a=this.strm,u=this.options.chunkSize;if(this.ended)return!1;o=t===~~t?t:!0===t?4:0,\"string\"==typeof e?a.input=i.string2buf(e):\"[object ArrayBuffer]\"===c.call(e)?a.input=new Uint8Array(e):a.input=e,a.next_in=0,a.avail_in=a.input.length;do{if(0===a.avail_out&&(a.output=new s.Buf8(u),a.next_out=0,a.avail_out=u),1!==(r=n.deflate(a,o))&&0!==r)return this.onEnd(r),this.ended=!0,!1;0!==a.avail_out&&(0!==a.avail_in||4!==o&&2!==o)||(\"string\"===this.options.to?this.onData(i.buf2binstring(s.shrinkBuf(a.output,a.next_out))):this.onData(s.shrinkBuf(a.output,a.next_out)))}while((a.avail_in>0||0===a.avail_out)&&1!==r);return 4===o?(r=n.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,0===r):2!==o||(this.onEnd(0),a.avail_out=0,!0)},u.prototype.onData=function(e){this.chunks.push(e)},u.prototype.onEnd=function(e){0===e&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=s.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},t.Deflate=u,t.deflate=l,t.deflateRaw=function(e,t){return(t=t||{}).raw=!0,l(e,t)},t.gzip=function(e,t){return(t=t||{}).gzip=!0,l(e,t)}},8843:(e,t,r)=>{\"use strict\";var n=r(7948),s=r(4236),i=r(9373),o=r(1619),a=r(8898),c=r(2292),u=r(2401),l=Object.prototype.toString;function h(e){if(!(this instanceof h))return new h(e);this.options=s.assign({chunkSize:16384,windowBits:0,to:\"\"},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new c,this.strm.avail_out=0;var r=n.inflateInit2(this.strm,t.windowBits);if(r!==o.Z_OK)throw new Error(a[r]);if(this.header=new u,n.inflateGetHeader(this.strm,this.header),t.dictionary&&(\"string\"==typeof t.dictionary?t.dictionary=i.string2buf(t.dictionary):\"[object ArrayBuffer]\"===l.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(r=n.inflateSetDictionary(this.strm,t.dictionary))!==o.Z_OK))throw new Error(a[r])}function p(e,t){var r=new h(t);if(r.push(e,!0),r.err)throw r.msg||a[r.err];return r.result}h.prototype.push=function(e,t){var r,a,c,u,h,p=this.strm,d=this.options.chunkSize,f=this.options.dictionary,m=!1;if(this.ended)return!1;a=t===~~t?t:!0===t?o.Z_FINISH:o.Z_NO_FLUSH,\"string\"==typeof e?p.input=i.binstring2buf(e):\"[object ArrayBuffer]\"===l.call(e)?p.input=new Uint8Array(e):p.input=e,p.next_in=0,p.avail_in=p.input.length;do{if(0===p.avail_out&&(p.output=new s.Buf8(d),p.next_out=0,p.avail_out=d),(r=n.inflate(p,o.Z_NO_FLUSH))===o.Z_NEED_DICT&&f&&(r=n.inflateSetDictionary(this.strm,f)),r===o.Z_BUF_ERROR&&!0===m&&(r=o.Z_OK,m=!1),r!==o.Z_STREAM_END&&r!==o.Z_OK)return this.onEnd(r),this.ended=!0,!1;p.next_out&&(0!==p.avail_out&&r!==o.Z_STREAM_END&&(0!==p.avail_in||a!==o.Z_FINISH&&a!==o.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(c=i.utf8border(p.output,p.next_out),u=p.next_out-c,h=i.buf2string(p.output,c),p.next_out=u,p.avail_out=d-u,u&&s.arraySet(p.output,p.output,c,u,0),this.onData(h)):this.onData(s.shrinkBuf(p.output,p.next_out)))),0===p.avail_in&&0===p.avail_out&&(m=!0)}while((p.avail_in>0||0===p.avail_out)&&r!==o.Z_STREAM_END);return r===o.Z_STREAM_END&&(a=o.Z_FINISH),a===o.Z_FINISH?(r=n.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===o.Z_OK):a!==o.Z_SYNC_FLUSH||(this.onEnd(o.Z_OK),p.avail_out=0,!0)},h.prototype.onData=function(e){this.chunks.push(e)},h.prototype.onEnd=function(e){e===o.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=s.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},t.Inflate=h,t.inflate=p,t.inflateRaw=function(e,t){return(t=t||{}).raw=!0,p(e,t)},t.ungzip=p},4236:(e,t)=>{\"use strict\";var r=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var s in r)n(r,s)&&(e[s]=r[s])}}return e},t.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var s={arraySet:function(e,t,r,n,s){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),s);else for(var i=0;i{\"use strict\";var n=r(4236),s=!0,i=!0;try{String.fromCharCode.apply(null,[0])}catch(e){s=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){i=!1}for(var o=new n.Buf8(256),a=0;a<256;a++)o[a]=a>=252?6:a>=248?5:a>=240?4:a>=224?3:a>=192?2:1;function c(e,t){if(t<65534&&(e.subarray&&i||!e.subarray&&s))return String.fromCharCode.apply(null,n.shrinkBuf(e,t));for(var r=\"\",o=0;o>>6,t[o++]=128|63&r):r<65536?(t[o++]=224|r>>>12,t[o++]=128|r>>>6&63,t[o++]=128|63&r):(t[o++]=240|r>>>18,t[o++]=128|r>>>12&63,t[o++]=128|r>>>6&63,t[o++]=128|63&r);return t},t.buf2binstring=function(e){return c(e,e.length)},t.binstring2buf=function(e){for(var t=new n.Buf8(e.length),r=0,s=t.length;r4)u[n++]=65533,r+=i-1;else{for(s&=2===i?31:3===i?15:7;i>1&&r1?u[n++]=65533:s<65536?u[n++]=s:(s-=65536,u[n++]=55296|s>>10&1023,u[n++]=56320|1023&s)}return c(u,n)},t.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;r>=0&&128==(192&e[r]);)r--;return r<0||0===r?t:r+o[e[r]]>t?r:t}},6069:e=>{\"use strict\";e.exports=function(e,t,r,n){for(var s=65535&e|0,i=e>>>16&65535|0,o=0;0!==r;){r-=o=r>2e3?2e3:r;do{i=i+(s=s+t[n++]|0)|0}while(--o);s%=65521,i%=65521}return s|i<<16|0}},1619:e=>{\"use strict\";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},2869:e=>{\"use strict\";var t=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();e.exports=function(e,r,n,s){var i=t,o=s+n;e^=-1;for(var a=s;a>>8^i[255&(e^r[a])];return-1^e}},405:(e,t,r)=>{\"use strict\";var n,s=r(4236),i=r(342),o=r(6069),a=r(2869),c=r(8898),u=-2,l=258,h=262,p=103,d=113,f=666;function m(e,t){return e.msg=c[t],t}function w(e){return(e<<1)-(e>4?9:0)}function g(e){for(var t=e.length;--t>=0;)e[t]=0}function y(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(s.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function b(e,t){i._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,y(e.strm)}function x(e,t){e.pending_buf[e.pending++]=t}function v(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function _(e,t){var r,n,s=e.max_chain_length,i=e.strstart,o=e.prev_length,a=e.nice_match,c=e.strstart>e.w_size-h?e.strstart-(e.w_size-h):0,u=e.window,p=e.w_mask,d=e.prev,f=e.strstart+l,m=u[i+o-1],w=u[i+o];e.prev_length>=e.good_match&&(s>>=2),a>e.lookahead&&(a=e.lookahead);do{if(u[(r=t)+o]===w&&u[r+o-1]===m&&u[r]===u[i]&&u[++r]===u[i+1]){i+=2,r++;do{}while(u[++i]===u[++r]&&u[++i]===u[++r]&&u[++i]===u[++r]&&u[++i]===u[++r]&&u[++i]===u[++r]&&u[++i]===u[++r]&&u[++i]===u[++r]&&u[++i]===u[++r]&&io){if(e.match_start=t,o=n,n>=a)break;m=u[i+o-1],w=u[i+o]}}}while((t=d[t&p])>c&&0!=--s);return o<=e.lookahead?o:e.lookahead}function E(e){var t,r,n,i,c,u,l,p,d,f,m=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=m+(m-h)){s.arraySet(e.window,e.window,m,m,0),e.match_start-=m,e.strstart-=m,e.block_start-=m,t=r=e.hash_size;do{n=e.head[--t],e.head[t]=n>=m?n-m:0}while(--r);t=r=m;do{n=e.prev[--t],e.prev[t]=n>=m?n-m:0}while(--r);i+=m}if(0===e.strm.avail_in)break;if(u=e.strm,l=e.window,p=e.strstart+e.lookahead,d=i,f=void 0,(f=u.avail_in)>d&&(f=d),r=0===f?0:(u.avail_in-=f,s.arraySet(l,u.input,u.next_in,f,p),1===u.state.wrap?u.adler=o(u.adler,l,f,p):2===u.state.wrap&&(u.adler=a(u.adler,l,f,p)),u.next_in+=f,u.total_in+=f,f),e.lookahead+=r,e.lookahead+e.insert>=3)for(c=e.strstart-e.insert,e.ins_h=e.window[c],e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<=3)if(n=i._tr_tally(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){s=e.strstart+e.lookahead-3,n=i._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=s&&(e.ins_h=(e.ins_h<15&&(a=2,n-=16),i<1||i>9||8!==r||n<8||n>15||t<0||t>9||o<0||o>4)return m(e,u);8===n&&(n=9);var c=new I;return e.state=c,c.strm=e,c.wrap=a,c.gzhead=null,c.w_bits=n,c.w_size=1<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(E(e),0===e.lookahead&&0===t)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,b(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-h&&(b(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(b(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(b(e,!1),e.strm.avail_out),1)})),new S(4,4,8,4,T),new S(4,5,16,8,T),new S(4,6,32,32,T),new S(4,4,16,16,A),new S(8,16,32,32,A),new S(8,16,128,128,A),new S(8,32,128,256,A),new S(32,128,258,1024,A),new S(32,258,258,4096,A)],t.deflateInit=function(e,t){return C(e,t,8,15,8,0)},t.deflateInit2=C,t.deflateReset=N,t.deflateResetKeep=R,t.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?u:(e.state.gzhead=t,0):u},t.deflate=function(e,t){var r,s,o,c;if(!e||!e.state||t>5||t<0)return e?m(e,u):u;if(s=e.state,!e.output||!e.input&&0!==e.avail_in||s.status===f&&4!==t)return m(e,0===e.avail_out?-5:u);if(s.strm=e,r=s.last_flush,s.last_flush=t,42===s.status)if(2===s.wrap)e.adler=0,x(s,31),x(s,139),x(s,8),s.gzhead?(x(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(s.gzhead.extra?4:0)+(s.gzhead.name?8:0)+(s.gzhead.comment?16:0)),x(s,255&s.gzhead.time),x(s,s.gzhead.time>>8&255),x(s,s.gzhead.time>>16&255),x(s,s.gzhead.time>>24&255),x(s,9===s.level?2:s.strategy>=2||s.level<2?4:0),x(s,255&s.gzhead.os),s.gzhead.extra&&s.gzhead.extra.length&&(x(s,255&s.gzhead.extra.length),x(s,s.gzhead.extra.length>>8&255)),s.gzhead.hcrc&&(e.adler=a(e.adler,s.pending_buf,s.pending,0)),s.gzindex=0,s.status=69):(x(s,0),x(s,0),x(s,0),x(s,0),x(s,0),x(s,9===s.level?2:s.strategy>=2||s.level<2?4:0),x(s,3),s.status=d);else{var h=8+(s.w_bits-8<<4)<<8;h|=(s.strategy>=2||s.level<2?0:s.level<6?1:6===s.level?2:3)<<6,0!==s.strstart&&(h|=32),h+=31-h%31,s.status=d,v(s,h),0!==s.strstart&&(v(s,e.adler>>>16),v(s,65535&e.adler)),e.adler=1}if(69===s.status)if(s.gzhead.extra){for(o=s.pending;s.gzindex<(65535&s.gzhead.extra.length)&&(s.pending!==s.pending_buf_size||(s.gzhead.hcrc&&s.pending>o&&(e.adler=a(e.adler,s.pending_buf,s.pending-o,o)),y(e),o=s.pending,s.pending!==s.pending_buf_size));)x(s,255&s.gzhead.extra[s.gzindex]),s.gzindex++;s.gzhead.hcrc&&s.pending>o&&(e.adler=a(e.adler,s.pending_buf,s.pending-o,o)),s.gzindex===s.gzhead.extra.length&&(s.gzindex=0,s.status=73)}else s.status=73;if(73===s.status)if(s.gzhead.name){o=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>o&&(e.adler=a(e.adler,s.pending_buf,s.pending-o,o)),y(e),o=s.pending,s.pending===s.pending_buf_size)){c=1;break}c=s.gzindexo&&(e.adler=a(e.adler,s.pending_buf,s.pending-o,o)),0===c&&(s.gzindex=0,s.status=91)}else s.status=91;if(91===s.status)if(s.gzhead.comment){o=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>o&&(e.adler=a(e.adler,s.pending_buf,s.pending-o,o)),y(e),o=s.pending,s.pending===s.pending_buf_size)){c=1;break}c=s.gzindexo&&(e.adler=a(e.adler,s.pending_buf,s.pending-o,o)),0===c&&(s.status=p)}else s.status=p;if(s.status===p&&(s.gzhead.hcrc?(s.pending+2>s.pending_buf_size&&y(e),s.pending+2<=s.pending_buf_size&&(x(s,255&e.adler),x(s,e.adler>>8&255),e.adler=0,s.status=d)):s.status=d),0!==s.pending){if(y(e),0===e.avail_out)return s.last_flush=-1,0}else if(0===e.avail_in&&w(t)<=w(r)&&4!==t)return m(e,-5);if(s.status===f&&0!==e.avail_in)return m(e,-5);if(0!==e.avail_in||0!==s.lookahead||0!==t&&s.status!==f){var _=2===s.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(E(e),0===e.lookahead)){if(0===t)return 1;break}if(e.match_length=0,r=i._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(b(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(b(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(b(e,!1),0===e.strm.avail_out)?1:2}(s,t):3===s.strategy?function(e,t){for(var r,n,s,o,a=e.window;;){if(e.lookahead<=l){if(E(e),e.lookahead<=l&&0===t)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(n=a[s=e.strstart-1])===a[++s]&&n===a[++s]&&n===a[++s]){o=e.strstart+l;do{}while(n===a[++s]&&n===a[++s]&&n===a[++s]&&n===a[++s]&&n===a[++s]&&n===a[++s]&&n===a[++s]&&n===a[++s]&&se.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(r=i._tr_tally(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=i._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(b(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(b(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(b(e,!1),0===e.strm.avail_out)?1:2}(s,t):n[s.level].func(s,t);if(3!==_&&4!==_||(s.status=f),1===_||3===_)return 0===e.avail_out&&(s.last_flush=-1),0;if(2===_&&(1===t?i._tr_align(s):5!==t&&(i._tr_stored_block(s,0,0,!1),3===t&&(g(s.head),0===s.lookahead&&(s.strstart=0,s.block_start=0,s.insert=0))),y(e),0===e.avail_out))return s.last_flush=-1,0}return 4!==t?0:s.wrap<=0?1:(2===s.wrap?(x(s,255&e.adler),x(s,e.adler>>8&255),x(s,e.adler>>16&255),x(s,e.adler>>24&255),x(s,255&e.total_in),x(s,e.total_in>>8&255),x(s,e.total_in>>16&255),x(s,e.total_in>>24&255)):(v(s,e.adler>>>16),v(s,65535&e.adler)),y(e),s.wrap>0&&(s.wrap=-s.wrap),0!==s.pending?0:1)},t.deflateEnd=function(e){var t;return e&&e.state?42!==(t=e.state.status)&&69!==t&&73!==t&&91!==t&&t!==p&&t!==d&&t!==f?m(e,u):(e.state=null,t===d?m(e,-3):0):u},t.deflateSetDictionary=function(e,t){var r,n,i,a,c,l,h,p,d=t.length;if(!e||!e.state)return u;if(2===(a=(r=e.state).wrap)||1===a&&42!==r.status||r.lookahead)return u;for(1===a&&(e.adler=o(e.adler,t,d,0)),r.wrap=0,d>=r.w_size&&(0===a&&(g(r.head),r.strstart=0,r.block_start=0,r.insert=0),p=new s.Buf8(r.w_size),s.arraySet(p,t,d-r.w_size,r.w_size,0),t=p,d=r.w_size),c=e.avail_in,l=e.next_in,h=e.input,e.avail_in=d,e.next_in=0,e.input=t,E(r);r.lookahead>=3;){n=r.strstart,i=r.lookahead-2;do{r.ins_h=(r.ins_h<{\"use strict\";e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},4264:e=>{\"use strict\";e.exports=function(e,t){var r,n,s,i,o,a,c,u,l,h,p,d,f,m,w,g,y,b,x,v,_,E,T,A,S;r=e.state,n=e.next_in,A=e.input,s=n+(e.avail_in-5),i=e.next_out,S=e.output,o=i-(t-e.avail_out),a=i+(e.avail_out-257),c=r.dmax,u=r.wsize,l=r.whave,h=r.wnext,p=r.window,d=r.hold,f=r.bits,m=r.lencode,w=r.distcode,g=(1<>>=x=b>>>24,f-=x,0==(x=b>>>16&255))S[i++]=65535&b;else{if(!(16&x)){if(0==(64&x)){b=m[(65535&b)+(d&(1<>>=x,f-=x),f<15&&(d+=A[n++]<>>=x=b>>>24,f-=x,!(16&(x=b>>>16&255))){if(0==(64&x)){b=w[(65535&b)+(d&(1<c){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(d>>>=x,f-=x,_>(x=i-o)){if((x=_-x)>l&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(E=0,T=p,0===h){if(E+=u-x,x2;)S[i++]=T[E++],S[i++]=T[E++],S[i++]=T[E++],v-=3;v&&(S[i++]=T[E++],v>1&&(S[i++]=T[E++]))}else{E=i-_;do{S[i++]=S[E++],S[i++]=S[E++],S[i++]=S[E++],v-=3}while(v>2);v&&(S[i++]=S[E++],v>1&&(S[i++]=S[E++]))}break}}break}}while(n>3,d&=(1<<(f-=v<<3))-1,e.next_in=n,e.next_out=i,e.avail_in=n{\"use strict\";var n=r(4236),s=r(6069),i=r(2869),o=r(4264),a=r(9241),c=-2,u=12,l=30;function h(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function p(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function d(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new n.Buf32(852),t.distcode=t.distdyn=new n.Buf32(592),t.sane=1,t.back=-1,0):c}function f(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,d(e)):c}function m(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?c:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,f(e))):c}function w(e,t){var r,n;return e?(n=new p,e.state=n,n.window=null,0!==(r=m(e,t))&&(e.state=null),r):c}var g,y,b=!0;function x(e){if(b){var t;for(g=new n.Buf32(512),y=new n.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(a(1,e.lens,0,288,g,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;a(2,e.lens,0,32,y,0,e.work,{bits:5}),b=!1}e.lencode=g,e.lenbits=9,e.distcode=y,e.distbits=5}function v(e,t,r,s){var i,o=e.state;return null===o.window&&(o.wsize=1<=o.wsize?(n.arraySet(o.window,t,r-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((i=o.wsize-o.wnext)>s&&(i=s),n.arraySet(o.window,t,r-s,i,o.wnext),(s-=i)?(n.arraySet(o.window,t,r-s,s,0),o.wnext=s,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whave>>8&255,r.check=i(r.check,M,2,0),y=0,b=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&y)<<8)+(y>>8))%31){e.msg=\"incorrect header check\",r.mode=l;break}if(8!=(15&y)){e.msg=\"unknown compression method\",r.mode=l;break}if(b-=4,L=8+(15&(y>>>=4)),0===r.wbits)r.wbits=L;else if(L>r.wbits){e.msg=\"invalid window size\",r.mode=l;break}r.dmax=1<>8&1),512&r.flags&&(M[0]=255&y,M[1]=y>>>8&255,r.check=i(r.check,M,2,0)),y=0,b=0,r.mode=3;case 3:for(;b<32;){if(0===w)break e;w--,y+=p[f++]<>>8&255,M[2]=y>>>16&255,M[3]=y>>>24&255,r.check=i(r.check,M,4,0)),y=0,b=0,r.mode=4;case 4:for(;b<16;){if(0===w)break e;w--,y+=p[f++]<>8),512&r.flags&&(M[0]=255&y,M[1]=y>>>8&255,r.check=i(r.check,M,2,0)),y=0,b=0,r.mode=5;case 5:if(1024&r.flags){for(;b<16;){if(0===w)break e;w--,y+=p[f++]<>>8&255,r.check=i(r.check,M,2,0)),y=0,b=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&((T=r.length)>w&&(T=w),T&&(r.head&&(L=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),n.arraySet(r.head.extra,p,f,T,L)),512&r.flags&&(r.check=i(r.check,p,T,f)),w-=T,f+=T,r.length-=T),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===w)break e;T=0;do{L=p[f+T++],r.head&&L&&r.length<65536&&(r.head.name+=String.fromCharCode(L))}while(L&&T>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=u;break;case 10:for(;b<32;){if(0===w)break e;w--,y+=p[f++]<>>=7&b,b-=7&b,r.mode=27;break}for(;b<3;){if(0===w)break e;w--,y+=p[f++]<>>=1)){case 0:r.mode=14;break;case 1:if(x(r),r.mode=20,6===t){y>>>=2,b-=2;break e}break;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=l}y>>>=2,b-=2;break;case 14:for(y>>>=7&b,b-=7&b;b<32;){if(0===w)break e;w--,y+=p[f++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=l;break}if(r.length=65535&y,y=0,b=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(T=r.length){if(T>w&&(T=w),T>g&&(T=g),0===T)break e;n.arraySet(d,p,f,T,m),w-=T,f+=T,g-=T,m+=T,r.length-=T;break}r.mode=u;break;case 17:for(;b<14;){if(0===w)break e;w--,y+=p[f++]<>>=5,b-=5,r.ndist=1+(31&y),y>>>=5,b-=5,r.ncode=4+(15&y),y>>>=4,b-=4,r.nlen>286||r.ndist>30){e.msg=\"too many length or distance symbols\",r.mode=l;break}r.have=0,r.mode=18;case 18:for(;r.have>>=3,b-=3}for(;r.have<19;)r.lens[U[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,P={bits:r.lenbits},D=a(0,r.lens,0,19,r.lencode,0,r.work,P),r.lenbits=P.bits,D){e.msg=\"invalid code lengths set\",r.mode=l;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,N=65535&B,!((I=B>>>24)<=b);){if(0===w)break e;w--,y+=p[f++]<>>=I,b-=I,r.lens[r.have++]=N;else{if(16===N){for(F=I+2;b>>=I,b-=I,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=l;break}L=r.lens[r.have-1],T=3+(3&y),y>>>=2,b-=2}else if(17===N){for(F=I+3;b>>=I)),y>>>=3,b-=3}else{for(F=I+7;b>>=I)),y>>>=7,b-=7}if(r.have+T>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=l;break}for(;T--;)r.lens[r.have++]=L}}if(r.mode===l)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=l;break}if(r.lenbits=9,P={bits:r.lenbits},D=a(1,r.lens,0,r.nlen,r.lencode,0,r.work,P),r.lenbits=P.bits,D){e.msg=\"invalid literal/lengths set\",r.mode=l;break}if(r.distbits=6,r.distcode=r.distdyn,P={bits:r.distbits},D=a(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,P),r.distbits=P.bits,D){e.msg=\"invalid distances set\",r.mode=l;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(w>=6&&g>=258){e.next_out=m,e.avail_out=g,e.next_in=f,e.avail_in=w,r.hold=y,r.bits=b,o(e,E),m=e.next_out,d=e.output,g=e.avail_out,f=e.next_in,p=e.input,w=e.avail_in,y=r.hold,b=r.bits,r.mode===u&&(r.back=-1);break}for(r.back=0;R=(B=r.lencode[y&(1<>>16&255,N=65535&B,!((I=B>>>24)<=b);){if(0===w)break e;w--,y+=p[f++]<>C)])>>>16&255,N=65535&B,!(C+(I=B>>>24)<=b);){if(0===w)break e;w--,y+=p[f++]<>>=C,b-=C,r.back+=C}if(y>>>=I,b-=I,r.back+=I,r.length=N,0===R){r.mode=26;break}if(32&R){r.back=-1,r.mode=u;break}if(64&R){e.msg=\"invalid literal/length code\",r.mode=l;break}r.extra=15&R,r.mode=22;case 22:if(r.extra){for(F=r.extra;b>>=r.extra,b-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;R=(B=r.distcode[y&(1<>>16&255,N=65535&B,!((I=B>>>24)<=b);){if(0===w)break e;w--,y+=p[f++]<>C)])>>>16&255,N=65535&B,!(C+(I=B>>>24)<=b);){if(0===w)break e;w--,y+=p[f++]<>>=C,b-=C,r.back+=C}if(y>>>=I,b-=I,r.back+=I,64&R){e.msg=\"invalid distance code\",r.mode=l;break}r.offset=N,r.extra=15&R,r.mode=24;case 24:if(r.extra){for(F=r.extra;b>>=r.extra,b-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=l;break}r.mode=25;case 25:if(0===g)break e;if(T=E-g,r.offset>T){if((T=r.offset-T)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=l;break}T>r.wnext?(T-=r.wnext,A=r.wsize-T):A=r.wnext-T,T>r.length&&(T=r.length),S=r.window}else S=d,A=m-r.offset,T=r.length;T>g&&(T=g),g-=T,r.length-=T;do{d[m++]=S[A++]}while(--T);0===r.length&&(r.mode=21);break;case 26:if(0===g)break e;d[m++]=r.length,g--,r.mode=21;break;case 27:if(r.wrap){for(;b<32;){if(0===w)break e;w--,y|=p[f++]<{\"use strict\";var n=r(4236),s=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],i=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],a=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(e,t,r,c,u,l,h,p){var d,f,m,w,g,y,b,x,v,_=p.bits,E=0,T=0,A=0,S=0,I=0,R=0,N=0,C=0,O=0,k=0,L=null,D=0,P=new n.Buf16(16),F=new n.Buf16(16),B=null,M=0;for(E=0;E<=15;E++)P[E]=0;for(T=0;T=1&&0===P[S];S--);if(I>S&&(I=S),0===S)return u[l++]=20971520,u[l++]=20971520,p.bits=1,0;for(A=1;A0&&(0===e||1!==S))return-1;for(F[1]=0,E=1;E<15;E++)F[E+1]=F[E]+P[E];for(T=0;T852||2===e&&O>592)return 1;for(;;){b=E-N,h[T]y?(x=B[M+h[T]],v=L[D+h[T]]):(x=96,v=0),d=1<>N)+(f-=d)]=b<<24|x<<16|v|0}while(0!==f);for(d=1<>=1;if(0!==d?(k&=d-1,k+=d):k=0,T++,0==--P[E]){if(E===S)break;E=t[r+h[T]]}if(E>I&&(k&w)!==m){for(0===N&&(N=I),g+=A,C=1<<(R=E-N);R+N852||2===e&&O>592)return 1;u[m=k&w]=I<<24|R<<16|g-l|0}}return 0!==k&&(u[g+k]=E-N<<24|64<<16|0),p.bits=I,0}},8898:e=>{\"use strict\";e.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},342:(e,t,r)=>{\"use strict\";var n=r(4236);function s(e){for(var t=e.length;--t>=0;)e[t]=0}var i=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],o=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],c=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],u=new Array(576);s(u);var l=new Array(60);s(l);var h=new Array(512);s(h);var p=new Array(256);s(p);var d=new Array(29);s(d);var f,m,w,g=new Array(30);function y(e,t,r,n,s){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=s,this.has_stree=e&&e.length}function b(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function x(e){return e<256?h[e]:h[256+(e>>>7)]}function v(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function _(e,t,r){e.bi_valid>16-r?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=r-16):(e.bi_buf|=t<>>=1,r<<=1}while(--t>0);return r>>>1}function A(e,t,r){var n,s,i=new Array(16),o=0;for(n=1;n<=15;n++)i[n]=o=o+r[n-1]<<1;for(s=0;s<=t;s++){var a=e[2*s+1];0!==a&&(e[2*s]=T(i[a]++,a))}}function S(e){var t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function I(e){e.bi_valid>8?v(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function R(e,t,r,n){var s=2*t,i=2*r;return e[s]>1;r>=1;r--)N(e,i,r);s=c;do{r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],N(e,i,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,i[2*s]=i[2*r]+i[2*n],e.depth[s]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,i[2*r+1]=i[2*n+1]=s,e.heap[1]=s++,N(e,i,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,s,i,o,a,c=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,h=t.stat_desc.has_stree,p=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,f=t.stat_desc.max_length,m=0;for(i=0;i<=15;i++)e.bl_count[i]=0;for(c[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<573;r++)(i=c[2*c[2*(n=e.heap[r])+1]+1]+1)>f&&(i=f,m++),c[2*n+1]=i,n>u||(e.bl_count[i]++,o=0,n>=d&&(o=p[n-d]),a=c[2*n],e.opt_len+=a*(i+o),h&&(e.static_len+=a*(l[2*n+1]+o)));if(0!==m){do{for(i=f-1;0===e.bl_count[i];)i--;e.bl_count[i]--,e.bl_count[i+1]+=2,e.bl_count[f]--,m-=2}while(m>0);for(i=f;0!==i;i--)for(n=e.bl_count[i];0!==n;)(s=e.heap[--r])>u||(c[2*s+1]!==i&&(e.opt_len+=(i-c[2*s+1])*c[2*s],c[2*s+1]=i),n--)}}(e,t),A(i,u,e.bl_count)}function k(e,t,r){var n,s,i=-1,o=t[1],a=0,c=7,u=4;for(0===o&&(c=138,u=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)s=o,o=t[2*(n+1)+1],++a>=7;n<30;n++)for(g[n]=s<<7,e=0;e<1<0?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),O(e,e.l_desc),O(e,e.d_desc),o=function(e){var t;for(k(e,e.dyn_ltree,e.l_desc.max_code),k(e,e.dyn_dtree,e.d_desc.max_code),O(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*c[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),s=e.opt_len+3+7>>>3,(i=e.static_len+3+7>>>3)<=s&&(s=i)):s=i=r+5,r+4<=s&&-1!==t?P(e,t,r,n):4===e.strategy||i===s?(_(e,2+(n?1:0),3),C(e,u,l)):(_(e,4+(n?1:0),3),function(e,t,r,n){var s;for(_(e,t-257,5),_(e,r-1,5),_(e,n-4,4),s=0;s>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(p[r]+256+1)]++,e.dyn_dtree[2*x(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){_(e,2,3),E(e,256,u),function(e){16===e.bi_valid?(v(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},2292:e=>{\"use strict\";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},4155:e=>{var t,r,n=e.exports={};function s(){throw new Error(\"setTimeout has not been defined\")}function i(){throw new Error(\"clearTimeout has not been defined\")}function o(e){if(t===setTimeout)return setTimeout(e,0);if((t===s||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t=\"function\"==typeof setTimeout?setTimeout:s}catch(e){t=s}try{r=\"function\"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}}();var a,c=[],u=!1,l=-1;function h(){u&&a&&(u=!1,a.length?c=a.concat(c):l=-1,c.length&&p())}function p(){if(!u){var e=o(h);u=!0;for(var t=c.length;t;){for(a=c,c=[];++l1)for(var r=1;r{var n=r(8764),s=n.Buffer;function i(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return s(e,t,r)}s.from&&s.alloc&&s.allocUnsafe&&s.allocUnsafeSlow?e.exports=n:(i(n,t),t.Buffer=o),i(s,o),o.from=function(e,t,r){if(\"number\"==typeof e)throw new TypeError(\"Argument must not be a number\");return s(e,t,r)},o.alloc=function(e,t,r){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");var n=s(e);return void 0!==t?\"string\"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n},o.allocUnsafe=function(e){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");return s(e)},o.allocUnsafeSlow=function(e){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");return n.SlowBuffer(e)}},6099:(e,t,r)=>{!function(e){e.parser=function(e,t){return new s(e,t)},e.SAXParser=s,e.SAXStream=o,e.createStream=function(e,t){return new o(e,t)},e.MAX_BUFFER_LENGTH=65536;var t,n=[\"comment\",\"sgmlDecl\",\"textNode\",\"tagName\",\"doctype\",\"procInstName\",\"procInstBody\",\"entity\",\"attribName\",\"attribValue\",\"cdata\",\"script\"];function s(t,r){if(!(this instanceof s))return new s(t,r);var i=this;!function(e){for(var t=0,r=n.length;t\"===i?(A(r,\"onsgmldeclaration\",r.sgmlDecl),r.sgmlDecl=\"\",r.state=_.TEXT):m(i)?(r.state=_.SGML_DECL_QUOTED,r.sgmlDecl+=i):r.sgmlDecl+=i;continue;case _.SGML_DECL_QUOTED:i===r.q&&(r.state=_.SGML_DECL,r.q=\"\"),r.sgmlDecl+=i;continue;case _.DOCTYPE:\">\"===i?(r.state=_.TEXT,A(r,\"ondoctype\",r.doctype),r.doctype=!0):(r.doctype+=i,\"[\"===i?r.state=_.DOCTYPE_DTD:m(i)&&(r.state=_.DOCTYPE_QUOTED,r.q=i));continue;case _.DOCTYPE_QUOTED:r.doctype+=i,i===r.q&&(r.q=\"\",r.state=_.DOCTYPE);continue;case _.DOCTYPE_DTD:r.doctype+=i,\"]\"===i?r.state=_.DOCTYPE:m(i)&&(r.state=_.DOCTYPE_DTD_QUOTED,r.q=i);continue;case _.DOCTYPE_DTD_QUOTED:r.doctype+=i,i===r.q&&(r.state=_.DOCTYPE_DTD,r.q=\"\");continue;case _.COMMENT:\"-\"===i?r.state=_.COMMENT_ENDING:r.comment+=i;continue;case _.COMMENT_ENDING:\"-\"===i?(r.state=_.COMMENT_ENDED,r.comment=I(r.opt,r.comment),r.comment&&A(r,\"oncomment\",r.comment),r.comment=\"\"):(r.comment+=\"-\"+i,r.state=_.COMMENT);continue;case _.COMMENT_ENDED:\">\"!==i?(C(r,\"Malformed comment\"),r.comment+=\"--\"+i,r.state=_.COMMENT):r.state=_.TEXT;continue;case _.CDATA:\"]\"===i?r.state=_.CDATA_ENDING:r.cdata+=i;continue;case _.CDATA_ENDING:\"]\"===i?r.state=_.CDATA_ENDING_2:(r.cdata+=\"]\"+i,r.state=_.CDATA);continue;case _.CDATA_ENDING_2:\">\"===i?(r.cdata&&A(r,\"oncdata\",r.cdata),A(r,\"onclosecdata\"),r.cdata=\"\",r.state=_.TEXT):\"]\"===i?r.cdata+=\"]\":(r.cdata+=\"]]\"+i,r.state=_.CDATA);continue;case _.PROC_INST:\"?\"===i?r.state=_.PROC_INST_ENDING:f(i)?r.state=_.PROC_INST_BODY:r.procInstName+=i;continue;case _.PROC_INST_BODY:if(!r.procInstBody&&f(i))continue;\"?\"===i?r.state=_.PROC_INST_ENDING:r.procInstBody+=i;continue;case _.PROC_INST_ENDING:\">\"===i?(A(r,\"onprocessinginstruction\",{name:r.procInstName,body:r.procInstBody}),r.procInstName=r.procInstBody=\"\",r.state=_.TEXT):(r.procInstBody+=\"?\"+i,r.state=_.PROC_INST_BODY);continue;case _.OPEN_TAG:g(h,i)?r.tagName+=i:(O(r),\">\"===i?D(r):\"/\"===i?r.state=_.OPEN_TAG_SLASH:(f(i)||C(r,\"Invalid character in tag name\"),r.state=_.ATTRIB));continue;case _.OPEN_TAG_SLASH:\">\"===i?(D(r,!0),P(r)):(C(r,\"Forward-slash in opening tag not followed by >\"),r.state=_.ATTRIB);continue;case _.ATTRIB:if(f(i))continue;\">\"===i?D(r):\"/\"===i?r.state=_.OPEN_TAG_SLASH:g(l,i)?(r.attribName=i,r.attribValue=\"\",r.state=_.ATTRIB_NAME):C(r,\"Invalid attribute name\");continue;case _.ATTRIB_NAME:\"=\"===i?r.state=_.ATTRIB_VALUE:\">\"===i?(C(r,\"Attribute without value\"),r.attribValue=r.attribName,L(r),D(r)):f(i)?r.state=_.ATTRIB_NAME_SAW_WHITE:g(h,i)?r.attribName+=i:C(r,\"Invalid attribute name\");continue;case _.ATTRIB_NAME_SAW_WHITE:if(\"=\"===i)r.state=_.ATTRIB_VALUE;else{if(f(i))continue;C(r,\"Attribute without value\"),r.tag.attributes[r.attribName]=\"\",r.attribValue=\"\",A(r,\"onattribute\",{name:r.attribName,value:\"\"}),r.attribName=\"\",\">\"===i?D(r):g(l,i)?(r.attribName=i,r.state=_.ATTRIB_NAME):(C(r,\"Invalid attribute name\"),r.state=_.ATTRIB)}continue;case _.ATTRIB_VALUE:if(f(i))continue;m(i)?(r.q=i,r.state=_.ATTRIB_VALUE_QUOTED):(C(r,\"Unquoted attribute value\"),r.state=_.ATTRIB_VALUE_UNQUOTED,r.attribValue=i);continue;case _.ATTRIB_VALUE_QUOTED:if(i!==r.q){\"&\"===i?r.state=_.ATTRIB_VALUE_ENTITY_Q:r.attribValue+=i;continue}L(r),r.q=\"\",r.state=_.ATTRIB_VALUE_CLOSED;continue;case _.ATTRIB_VALUE_CLOSED:f(i)?r.state=_.ATTRIB:\">\"===i?D(r):\"/\"===i?r.state=_.OPEN_TAG_SLASH:g(l,i)?(C(r,\"No whitespace between attributes\"),r.attribName=i,r.attribValue=\"\",r.state=_.ATTRIB_NAME):C(r,\"Invalid attribute name\");continue;case _.ATTRIB_VALUE_UNQUOTED:if(!w(i)){\"&\"===i?r.state=_.ATTRIB_VALUE_ENTITY_U:r.attribValue+=i;continue}L(r),\">\"===i?D(r):r.state=_.ATTRIB;continue;case _.CLOSE_TAG:if(r.tagName)\">\"===i?P(r):g(h,i)?r.tagName+=i:r.script?(r.script+=\"\"===i?P(r):C(r,\"Invalid characters in closing tag\");continue;case _.TEXT_ENTITY:case _.ATTRIB_VALUE_ENTITY_Q:case _.ATTRIB_VALUE_ENTITY_U:var c,u;switch(r.state){case _.TEXT_ENTITY:c=_.TEXT,u=\"textNode\";break;case _.ATTRIB_VALUE_ENTITY_Q:c=_.ATTRIB_VALUE_QUOTED,u=\"attribValue\";break;case _.ATTRIB_VALUE_ENTITY_U:c=_.ATTRIB_VALUE_UNQUOTED,u=\"attribValue\"}\";\"===i?(r[u]+=F(r),r.entity=\"\",r.state=c):g(r.entity.length?d:p,i)?r.entity+=i:(C(r,\"Invalid character in entity name\"),r[u]+=\"&\"+r.entity+i,r.entity=\"\",r.state=c);continue;default:throw new Error(r,\"Unknown state: \"+r.state)}return r.position>=r.bufferCheckPosition&&function(t){for(var r=Math.max(e.MAX_BUFFER_LENGTH,10),s=0,i=0,o=n.length;ir)switch(n[i]){case\"textNode\":S(t);break;case\"cdata\":A(t,\"oncdata\",t.cdata),t.cdata=\"\";break;case\"script\":A(t,\"onscript\",t.script),t.script=\"\";break;default:R(t,\"Max buffer length exceeded: \"+n[i])}s=Math.max(s,a)}var c=e.MAX_BUFFER_LENGTH-s;t.bufferCheckPosition=c+t.position}(r),r},resume:function(){return this.error=null,this},close:function(){return this.write(null)},flush:function(){var e;S(e=this),\"\"!==e.cdata&&(A(e,\"oncdata\",e.cdata),e.cdata=\"\"),\"\"!==e.script&&(A(e,\"onscript\",e.script),e.script=\"\")}};try{t=r(2830).Stream}catch(e){t=function(){}}var i=e.EVENTS.filter((function(e){return\"error\"!==e&&\"end\"!==e}));function o(e,r){if(!(this instanceof o))return new o(e,r);t.apply(this),this._parser=new s(e,r),this.writable=!0,this.readable=!0;var n=this;this._parser.onend=function(){n.emit(\"end\")},this._parser.onerror=function(e){n.emit(\"error\",e),n._parser.error=null},this._decoder=null,i.forEach((function(e){Object.defineProperty(n,\"on\"+e,{get:function(){return n._parser[\"on\"+e]},set:function(t){if(!t)return n.removeAllListeners(e),n._parser[\"on\"+e]=t,t;n.on(e,t)},enumerable:!0,configurable:!1})}))}o.prototype=Object.create(t.prototype,{constructor:{value:o}}),o.prototype.write=function(e){if(\"function\"==typeof Buffer&&\"function\"==typeof Buffer.isBuffer&&Buffer.isBuffer(e)){if(!this._decoder){var t=r(2553).s;this._decoder=new t(\"utf8\")}e=this._decoder.write(e)}return this._parser.write(e.toString()),this.emit(\"data\",e),!0},o.prototype.end=function(e){return e&&e.length&&this.write(e),this._parser.end(),!0},o.prototype.on=function(e,r){var n=this;return n._parser[\"on\"+e]||-1===i.indexOf(e)||(n._parser[\"on\"+e]=function(){var t=1===arguments.length?[arguments[0]]:Array.apply(null,arguments);t.splice(0,0,e),n.emit.apply(n,t)}),t.prototype.on.call(n,e,r)};var a=\"http://www.w3.org/XML/1998/namespace\",c=\"http://www.w3.org/2000/xmlns/\",u={xml:a,xmlns:c},l=/[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/,h=/[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/,p=/[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/,d=/[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;function f(e){return\" \"===e||\"\\n\"===e||\"\\r\"===e||\"\\t\"===e}function m(e){return'\"'===e||\"'\"===e}function w(e){return\">\"===e||f(e)}function g(e,t){return e.test(t)}function y(e,t){return!g(e,t)}var b,x,v,_=0;for(var E in e.STATE={BEGIN:_++,BEGIN_WHITESPACE:_++,TEXT:_++,TEXT_ENTITY:_++,OPEN_WAKA:_++,SGML_DECL:_++,SGML_DECL_QUOTED:_++,DOCTYPE:_++,DOCTYPE_QUOTED:_++,DOCTYPE_DTD:_++,DOCTYPE_DTD_QUOTED:_++,COMMENT_STARTING:_++,COMMENT:_++,COMMENT_ENDING:_++,COMMENT_ENDED:_++,CDATA:_++,CDATA_ENDING:_++,CDATA_ENDING_2:_++,PROC_INST:_++,PROC_INST_BODY:_++,PROC_INST_ENDING:_++,OPEN_TAG:_++,OPEN_TAG_SLASH:_++,ATTRIB:_++,ATTRIB_NAME:_++,ATTRIB_NAME_SAW_WHITE:_++,ATTRIB_VALUE:_++,ATTRIB_VALUE_QUOTED:_++,ATTRIB_VALUE_CLOSED:_++,ATTRIB_VALUE_UNQUOTED:_++,ATTRIB_VALUE_ENTITY_Q:_++,ATTRIB_VALUE_ENTITY_U:_++,CLOSE_TAG:_++,CLOSE_TAG_SAW_WHITE:_++,SCRIPT:_++,SCRIPT_ENDING:_++},e.XML_ENTITIES={amp:\"&\",gt:\">\",lt:\"<\",quot:'\"',apos:\"'\"},e.ENTITIES={amp:\"&\",gt:\">\",lt:\"<\",quot:'\"',apos:\"'\",AElig:198,Aacute:193,Acirc:194,Agrave:192,Aring:197,Atilde:195,Auml:196,Ccedil:199,ETH:208,Eacute:201,Ecirc:202,Egrave:200,Euml:203,Iacute:205,Icirc:206,Igrave:204,Iuml:207,Ntilde:209,Oacute:211,Ocirc:212,Ograve:210,Oslash:216,Otilde:213,Ouml:214,THORN:222,Uacute:218,Ucirc:219,Ugrave:217,Uuml:220,Yacute:221,aacute:225,acirc:226,aelig:230,agrave:224,aring:229,atilde:227,auml:228,ccedil:231,eacute:233,ecirc:234,egrave:232,eth:240,euml:235,iacute:237,icirc:238,igrave:236,iuml:239,ntilde:241,oacute:243,ocirc:244,ograve:242,oslash:248,otilde:245,ouml:246,szlig:223,thorn:254,uacute:250,ucirc:251,ugrave:249,uuml:252,yacute:253,yuml:255,copy:169,reg:174,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,ordf:170,laquo:171,not:172,shy:173,macr:175,deg:176,plusmn:177,sup1:185,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,times:215,divide:247,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},Object.keys(e.ENTITIES).forEach((function(t){var r=e.ENTITIES[t],n=\"number\"==typeof r?String.fromCharCode(r):r;e.ENTITIES[t]=n})),e.STATE)e.STATE[e.STATE[E]]=E;function T(e,t,r){e[t]&&e[t](r)}function A(e,t,r){e.textNode&&S(e),T(e,t,r)}function S(e){e.textNode=I(e.opt,e.textNode),e.textNode&&T(e,\"ontext\",e.textNode),e.textNode=\"\"}function I(e,t){return e.trim&&(t=t.trim()),e.normalize&&(t=t.replace(/\\s+/g,\" \")),t}function R(e,t){return S(e),e.trackPosition&&(t+=\"\\nLine: \"+e.line+\"\\nColumn: \"+e.column+\"\\nChar: \"+e.c),t=new Error(t),e.error=t,T(e,\"onerror\",t),e}function N(e){return e.sawRoot&&!e.closedRoot&&C(e,\"Unclosed root tag\"),e.state!==_.BEGIN&&e.state!==_.BEGIN_WHITESPACE&&e.state!==_.TEXT&&R(e,\"Unexpected end\"),S(e),e.c=\"\",e.closed=!0,T(e,\"onend\"),s.call(e,e.strict,e.opt),e}function C(e,t){if(\"object\"!=typeof e||!(e instanceof s))throw new Error(\"bad call to strictFail\");e.strict&&R(e,t)}function O(e){e.strict||(e.tagName=e.tagName[e.looseCase]());var t=e.tags[e.tags.length-1]||e,r=e.tag={name:e.tagName,attributes:{}};e.opt.xmlns&&(r.ns=t.ns),e.attribList.length=0,A(e,\"onopentagstart\",r)}function k(e,t){var r=e.indexOf(\":\")<0?[\"\",e]:e.split(\":\"),n=r[0],s=r[1];return t&&\"xmlns\"===e&&(n=\"xmlns\",s=\"\"),{prefix:n,local:s}}function L(e){if(e.strict||(e.attribName=e.attribName[e.looseCase]()),-1!==e.attribList.indexOf(e.attribName)||e.tag.attributes.hasOwnProperty(e.attribName))e.attribName=e.attribValue=\"\";else{if(e.opt.xmlns){var t=k(e.attribName,!0),r=t.prefix,n=t.local;if(\"xmlns\"===r)if(\"xml\"===n&&e.attribValue!==a)C(e,\"xml: prefix must be bound to \"+a+\"\\nActual: \"+e.attribValue);else if(\"xmlns\"===n&&e.attribValue!==c)C(e,\"xmlns: prefix must be bound to \"+c+\"\\nActual: \"+e.attribValue);else{var s=e.tag,i=e.tags[e.tags.length-1]||e;s.ns===i.ns&&(s.ns=Object.create(i.ns)),s.ns[n]=e.attribValue}e.attribList.push([e.attribName,e.attribValue])}else e.tag.attributes[e.attribName]=e.attribValue,A(e,\"onattribute\",{name:e.attribName,value:e.attribValue});e.attribName=e.attribValue=\"\"}}function D(e,t){if(e.opt.xmlns){var r=e.tag,n=k(e.tagName);r.prefix=n.prefix,r.local=n.local,r.uri=r.ns[n.prefix]||\"\",r.prefix&&!r.uri&&(C(e,\"Unbound namespace prefix: \"+JSON.stringify(e.tagName)),r.uri=n.prefix);var s=e.tags[e.tags.length-1]||e;r.ns&&s.ns!==r.ns&&Object.keys(r.ns).forEach((function(t){A(e,\"onopennamespace\",{prefix:t,uri:r.ns[t]})}));for(var i=0,o=e.attribList.length;i\",void(e.state=_.TEXT);if(e.script){if(\"script\"!==e.tagName)return e.script+=\"\",e.tagName=\"\",void(e.state=_.SCRIPT);A(e,\"onscript\",e.script),e.script=\"\"}var t=e.tags.length,r=e.tagName;e.strict||(r=r[e.looseCase]());for(var n=r;t--&&e.tags[t].name!==n;)C(e,\"Unexpected close tag\");if(t<0)return C(e,\"Unmatched closing tag: \"+e.tagName),e.textNode+=\"\",void(e.state=_.TEXT);e.tagName=r;for(var s=e.tags.length;s-- >t;){var i=e.tag=e.tags.pop();e.tagName=e.tag.name,A(e,\"onclosetag\",e.tagName);var o={};for(var a in i.ns)o[a]=i.ns[a];var c=e.tags[e.tags.length-1]||e;e.opt.xmlns&&i.ns!==c.ns&&Object.keys(i.ns).forEach((function(t){var r=i.ns[t];A(e,\"onclosenamespace\",{prefix:t,uri:r})}))}0===t&&(e.closedRoot=!0),e.tagName=e.attribValue=e.attribName=\"\",e.attribList.length=0,e.state=_.TEXT}function F(e){var t,r=e.entity,n=r.toLowerCase(),s=\"\";return e.ENTITIES[r]?e.ENTITIES[r]:e.ENTITIES[n]?e.ENTITIES[n]:(\"#\"===(r=n).charAt(0)&&(\"x\"===r.charAt(1)?(r=r.slice(2),s=(t=parseInt(r,16)).toString(16)):(r=r.slice(1),s=(t=parseInt(r,10)).toString(10))),r=r.replace(/^0+/,\"\"),isNaN(t)||s.toLowerCase()!==r?(C(e,\"Invalid character entity\"),\"&\"+e.entity+\";\"):String.fromCodePoint(t))}function B(e,t){\"<\"===t?(e.state=_.OPEN_WAKA,e.startTagPosition=e.position):f(t)||(C(e,\"Non-whitespace before first tag.\"),e.textNode=t,e.state=_.TEXT)}function M(e,t){var r=\"\";return t1114111||x(a)!==a)throw RangeError(\"Invalid code point: \"+a);a<=65535?n.push(a):(e=55296+((a-=65536)>>10),t=a%1024+56320,n.push(e,t)),(s+1===i||n.length>r)&&(o+=b.apply(null,n),n.length=0)}return o},Object.defineProperty?Object.defineProperty(String,\"fromCodePoint\",{value:v,configurable:!0,writable:!0}):String.fromCodePoint=v)}(t)},4889:function(e,t,r){var n=r(4155);!function(e,t){\"use strict\";if(!e.setImmediate){var r,s,i,o,a,c=1,u={},l=!1,h=e.document,p=Object.getPrototypeOf&&Object.getPrototypeOf(e);p=p&&p.setTimeout?p:e,\"[object process]\"==={}.toString.call(e.process)?r=function(e){n.nextTick((function(){f(e)}))}:function(){if(e.postMessage&&!e.importScripts){var t=!0,r=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage(\"\",\"*\"),e.onmessage=r,t}}()?(o=\"setImmediate$\"+Math.random()+\"$\",a=function(t){t.source===e&&\"string\"==typeof t.data&&0===t.data.indexOf(o)&&f(+t.data.slice(o.length))},e.addEventListener?e.addEventListener(\"message\",a,!1):e.attachEvent(\"onmessage\",a),r=function(t){e.postMessage(o+t,\"*\")}):e.MessageChannel?((i=new MessageChannel).port1.onmessage=function(e){f(e.data)},r=function(e){i.port2.postMessage(e)}):h&&\"onreadystatechange\"in h.createElement(\"script\")?(s=h.documentElement,r=function(e){var t=h.createElement(\"script\");t.onreadystatechange=function(){f(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):r=function(e){setTimeout(f,0,e)},p.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),n=0;n{e.exports=s;var n=r(7187).EventEmitter;function s(){n.call(this)}r(5717)(s,n),s.Readable=r(6577),s.Writable=r(323),s.Duplex=r(8656),s.Transform=r(4473),s.PassThrough=r(2366),s.finished=r(1086),s.pipeline=r(6472),s.Stream=s,s.prototype.pipe=function(e,t){var r=this;function s(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function i(){r.readable&&r.resume&&r.resume()}r.on(\"data\",s),e.on(\"drain\",i),e._isStdio||t&&!1===t.end||(r.on(\"end\",a),r.on(\"close\",c));var o=!1;function a(){o||(o=!0,e.end())}function c(){o||(o=!0,\"function\"==typeof e.destroy&&e.destroy())}function u(e){if(l(),0===n.listenerCount(this,\"error\"))throw e}function l(){r.removeListener(\"data\",s),e.removeListener(\"drain\",i),r.removeListener(\"end\",a),r.removeListener(\"close\",c),r.removeListener(\"error\",u),e.removeListener(\"error\",u),r.removeListener(\"end\",l),r.removeListener(\"close\",l),e.removeListener(\"close\",l)}return r.on(\"error\",u),e.on(\"error\",u),r.on(\"end\",l),r.on(\"close\",l),e.on(\"close\",l),e.emit(\"pipe\",r),e}},8106:e=>{\"use strict\";var t={};function r(e,r,n){n||(n=Error);var s=function(e){var t,n;function s(t,n,s){return e.call(this,function(e,t,n){return\"string\"==typeof r?r:r(e,t,n)}(t,n,s))||this}return n=e,(t=s).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,s}(n);s.prototype.name=n.name,s.prototype.code=e,t[e]=s}function n(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map((function(e){return String(e)})),r>2?\"one of \".concat(t,\" \").concat(e.slice(0,r-1).join(\", \"),\", or \")+e[r-1]:2===r?\"one of \".concat(t,\" \").concat(e[0],\" or \").concat(e[1]):\"of \".concat(t,\" \").concat(e[0])}return\"of \".concat(t,\" \").concat(String(e))}r(\"ERR_INVALID_OPT_VALUE\",(function(e,t){return'The value \"'+t+'\" is invalid for option \"'+e+'\"'}),TypeError),r(\"ERR_INVALID_ARG_TYPE\",(function(e,t,r){var s,i,o,a,c;if(\"string\"==typeof t&&(i=\"not \",t.substr(0,i.length)===i)?(s=\"must not be\",t=t.replace(/^not /,\"\")):s=\"must be\",function(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}(e,\" argument\"))o=\"The \".concat(e,\" \").concat(s,\" \").concat(n(t,\"type\"));else{var u=(\"number\"!=typeof c&&(c=0),c+\".\".length>(a=e).length||-1===a.indexOf(\".\",c)?\"argument\":\"property\");o='The \"'.concat(e,'\" ').concat(u,\" \").concat(s,\" \").concat(n(t,\"type\"))}return o+\". Received type \".concat(typeof r)}),TypeError),r(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\"),r(\"ERR_METHOD_NOT_IMPLEMENTED\",(function(e){return\"The \"+e+\" method is not implemented\"})),r(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\"),r(\"ERR_STREAM_DESTROYED\",(function(e){return\"Cannot call \"+e+\" after a stream was destroyed\"})),r(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\"),r(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\"),r(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\"),r(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError),r(\"ERR_UNKNOWN_ENCODING\",(function(e){return\"Unknown encoding: \"+e}),TypeError),r(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\"),e.exports.q=t},8656:(e,t,r)=>{\"use strict\";var n=r(4155),s=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=l;var i=r(6577),o=r(323);r(5717)(l,i);for(var a=s(o.prototype),c=0;c{\"use strict\";e.exports=s;var n=r(4473);function s(e){if(!(this instanceof s))return new s(e);n.call(this,e)}r(5717)(s,n),s.prototype._transform=function(e,t,r){r(null,e)}},6577:(e,t,r)=>{\"use strict\";var n,s=r(4155);e.exports=A,A.ReadableState=T,r(7187).EventEmitter;var i,o=function(e,t){return e.listeners(t).length},a=r(3194),c=r(8764).Buffer,u=r.g.Uint8Array||function(){},l=r(5575);i=l&&l.debuglog?l.debuglog(\"stream\"):function(){};var h,p,d,f=r(9686),m=r(1029),w=r(94).getHighWaterMark,g=r(8106).q,y=g.ERR_INVALID_ARG_TYPE,b=g.ERR_STREAM_PUSH_AFTER_EOF,x=g.ERR_METHOD_NOT_IMPLEMENTED,v=g.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;r(5717)(A,a);var _=m.errorOrDestroy,E=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function T(e,t,s){n=n||r(8656),e=e||{},\"boolean\"!=typeof s&&(s=t instanceof n),this.objectMode=!!e.objectMode,s&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=w(this,e,\"readableHighWaterMark\",s),this.buffer=new f,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(h||(h=r(2553).s),this.decoder=new h(e.encoding),this.encoding=e.encoding)}function A(e){if(n=n||r(8656),!(this instanceof A))return new A(e);var t=this instanceof n;this._readableState=new T(e,this,t),this.readable=!0,e&&(\"function\"==typeof e.read&&(this._read=e.read),\"function\"==typeof e.destroy&&(this._destroy=e.destroy)),a.call(this)}function S(e,t,r,n,s){i(\"readableAddChunk\",t);var o,a=e._readableState;if(null===t)a.reading=!1,function(e,t){if(i(\"onEofChunk\"),!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?C(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,O(e)))}}(e,a);else if(s||(o=function(e,t){var r,n;return n=t,c.isBuffer(n)||n instanceof u||\"string\"==typeof t||void 0===t||e.objectMode||(r=new y(\"chunk\",[\"string\",\"Buffer\",\"Uint8Array\"],t)),r}(a,t)),o)_(e,o);else if(a.objectMode||t&&t.length>0)if(\"string\"==typeof t||a.objectMode||Object.getPrototypeOf(t)===c.prototype||(t=function(e){return c.from(e)}(t)),n)a.endEmitted?_(e,new v):I(e,a,t,!0);else if(a.ended)_(e,new b);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(t=a.decoder.write(t),a.objectMode||0!==t.length?I(e,a,t,!1):k(e,a)):I(e,a,t,!1)}else n||(a.reading=!1,k(e,a));return!a.ended&&(a.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=R?e=R:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function C(e){var t=e._readableState;i(\"emitReadable\",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(i(\"emitReadable\",t.flowing),t.emittedReadable=!0,s.nextTick(O,e))}function O(e){var t=e._readableState;i(\"emitReadable_\",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit(\"readable\"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,B(e)}function k(e,t){t.readingMore||(t.readingMore=!0,s.nextTick(L,e,t))}function L(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount(\"data\")>0&&e.resume()}function P(e){i(\"readable nexttick read 0\"),e.read(0)}function F(e,t){i(\"resume\",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit(\"resume\"),B(e),t.flowing&&!t.reading&&e.read(0)}function B(e){var t=e._readableState;for(i(\"flow\",t.flowing);t.flowing&&null!==e.read(););}function M(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(\"\"):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r);var r}function U(e){var t=e._readableState;i(\"endReadable\",t.endEmitted),t.endEmitted||(t.ended=!0,s.nextTick(H,t,e))}function H(e,t){if(i(\"endReadableNT\",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit(\"end\"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}function z(e,t){for(var r=0,n=e.length;r=t.highWaterMark:t.length>0)||t.ended))return i(\"read: emitReadable\",t.length,t.ended),0===t.length&&t.ended?U(this):C(this),null;if(0===(e=N(e,t))&&t.ended)return 0===t.length&&U(this),null;var n,s=t.needReadable;return i(\"need readable\",s),(0===t.length||t.length-e0?M(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&U(this)),null!==n&&this.emit(\"data\",n),n},A.prototype._read=function(e){_(this,new x(\"_read()\"))},A.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e)}n.pipesCount+=1,i(\"pipe count=%d opts=%j\",n.pipesCount,t);var a=t&&!1===t.end||e===s.stdout||e===s.stderr?m:c;function c(){i(\"onend\"),e.end()}n.endEmitted?s.nextTick(a):r.once(\"end\",a),e.on(\"unpipe\",(function t(s,o){i(\"onunpipe\"),s===r&&o&&!1===o.hasUnpiped&&(o.hasUnpiped=!0,i(\"cleanup\"),e.removeListener(\"close\",d),e.removeListener(\"finish\",f),e.removeListener(\"drain\",u),e.removeListener(\"error\",p),e.removeListener(\"unpipe\",t),r.removeListener(\"end\",c),r.removeListener(\"end\",m),r.removeListener(\"data\",h),l=!0,!n.awaitDrain||e._writableState&&!e._writableState.needDrain||u())}));var u=function(e){return function(){var t=e._readableState;i(\"pipeOnDrain\",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&o(e,\"data\")&&(t.flowing=!0,B(e))}}(r);e.on(\"drain\",u);var l=!1;function h(t){i(\"ondata\");var s=e.write(t);i(\"dest.write\",s),!1===s&&((1===n.pipesCount&&n.pipes===e||n.pipesCount>1&&-1!==z(n.pipes,e))&&!l&&(i(\"false write response, pause\",n.awaitDrain),n.awaitDrain++),r.pause())}function p(t){i(\"onerror\",t),m(),e.removeListener(\"error\",p),0===o(e,\"error\")&&_(e,t)}function d(){e.removeListener(\"finish\",f),m()}function f(){i(\"onfinish\"),e.removeListener(\"close\",d),m()}function m(){i(\"unpipe\"),r.unpipe(e)}return r.on(\"data\",h),function(e,t,r){if(\"function\"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events.error?Array.isArray(e._events.error)?e._events.error.unshift(r):e._events.error=[r,e._events.error]:e.on(t,r)}(e,\"error\",p),e.once(\"close\",d),e.once(\"finish\",f),e.emit(\"pipe\",r),n.flowing||(i(\"pipe resume\"),r.resume()),e},A.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit(\"unpipe\",this,r)),this;if(!e){var n=t.pipes,s=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i0,!1!==n.flowing&&this.resume()):\"readable\"===e&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,i(\"on readable\",n.length,n.reading),n.length?C(this):n.reading||s.nextTick(P,this))),r},A.prototype.addListener=A.prototype.on,A.prototype.removeListener=function(e,t){var r=a.prototype.removeListener.call(this,e,t);return\"readable\"===e&&s.nextTick(D,this),r},A.prototype.removeAllListeners=function(e){var t=a.prototype.removeAllListeners.apply(this,arguments);return\"readable\"!==e&&void 0!==e||s.nextTick(D,this),t},A.prototype.resume=function(){var e=this._readableState;return e.flowing||(i(\"resume\"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,s.nextTick(F,e,t))}(this,e)),e.paused=!1,this},A.prototype.pause=function(){return i(\"call pause flowing=%j\",this._readableState.flowing),!1!==this._readableState.flowing&&(i(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this._readableState.paused=!0,this},A.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;for(var s in e.on(\"end\",(function(){if(i(\"wrapped end\"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on(\"data\",(function(s){i(\"wrapped data\"),r.decoder&&(s=r.decoder.write(s)),r.objectMode&&null==s||(r.objectMode||s&&s.length)&&(t.push(s)||(n=!0,e.pause()))})),e)void 0===this[s]&&\"function\"==typeof e[s]&&(this[s]=function(t){return function(){return e[t].apply(e,arguments)}}(s));for(var o=0;o{\"use strict\";e.exports=l;var n=r(8106).q,s=n.ERR_METHOD_NOT_IMPLEMENTED,i=n.ERR_MULTIPLE_CALLBACK,o=n.ERR_TRANSFORM_ALREADY_TRANSFORMING,a=n.ERR_TRANSFORM_WITH_LENGTH_0,c=r(8656);function u(e,t){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(null===n)return this.emit(\"error\",new i);r.writechunk=null,r.writecb=null,null!=t&&this.push(t),n(e);var s=this._readableState;s.reading=!1,(s.needReadable||s.length{\"use strict\";var n,s=r(4155);function i(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,r){var n=e.entry;for(e.entry=null;n;){var s=n.callback;t.pendingcb--,s(undefined),n=n.next}t.corkedRequestsFree.next=e}(t,e)}}e.exports=A,A.WritableState=T;var o,a={deprecate:r(4927)},c=r(3194),u=r(8764).Buffer,l=r.g.Uint8Array||function(){},h=r(1029),p=r(94).getHighWaterMark,d=r(8106).q,f=d.ERR_INVALID_ARG_TYPE,m=d.ERR_METHOD_NOT_IMPLEMENTED,w=d.ERR_MULTIPLE_CALLBACK,g=d.ERR_STREAM_CANNOT_PIPE,y=d.ERR_STREAM_DESTROYED,b=d.ERR_STREAM_NULL_VALUES,x=d.ERR_STREAM_WRITE_AFTER_END,v=d.ERR_UNKNOWN_ENCODING,_=h.errorOrDestroy;function E(){}function T(e,t,o){n=n||r(8656),e=e||{},\"boolean\"!=typeof o&&(o=t instanceof n),this.objectMode=!!e.objectMode,o&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=p(this,e,\"writableHighWaterMark\",o),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=!1===e.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if(\"function\"!=typeof i)throw new w;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,i){--t.pendingcb,r?(s.nextTick(i,n),s.nextTick(O,e,t),e._writableState.errorEmitted=!0,_(e,n)):(i(n),e._writableState.errorEmitted=!0,_(e,n),O(e,t))}(e,r,n,t,i);else{var o=N(r)||e.destroyed;o||r.corked||r.bufferProcessing||!r.bufferedRequest||R(e,r),n?s.nextTick(I,e,r,o,i):I(e,r,o,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new i(this)}function A(e){var t=this instanceof(n=n||r(8656));if(!t&&!o.call(A,this))return new A(e);this._writableState=new T(e,this,t),this.writable=!0,e&&(\"function\"==typeof e.write&&(this._write=e.write),\"function\"==typeof e.writev&&(this._writev=e.writev),\"function\"==typeof e.destroy&&(this._destroy=e.destroy),\"function\"==typeof e.final&&(this._final=e.final)),c.call(this)}function S(e,t,r,n,s,i,o){t.writelen=n,t.writecb=o,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new y(\"write\")):r?e._writev(s,t.onwrite):e._write(s,i,t.onwrite),t.sync=!1}function I(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit(\"drain\"))}(e,t),t.pendingcb--,n(),O(e,t)}function R(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,s=new Array(n),o=t.corkedRequestsFree;o.entry=r;for(var a=0,c=!0;r;)s[a]=r,r.isBuf||(c=!1),r=r.next,a+=1;s.allBuffers=c,S(e,t,!0,t.length,s,\"\",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new i(t),t.bufferedRequestCount=0}else{for(;r;){var u=r.chunk,l=r.encoding,h=r.callback;if(S(e,t,!1,t.objectMode?1:u.length,u,l,h),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function N(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function C(e,t){e._final((function(r){t.pendingcb--,r&&_(e,r),t.prefinished=!0,e.emit(\"prefinish\"),O(e,t)}))}function O(e,t){var r=N(t);if(r&&(function(e,t){t.prefinished||t.finalCalled||(\"function\"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit(\"prefinish\")):(t.pendingcb++,t.finalCalled=!0,s.nextTick(C,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit(\"finish\"),t.autoDestroy))){var n=e._readableState;(!n||n.autoDestroy&&n.endEmitted)&&e.destroy()}return r}r(5717)(A,c),T.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(T.prototype,\"buffer\",{get:a.deprecate((function(){return this.getBuffer()}),\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch(e){}}(),\"function\"==typeof Symbol&&Symbol.hasInstance&&\"function\"==typeof Function.prototype[Symbol.hasInstance]?(o=Function.prototype[Symbol.hasInstance],Object.defineProperty(A,Symbol.hasInstance,{value:function(e){return!!o.call(this,e)||this===A&&e&&e._writableState instanceof T}})):o=function(e){return e instanceof this},A.prototype.pipe=function(){_(this,new g)},A.prototype.write=function(e,t,r){var n,i=this._writableState,o=!1,a=!i.objectMode&&(n=e,u.isBuffer(n)||n instanceof l);return a&&!u.isBuffer(e)&&(e=function(e){return u.from(e)}(e)),\"function\"==typeof t&&(r=t,t=null),a?t=\"buffer\":t||(t=i.defaultEncoding),\"function\"!=typeof r&&(r=E),i.ending?function(e,t){var r=new x;_(e,r),s.nextTick(t,r)}(this,r):(a||function(e,t,r,n){var i;return null===r?i=new b:\"string\"==typeof r||t.objectMode||(i=new f(\"chunk\",[\"string\",\"Buffer\"],r)),!i||(_(e,i),s.nextTick(n,i),!1)}(this,i,e,r))&&(i.pendingcb++,o=function(e,t,r,n,s,i){if(!r){var o=function(e,t,r){return e.objectMode||!1===e.decodeStrings||\"string\"!=typeof t||(t=u.from(t,r)),t}(t,n,s);n!==o&&(r=!0,s=\"buffer\",n=o)}var a=t.objectMode?1:n.length;t.length+=a;var c=t.length-1))throw new v(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(A.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(A.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),A.prototype._write=function(e,t,r){r(new m(\"_write()\"))},A.prototype._writev=null,A.prototype.end=function(e,t,r){var n=this._writableState;return\"function\"==typeof e?(r=e,e=null,t=null):\"function\"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||function(e,t,r){t.ending=!0,O(e,t),r&&(t.finished?s.nextTick(r):e.once(\"finish\",r)),t.ended=!0,e.writable=!1}(this,n,r),this},Object.defineProperty(A.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(A.prototype,\"destroyed\",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),A.prototype.destroy=h.destroy,A.prototype._undestroy=h.undestroy,A.prototype._destroy=function(e,t){t(e)}},828:(e,t,r)=>{\"use strict\";var n,s=r(4155);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var o=r(1086),a=Symbol(\"lastResolve\"),c=Symbol(\"lastReject\"),u=Symbol(\"error\"),l=Symbol(\"ended\"),h=Symbol(\"lastPromise\"),p=Symbol(\"handlePromise\"),d=Symbol(\"stream\");function f(e,t){return{value:e,done:t}}function m(e){var t=e[a];if(null!==t){var r=e[d].read();null!==r&&(e[h]=null,e[a]=null,e[c]=null,t(f(r,!1)))}}function w(e){s.nextTick(m,e)}var g=Object.getPrototypeOf((function(){})),y=Object.setPrototypeOf((i(n={get stream(){return this[d]},next:function(){var e=this,t=this[u];if(null!==t)return Promise.reject(t);if(this[l])return Promise.resolve(f(void 0,!0));if(this[d].destroyed)return new Promise((function(t,r){s.nextTick((function(){e[u]?r(e[u]):t(f(void 0,!0))}))}));var r,n=this[h];if(n)r=new Promise(function(e,t){return function(r,n){e.then((function(){t[l]?r(f(void 0,!0)):t[p](r,n)}),n)}}(n,this));else{var i=this[d].read();if(null!==i)return Promise.resolve(f(i,!1));r=new Promise(this[p])}return this[h]=r,r}},Symbol.asyncIterator,(function(){return this})),i(n,\"return\",(function(){var e=this;return new Promise((function(t,r){e[d].destroy(null,(function(e){e?r(e):t(f(void 0,!0))}))}))})),n),g);e.exports=function(e){var t,r=Object.create(y,(i(t={},d,{value:e,writable:!0}),i(t,a,{value:null,writable:!0}),i(t,c,{value:null,writable:!0}),i(t,u,{value:null,writable:!0}),i(t,l,{value:e._readableState.endEmitted,writable:!0}),i(t,p,{value:function(e,t){var n=r[d].read();n?(r[h]=null,r[a]=null,r[c]=null,e(f(n,!1))):(r[a]=e,r[c]=t)},writable:!0}),t));return r[h]=null,o(e,(function(e){if(e&&\"ERR_STREAM_PREMATURE_CLOSE\"!==e.code){var t=r[c];return null!==t&&(r[h]=null,r[a]=null,r[c]=null,t(e)),void(r[u]=e)}var n=r[a];null!==n&&(r[h]=null,r[a]=null,r[c]=null,n(f(void 0,!0))),r[l]=!0})),e.on(\"readable\",w.bind(null,r)),r}},9686:(e,t,r)=>{\"use strict\";function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){for(var r=0;r0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:\"unshift\",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:\"shift\",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:\"clear\",value:function(){this.head=this.tail=null,this.length=0}},{key:\"join\",value:function(e){if(0===this.length)return\"\";for(var t=this.head,r=\"\"+t.data;t=t.next;)r+=e+t.data;return r}},{key:\"concat\",value:function(e){if(0===this.length)return o.alloc(0);for(var t,r,n,s=o.allocUnsafe(e>>>0),i=this.head,a=0;i;)t=i.data,r=s,n=a,o.prototype.copy.call(t,r,n),a+=i.data.length,i=i.next;return s}},{key:\"consume\",value:function(e,t){var r;return es.length?s.length:e;if(i===s.length?n+=s:n+=s.slice(0,e),0==(e-=i)){i===s.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=s.slice(i));break}++r}return this.length-=r,n}},{key:\"_getBuffer\",value:function(e){var t=o.allocUnsafe(e),r=this.head,n=1;for(r.data.copy(t),e-=r.data.length;r=r.next;){var s=r.data,i=e>s.length?s.length:e;if(s.copy(t,t.length-e,0,i),0==(e-=i)){i===s.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=s.slice(i));break}++n}return this.length-=n,t}},{key:c,value:function(e,t){return a(this,function(e){for(var t=1;t{\"use strict\";var n=r(4155);function s(e,t){o(e,t),i(e)}function i(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit(\"close\")}function o(e,t){e.emit(\"error\",t)}e.exports={destroy:function(e,t){var r=this,a=this._readableState&&this._readableState.destroyed,c=this._writableState&&this._writableState.destroyed;return a||c?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,n.nextTick(o,this,e)):n.nextTick(o,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!t&&e?r._writableState?r._writableState.errorEmitted?n.nextTick(i,r):(r._writableState.errorEmitted=!0,n.nextTick(s,r,e)):n.nextTick(s,r,e):t?(n.nextTick(i,r),t(e)):n.nextTick(i,r)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(e,t){var r=e._readableState,n=e._writableState;r&&r.autoDestroy||n&&n.autoDestroy?e.destroy(t):e.emit(\"error\",t)}}},1086:(e,t,r)=>{\"use strict\";var n=r(8106).q.ERR_STREAM_PREMATURE_CLOSE;function s(){}e.exports=function e(t,r,i){if(\"function\"==typeof r)return e(t,null,r);r||(r={}),i=function(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,n=new Array(r),s=0;s{e.exports=function(){throw new Error(\"Readable.from is not available in the browser\")}},6472:(e,t,r)=>{\"use strict\";var n,s=r(8106).q,i=s.ERR_MISSING_ARGS,o=s.ERR_STREAM_DESTROYED;function a(e){if(e)throw e}function c(e,t,s,i){i=function(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}(i);var a=!1;e.on(\"close\",(function(){a=!0})),void 0===n&&(n=r(1086)),n(e,{readable:t,writable:s},(function(e){if(e)return i(e);a=!0,i()}));var c=!1;return function(t){if(!a&&!c)return c=!0,function(e){return e.setHeader&&\"function\"==typeof e.abort}(e)?e.abort():\"function\"==typeof e.destroy?e.destroy():void i(t||new o(\"pipe\"))}}function u(e){e()}function l(e,t){return e.pipe(t)}function h(e){return e.length?\"function\"!=typeof e[e.length-1]?a:e.pop():a}e.exports=function(){for(var e=arguments.length,t=new Array(e),r=0;r0,(function(e){n||(n=e),e&&o.forEach(u),i||(o.forEach(u),s(n))}))}));return t.reduce(l)}},94:(e,t,r)=>{\"use strict\";var n=r(8106).q.ERR_INVALID_OPT_VALUE;e.exports={getHighWaterMark:function(e,t,r,s){var i=function(e,t,r){return null!=e.highWaterMark?e.highWaterMark:t?e[r]:null}(t,s,r);if(null!=i){if(!isFinite(i)||Math.floor(i)!==i||i<0)throw new n(s?r:\"highWaterMark\",i);return Math.floor(i)}return e.objectMode?16:16384}}},3194:(e,t,r)=>{e.exports=r(7187).EventEmitter},2553:(e,t,r)=>{\"use strict\";var n=r(9509).Buffer,s=n.isEncoding||function(e){switch((e=\"\"+e)&&e.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function i(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return\"utf8\";for(var t;;)switch(e){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return e;default:if(t)return;e=(\"\"+e).toLowerCase(),t=!0}}(e);if(\"string\"!=typeof t&&(n.isEncoding===s||!s(e)))throw new Error(\"Unknown encoding: \"+e);return t||e}(e),this.encoding){case\"utf16le\":this.text=c,this.end=u,t=4;break;case\"utf8\":this.fillLast=a,t=4;break;case\"base64\":this.text=l,this.end=h,t=3;break;default:return this.write=p,void(this.end=d)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(t)}function o(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function a(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,\"�\";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,\"�\";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,\"�\"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function c(e,t){if((e.length-t)%2==0){var r=e.toString(\"utf16le\",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString(\"utf16le\",t,e.length-1)}function u(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString(\"utf16le\",0,r)}return t}function l(e,t){var r=(e.length-t)%3;return 0===r?e.toString(\"base64\",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString(\"base64\",t,e.length-r))}function h(e){var t=e&&e.length?this.write(e):\"\";return this.lastNeed?t+this.lastChar.toString(\"base64\",0,3-this.lastNeed):t}function p(e){return e.toString(this.encoding)}function d(e){return e&&e.length?this.write(e):\"\"}t.s=i,i.prototype.write=function(e){if(0===e.length)return\"\";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0?(s>0&&(e.lastNeed=s-1),s):--n=0?(s>0&&(e.lastNeed=s-2),s):--n=0?(s>0&&(2===s?s=0:e.lastNeed=s-3),s):0}(this,e,t);if(!this.lastNeed)return e.toString(\"utf8\",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString(\"utf8\",t,n)},i.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},5457:(e,t,r)=>{\"use strict\";r.d(t,{vw:()=>i,rq:()=>s,EL:()=>a,NY:()=>o});let n=0;const s=e=>Math.floor(e/25.4*72*20),i=e=>Math.floor(72*e*20),o=()=>++n,a=()=>((e=21)=>{let t=\"\",r=e;for(;r--;)t+=\"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\"[64*Math.random()|0];return t})().toLowerCase()},5575:(e,t,r)=>{\"use strict\";r.r(t),r.d(t,{convertInchesToTwip:()=>n.vw,convertMillimetersToTwip:()=>n.rq,dateTimeValue:()=>s.sF,decimalNumber:()=>s.vH,eighthPointMeasureValue:()=>s.LV,hexColorValue:()=>s.dg,hpsMeasureValue:()=>s.KR,longHexNumber:()=>s.mA,measurementOrPercentValue:()=>s.aB,percentageValue:()=>s.wp,pointMeasureValue:()=>s.gg,positiveUniversalMeasureValue:()=>s._p,shortHexNumber:()=>s.G0,signedHpsMeasureValue:()=>s.Rg,signedTwipsMeasureValue:()=>s.xb,twipsMeasureValue:()=>s.Jd,uCharHexNumber:()=>s.xD,uniqueId:()=>n.EL,uniqueNumericId:()=>n.NY,universalMeasureValue:()=>s.KC,unsignedDecimalNumber:()=>s.f$});var n=r(5457),s=r(6595)},6595:(e,t,r)=>{\"use strict\";r.d(t,{G0:()=>a,Jd:()=>w,KC:()=>u,KR:()=>f,LV:()=>b,Rg:()=>m,_p:()=>h,aB:()=>y,dg:()=>p,f$:()=>s,gg:()=>x,mA:()=>o,sF:()=>v,vH:()=>n,wp:()=>g,xD:()=>c,xb:()=>d});const n=e=>{if(isNaN(e))throw new Error(`Invalid value '${e}' specified. Must be an integer.`);return Math.floor(e)},s=e=>{const t=n(e);if(t<0)throw new Error(`Invalid value '${e}' specified. Must be a positive integer.`);return t},i=(e,t)=>{const r=2*t;if(e.length!==r||isNaN(Number(`0x${e}`)))throw new Error(`Invalid hex value '${e}'. Expected ${r} digit hex value`);return e},o=e=>i(e,4),a=e=>i(e,2),c=e=>i(e,1),u=e=>{const t=e.slice(-2);if(!l.includes(t))throw new Error(`Invalid unit '${t}' specified. Valid units are ${l.join(\", \")}`);const r=e.substring(0,e.length-2);if(isNaN(Number(r)))throw new Error(`Invalid value '${r}' specified. Expected a valid number.`);return`${Number(r)}${t}`},l=[\"mm\",\"cm\",\"in\",\"pt\",\"pc\",\"pi\"],h=e=>{const t=u(e);if(parseFloat(t)<0)throw new Error(`Invalid value '${t}' specified. Expected a positive number.`);return t},p=e=>{if(\"auto\"===e)return e;const t=\"#\"===e.charAt(0)?e.substring(1):e;return i(t,3)},d=e=>\"string\"==typeof e?u(e):n(e),f=e=>\"string\"==typeof e?h(e):s(e),m=e=>\"string\"==typeof e?u(e):n(e),w=e=>\"string\"==typeof e?h(e):s(e),g=e=>{if(\"%\"!==e.slice(-1))throw new Error(`Invalid value '${e}'. Expected percentage value (eg '55%')`);const t=e.substring(0,e.length-1);if(isNaN(Number(t)))throw new Error(`Invalid value '${t}' specified. Expected a valid number.`);return`${Number(t)}%`},y=e=>\"number\"==typeof e?n(e):\"%\"===e.slice(-1)?g(e):u(e),b=s,x=s,v=e=>e.toISOString()},4927:(e,t,r)=>{function n(e){try{if(!r.g.localStorage)return!1}catch(e){return!1}var t=r.g.localStorage[e];return null!=t&&\"true\"===String(t).toLowerCase()}e.exports=function(e,t){if(n(\"noDeprecation\"))return e;var r=!1;return function(){if(!r){if(n(\"throwDeprecation\"))throw new Error(t);n(\"traceDeprecation\")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}}},9881:e=>{e.exports={isArray:function(e){return Array.isArray?Array.isArray(e):\"[object Array]\"===Object.prototype.toString.call(e)}}},7888:(e,t,r)=>{var n=r(1229),s=r(1388),i=r(6501),o=r(4673);e.exports={xml2js:n,xml2json:s,js2xml:i,json2xml:o}},6501:(e,t,r)=>{var n,s,i=r(4740),o=r(9881).isArray;function a(e,t,r){return(!r&&e.spaces?\"\\n\":\"\")+Array(t+1).join(e.spaces)}function c(e,t,r){if(t.ignoreAttributes)return\"\";\"attributesFn\"in t&&(e=t.attributesFn(e,s,n));var i,o,c,u,l=[];for(i in e)e.hasOwnProperty(i)&&null!==e[i]&&void 0!==e[i]&&(u=t.noQuotesForNativeAttributes&&\"string\"!=typeof e[i]?\"\":'\"',o=(o=\"\"+e[i]).replace(/\"/g,\""\"),c=\"attributeNameFn\"in t?t.attributeNameFn(i,o,s,n):i,l.push(t.spaces&&t.indentAttributes?a(t,r+1,!1):\" \"),l.push(c+\"=\"+u+(\"attributeValueFn\"in t?t.attributeValueFn(o,i,s,n):o)+u));return e&&Object.keys(e).length&&t.spaces&&t.indentAttributes&&l.push(a(t,r,!1)),l.join(\"\")}function u(e,t,r){return n=e,s=\"xml\",t.ignoreDeclaration?\"\":\"\"}function l(e,t,r){if(t.ignoreInstruction)return\"\";var i;for(i in e)if(e.hasOwnProperty(i))break;var o=\"instructionNameFn\"in t?t.instructionNameFn(i,e[i],s,n):i;if(\"object\"==typeof e[i])return n=e,s=o,\"\";var a=e[i]?e[i]:\"\";return\"instructionFn\"in t&&(a=t.instructionFn(a,i,s,n)),\"\"}function h(e,t){return t.ignoreComment?\"\":\"\\x3c!--\"+(\"commentFn\"in t?t.commentFn(e,s,n):e)+\"--\\x3e\"}function p(e,t){return t.ignoreCdata?\"\":\"\",\"]]]]>\"))+\"]]>\"}function d(e,t){return t.ignoreDoctype?\"\":\"\"}function f(e,t){return t.ignoreText?\"\":(e=(e=(e=\"\"+e).replace(/&/g,\"&\")).replace(/&/g,\"&\").replace(//g,\">\"),\"textFn\"in t?t.textFn(e,s,n):e)}function m(e,t,r,i){return e.reduce((function(e,o){var u=a(t,r,i&&!e);switch(o.type){case\"element\":return e+u+function(e,t,r){n=e,s=e.name;var i=[],o=\"elementNameFn\"in t?t.elementNameFn(e.name,e):e.name;i.push(\"<\"+o),e[t.attributesKey]&&i.push(c(e[t.attributesKey],t,r));var a=e[t.elementsKey]&&e[t.elementsKey].length||e[t.attributesKey]&&\"preserve\"===e[t.attributesKey][\"xml:space\"];return a||(a=\"fullTagEmptyElementFn\"in t?t.fullTagEmptyElementFn(e.name,e):t.fullTagEmptyElement),a?(i.push(\">\"),e[t.elementsKey]&&e[t.elementsKey].length&&(i.push(m(e[t.elementsKey],t,r+1)),n=e,s=e.name),i.push(t.spaces&&function(e,t){var r;if(e.elements&&e.elements.length)for(r=0;r\")):i.push(\"/>\"),i.join(\"\")}(o,t,r);case\"comment\":return e+u+h(o[t.commentKey],t);case\"doctype\":return e+u+d(o[t.doctypeKey],t);case\"cdata\":return e+(t.indentCdata?u:\"\")+p(o[t.cdataKey],t);case\"text\":return e+(t.indentText?u:\"\")+f(o[t.textKey],t);case\"instruction\":var w={};return w[o[t.nameKey]]=o[t.attributesKey]?o:o[t.instructionKey],e+(t.indentInstruction?u:\"\")+l(w,t,r)}}),\"\")}function w(e,t,r){var n;for(n in e)if(e.hasOwnProperty(n))switch(n){case t.parentKey:case t.attributesKey:break;case t.textKey:if(t.indentText||r)return!0;break;case t.cdataKey:if(t.indentCdata||r)return!0;break;case t.instructionKey:if(t.indentInstruction||r)return!0;break;case t.doctypeKey:case t.commentKey:default:return!0}return!1}function g(e,t,r,i,o){n=e,s=t;var u=\"elementNameFn\"in r?r.elementNameFn(t,e):t;if(null==e||\"\"===e)return\"fullTagEmptyElementFn\"in r&&r.fullTagEmptyElementFn(t,e)||r.fullTagEmptyElement?\"<\"+u+\">\":\"<\"+u+\"/>\";var l=[];if(t){if(l.push(\"<\"+u),\"object\"!=typeof e)return l.push(\">\"+f(e,r)+\"\"),l.join(\"\");e[r.attributesKey]&&l.push(c(e[r.attributesKey],r,i));var h=w(e,r,!0)||e[r.attributesKey]&&\"preserve\"===e[r.attributesKey][\"xml:space\"];if(h||(h=\"fullTagEmptyElementFn\"in r?r.fullTagEmptyElementFn(t,e):r.fullTagEmptyElement),!h)return l.push(\"/>\"),l.join(\"\");l.push(\">\")}return l.push(y(e,r,i+1,!1)),n=e,s=t,t&&l.push((o?a(r,i,!1):\"\")+\"\"),l.join(\"\")}function y(e,t,r,n){var s,i,c,m=[];for(i in e)if(e.hasOwnProperty(i))for(c=o(e[i])?e[i]:[e[i]],s=0;s{var n=r(6501);e.exports=function(e,t){e instanceof Buffer&&(e=e.toString());var r=null;if(\"string\"==typeof e)try{r=JSON.parse(e)}catch(e){throw new Error(\"The JSON structure is invalid\")}else r=e;return n(r,t)}},4740:(e,t,r)=>{var n=r(9881).isArray;e.exports={copyOptions:function(e){var t,r={};for(t in e)e.hasOwnProperty(t)&&(r[t]=e[t]);return r},ensureFlagExists:function(e,t){e in t&&\"boolean\"==typeof t[e]||(t[e]=!1)},ensureSpacesExists:function(e){(!(\"spaces\"in e)||\"number\"!=typeof e.spaces&&\"string\"!=typeof e.spaces)&&(e.spaces=0)},ensureAlwaysArrayExists:function(e){\"alwaysArray\"in e&&(\"boolean\"==typeof e.alwaysArray||n(e.alwaysArray))||(e.alwaysArray=!1)},ensureKeyExists:function(e,t){e+\"Key\"in t&&\"string\"==typeof t[e+\"Key\"]||(t[e+\"Key\"]=t.compact?\"_\"+e:e)},checkFnExists:function(e,t){return e+\"Fn\"in t}}},1229:(e,t,r)=>{var n,s,i=r(6099),o=r(4740),a=r(9881).isArray;function c(e){var t=Number(e);if(!isNaN(t))return t;var r=e.toLowerCase();return\"true\"===r||\"false\"!==r&&e}function u(e,t){var r;if(n.compact){if(!s[n[e+\"Key\"]]&&(a(n.alwaysArray)?-1!==n.alwaysArray.indexOf(n[e+\"Key\"]):n.alwaysArray)&&(s[n[e+\"Key\"]]=[]),s[n[e+\"Key\"]]&&!a(s[n[e+\"Key\"]])&&(s[n[e+\"Key\"]]=[s[n[e+\"Key\"]]]),e+\"Fn\"in n&&\"string\"==typeof t&&(t=n[e+\"Fn\"](t,s)),\"instruction\"===e&&(\"instructionFn\"in n||\"instructionNameFn\"in n))for(r in t)if(t.hasOwnProperty(r))if(\"instructionFn\"in n)t[r]=n.instructionFn(t[r],r,s);else{var i=t[r];delete t[r],t[n.instructionNameFn(r,i,s)]=i}a(s[n[e+\"Key\"]])?s[n[e+\"Key\"]].push(t):s[n[e+\"Key\"]]=t}else{s[n.elementsKey]||(s[n.elementsKey]=[]);var o={};if(o[n.typeKey]=e,\"instruction\"===e){for(r in t)if(t.hasOwnProperty(r))break;o[n.nameKey]=\"instructionNameFn\"in n?n.instructionNameFn(r,t,s):r,n.instructionHasAttributes?(o[n.attributesKey]=t[r][n.attributesKey],\"instructionFn\"in n&&(o[n.attributesKey]=n.instructionFn(o[n.attributesKey],r,s))):(\"instructionFn\"in n&&(t[r]=n.instructionFn(t[r],r,s)),o[n.instructionKey]=t[r])}else e+\"Fn\"in n&&(t=n[e+\"Fn\"](t,s)),o[n[e+\"Key\"]]=t;n.addParent&&(o[n.parentKey]=s),s[n.elementsKey].push(o)}}function l(e){var t;if(\"attributesFn\"in n&&e&&(e=n.attributesFn(e,s)),(n.trim||\"attributeValueFn\"in n||\"attributeNameFn\"in n||n.nativeTypeAttributes)&&e)for(t in e)if(e.hasOwnProperty(t)&&(n.trim&&(e[t]=e[t].trim()),n.nativeTypeAttributes&&(e[t]=c(e[t])),\"attributeValueFn\"in n&&(e[t]=n.attributeValueFn(e[t],t,s)),\"attributeNameFn\"in n)){var r=e[t];delete e[t],e[n.attributeNameFn(t,e[t],s)]=r}return e}function h(e){var t={};if(e.body&&(\"xml\"===e.name.toLowerCase()||n.instructionHasAttributes)){for(var r,i=/([\\w:-]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)'|(\\w+))\\s*/g;null!==(r=i.exec(e.body));)t[r[1]]=r[2]||r[3]||r[4];t=l(t)}if(\"xml\"===e.name.toLowerCase()){if(n.ignoreDeclaration)return;s[n.declarationKey]={},Object.keys(t).length&&(s[n.declarationKey][n.attributesKey]=t),n.addParent&&(s[n.declarationKey][n.parentKey]=s)}else{if(n.ignoreInstruction)return;n.trim&&(e.body=e.body.trim());var o={};n.instructionHasAttributes&&Object.keys(t).length?(o[e.name]={},o[e.name][n.attributesKey]=t):o[e.name]=e.body,u(\"instruction\",o)}}function p(e,t){var r;if(\"object\"==typeof e&&(t=e.attributes,e=e.name),t=l(t),\"elementNameFn\"in n&&(e=n.elementNameFn(e,s)),n.compact){var i;if(r={},!n.ignoreAttributes&&t&&Object.keys(t).length)for(i in r[n.attributesKey]={},t)t.hasOwnProperty(i)&&(r[n.attributesKey][i]=t[i]);!(e in s)&&(a(n.alwaysArray)?-1!==n.alwaysArray.indexOf(e):n.alwaysArray)&&(s[e]=[]),s[e]&&!a(s[e])&&(s[e]=[s[e]]),a(s[e])?s[e].push(r):s[e]=r}else s[n.elementsKey]||(s[n.elementsKey]=[]),(r={})[n.typeKey]=\"element\",r[n.nameKey]=e,!n.ignoreAttributes&&t&&Object.keys(t).length&&(r[n.attributesKey]=t),n.alwaysChildren&&(r[n.elementsKey]=[]),s[n.elementsKey].push(r);r[n.parentKey]=s,s=r}function d(e){n.ignoreText||(e.trim()||n.captureSpacesBetweenElements)&&(n.trim&&(e=e.trim()),n.nativeType&&(e=c(e)),n.sanitize&&(e=e.replace(/&/g,\"&\").replace(//g,\">\")),u(\"text\",e))}function f(e){n.ignoreComment||(n.trim&&(e=e.trim()),u(\"comment\",e))}function m(e){var t=s[n.parentKey];n.addParent||delete s[n.parentKey],s=t}function w(e){n.ignoreCdata||(n.trim&&(e=e.trim()),u(\"cdata\",e))}function g(e){n.ignoreDoctype||(e=e.replace(/^ /,\"\"),n.trim&&(e=e.trim()),u(\"doctype\",e))}function y(e){e.note=e}e.exports=function(e,t){var r=i.parser(!0,{}),a={};if(s=a,n=function(e){return n=o.copyOptions(e),o.ensureFlagExists(\"ignoreDeclaration\",n),o.ensureFlagExists(\"ignoreInstruction\",n),o.ensureFlagExists(\"ignoreAttributes\",n),o.ensureFlagExists(\"ignoreText\",n),o.ensureFlagExists(\"ignoreComment\",n),o.ensureFlagExists(\"ignoreCdata\",n),o.ensureFlagExists(\"ignoreDoctype\",n),o.ensureFlagExists(\"compact\",n),o.ensureFlagExists(\"alwaysChildren\",n),o.ensureFlagExists(\"addParent\",n),o.ensureFlagExists(\"trim\",n),o.ensureFlagExists(\"nativeType\",n),o.ensureFlagExists(\"nativeTypeAttributes\",n),o.ensureFlagExists(\"sanitize\",n),o.ensureFlagExists(\"instructionHasAttributes\",n),o.ensureFlagExists(\"captureSpacesBetweenElements\",n),o.ensureAlwaysArrayExists(n),o.ensureKeyExists(\"declaration\",n),o.ensureKeyExists(\"instruction\",n),o.ensureKeyExists(\"attributes\",n),o.ensureKeyExists(\"text\",n),o.ensureKeyExists(\"comment\",n),o.ensureKeyExists(\"cdata\",n),o.ensureKeyExists(\"doctype\",n),o.ensureKeyExists(\"type\",n),o.ensureKeyExists(\"name\",n),o.ensureKeyExists(\"elements\",n),o.ensureKeyExists(\"parent\",n),o.checkFnExists(\"doctype\",n),o.checkFnExists(\"instruction\",n),o.checkFnExists(\"cdata\",n),o.checkFnExists(\"comment\",n),o.checkFnExists(\"text\",n),o.checkFnExists(\"instructionName\",n),o.checkFnExists(\"elementName\",n),o.checkFnExists(\"attributeName\",n),o.checkFnExists(\"attributeValue\",n),o.checkFnExists(\"attributes\",n),n}(t),r.opt={strictEntities:!0},r.onopentag=p,r.ontext=d,r.oncomment=f,r.onclosetag=m,r.onerror=y,r.oncdata=w,r.ondoctype=g,r.onprocessinginstruction=h,r.write(e).close(),a[n.elementsKey]){var c=a[n.elementsKey];delete a[n.elementsKey],a[n.elementsKey]=c,delete a.text}return a}},1388:(e,t,r)=>{var n=r(4740),s=r(1229);e.exports=function(e,t){var r,i,o;return r=function(e){var t=n.copyOptions(e);return n.ensureSpacesExists(t),t}(t),i=s(e,r),o=\"compact\"in r&&r.compact?\"_parent\":\"parent\",(\"addParent\"in r&&r.addParent?JSON.stringify(i,(function(e,t){return e===o?\"_\":t}),r.spaces):JSON.stringify(i,null,r.spaces)).replace(/\\u2028/g,\"\\\\u2028\").replace(/\\u2029/g,\"\\\\u2029\")}},255:e=>{var t={\"&\":\"&\",'\"':\""\",\"'\":\"'\",\"<\":\"<\",\">\":\">\"};e.exports=function(e){return e&&e.replace?e.replace(/([&\"<>'])/g,(function(e,r){return t[r]})):e}},3479:(e,t,r)=>{var n=r(4155),s=r(255),i=r(2830).Stream;function o(e,t,r){r=r||0;var n,i,a=(n=t,new Array(r||0).join(n||\"\")),c=e;if(\"object\"==typeof e&&(c=e[i=Object.keys(e)[0]])&&c._elem)return c._elem.name=i,c._elem.icount=r,c._elem.indent=t,c._elem.indents=a,c._elem.interrupt=c,c._elem;var u,l=[],h=[];function p(e){Object.keys(e).forEach((function(t){l.push(function(e,t){return e+'=\"'+s(t)+'\"'}(t,e[t]))}))}switch(typeof c){case\"object\":if(null===c)break;c._attr&&p(c._attr),c._cdata&&h.push((\"/g,\"]]]]>\")+\"]]>\"),c.forEach&&(u=!1,h.push(\"\"),c.forEach((function(e){\"object\"==typeof e?\"_attr\"==Object.keys(e)[0]?p(e._attr):h.push(o(e,t,r+1)):(h.pop(),u=!0,h.push(s(e)))})),u||h.push(\"\"));break;default:h.push(s(c))}return{name:i,interrupt:!1,attributes:l,content:h,icount:r,indents:a,indent:t}}function a(e,t,r){if(\"object\"!=typeof t)return e(!1,t);var n=t.interrupt?1:t.content.length;function s(){for(;t.content.length;){var s=t.content.shift();if(void 0!==s){if(i(s))return;a(e,s)}}e(!1,(n>1?t.indents:\"\")+(t.name?\"\":\"\")+(t.indent&&!r?\"\\n\":\"\")),r&&r()}function i(t){return!!t.interrupt&&(t.interrupt.append=e,t.interrupt.end=s,t.interrupt=!1,e(!0),!0)}if(e(!1,t.indents+(t.name?\"<\"+t.name:\"\")+(t.attributes.length?\" \"+t.attributes.join(\" \"):\"\")+(n?t.name?\">\":\"\":t.name?\"/>\":\"\")+(t.indent&&n>1?\"\\n\":\"\")),!n)return e(!1,t.indent?\"\\n\":\"\");i(t)||s()}e.exports=function(e,t){\"object\"!=typeof t&&(t={indent:t});var r,s,c=t.stream?new i:null,u=\"\",l=!1,h=t.indent?!0===t.indent?\" \":t.indent:\"\",p=!0;function d(e){p?n.nextTick(e):e()}function f(e,t){if(void 0!==t&&(u+=t),e&&!l&&(c=c||new i,l=!0),e&&l){var r=u;d((function(){c.emit(\"data\",r)})),u=\"\"}}function m(e,t){a(f,o(e,h,h?1:0),t)}function w(){if(c){var e=u;d((function(){c.emit(\"data\",e),c.emit(\"end\"),c.readable=!1,c.emit(\"close\")}))}}return d((function(){p=!1})),t.declaration&&(s={version:\"1.0\",encoding:(r=t.declaration).encoding||\"UTF-8\"},r.standalone&&(s.standalone=r.standalone),m({\"?xml\":{_attr:s}}),u=u.replace(\"/>\",\"?>\")),e&&e.forEach?e.forEach((function(t,r){var n;r+1===e.length&&(n=w),m(t,n)})):m(e,w),c?(c.readable=!0,c):u},e.exports.element=e.exports.Element=function(){var e=Array.prototype.slice.call(arguments),t={_elem:o(e),push:function(e){if(!this.append)throw new Error(\"not assigned to a parent!\");var t=this,r=this._elem.indent;a(this.append,o(e,r,this._elem.icount+(r?1:0)),(function(){t.append(!0)}))},close:function(e){void 0!==e&&this.push(e),this.end&&this.end()}};return t}}},t={};function r(n){var s=t[n];if(void 0!==s)return s.exports;var i=t[n]={exports:{}};return e[n].call(i.exports,i,i.exports,r),i.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(e){if(\"object\"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var n={};return(()=>{\"use strict\";r.r(n),r.d(n,{AbstractNumbering:()=>Ji,Alignment:()=>D,AlignmentAttributes:()=>L,AlignmentType:()=>m,Attributes:()=>a,BaseEmphasisMark:()=>Q,BaseXmlComponent:()=>e,Body:()=>un,Bookmark:()=>Or,BookmarkEnd:()=>Lr,BookmarkStart:()=>kr,Border:()=>B,BorderElement:()=>P,BorderStyle:()=>w,Column:()=>hn,ColumnAttributes:()=>ln,ColumnBreak:()=>pr,Columns:()=>jr,ColumnsAttributes:()=>zr,Comment:()=>cr,CommentRangeEnd:()=>or,CommentRangeStart:()=>ir,CommentReference:()=>ar,Comments:()=>ur,ConcreteHyperlink:()=>Sr,ConcreteNumbering:()=>to,DeletedTextRun:()=>na,DocGridAttributes:()=>Wr,Document:()=>Ho,DocumentAttributes:()=>pn,DocumentBackground:()=>fn,DocumentBackgroundAttributes:()=>dn,DocumentDefaults:()=>Bo,DocumentGrid:()=>Kr,DocumentGridType:()=>Pe,DotEmphasisMark:()=>te,Drawing:()=>Xt,DropCapType:()=>vn,EMPTY_OBJECT:()=>t,EmphasisMark:()=>ee,EmphasisMarkType:()=>E,ExternalHyperlink:()=>Rr,File:()=>Ho,FootNoteReferenceRunAttributes:()=>qo,FootNotes:()=>ki,Footer:()=>Xo,FooterWrapper:()=>_i,FootnoteReference:()=>Zo,FootnoteReferenceRun:()=>Yo,FrameAnchorType:()=>_n,FrameProperties:()=>An,FramePropertiesAttributes:()=>Tn,FrameWrap:()=>En,GridSpan:()=>ks,Header:()=>$o,HeaderFooterReference:()=>Hr,HeaderFooterReferenceType:()=>Le,HeaderFooterType:()=>De,HeaderWrapper:()=>Fi,HeadingLevel:()=>Se,HeightRule:()=>$s,HorizontalPosition:()=>Ze,HorizontalPositionAlign:()=>y,HorizontalPositionRelativeFrom:()=>xe,HpsMeasureElement:()=>R,HyperlinkType:()=>Oe,IgnoreIfEmptyXmlComponent:()=>i,ImageRun:()=>qt,ImportDotx:()=>wa,ImportedRootElementAttributes:()=>p,ImportedXmlComponent:()=>h,Indent:()=>H,InitializableXmlComponent:()=>f,InsertedTextRun:()=>Jo,InternalHyperlink:()=>Ir,LeaderType:()=>Re,Level:()=>Xi,LevelBase:()=>$i,LevelForOverride:()=>qi,LevelFormat:()=>Ui,LevelOverride:()=>no,LevelSuffix:()=>Hi,LineNumberAttributes:()=>Gr,LineNumberRestartFormat:()=>Fe,LineNumberType:()=>Vr,LineRuleType:()=>Ae,Math:()=>Rn,MathAccentCharacter:()=>Pn,MathAngledBrackets:()=>bs,MathBase:()=>Fn,MathCurlyBrackets:()=>ys,MathDegree:()=>ns,MathDenominator:()=>On,MathFraction:()=>Ln,MathFunction:()=>ls,MathFunctionName:()=>cs,MathFunctionProperties:()=>us,MathIntegral:()=>$n,MathLimitLocation:()=>Mn,MathNAryProperties:()=>Wn,MathNumerator:()=>kn,MathPreSubSuperScript:()=>ts,MathPreSubSuperScriptProperties:()=>es,MathRadical:()=>as,MathRadicalProperties:()=>os,MathRoundBrackets:()=>ws,MathRun:()=>Cn,MathSquareBrackets:()=>gs,MathSubScript:()=>Yn,MathSubScriptElement:()=>Kn,MathSubScriptProperties:()=>Zn,MathSubSuperScript:()=>Qn,MathSubSuperScriptProperties:()=>Jn,MathSum:()=>Vn,MathSuperScript:()=>qn,MathSuperScriptElement:()=>Gn,MathSuperScriptProperties:()=>Xn,Media:()=>Bi,NumberFormat:()=>x,NumberProperties:()=>xr,NumberValueElement:()=>C,Numbering:()=>oo,OnOffElement:()=>I,OutlineLevel:()=>Dr,OverlapType:()=>Gs,Packer:()=>pa,PageBorderDisplay:()=>Be,PageBorderOffsetFrom:()=>Me,PageBorderZOrder:()=>Ue,PageBorders:()=>Xr,PageBreak:()=>hr,PageBreakBefore:()=>dr,PageMargin:()=>Zr,PageMarginAttributes:()=>qr,PageNumber:()=>A,PageNumberSeparator:()=>He,PageNumberType:()=>Jr,PageNumberTypeAttributes:()=>Yr,PageOrientation:()=>ze,PageReference:()=>Fr,PageSize:()=>en,PageSizeAttributes:()=>Qr,PageTextDirection:()=>rn,PageTextDirectionType:()=>je,Paragraph:()=>In,ParagraphProperties:()=>Sn,ParagraphPropertiesDefaults:()=>Po,PrettifyType:()=>la,RelativeHorizontalPosition:()=>Ws,RelativeVerticalPosition:()=>Ks,Run:()=>me,RunFonts:()=>ae,RunProperties:()=>pe,RunPropertiesChange:()=>de,RunPropertiesDefaults:()=>Fo,SectionProperties:()=>cn,SectionType:()=>We,SectionTypeAttributes:()=>nn,SequentialIdentifier:()=>Yt,Shading:()=>Y,ShadingType:()=>_,SimpleField:()=>er,SimpleMailMergeField:()=>tr,SimplePos:()=>Ve,SpaceType:()=>v,Spacing:()=>mr,StringContainer:()=>k,StringEnumValueElement:()=>O,StringValueElement:()=>N,Style:()=>wr,StyleForCharacter:()=>bo,StyleForParagraph:()=>yo,StyleLevel:()=>Vo,Styles:()=>Do,SymbolRun:()=>be,TDirection:()=>Fs,Tab:()=>Jt,TabAttributes:()=>yr,TabStop:()=>gr,TabStopItem:()=>br,TabStopPosition:()=>Ne,TabStopType:()=>Ie,Table:()=>ei,TableAnchorType:()=>js,TableBorders:()=>zs,TableCell:()=>Ms,TableCellBorders:()=>Cs,TableFloatOptionsAttributes:()=>qs,TableFloatProperties:()=>Zs,TableLayout:()=>Js,TableLayoutType:()=>Vs,TableOfContents:()=>Go,TableProperties:()=>Qs,TableRow:()=>si,TableRowHeight:()=>ri,TableRowHeightAttributes:()=>ti,TableRowProperties:()=>ni,TableWidthElement:()=>Rs,TextDirection:()=>Ss,TextRun:()=>we,TextWrappingSide:()=>Ee,TextWrappingType:()=>_e,ThematicBreak:()=>M,Type:()=>sn,Underline:()=>he,UnderlineType:()=>T,VerticalAlign:()=>ke,VerticalAlignAttributes:()=>Br,VerticalAlignElement:()=>Mr,VerticalMerge:()=>Ds,VerticalMergeType:()=>As,VerticalPosition:()=>Je,VerticalPositionAlign:()=>b,VerticalPositionRelativeFrom:()=>ve,WORKAROUND:()=>zo,WORKAROUND2:()=>Mi,WORKAROUND3:()=>d,WORKAROUND4:()=>rs,WidthType:()=>Es,WrapNone:()=>Rt,WrapSquare:()=>Ct,WrapTight:()=>kt,WrapTopAndBottom:()=>Dt,XmlAttributeComponent:()=>o,XmlComponent:()=>s,convertInchesToTwip:()=>ga.convertInchesToTwip,convertMillimetersToTwip:()=>ga.convertMillimetersToTwip,convertToXmlComponent:()=>u,dateTimeValue:()=>ga.dateTimeValue,decimalNumber:()=>ga.decimalNumber,eighthPointMeasureValue:()=>ga.eighthPointMeasureValue,hexColorValue:()=>ga.hexColorValue,hpsMeasureValue:()=>ga.hpsMeasureValue,longHexNumber:()=>ga.longHexNumber,measurementOrPercentValue:()=>ga.measurementOrPercentValue,percentageValue:()=>ga.percentageValue,pointMeasureValue:()=>ga.pointMeasureValue,positiveUniversalMeasureValue:()=>ga.positiveUniversalMeasureValue,sectionMarginDefaults:()=>on,sectionPageSizeDefaults:()=>an,shortHexNumber:()=>ga.shortHexNumber,signedHpsMeasureValue:()=>ga.signedHpsMeasureValue,signedTwipsMeasureValue:()=>ga.signedTwipsMeasureValue,twipsMeasureValue:()=>ga.twipsMeasureValue,uCharHexNumber:()=>ga.uCharHexNumber,uniqueId:()=>ga.uniqueId,uniqueNumericId:()=>ga.uniqueNumericId,universalMeasureValue:()=>ga.universalMeasureValue,unsignedDecimalNumber:()=>ga.unsignedDecimalNumber});class e{constructor(e){this.rootKey=e}}const t=Object.seal({});class s extends e{constructor(e){super(e),this.root=new Array}prepForXml(r){var n;const s=this.root.map((t=>t instanceof e?t.prepForXml(r):t)).filter((e=>void 0!==e));return{[this.rootKey]:s.length?1===s.length&&(null===(n=s[0])||void 0===n?void 0:n._attr)?s[0]:s:t}}addChildElement(e){return this.root.push(e),this}}class i extends s{prepForXml(e){const t=super.prepForXml(e);if(t&&(\"object\"!=typeof t[this.rootKey]||Object.keys(t[this.rootKey]).length))return t}}class o extends e{constructor(e){super(\"_attr\"),this.root=e}prepForXml(e){const t={};return Object.keys(this.root).forEach((e=>{const r=this.root[e];if(void 0!==r){const n=this.xmlKeys&&this.xmlKeys[e]||e;t[n]=r}})),{_attr:t}}}class a extends o{constructor(){super(...arguments),this.xmlKeys={val:\"w:val\",color:\"w:color\",fill:\"w:fill\",space:\"w:space\",sz:\"w:sz\",type:\"w:type\",rsidR:\"w:rsidR\",rsidRPr:\"w:rsidRPr\",rsidSect:\"w:rsidSect\",w:\"w:w\",h:\"w:h\",top:\"w:top\",right:\"w:right\",bottom:\"w:bottom\",left:\"w:left\",header:\"w:header\",footer:\"w:footer\",gutter:\"w:gutter\",linePitch:\"w:linePitch\",pos:\"w:pos\"}}}var c=r(7888);const u=e=>{switch(e.type){case void 0:case\"element\":const t=new h(e.name,e.attributes),r=e.elements||[];for(const e of r){const r=u(e);void 0!==r&&t.push(r)}return t;case\"text\":return e.text;default:return}};class l extends o{}class h extends s{static fromXmlString(e){const t=(0,c.xml2js)(e,{compact:!1});return u(t)}constructor(e,t){super(e),t&&this.root.push(new l(t))}push(e){this.root.push(e)}}class p extends s{constructor(e){super(\"\"),this._attr=e}prepForXml(e){return{_attr:this._attr}}}const d=\"\";class f extends s{constructor(e,t){super(e),t&&(this.root=t.root)}}var m,w,g,y,b,x,v,_,E,T,A,S=r(6595);class I extends s{constructor(e,t=!0){super(e),!0!==t&&this.root.push(new a({val:t}))}}class R extends s{constructor(e,t){super(e),this.root.push(new a({val:(0,S.KR)(t)}))}}class N extends s{constructor(e,t){super(e),this.root.push(new a({val:t}))}}class C extends s{constructor(e,t){super(e),this.root.push(new a({val:t}))}}class O extends s{constructor(e,t){super(e),this.root.push(new a({val:t}))}}class k extends s{constructor(e,t){super(e),this.root.push(t)}}!function(e){e.START=\"start\",e.CENTER=\"center\",e.END=\"end\",e.BOTH=\"both\",e.MEDIUM_KASHIDA=\"mediumKashida\",e.DISTRIBUTE=\"distribute\",e.NUM_TAB=\"numTab\",e.HIGH_KASHIDA=\"highKashida\",e.LOW_KASHIDA=\"lowKashida\",e.THAI_DISTRIBUTE=\"thaiDistribute\",e.LEFT=\"left\",e.RIGHT=\"right\",e.JUSTIFIED=\"both\"}(m||(m={}));class L extends o{constructor(){super(...arguments),this.xmlKeys={val:\"w:val\"}}}class D extends s{constructor(e){super(\"w:jc\"),this.root.push(new L({val:e}))}}class P extends s{constructor(e,{color:t,size:r,space:n,style:s}){super(e),this.root.push(new F({style:s,color:void 0===t?void 0:(0,S.dg)(t),size:void 0===r?void 0:(0,S.LV)(r),space:void 0===n?void 0:(0,S.gg)(n)}))}}class F extends o{constructor(){super(...arguments),this.xmlKeys={style:\"w:val\",color:\"w:color\",size:\"w:sz\",space:\"w:space\"}}}!function(e){e.SINGLE=\"single\",e.DASH_DOT_STROKED=\"dashDotStroked\",e.DASHED=\"dashed\",e.DASH_SMALL_GAP=\"dashSmallGap\",e.DOT_DASH=\"dotDash\",e.DOT_DOT_DASH=\"dotDotDash\",e.DOTTED=\"dotted\",e.DOUBLE=\"double\",e.DOUBLE_WAVE=\"doubleWave\",e.INSET=\"inset\",e.NIL=\"nil\",e.NONE=\"none\",e.OUTSET=\"outset\",e.THICK=\"thick\",e.THICK_THIN_LARGE_GAP=\"thickThinLargeGap\",e.THICK_THIN_MEDIUM_GAP=\"thickThinMediumGap\",e.THICK_THIN_SMALL_GAP=\"thickThinSmallGap\",e.THIN_THICK_LARGE_GAP=\"thinThickLargeGap\",e.THIN_THICK_MEDIUM_GAP=\"thinThickMediumGap\",e.THIN_THICK_SMALL_GAP=\"thinThickSmallGap\",e.THIN_THICK_THIN_LARGE_GAP=\"thinThickThinLargeGap\",e.THIN_THICK_THIN_MEDIUM_GAP=\"thinThickThinMediumGap\",e.THIN_THICK_THIN_SMALL_GAP=\"thinThickThinSmallGap\",e.THREE_D_EMBOSS=\"threeDEmboss\",e.THREE_D_ENGRAVE=\"threeDEngrave\",e.TRIPLE=\"triple\",e.WAVE=\"wave\"}(w||(w={}));class B extends i{constructor(e){super(\"w:pBdr\"),e.top&&this.root.push(new P(\"w:top\",e.top)),e.bottom&&this.root.push(new P(\"w:bottom\",e.bottom)),e.left&&this.root.push(new P(\"w:left\",e.left)),e.right&&this.root.push(new P(\"w:right\",e.right))}}class M extends s{constructor(){super(\"w:pBdr\");const e=new P(\"w:bottom\",{color:\"auto\",space:1,style:w.SINGLE,size:6});this.root.push(e)}}class U extends o{constructor(){super(...arguments),this.xmlKeys={start:\"w:start\",end:\"w:end\",left:\"w:left\",right:\"w:right\",hanging:\"w:hanging\",firstLine:\"w:firstLine\"}}}class H extends s{constructor({start:e,end:t,left:r,right:n,hanging:s,firstLine:i}){super(\"w:ind\"),this.root.push(new U({start:void 0===e?void 0:(0,S.xb)(e),end:void 0===t?void 0:(0,S.xb)(t),left:void 0===r?void 0:(0,S.xb)(r),right:void 0===n?void 0:(0,S.xb)(n),hanging:void 0===s?void 0:(0,S.Jd)(s),firstLine:void 0===i?void 0:(0,S.Jd)(i)}))}}class z extends s{constructor(){super(\"w:br\")}}!function(e){e.BEGIN=\"begin\",e.END=\"end\",e.SEPARATE=\"separate\"}(g||(g={}));class j extends o{constructor(){super(...arguments),this.xmlKeys={type:\"w:fldCharType\",dirty:\"w:dirty\"}}}class W extends s{constructor(e){super(\"w:fldChar\"),this.root.push(new j({type:g.BEGIN,dirty:e}))}}class K extends s{constructor(e){super(\"w:fldChar\"),this.root.push(new j({type:g.SEPARATE,dirty:e}))}}class G extends s{constructor(e){super(\"w:fldChar\"),this.root.push(new j({type:g.END,dirty:e}))}}!function(e){e.CENTER=\"center\",e.INSIDE=\"inside\",e.LEFT=\"left\",e.OUTSIDE=\"outside\",e.RIGHT=\"right\"}(y||(y={})),function(e){e.BOTTOM=\"bottom\",e.CENTER=\"center\",e.INSIDE=\"inside\",e.OUTSIDE=\"outside\",e.TOP=\"top\"}(b||(b={})),function(e){e.DECIMAL=\"decimal\",e.UPPER_ROMAN=\"upperRoman\",e.LOWER_ROMAN=\"lowerRoman\",e.UPPER_LETTER=\"upperLetter\",e.LOWER_LETTER=\"lowerLetter\",e.ORDINAL=\"ordinal\",e.CARDINAL_TEXT=\"cardinalText\",e.ORDINAL_TEXT=\"ordinalText\",e.HEX=\"hex\",e.CHICAGO=\"chicago\",e.IDEOGRAPH_DIGITAL=\"ideographDigital\",e.JAPANESE_COUNTING=\"japaneseCounting\",e.AIUEO=\"aiueo\",e.IROHA=\"iroha\",e.DECIMAL_FULL_WIDTH=\"decimalFullWidth\",e.DECIMAL_HALF_WIDTH=\"decimalHalfWidth\",e.JAPANESE_LEGAL=\"japaneseLegal\",e.JAPANESE_DIGITAL_TEN_THOUSAND=\"japaneseDigitalTenThousand\",e.DECIMAL_ENCLOSED_CIRCLE=\"decimalEnclosedCircle\",e.DECIMAL_FULL_WIDTH_2=\"decimalFullWidth2\",e.AIUEO_FULL_WIDTH=\"aiueoFullWidth\",e.IROHA_FULL_WIDTH=\"irohaFullWidth\",e.DECIMAL_ZERO=\"decimalZero\",e.BULLET=\"bullet\",e.GANADA=\"ganada\",e.CHOSUNG=\"chosung\",e.DECIMAL_ENCLOSED_FULL_STOP=\"decimalEnclosedFullstop\",e.DECIMAL_ENCLOSED_PAREN=\"decimalEnclosedParen\",e.DECIMAL_ENCLOSED_CIRCLE_CHINESE=\"decimalEnclosedCircleChinese\",e.IDEOGRAPH_ENCLOSED_CIRCLE=\"ideographEnclosedCircle\",e.IDEOGRAPH_TRADITIONAL=\"ideographTraditional\",e.IDEOGRAPH_ZODIAC=\"ideographZodiac\",e.IDEOGRAPH_ZODIAC_TRADITIONAL=\"ideographZodiacTraditional\",e.TAIWANESE_COUNTING=\"taiwaneseCounting\",e.IDEOGRAPH_LEGAL_TRADITIONAL=\"ideographLegalTraditional\",e.TAIWANESE_COUNTING_THOUSAND=\"taiwaneseCountingThousand\",e.TAIWANESE_DIGITAL=\"taiwaneseDigital\",e.CHINESE_COUNTING=\"chineseCounting\",e.CHINESE_LEGAL_SIMPLIFIED=\"chineseLegalSimplified\",e.CHINESE_COUNTING_TEN_THOUSAND=\"chineseCountingThousand\",e.KOREAN_DIGITAL=\"koreanDigital\",e.KOREAN_COUNTING=\"koreanCounting\",e.KOREAN_LEGAL=\"koreanLegal\",e.KOREAN_DIGITAL_2=\"koreanDigital2\",e.VIETNAMESE_COUNTING=\"vietnameseCounting\",e.RUSSIAN_LOWER=\"russianLower\",e.RUSSIAN_UPPER=\"russianUpper\",e.NONE=\"none\",e.NUMBER_IN_DASH=\"numberInDash\",e.HEBREW_1=\"hebrew1\",e.HEBREW_2=\"hebrew2\",e.ARABIC_ALPHA=\"arabicAlpha\",e.ARABIC_ABJAD=\"arabicAbjad\",e.HINDI_VOWELS=\"hindiVowels\",e.HINDI_CONSONANTS=\"hindiConsonants\",e.HINDI_NUMBERS=\"hindiNumbers\",e.HINDI_COUNTING=\"hindiCounting\",e.THAI_LETTERS=\"thaiLetters\",e.THAI_NUMBERS=\"thaiNumbers\",e.THAI_COUNTING=\"thaiCounting\",e.BAHT_TEXT=\"bahtText\",e.DOLLAR_TEXT=\"dollarText\"}(x||(x={})),function(e){e.DEFAULT=\"default\",e.PRESERVE=\"preserve\"}(v||(v={}));class V extends o{constructor(){super(...arguments),this.xmlKeys={space:\"xml:space\"}}}class $ extends s{constructor(){super(\"w:instrText\"),this.root.push(new V({space:v.PRESERVE})),this.root.push(\"PAGE\")}}class X extends s{constructor(){super(\"w:instrText\"),this.root.push(new V({space:v.PRESERVE})),this.root.push(\"NUMPAGES\")}}class q extends s{constructor(){super(\"w:instrText\"),this.root.push(new V({space:v.PRESERVE})),this.root.push(\"SECTIONPAGES\")}}class Z extends o{constructor(){super(...arguments),this.xmlKeys={fill:\"w:fill\",color:\"w:color\",type:\"w:val\"}}}class Y extends s{constructor({fill:e,color:t,type:r}){super(\"w:shd\"),this.root.push(new Z({fill:void 0===e?void 0:(0,S.dg)(e),color:void 0===t?void 0:(0,S.dg)(t),type:r}))}}!function(e){e.CLEAR=\"clear\",e.DIAGONAL_CROSS=\"diagCross\",e.DIAGONAL_STRIPE=\"diagStripe\",e.HORIZONTAL_CROSS=\"horzCross\",e.HORIZONTAL_STRIPE=\"horzStripe\",e.NIL=\"nil\",e.PERCENT_5=\"pct5\",e.PERCENT_10=\"pct10\",e.PERCENT_12=\"pct12\",e.PERCENT_15=\"pct15\",e.PERCENT_20=\"pct20\",e.PERCENT_25=\"pct25\",e.PERCENT_30=\"pct30\",e.PERCENT_35=\"pct35\",e.PERCENT_37=\"pct37\",e.PERCENT_40=\"pct40\",e.PERCENT_45=\"pct45\",e.PERCENT_50=\"pct50\",e.PERCENT_55=\"pct55\",e.PERCENT_60=\"pct60\",e.PERCENT_62=\"pct62\",e.PERCENT_65=\"pct65\",e.PERCENT_70=\"pct70\",e.PERCENT_75=\"pct75\",e.PERCENT_80=\"pct80\",e.PERCENT_85=\"pct85\",e.PERCENT_87=\"pct87\",e.PERCENT_90=\"pct90\",e.PERCENT_95=\"pct95\",e.REVERSE_DIAGONAL_STRIPE=\"reverseDiagStripe\",e.SOLID=\"solid\",e.THIN_DIAGONAL_CROSS=\"thinDiagCross\",e.THIN_DIAGONAL_STRIPE=\"thinDiagStripe\",e.THIN_HORIZONTAL_CROSS=\"thinHorzCross\",e.THIN_REVERSE_DIAGONAL_STRIPE=\"thinReverseDiagStripe\",e.THIN_VERTICAL_STRIPE=\"thinVertStripe\",e.VERTICAL_STRIPE=\"vertStripe\"}(_||(_={}));class J extends o{constructor(){super(...arguments),this.xmlKeys={id:\"w:id\",author:\"w:author\",date:\"w:date\"}}}!function(e){e.DOT=\"dot\"}(E||(E={}));class Q extends s{constructor(e){super(\"w:em\"),this.root.push(new a({val:e}))}}class ee extends Q{constructor(e=E.DOT){super(e)}}class te extends Q{constructor(){super(E.DOT)}}class re extends s{constructor(e){super(\"w:spacing\"),this.root.push(new a({val:(0,S.xb)(e)}))}}class ne extends s{constructor(e){super(\"w:color\"),this.root.push(new a({val:(0,S.dg)(e)}))}}class se extends s{constructor(e){super(\"w:highlight\"),this.root.push(new a({val:e}))}}class ie extends s{constructor(e){super(\"w:highlightCs\"),this.root.push(new a({val:e}))}}class oe extends o{constructor(){super(...arguments),this.xmlKeys={ascii:\"w:ascii\",cs:\"w:cs\",eastAsia:\"w:eastAsia\",hAnsi:\"w:hAnsi\",hint:\"w:hint\"}}}class ae extends s{constructor(e,t){if(super(\"w:rFonts\"),\"string\"==typeof e){const r=e;this.root.push(new oe({ascii:r,cs:r,eastAsia:r,hAnsi:r,hint:t}))}else{const t=e;this.root.push(new oe(t))}}}class ce extends s{constructor(e){super(\"w:vertAlign\"),this.root.push(new a({val:e}))}}class ue extends ce{constructor(){super(\"superscript\")}}class le extends ce{constructor(){super(\"subscript\")}}!function(e){e.SINGLE=\"single\",e.WORDS=\"words\",e.DOUBLE=\"double\",e.THICK=\"thick\",e.DOTTED=\"dotted\",e.DOTTEDHEAVY=\"dottedHeavy\",e.DASH=\"dash\",e.DASHEDHEAVY=\"dashedHeavy\",e.DASHLONG=\"dashLong\",e.DASHLONGHEAVY=\"dashLongHeavy\",e.DOTDASH=\"dotDash\",e.DASHDOTHEAVY=\"dashDotHeavy\",e.DOTDOTDASH=\"dotDotDash\",e.DASHDOTDOTHEAVY=\"dashDotDotHeavy\",e.WAVE=\"wave\",e.WAVYHEAVY=\"wavyHeavy\",e.WAVYDOUBLE=\"wavyDouble\",e.NONE=\"none\"}(T||(T={}));class he extends s{constructor(e=T.SINGLE,t){super(\"w:u\"),this.root.push(new a({val:e,color:void 0===t?void 0:(0,S.dg)(t)}))}}class pe extends i{constructor(e){var t,r;if(super(\"w:rPr\"),!e)return;void 0!==e.bold&&this.push(new I(\"w:b\",e.bold)),(void 0===e.boldComplexScript&&void 0!==e.bold||e.boldComplexScript)&&this.push(new I(\"w:bCs\",null!==(t=e.boldComplexScript)&&void 0!==t?t:e.bold)),void 0!==e.italics&&this.push(new I(\"w:i\",e.italics)),(void 0===e.italicsComplexScript&&void 0!==e.italics||e.italicsComplexScript)&&this.push(new I(\"w:iCs\",null!==(r=e.italicsComplexScript)&&void 0!==r?r:e.italics)),e.underline&&this.push(new he(e.underline.type,e.underline.color)),e.emphasisMark&&this.push(new ee(e.emphasisMark.type)),e.color&&this.push(new ne(e.color)),void 0!==e.size&&this.push(new R(\"w:sz\",e.size));const n=void 0===e.sizeComplexScript||!0===e.sizeComplexScript?e.size:e.sizeComplexScript;n&&this.push(new R(\"w:szCs\",n)),void 0!==e.rightToLeft&&this.push(new I(\"w:rtl\",e.rightToLeft)),void 0!==e.smallCaps?this.push(new I(\"w:smallCaps\",e.smallCaps)):void 0!==e.allCaps&&this.push(new I(\"w:caps\",e.allCaps)),void 0!==e.strike&&this.push(new I(\"w:strike\",e.strike)),void 0!==e.doubleStrike&&this.push(new I(\"w:dstrike\",e.doubleStrike)),e.subScript&&this.push(new le),e.superScript&&this.push(new ue),e.style&&this.push(new N(\"w:rStyle\",e.style)),e.font&&(\"string\"==typeof e.font?this.push(new ae(e.font)):\"name\"in e.font?this.push(new ae(e.font.name,e.font.hint)):this.push(new ae(e.font))),e.highlight&&this.push(new se(e.highlight));const s=void 0===e.highlightComplexScript||!0===e.highlightComplexScript?e.highlight:e.highlightComplexScript;s&&this.push(new ie(s)),e.characterSpacing&&this.push(new re(e.characterSpacing)),void 0!==e.emboss&&this.push(new I(\"w:emboss\",e.emboss)),void 0!==e.imprint&&this.push(new I(\"w:imprint\",e.imprint)),e.shading&&this.push(new Y(e.shading)),e.revision&&this.push(new de(e.revision)),e.border&&this.push(new P(\"w:bdr\",e.border)),e.vanish&&this.push(new I(\"w:vanish\",e.vanish)),e.specVanish&&this.push(new I(\"w:specVanish\",e.vanish)),void 0!==e.scale&&this.push(new C(\"w:w\",e.scale))}push(e){this.root.push(e)}}class de extends s{constructor(e){super(\"w:rPrChange\"),this.root.push(new J({id:e.id,author:e.author,date:e.date})),this.addChildElement(new pe(e))}}class fe extends s{constructor(e){var t;return super(\"w:t\"),\"string\"==typeof e?(this.root.push(new V({space:v.PRESERVE})),this.root.push(e),this):(this.root.push(new V({space:null!==(t=e.space)&&void 0!==t?t:v.DEFAULT})),this.root.push(e.text),this)}}!function(e){e.CURRENT=\"CURRENT\",e.TOTAL_PAGES=\"TOTAL_PAGES\",e.TOTAL_PAGES_IN_SECTION=\"TOTAL_PAGES_IN_SECTION\"}(A||(A={}));class me extends s{constructor(e){if(super(\"w:r\"),this.properties=new pe(e),this.root.push(this.properties),e.break)for(let t=0;te.charCodeAt(0))))}return new(r(8764).Buffer)(e,\"base64\")}}class Zt extends s{constructor(e){super(\"w:instrText\"),this.root.push(new V({space:v.PRESERVE})),this.root.push(`SEQ ${e}`)}}class Yt extends me{constructor(e){super({}),this.root.push(new W(!0)),this.root.push(new Zt(e)),this.root.push(new K),this.root.push(new G)}}class Jt extends s{constructor(){super(\"w:tab\")}}class Qt extends o{constructor(){super(...arguments),this.xmlKeys={instr:\"w:instr\"}}}class er extends s{constructor(e,t){super(\"w:fldSimple\"),this.root.push(new Qt({instr:e})),void 0!==t&&this.root.push(new we(t))}}class tr extends er{constructor(e){super(` MERGEFIELD ${e} `,`«${e}»`)}}class rr extends o{constructor(){super(...arguments),this.xmlKeys={id:\"w:id\",initials:\"w:initials\",author:\"w:author\",date:\"w:date\"}}}class nr extends o{constructor(){super(...arguments),this.xmlKeys={id:\"w:id\"}}}class sr extends o{constructor(){super(...arguments),this.xmlKeys={\"xmlns:cx\":\"xmlns:cx\",\"xmlns:cx1\":\"xmlns:cx1\",\"xmlns:cx2\":\"xmlns:cx2\",\"xmlns:cx3\":\"xmlns:cx3\",\"xmlns:cx4\":\"xmlns:cx4\",\"xmlns:cx5\":\"xmlns:cx5\",\"xmlns:cx6\":\"xmlns:cx6\",\"xmlns:cx7\":\"xmlns:cx7\",\"xmlns:cx8\":\"xmlns:cx8\",\"xmlns:mc\":\"xmlns:mc\",\"xmlns:aink\":\"xmlns:aink\",\"xmlns:am3d\":\"xmlns:am3d\",\"xmlns:o\":\"xmlns:o\",\"xmlns:r\":\"xmlns:r\",\"xmlns:m\":\"xmlns:m\",\"xmlns:v\":\"xmlns:v\",\"xmlns:wp14\":\"xmlns:wp14\",\"xmlns:wp\":\"xmlns:wp\",\"xmlns:w10\":\"xmlns:w10\",\"xmlns:w\":\"xmlns:w\",\"xmlns:w14\":\"xmlns:w14\",\"xmlns:w15\":\"xmlns:w15\",\"xmlns:w16cex\":\"xmlns:w16cex\",\"xmlns:w16cid\":\"xmlns:w16cid\",\"xmlns:w16\":\"xmlns:w16\",\"xmlns:w16sdtdh\":\"xmlns:w16sdtdh\",\"xmlns:w16se\":\"xmlns:w16se\",\"xmlns:wpg\":\"xmlns:wpg\",\"xmlns:wpi\":\"xmlns:wpi\",\"xmlns:wne\":\"xmlns:wne\",\"xmlns:wps\":\"xmlns:wps\"}}}class ir extends s{constructor(e){super(\"w:commentRangeStart\"),this.root.push(new nr({id:e}))}}class or extends s{constructor(e){super(\"w:commentRangeEnd\"),this.root.push(new nr({id:e}))}}class ar extends s{constructor(e){super(\"w:commentReference\"),this.root.push(new nr({id:e}))}}class cr extends s{constructor({id:e,initials:t,author:r,date:n=new Date,text:s}){super(\"w:comment\"),this.root.push(new rr({id:e,initials:t,author:r,date:n.toISOString()})),this.root.push(new In({children:[new we(s)]}))}}class ur extends s{constructor({children:e}){super(\"w:comments\"),this.root.push(new sr({\"xmlns:cx\":\"http://schemas.microsoft.com/office/drawing/2014/chartex\",\"xmlns:cx1\":\"http://schemas.microsoft.com/office/drawing/2015/9/8/chartex\",\"xmlns:cx2\":\"http://schemas.microsoft.com/office/drawing/2015/10/21/chartex\",\"xmlns:cx3\":\"http://schemas.microsoft.com/office/drawing/2016/5/9/chartex\",\"xmlns:cx4\":\"http://schemas.microsoft.com/office/drawing/2016/5/10/chartex\",\"xmlns:cx5\":\"http://schemas.microsoft.com/office/drawing/2016/5/11/chartex\",\"xmlns:cx6\":\"http://schemas.microsoft.com/office/drawing/2016/5/12/chartex\",\"xmlns:cx7\":\"http://schemas.microsoft.com/office/drawing/2016/5/13/chartex\",\"xmlns:cx8\":\"http://schemas.microsoft.com/office/drawing/2016/5/14/chartex\",\"xmlns:mc\":\"http://schemas.openxmlformats.org/markup-compatibility/2006\",\"xmlns:aink\":\"http://schemas.microsoft.com/office/drawing/2016/ink\",\"xmlns:am3d\":\"http://schemas.microsoft.com/office/drawing/2017/model3d\",\"xmlns:o\":\"urn:schemas-microsoft-com:office:office\",\"xmlns:r\":\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",\"xmlns:m\":\"http://schemas.openxmlformats.org/officeDocument/2006/math\",\"xmlns:v\":\"urn:schemas-microsoft-com:vml\",\"xmlns:wp14\":\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\",\"xmlns:wp\":\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\",\"xmlns:w10\":\"urn:schemas-microsoft-com:office:word\",\"xmlns:w\":\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\",\"xmlns:w14\":\"http://schemas.microsoft.com/office/word/2010/wordml\",\"xmlns:w15\":\"http://schemas.microsoft.com/office/word/2012/wordml\",\"xmlns:w16cex\":\"http://schemas.microsoft.com/office/word/2018/wordml/cex\",\"xmlns:w16cid\":\"http://schemas.microsoft.com/office/word/2016/wordml/cid\",\"xmlns:w16\":\"http://schemas.microsoft.com/office/word/2018/wordml\",\"xmlns:w16sdtdh\":\"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash\",\"xmlns:w16se\":\"http://schemas.microsoft.com/office/word/2015/wordml/symex\",\"xmlns:wpg\":\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\",\"xmlns:wpi\":\"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\",\"xmlns:wne\":\"http://schemas.microsoft.com/office/word/2006/wordml\",\"xmlns:wps\":\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\"}));for(const t of e)this.root.push(new cr(t))}}!function(e){e.COLUMN=\"column\",e.PAGE=\"page\"}(Te||(Te={}));class lr extends s{constructor(e){super(\"w:br\"),this.root.push(new a({type:e}))}}class hr extends me{constructor(){super({}),this.root.push(new lr(Te.PAGE))}}class pr extends me{constructor(){super({}),this.root.push(new lr(Te.COLUMN))}}class dr extends s{constructor(){super(\"w:pageBreakBefore\")}}!function(e){e.AT_LEAST=\"atLeast\",e.EXACTLY=\"exactly\",e.EXACT=\"exact\",e.AUTO=\"auto\"}(Ae||(Ae={}));class fr extends o{constructor(){super(...arguments),this.xmlKeys={after:\"w:after\",before:\"w:before\",line:\"w:line\",lineRule:\"w:lineRule\"}}}class mr extends s{constructor(e){super(\"w:spacing\"),this.root.push(new fr(e))}}!function(e){e.HEADING_1=\"Heading1\",e.HEADING_2=\"Heading2\",e.HEADING_3=\"Heading3\",e.HEADING_4=\"Heading4\",e.HEADING_5=\"Heading5\",e.HEADING_6=\"Heading6\",e.TITLE=\"Title\"}(Se||(Se={}));class wr extends s{constructor(e){super(\"w:pStyle\"),this.root.push(new a({val:e}))}}class gr extends s{constructor(e){super(\"w:tabs\");for(const t of e)this.root.push(new br(t))}}!function(e){e.LEFT=\"left\",e.RIGHT=\"right\",e.CENTER=\"center\",e.BAR=\"bar\",e.CLEAR=\"clear\",e.DECIMAL=\"decimal\",e.END=\"end\",e.NUM=\"num\",e.START=\"start\"}(Ie||(Ie={})),function(e){e.DOT=\"dot\",e.HYPHEN=\"hyphen\",e.MIDDLE_DOT=\"middleDot\",e.NONE=\"none\",e.UNDERSCORE=\"underscore\"}(Re||(Re={})),function(e){e[e.MAX=9026]=\"MAX\"}(Ne||(Ne={}));class yr extends o{constructor(){super(...arguments),this.xmlKeys={val:\"w:val\",pos:\"w:pos\",leader:\"w:leader\"}}}class br extends s{constructor({type:e,position:t,leader:r}){super(\"w:tab\"),this.root.push(new yr({val:e,pos:t,leader:r}))}}class xr extends s{constructor(e,t){super(\"w:numPr\"),this.root.push(new vr(t)),this.root.push(new _r(e))}}class vr extends s{constructor(e){if(super(\"w:ilvl\"),e>9)throw new Error(\"Level cannot be greater than 9. Read more here: https://answers.microsoft.com/en-us/msoffice/forum/all/does-word-support-more-than-9-list-levels/d130fdcd-1781-446d-8c84-c6c79124e4d7\");this.root.push(new a({val:e}))}}class _r extends s{constructor(e){super(\"w:numId\"),this.root.push(new a({val:\"string\"==typeof e?`{${e}}`:e}))}}class Er extends o{constructor(){super(...arguments),this.xmlKeys={id:\"Id\",type:\"Type\",target:\"Target\",targetMode:\"TargetMode\"}}}!function(e){e.EXTERNAL=\"External\"}(Ce||(Ce={}));class Tr extends s{constructor(e,t,r,n){super(\"Relationship\"),this.root.push(new Er({id:e,type:t,target:r,targetMode:n}))}}class Ar extends o{constructor(){super(...arguments),this.xmlKeys={id:\"r:id\",history:\"w:history\",anchor:\"w:anchor\"}}}!function(e){e.INTERNAL=\"INTERNAL\",e.EXTERNAL=\"EXTERNAL\"}(Oe||(Oe={}));class Sr extends s{constructor(e,t,r){super(\"w:hyperlink\"),this.linkId=t;const n={history:1,anchor:r||void 0,id:r?void 0:`rId${this.linkId}`},s=new Ar(n);this.root.push(s),e.forEach((e=>{this.root.push(e)}))}}class Ir extends Sr{constructor(e){super(e.children,(0,Ke.EL)(),e.anchor)}}class Rr extends s{constructor(e){super(\"w:externalHyperlink\"),this.options=e}}class Nr extends o{constructor(){super(...arguments),this.xmlKeys={id:\"w:id\",name:\"w:name\"}}}class Cr extends o{constructor(){super(...arguments),this.xmlKeys={id:\"w:id\"}}}class Or{constructor(e){const t=(0,Ke.NY)();this.start=new kr(e.id,t),this.children=e.children,this.end=new Lr(t)}}class kr extends s{constructor(e,t){super(\"w:bookmarkStart\");const r=new Nr({name:e,id:t});this.root.push(r)}}class Lr extends s{constructor(e){super(\"w:bookmarkEnd\");const t=new Cr({id:e});this.root.push(t)}}class Dr extends s{constructor(e){super(\"w:outlineLvl\"),this.level=e,this.root.push(new a({val:e}))}}class Pr extends s{constructor(e,t={}){super(\"w:instrText\"),this.root.push(new V({space:v.PRESERVE}));let r=`PAGEREF ${e}`;t.hyperlink&&(r=`${r} \\\\h`),t.useRelativePosition&&(r=`${r} \\\\p`),this.root.push(r)}}class Fr extends me{constructor(e,t={}){super({children:[new W(!0),new Pr(e,t),new G]})}}!function(e){e.BOTTOM=\"bottom\",e.CENTER=\"center\",e.TOP=\"top\"}(ke||(ke={}));class Br extends o{constructor(){super(...arguments),this.xmlKeys={verticalAlign:\"w:val\"}}}class Mr extends s{constructor(e){super(\"w:vAlign\"),this.root.push(new Br({verticalAlign:e}))}}!function(e){e.DEFAULT=\"default\",e.FIRST=\"first\",e.EVEN=\"even\"}(Le||(Le={}));class Ur extends o{constructor(){super(...arguments),this.xmlKeys={type:\"w:type\",id:\"r:id\"}}}!function(e){e.HEADER=\"w:headerReference\",e.FOOTER=\"w:footerReference\"}(De||(De={}));class Hr extends s{constructor(e,t){super(e),this.root.push(new Ur({type:t.type||Le.DEFAULT,id:`rId${t.id}`}))}}class zr extends o{constructor(){super(...arguments),this.xmlKeys={space:\"w:space\",count:\"w:num\",separate:\"w:sep\",equalWidth:\"w:equalWidth\"}}}class jr extends s{constructor({space:e,count:t,separate:r,equalWidth:n,children:s}){super(\"w:cols\"),this.root.push(new zr({space:void 0===e?void 0:(0,S.Jd)(e),count:void 0===t?void 0:(0,S.vH)(t),separate:r,equalWidth:n})),!n&&s&&s.forEach((e=>this.addChildElement(e)))}}!function(e){e.DEFAULT=\"default\",e.LINES=\"lines\",e.LINES_AND_CHARS=\"linesAndChars\",e.SNAP_TO_CHARS=\"snapToChars\"}(Pe||(Pe={}));class Wr extends o{constructor(){super(...arguments),this.xmlKeys={type:\"w:type\",linePitch:\"w:linePitch\",charSpace:\"w:charSpace\"}}}class Kr extends s{constructor(e,t,r){super(\"w:docGrid\"),this.root.push(new Wr({type:r,linePitch:(0,S.vH)(e),charSpace:t?(0,S.vH)(t):void 0}))}}!function(e){e.NEW_PAGE=\"newPage\",e.NEW_SECTION=\"newSection\",e.CONTINUOUS=\"continuous\"}(Fe||(Fe={}));class Gr extends o{constructor(){super(...arguments),this.xmlKeys={countBy:\"w:countBy\",start:\"w:start\",restart:\"w:restart\",distance:\"w:distance\"}}}class Vr extends s{constructor({countBy:e,start:t,restart:r,distance:n}){super(\"w:lnNumType\"),this.root.push(new Gr({countBy:void 0===e?void 0:(0,S.vH)(e),start:void 0===t?void 0:(0,S.vH)(t),restart:r,distance:void 0===n?void 0:(0,S.Jd)(n)}))}}!function(e){e.ALL_PAGES=\"allPages\",e.FIRST_PAGE=\"firstPage\",e.NOT_FIRST_PAGE=\"notFirstPage\"}(Be||(Be={})),function(e){e.PAGE=\"page\",e.TEXT=\"text\"}(Me||(Me={})),function(e){e.BACK=\"back\",e.FRONT=\"front\"}(Ue||(Ue={}));class $r extends o{constructor(){super(...arguments),this.xmlKeys={display:\"w:display\",offsetFrom:\"w:offsetFrom\",zOrder:\"w:zOrder\"}}}class Xr extends i{constructor(e){if(super(\"w:pgBorders\"),!e)return this;e.pageBorders?this.root.push(new $r({display:e.pageBorders.display,offsetFrom:e.pageBorders.offsetFrom,zOrder:e.pageBorders.zOrder})):this.root.push(new $r({})),e.pageBorderTop&&this.root.push(new P(\"w:top\",e.pageBorderTop)),e.pageBorderLeft&&this.root.push(new P(\"w:left\",e.pageBorderLeft)),e.pageBorderBottom&&this.root.push(new P(\"w:bottom\",e.pageBorderBottom)),e.pageBorderRight&&this.root.push(new P(\"w:right\",e.pageBorderRight))}}class qr extends o{constructor(){super(...arguments),this.xmlKeys={top:\"w:top\",right:\"w:right\",bottom:\"w:bottom\",left:\"w:left\",header:\"w:header\",footer:\"w:footer\",gutter:\"w:gutter\"}}}class Zr extends s{constructor(e,t,r,n,s,i,o){super(\"w:pgMar\"),this.root.push(new qr({top:(0,S.xb)(e),right:(0,S.Jd)(t),bottom:(0,S.xb)(r),left:(0,S.Jd)(n),header:(0,S.Jd)(s),footer:(0,S.Jd)(i),gutter:(0,S.Jd)(o)}))}}!function(e){e.HYPHEN=\"hyphen\",e.PERIOD=\"period\",e.COLON=\"colon\",e.EM_DASH=\"emDash\",e.EN_DASH=\"endash\"}(He||(He={}));class Yr extends o{constructor(){super(...arguments),this.xmlKeys={start:\"w:start\",formatType:\"w:fmt\",separator:\"w:chapSep\"}}}class Jr extends s{constructor({start:e,formatType:t,separator:r}){super(\"w:pgNumType\"),this.root.push(new Yr({start:void 0===e?void 0:(0,S.vH)(e),formatType:t,separator:r}))}}!function(e){e.PORTRAIT=\"portrait\",e.LANDSCAPE=\"landscape\"}(ze||(ze={}));class Qr extends o{constructor(){super(...arguments),this.xmlKeys={width:\"w:w\",height:\"w:h\",orientation:\"w:orient\"}}}class en extends s{constructor(e,t,r){super(\"w:pgSz\");const n=r===ze.LANDSCAPE,s=(0,S.Jd)(e),i=(0,S.Jd)(t);this.root.push(new Qr({width:n?i:s,height:n?s:i,orientation:r}))}}!function(e){e.LEFT_TO_RIGHT_TOP_TO_BOTTOM=\"lrTb\",e.TOP_TO_BOTTOM_RIGHT_TO_LEFT=\"tbRl\"}(je||(je={}));class tn extends o{constructor(){super(...arguments),this.xmlKeys={val:\"w:val\"}}}class rn extends s{constructor(e){super(\"w:textDirection\"),this.root.push(new tn({val:e}))}}!function(e){e.NEXT_PAGE=\"nextPage\",e.NEXT_COLUMN=\"nextColumn\",e.CONTINUOUS=\"continuous\",e.EVEN_PAGE=\"evenPage\",e.ODD_PAGE=\"oddPage\"}(We||(We={}));class nn extends o{constructor(){super(...arguments),this.xmlKeys={val:\"w:val\"}}}class sn extends s{constructor(e){super(\"w:type\"),this.root.push(new nn({val:e}))}}const on={TOP:\"1in\",RIGHT:\"1in\",BOTTOM:\"1in\",LEFT:\"1in\",HEADER:708,FOOTER:708,GUTTER:0},an={WIDTH:11906,HEIGHT:16838,ORIENTATION:ze.PORTRAIT};class cn extends s{constructor({page:{size:{width:e=an.WIDTH,height:t=an.HEIGHT,orientation:r=an.ORIENTATION}={},margin:{top:n=on.TOP,right:s=on.RIGHT,bottom:i=on.BOTTOM,left:o=on.LEFT,header:a=on.HEADER,footer:c=on.FOOTER,gutter:u=on.GUTTER}={},pageNumbers:l={},borders:h,textDirection:p}={},grid:{linePitch:d=360,charSpace:f,type:m}={},headerWrapperGroup:w={},footerWrapperGroup:g={},lineNumbers:y,titlePage:b,verticalAlign:x,column:v,type:_}={}){super(\"w:sectPr\"),this.addHeaderFooterGroup(De.HEADER,w),this.addHeaderFooterGroup(De.FOOTER,g),_&&this.root.push(new sn(_)),this.root.push(new en(e,t,r)),this.root.push(new Zr(n,s,i,o,a,c,u)),h&&this.root.push(new Xr(h)),y&&this.root.push(new Vr(y)),this.root.push(new Jr(l)),v&&this.root.push(new jr(v)),x&&this.root.push(new Mr(x)),void 0!==b&&this.root.push(new I(\"w:titlePg\",b)),p&&this.root.push(new rn(p)),this.root.push(new Kr(d,f,m))}addHeaderFooterGroup(e,t){t.default&&this.root.push(new Hr(e,{type:Le.DEFAULT,id:t.default.View.ReferenceId})),t.first&&this.root.push(new Hr(e,{type:Le.FIRST,id:t.first.View.ReferenceId})),t.even&&this.root.push(new Hr(e,{type:Le.EVEN,id:t.even.View.ReferenceId}))}}class un extends s{constructor(){super(\"w:body\"),this.sections=[]}addSection(e){const t=this.sections.pop();this.root.push(this.createSectionParagraph(t)),this.sections.push(new cn(e))}prepForXml(e){return 1===this.sections.length&&(this.root.splice(0,1),this.root.push(this.sections.pop())),super.prepForXml(e)}push(e){this.root.push(e)}createSectionParagraph(e){const t=new In({}),r=new Sn({});return r.push(e),t.addChildElement(r),t}}class ln extends o{constructor(){super(...arguments),this.xmlKeys={width:\"w:w\",space:\"w:space\"}}}class hn extends s{constructor({width:e,space:t}){super(\"w:col\"),this.root.push(new ln({width:(0,S.Jd)(e),space:void 0===t?void 0:(0,S.Jd)(t)}))}}class pn extends o{constructor(){super(...arguments),this.xmlKeys={wpc:\"xmlns:wpc\",mc:\"xmlns:mc\",o:\"xmlns:o\",r:\"xmlns:r\",m:\"xmlns:m\",v:\"xmlns:v\",wp14:\"xmlns:wp14\",wp:\"xmlns:wp\",w10:\"xmlns:w10\",w:\"xmlns:w\",w14:\"xmlns:w14\",w15:\"xmlns:w15\",wpg:\"xmlns:wpg\",wpi:\"xmlns:wpi\",wne:\"xmlns:wne\",wps:\"xmlns:wps\",Ignorable:\"mc:Ignorable\",cp:\"xmlns:cp\",dc:\"xmlns:dc\",dcterms:\"xmlns:dcterms\",dcmitype:\"xmlns:dcmitype\",xsi:\"xmlns:xsi\",type:\"xsi:type\",cx:\"xmlns:cx\",cx1:\"xmlns:cx1\",cx2:\"xmlns:cx2\",cx3:\"xmlns:cx3\",cx4:\"xmlns:cx4\",cx5:\"xmlns:cx5\",cx6:\"xmlns:cx6\",cx7:\"xmlns:cx7\",cx8:\"xmlns:cx8\",aink:\"xmlns:aink\",am3d:\"xmlns:am3d\",w16cex:\"xmlns:w16cex\",w16cid:\"xmlns:w16cid\",w16:\"xmlns:w16\",w16sdtdh:\"xmlns:w16sdtdh\",w16se:\"xmlns:w16se\"}}}class dn extends o{constructor(){super(...arguments),this.xmlKeys={color:\"w:color\",themeColor:\"w:themeColor\",themeShade:\"w:themeShade\",themeTint:\"w:themeTint\"}}}class fn extends s{constructor(e){super(\"w:background\"),this.root.push(new dn({color:void 0===e.color?void 0:(0,S.dg)(e.color),themeColor:e.themeColor,themeShade:void 0===e.themeShade?void 0:(0,S.xD)(e.themeShade),themeTint:void 0===e.themeTint?void 0:(0,S.xD)(e.themeTint)}))}}class mn extends s{constructor(e){super(\"w:document\"),this.root.push(new pn({wpc:\"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\",mc:\"http://schemas.openxmlformats.org/markup-compatibility/2006\",o:\"urn:schemas-microsoft-com:office:office\",r:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",m:\"http://schemas.openxmlformats.org/officeDocument/2006/math\",v:\"urn:schemas-microsoft-com:vml\",wp14:\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\",wp:\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\",w10:\"urn:schemas-microsoft-com:office:word\",w:\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\",w14:\"http://schemas.microsoft.com/office/word/2010/wordml\",w15:\"http://schemas.microsoft.com/office/word/2012/wordml\",wpg:\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\",wpi:\"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\",wne:\"http://schemas.microsoft.com/office/word/2006/wordml\",wps:\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\",cx:\"http://schemas.microsoft.com/office/drawing/2014/chartex\",cx1:\"http://schemas.microsoft.com/office/drawing/2015/9/8/chartex\",cx2:\"http://schemas.microsoft.com/office/drawing/2015/10/21/chartex\",cx3:\"http://schemas.microsoft.com/office/drawing/2016/5/9/chartex\",cx4:\"http://schemas.microsoft.com/office/drawing/2016/5/10/chartex\",cx5:\"http://schemas.microsoft.com/office/drawing/2016/5/11/chartex\",cx6:\"http://schemas.microsoft.com/office/drawing/2016/5/12/chartex\",cx7:\"http://schemas.microsoft.com/office/drawing/2016/5/13/chartex\",cx8:\"http://schemas.microsoft.com/office/drawing/2016/5/14/chartex\",aink:\"http://schemas.microsoft.com/office/drawing/2016/ink\",am3d:\"http://schemas.microsoft.com/office/drawing/2017/model3d\",w16cex:\"http://schemas.microsoft.com/office/word/2018/wordml/cex\",w16cid:\"http://schemas.microsoft.com/office/word/2016/wordml/cid\",w16:\"http://schemas.microsoft.com/office/word/2018/wordml\",w16sdtdh:\"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash\",w16se:\"http://schemas.microsoft.com/office/word/2015/wordml/symex\",Ignorable:\"w14 w15 wp14\"})),this.body=new un,e.background&&this.root.push(new fn(e.background)),this.root.push(this.body)}add(e){return this.body.push(e),this}get Body(){return this.body}}class wn extends o{constructor(){super(...arguments),this.xmlKeys={xmlns:\"xmlns\"}}}class gn extends s{constructor(){super(\"Relationships\"),this.root.push(new wn({xmlns:\"http://schemas.openxmlformats.org/package/2006/relationships\"}))}addRelationship(e){this.root.push(e)}createRelationship(e,t,r,n){const s=new Tr(`rId${e}`,t,r,n);return this.addRelationship(s),s}get RelationshipCount(){return this.root.length-1}}class yn{constructor(e){this.document=new mn(e),this.relationships=new gn}get View(){return this.document}get Relationships(){return this.relationships}}class bn extends o{constructor(){super(...arguments),this.xmlKeys={val:\"w:val\"}}}class xn extends s{constructor(){super(\"w:wordWrap\"),this.root.push(new bn({val:0}))}}var vn,_n,En;!function(e){e.NONE=\"none\",e.DROP=\"drop\",e.MARGIN=\"margin\"}(vn||(vn={})),function(e){e.MARGIN=\"margin\",e.PAGE=\"page\",e.TEXT=\"text\"}(_n||(_n={})),function(e){e.AROUND=\"around\",e.AUTO=\"auto\",e.NONE=\"none\",e.NOT_BESIDE=\"notBeside\",e.THROUGH=\"through\",e.TIGHT=\"tight\"}(En||(En={}));class Tn extends o{constructor(){super(...arguments),this.xmlKeys={anchorLock:\"w:anchorLock\",dropCap:\"w:dropCap\",width:\"w:w\",height:\"w:h\",x:\"w:x\",y:\"w:y\",anchorHorizontal:\"w:hAnchor\",anchorVertical:\"w:vAnchor\",spaceHorizontal:\"w:hSpace\",spaceVertical:\"w:vSpace\",rule:\"w:hRule\",alignmentX:\"w:xAlign\",alignmentY:\"w:yAlign\",lines:\"w:lines\",wrap:\"w:wrap\"}}}class An extends s{constructor(e){var t,r;super(\"w:framePr\"),this.root.push(new Tn({anchorLock:e.anchorLock,dropCap:e.dropCap,width:e.width,height:e.height,x:e.position?e.position.x:void 0,y:e.position?e.position.y:void 0,anchorHorizontal:e.anchor.horizontal,anchorVertical:e.anchor.vertical,spaceHorizontal:null===(t=e.space)||void 0===t?void 0:t.horizontal,spaceVertical:null===(r=e.space)||void 0===r?void 0:r.vertical,rule:e.rule,alignmentX:e.alignment?e.alignment.x:void 0,alignmentY:e.alignment?e.alignment.y:void 0,lines:e.lines,wrap:e.wrap}))}}class Sn extends i{constructor(e){var t,r;if(super(\"w:pPr\"),this.numberingReferences=[],!e)return this;e.heading&&this.push(new wr(e.heading)),e.bullet&&this.push(new wr(\"ListParagraph\")),e.numbering&&(e.style||e.heading||e.numbering.custom||this.push(new wr(\"ListParagraph\"))),e.style&&this.push(new wr(e.style)),void 0!==e.keepNext&&this.push(new I(\"w:keepNext\",e.keepNext)),void 0!==e.keepLines&&this.push(new I(\"w:keepLines\",e.keepLines)),e.pageBreakBefore&&this.push(new dr),e.frame&&this.push(new An(e.frame)),void 0!==e.widowControl&&this.push(new I(\"w:widowControl\",e.widowControl)),e.bullet&&this.push(new xr(1,e.bullet.level)),e.numbering&&(this.numberingReferences.push({reference:e.numbering.reference,instance:null!==(t=e.numbering.instance)&&void 0!==t?t:0}),this.push(new xr(`${e.numbering.reference}-${null!==(r=e.numbering.instance)&&void 0!==r?r:0}`,e.numbering.level))),e.border&&this.push(new B(e.border)),e.thematicBreak&&this.push(new M),e.shading&&this.push(new Y(e.shading)),e.wordWrap&&this.push(new xn);const n=[...e.rightTabStop?[{type:Ie.RIGHT,position:e.rightTabStop}]:[],...e.tabStops?e.tabStops:[],...e.leftTabStop?[{type:Ie.LEFT,position:e.leftTabStop}]:[]];n.length>0&&this.push(new gr(n)),void 0!==e.bidirectional&&this.push(new I(\"w:bidi\",e.bidirectional)),e.spacing&&this.push(new mr(e.spacing)),e.indent&&this.push(new H(e.indent)),void 0!==e.contextualSpacing&&this.push(new I(\"w:contextualSpacing\",e.contextualSpacing)),e.alignment&&this.push(new D(e.alignment)),void 0!==e.outlineLevel&&this.push(new Dr(e.outlineLevel)),void 0!==e.suppressLineNumbers&&this.push(new I(\"w:suppressLineNumbers\",e.suppressLineNumbers))}push(e){this.root.push(e)}prepForXml(e){if(e.viewWrapper instanceof yn)for(const t of this.numberingReferences)e.file.Numbering.createConcreteNumberingInstance(t.reference,t.instance);return super.prepForXml(e)}}class In extends s{constructor(e){if(super(\"w:p\"),\"string\"==typeof e)return this.properties=new Sn({}),this.root.push(this.properties),this.root.push(new we(e)),this;if(this.properties=new Sn(e),this.root.push(this.properties),e.text&&this.root.push(new we(e.text)),e.children)for(const t of e.children)if(t instanceof Or){this.root.push(t.start);for(const e of t.children)this.root.push(e);this.root.push(t.end)}else this.root.push(t)}prepForXml(e){for(const t of this.root)if(t instanceof Rr){const r=this.root.indexOf(t),n=new Sr(t.options.children,(0,Ke.EL)());e.viewWrapper.Relationships.createRelationship(n.linkId,\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",t.options.link,Ce.EXTERNAL),this.root[r]=n}return super.prepForXml(e)}addRunToFront(e){return this.root.splice(1,0,e),this}}class Rn extends s{constructor(e){super(\"m:oMath\");for(const t of e.children)this.root.push(t)}}class Nn extends s{constructor(e){super(\"m:t\"),this.root.push(e)}}class Cn extends s{constructor(e){super(\"m:r\"),this.root.push(new Nn(e))}}class On extends s{constructor(e){super(\"m:den\");for(const t of e)this.root.push(t)}}class kn extends s{constructor(e){super(\"m:num\");for(const t of e)this.root.push(t)}}class Ln extends s{constructor(e){super(\"m:f\"),this.root.push(new kn(e.numerator)),this.root.push(new On(e.denominator))}}class Dn extends o{constructor(){super(...arguments),this.xmlKeys={accent:\"m:val\"}}}class Pn extends s{constructor(e){super(\"m:chr\"),this.root.push(new Dn({accent:e}))}}class Fn extends s{constructor(e){super(\"m:e\");for(const t of e)this.root.push(t)}}class Bn extends o{constructor(){super(...arguments),this.xmlKeys={value:\"m:val\"}}}class Mn extends s{constructor(){super(\"m:limLoc\"),this.root.push(new Bn({value:\"undOvr\"}))}}class Un extends o{constructor(){super(...arguments),this.xmlKeys={hide:\"m:val\"}}}class Hn extends s{constructor(){super(\"m:subHide\"),this.root.push(new Un({hide:1}))}}class zn extends o{constructor(){super(...arguments),this.xmlKeys={hide:\"m:val\"}}}class jn extends s{constructor(){super(\"m:supHide\"),this.root.push(new zn({hide:1}))}}class Wn extends s{constructor(e,t,r){super(\"m:naryPr\"),e&&this.root.push(new Pn(e)),this.root.push(new Mn),t||this.root.push(new jn),r||this.root.push(new Hn)}}class Kn extends s{constructor(e){super(\"m:sub\");for(const t of e)this.root.push(t)}}class Gn extends s{constructor(e){super(\"m:sup\");for(const t of e)this.root.push(t)}}class Vn extends s{constructor(e){super(\"m:nary\"),this.root.push(new Wn(\"∑\",!!e.superScript,!!e.subScript)),e.subScript&&this.root.push(new Kn(e.subScript)),e.superScript&&this.root.push(new Gn(e.superScript)),this.root.push(new Fn(e.children))}}class $n extends s{constructor(e){super(\"m:nary\"),this.root.push(new Wn(\"\",!!e.superScript,!!e.subScript)),e.subScript&&this.root.push(new Kn(e.subScript)),e.superScript&&this.root.push(new Gn(e.superScript)),this.root.push(new Fn(e.children))}}class Xn extends s{constructor(){super(\"m:sSupPr\")}}class qn extends s{constructor(e){super(\"m:sSup\"),this.root.push(new Xn),this.root.push(new Fn(e.children)),this.root.push(new Gn(e.superScript))}}class Zn extends s{constructor(){super(\"m:sSubPr\")}}class Yn extends s{constructor(e){super(\"m:sSub\"),this.root.push(new Zn),this.root.push(new Fn(e.children)),this.root.push(new Kn(e.subScript))}}class Jn extends s{constructor(){super(\"m:sSubSupPr\")}}class Qn extends s{constructor(e){super(\"m:sSubSup\"),this.root.push(new Jn),this.root.push(new Fn(e.children)),this.root.push(new Kn(e.subScript)),this.root.push(new Gn(e.superScript))}}class es extends s{constructor(){super(\"m:sPrePr\")}}class ts extends s{constructor(e){super(\"m:sPre\"),this.root.push(new es),this.root.push(new Fn(e.children)),this.root.push(new Kn(e.subScript)),this.root.push(new Gn(e.superScript))}}const rs=\"\";class ns extends s{constructor(e){if(super(\"m:deg\"),e)for(const t of e)this.root.push(t)}}class ss extends o{constructor(){super(...arguments),this.xmlKeys={hide:\"m:val\"}}}class is extends s{constructor(){super(\"m:degHide\"),this.root.push(new ss({hide:1}))}}class os extends s{constructor(e){super(\"m:radPr\"),e||this.root.push(new is)}}class as extends s{constructor(e){super(\"m:rad\"),this.root.push(new os(!!e.degree)),this.root.push(new ns(e.degree)),this.root.push(new Fn(e.children))}}class cs extends s{constructor(e){super(\"m:fName\");for(const t of e)this.root.push(t)}}class us extends s{constructor(){super(\"m:funcPr\")}}class ls extends s{constructor(e){super(\"m:func\"),this.root.push(new us),this.root.push(new cs(e.name)),this.root.push(new Fn(e.children))}}class hs extends o{constructor(){super(...arguments),this.xmlKeys={character:\"m:val\"}}}class ps extends s{constructor(e){super(\"m:begChr\"),this.root.push(new hs({character:e}))}}class ds extends o{constructor(){super(...arguments),this.xmlKeys={character:\"m:val\"}}}class fs extends s{constructor(e){super(\"m:endChr\"),this.root.push(new ds({character:e}))}}class ms extends s{constructor(e){super(\"m:dPr\"),e&&(this.root.push(new ps(e.beginningCharacter)),this.root.push(new fs(e.endingCharacter)))}}class ws extends s{constructor(e){super(\"m:d\"),this.root.push(new ms),this.root.push(new Fn(e.children))}}class gs extends s{constructor(e){super(\"m:d\"),this.root.push(new ms({beginningCharacter:\"[\",endingCharacter:\"]\"})),this.root.push(new Fn(e.children))}}class ys extends s{constructor(e){super(\"m:d\"),this.root.push(new ms({beginningCharacter:\"{\",endingCharacter:\"}\"})),this.root.push(new Fn(e.children))}}class bs extends s{constructor(e){super(\"m:d\"),this.root.push(new ms({beginningCharacter:\"〈\",endingCharacter:\"〉\"})),this.root.push(new Fn(e.children))}}class xs extends s{constructor(e){super(\"w:tblGrid\");for(const t of e)this.root.push(new _s(t))}}class vs extends o{constructor(){super(...arguments),this.xmlKeys={w:\"w:w\"}}}class _s extends s{constructor(e){super(\"w:gridCol\"),void 0!==e&&this.root.push(new vs({w:(0,S.Jd)(e)}))}}var Es,Ts,As,Ss;!function(e){e.AUTO=\"auto\",e.DXA=\"dxa\",e.NIL=\"nil\",e.PERCENTAGE=\"pct\"}(Es||(Es={}));class Is extends o{constructor(){super(...arguments),this.xmlKeys={type:\"w:type\",size:\"w:w\"}}}class Rs extends s{constructor(e,{type:t=Es.AUTO,size:r}){super(e);let n=r;t===Es.PERCENTAGE&&\"number\"==typeof r&&(n=`${r}%`),this.root.push(new Is({type:t,size:(0,S.aB)(n)}))}}!function(e){e.TABLE=\"w:tblCellMar\",e.TABLE_CELL=\"w:tcMar\"}(Ts||(Ts={}));class Ns extends i{constructor(e,{marginUnitType:t=Es.DXA,top:r,left:n,bottom:s,right:i}){super(e),void 0!==r&&this.root.push(new Rs(\"w:top\",{type:t,size:r})),void 0!==n&&this.root.push(new Rs(\"w:left\",{type:t,size:n})),void 0!==s&&this.root.push(new Rs(\"w:bottom\",{type:t,size:s})),void 0!==i&&this.root.push(new Rs(\"w:right\",{type:t,size:i}))}}class Cs extends i{constructor(e){super(\"w:tcBorders\"),e.top&&this.root.push(new P(\"w:top\",e.top)),e.start&&this.root.push(new P(\"w:start\",e.start)),e.left&&this.root.push(new P(\"w:left\",e.left)),e.bottom&&this.root.push(new P(\"w:bottom\",e.bottom)),e.end&&this.root.push(new P(\"w:end\",e.end)),e.right&&this.root.push(new P(\"w:right\",e.right))}}class Os extends o{constructor(){super(...arguments),this.xmlKeys={val:\"w:val\"}}}class ks extends s{constructor(e){super(\"w:gridSpan\"),this.root.push(new Os({val:(0,S.vH)(e)}))}}!function(e){e.CONTINUE=\"continue\",e.RESTART=\"restart\"}(As||(As={}));class Ls extends o{constructor(){super(...arguments),this.xmlKeys={val:\"w:val\"}}}class Ds extends s{constructor(e){super(\"w:vMerge\"),this.root.push(new Ls({val:e}))}}!function(e){e.BOTTOM_TO_TOP_LEFT_TO_RIGHT=\"btLr\",e.LEFT_TO_RIGHT_TOP_TO_BOTTOM=\"lrTb\",e.TOP_TO_BOTTOM_RIGHT_TO_LEFT=\"tbRl\"}(Ss||(Ss={}));class Ps extends o{constructor(){super(...arguments),this.xmlKeys={val:\"w:val\"}}}class Fs extends s{constructor(e){super(\"w:textDirection\"),this.root.push(new Ps({val:e}))}}class Bs extends i{constructor(e){super(\"w:tcPr\"),e.width&&this.root.push(new Rs(\"w:tcW\",e.width)),e.columnSpan&&this.root.push(new ks(e.columnSpan)),e.verticalMerge?this.root.push(new Ds(e.verticalMerge)):e.rowSpan&&e.rowSpan>1&&this.root.push(new Ds(As.RESTART)),e.borders&&this.root.push(new Cs(e.borders)),e.shading&&this.root.push(new Y(e.shading)),e.margins&&this.root.push(new Ns(Ts.TABLE_CELL,e.margins)),e.textDirection&&this.root.push(new Fs(e.textDirection)),e.verticalAlign&&this.root.push(new Mr(e.verticalAlign))}}class Ms extends s{constructor(e){super(\"w:tc\"),this.options=e,this.root.push(new Bs(e));for(const t of e.children)this.root.push(t)}prepForXml(e){return this.root[this.root.length-1]instanceof In||this.root.push(new In({})),super.prepForXml(e)}}const Us={style:w.NONE,size:0,color:\"auto\"},Hs={style:w.SINGLE,size:4,color:\"auto\"};class zs extends s{constructor(e){super(\"w:tblBorders\"),e.top?this.root.push(new P(\"w:top\",e.top)):this.root.push(new P(\"w:top\",Hs)),e.left?this.root.push(new P(\"w:left\",e.left)):this.root.push(new P(\"w:left\",Hs)),e.bottom?this.root.push(new P(\"w:bottom\",e.bottom)):this.root.push(new P(\"w:bottom\",Hs)),e.right?this.root.push(new P(\"w:right\",e.right)):this.root.push(new P(\"w:right\",Hs)),e.insideHorizontal?this.root.push(new P(\"w:insideH\",e.insideHorizontal)):this.root.push(new P(\"w:insideH\",Hs)),e.insideVertical?this.root.push(new P(\"w:insideV\",e.insideVertical)):this.root.push(new P(\"w:insideV\",Hs))}}zs.NONE={top:Us,bottom:Us,left:Us,right:Us,insideHorizontal:Us,insideVertical:Us};var js,Ws,Ks,Gs,Vs,$s,Xs;!function(e){e.MARGIN=\"margin\",e.PAGE=\"page\",e.TEXT=\"text\"}(js||(js={})),function(e){e.CENTER=\"center\",e.INSIDE=\"inside\",e.LEFT=\"left\",e.OUTSIDE=\"outside\",e.RIGHT=\"right\"}(Ws||(Ws={})),function(e){e.CENTER=\"center\",e.INSIDE=\"inside\",e.BOTTOM=\"bottom\",e.OUTSIDE=\"outside\",e.INLINE=\"inline\",e.TOP=\"top\"}(Ks||(Ks={})),function(e){e.NEVER=\"never\",e.OVERLAP=\"overlap\"}(Gs||(Gs={}));class qs extends o{constructor(){super(...arguments),this.xmlKeys={horizontalAnchor:\"w:horzAnchor\",verticalAnchor:\"w:vertAnchor\",absoluteHorizontalPosition:\"w:tblpX\",relativeHorizontalPosition:\"w:tblpXSpec\",absoluteVerticalPosition:\"w:tblpY\",relativeVerticalPosition:\"w:tblpYSpec\",bottomFromText:\"w:bottomFromText\",topFromText:\"w:topFromText\",leftFromText:\"w:leftFromText\",rightFromText:\"w:rightFromText\"}}}class Zs extends s{constructor(e){var{leftFromText:t,rightFromText:r,topFromText:n,bottomFromText:s,absoluteHorizontalPosition:i,absoluteVerticalPosition:o}=e,a=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var s=0;for(n=Object.getOwnPropertySymbols(e);se.CellCount)))).fill(100),margins:n,indent:s,float:i,layout:o,style:a,borders:c,alignment:u,visuallyRightToLeft:l}){super(\"w:tbl\"),this.root.push(new Qs({borders:null!=c?c:{},width:null!=t?t:{size:100},indent:s,float:i,layout:o,style:a,alignment:u,cellMargin:n,visuallyRightToLeft:l})),this.root.push(new xs(r));for(const t of e)this.root.push(t);e.forEach(((t,r)=>{if(r===e.length-1)return;let n=0;t.cells.forEach((t=>{if(t.options.rowSpan&&t.options.rowSpan>1){const s=new Ms({rowSpan:t.options.rowSpan-1,columnSpan:t.options.columnSpan,borders:t.options.borders,children:[],verticalMerge:As.CONTINUE});e[r+1].addCellToColumnIndex(s,n)}n+=t.options.columnSpan||1}))}))}}!function(e){e.AUTO=\"auto\",e.ATLEAST=\"atLeast\",e.EXACT=\"exact\"}($s||($s={}));class ti extends o{constructor(){super(...arguments),this.xmlKeys={value:\"w:val\",rule:\"w:hRule\"}}}class ri extends s{constructor(e,t){super(\"w:trHeight\"),this.root.push(new ti({value:(0,S.Jd)(e),rule:t}))}}class ni extends i{constructor(e){super(\"w:trPr\"),void 0!==e.cantSplit&&this.root.push(new I(\"w:cantSplit\",e.cantSplit)),void 0!==e.tableHeader&&this.root.push(new I(\"w:tblHeader\",e.tableHeader)),e.height&&this.root.push(new ri(e.height.value,e.height.rule))}}class si extends s{constructor(e){super(\"w:tr\"),this.options=e,this.root.push(new ni(e));for(const t of e.children)this.root.push(t)}get CellCount(){return this.options.children.length}get cells(){return this.root.filter((e=>e instanceof Ms))}addCellToIndex(e,t){this.root.splice(t+1,0,e)}addCellToColumnIndex(e,t){const r=this.columnIndexToRootIndex(t,!0);this.addCellToIndex(e,r-1)}rootIndexToColumnIndex(e){if(e<1||e>=this.root.length)throw new Error(\"cell 'rootIndex' should between 1 to \"+(this.root.length-1));let t=0;for(let r=1;r=this.root.length){if(t)return this.root.length;throw new Error(\"cell 'columnIndex' should not great than \"+(r-1))}const e=this.root[n];n+=1,r+=e&&e.options.columnSpan||1}return n-1}}class ii extends o{constructor(){super(...arguments),this.xmlKeys={xmlns:\"xmlns\",vt:\"xmlns:vt\"}}}class oi extends s{constructor(){super(\"Properties\"),this.root.push(new ii({xmlns:\"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\",vt:\"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes\"}))}}class ai extends o{constructor(){super(...arguments),this.xmlKeys={xmlns:\"xmlns\"}}}class ci extends o{constructor(){super(...arguments),this.xmlKeys={contentType:\"ContentType\",extension:\"Extension\"}}}class ui extends s{constructor(e,t){super(\"Default\"),this.root.push(new ci({contentType:e,extension:t}))}}class li extends o{constructor(){super(...arguments),this.xmlKeys={contentType:\"ContentType\",partName:\"PartName\"}}}class hi extends s{constructor(e,t){super(\"Override\"),this.root.push(new li({contentType:e,partName:t}))}}class pi extends s{constructor(){super(\"Types\"),this.root.push(new ai({xmlns:\"http://schemas.openxmlformats.org/package/2006/content-types\"})),this.root.push(new ui(\"image/png\",\"png\")),this.root.push(new ui(\"image/jpeg\",\"jpeg\")),this.root.push(new ui(\"image/jpeg\",\"jpg\")),this.root.push(new ui(\"image/bmp\",\"bmp\")),this.root.push(new ui(\"image/gif\",\"gif\")),this.root.push(new ui(\"application/vnd.openxmlformats-package.relationships+xml\",\"rels\")),this.root.push(new ui(\"application/xml\",\"xml\")),this.root.push(new hi(\"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\",\"/word/document.xml\")),this.root.push(new hi(\"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\",\"/word/styles.xml\")),this.root.push(new hi(\"application/vnd.openxmlformats-package.core-properties+xml\",\"/docProps/core.xml\")),this.root.push(new hi(\"application/vnd.openxmlformats-officedocument.custom-properties+xml\",\"/docProps/custom.xml\")),this.root.push(new hi(\"application/vnd.openxmlformats-officedocument.extended-properties+xml\",\"/docProps/app.xml\")),this.root.push(new hi(\"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\",\"/word/numbering.xml\")),this.root.push(new hi(\"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml\",\"/word/footnotes.xml\")),this.root.push(new hi(\"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\",\"/word/settings.xml\")),this.root.push(new hi(\"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\",\"/word/comments.xml\"))}addFooter(e){this.root.push(new hi(\"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml\",`/word/footer${e}.xml`))}addHeader(e){this.root.push(new hi(\"application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml\",`/word/header${e}.xml`))}}class di extends s{constructor(e){super(\"cp:coreProperties\"),this.root.push(new pn({cp:\"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\",dc:\"http://purl.org/dc/elements/1.1/\",dcterms:\"http://purl.org/dc/terms/\",dcmitype:\"http://purl.org/dc/dcmitype/\",xsi:\"http://www.w3.org/2001/XMLSchema-instance\"})),e.title&&this.root.push(new k(\"dc:title\",e.title)),e.subject&&this.root.push(new k(\"dc:subject\",e.subject)),e.creator&&this.root.push(new k(\"dc:creator\",e.creator)),e.keywords&&this.root.push(new k(\"cp:keywords\",e.keywords)),e.description&&this.root.push(new k(\"dc:description\",e.description)),e.lastModifiedBy&&this.root.push(new k(\"cp:lastModifiedBy\",e.lastModifiedBy)),e.revision&&this.root.push(new k(\"cp:revision\",String(e.revision))),this.root.push(new fi(\"dcterms:created\")),this.root.push(new fi(\"dcterms:modified\"))}}class fi extends s{constructor(e){super(e),this.root.push(new pn({type:\"dcterms:W3CDTF\"})),this.root.push((0,S.sF)(new Date))}}class mi extends o{constructor(){super(...arguments),this.xmlKeys={xmlns:\"xmlns\",vt:\"xmlns:vt\"}}}class wi extends o{constructor(){super(...arguments),this.xmlKeys={fmtid:\"fmtid\",pid:\"pid\",name:\"name\"}}}class gi extends s{constructor(e,t){super(\"property\"),this.root.push(new wi({fmtid:\"{D5CDD505-2E9C-101B-9397-08002B2CF9AE}\",pid:e.toString(),name:t.name})),this.root.push(new yi(t.value))}}class yi extends s{constructor(e){super(\"vt:lpwstr\"),this.root.push(e)}}class bi extends s{constructor(e){super(\"Properties\"),this.properties=[],this.root.push(new mi({xmlns:\"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties\",vt:\"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes\"})),this.nextId=2;for(const t of e)this.addCustomProperty(t)}prepForXml(e){return this.properties.forEach((e=>this.root.push(e))),super.prepForXml(e)}addCustomProperty(e){this.properties.push(new gi(this.nextId++,e))}}class xi extends o{constructor(){super(...arguments),this.xmlKeys={wpc:\"xmlns:wpc\",mc:\"xmlns:mc\",o:\"xmlns:o\",r:\"xmlns:r\",m:\"xmlns:m\",v:\"xmlns:v\",wp14:\"xmlns:wp14\",wp:\"xmlns:wp\",w10:\"xmlns:w10\",w:\"xmlns:w\",w14:\"xmlns:w14\",w15:\"xmlns:w15\",wpg:\"xmlns:wpg\",wpi:\"xmlns:wpi\",wne:\"xmlns:wne\",wps:\"xmlns:wps\",cp:\"xmlns:cp\",dc:\"xmlns:dc\",dcterms:\"xmlns:dcterms\",dcmitype:\"xmlns:dcmitype\",xsi:\"xmlns:xsi\",type:\"xsi:type\"}}}class vi extends f{constructor(e,t){super(\"w:ftr\",t),this.refId=e,t||this.root.push(new xi({wpc:\"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\",mc:\"http://schemas.openxmlformats.org/markup-compatibility/2006\",o:\"urn:schemas-microsoft-com:office:office\",r:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",m:\"http://schemas.openxmlformats.org/officeDocument/2006/math\",v:\"urn:schemas-microsoft-com:vml\",wp14:\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\",wp:\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\",w10:\"urn:schemas-microsoft-com:office:word\",w:\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\",w14:\"http://schemas.microsoft.com/office/word/2010/wordml\",w15:\"http://schemas.microsoft.com/office/word/2012/wordml\",wpg:\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\",wpi:\"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\",wne:\"http://schemas.microsoft.com/office/word/2006/wordml\",wps:\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\"}))}get ReferenceId(){return this.refId}add(e){this.root.push(e)}}class _i{constructor(e,t,r){this.media=e,this.footer=new vi(t,r),this.relationships=new gn}add(e){this.footer.add(e)}addChildElement(e){this.footer.addChildElement(e)}get View(){return this.footer}get Relationships(){return this.relationships}get Media(){return this.media}}class Ei extends o{constructor(){super(...arguments),this.xmlKeys={type:\"w:type\",id:\"w:id\"}}}class Ti extends s{constructor(){super(\"w:footnoteRef\")}}class Ai extends me{constructor(){super({style:\"FootnoteReference\"}),this.root.push(new Ti)}}!function(e){e.SEPERATOR=\"separator\",e.CONTINUATION_SEPERATOR=\"continuationSeparator\"}(Xs||(Xs={}));class Si extends s{constructor(e){super(\"w:footnote\"),this.root.push(new Ei({type:e.type,id:e.id}));for(let t=0;te.charCodeAt(0)))):new(r(8764).Buffer)(e,\"base64\")}}const Mi=\"\";var Ui,Hi;!function(e){e.DECIMAL=\"decimal\",e.UPPER_ROMAN=\"upperRoman\",e.LOWER_ROMAN=\"lowerRoman\",e.UPPER_LETTER=\"upperLetter\",e.LOWER_LETTER=\"lowerLetter\",e.ORDINAL=\"ordinal\",e.CARDINAL_TEXT=\"cardinalText\",e.ORDINAL_TEXT=\"ordinalText\",e.HEX=\"hex\",e.CHICAGO=\"chicago\",e.IDEOGRAPH__DIGITAL=\"ideographDigital\",e.JAPANESE_COUNTING=\"japaneseCounting\",e.AIUEO=\"aiueo\",e.IROHA=\"iroha\",e.DECIMAL_FULL_WIDTH=\"decimalFullWidth\",e.DECIMAL_HALF_WIDTH=\"decimalHalfWidth\",e.JAPANESE_LEGAL=\"japaneseLegal\",e.JAPANESE_DIGITAL_TEN_THOUSAND=\"japaneseDigitalTenThousand\",e.DECIMAL_ENCLOSED_CIRCLE=\"decimalEnclosedCircle\",e.DECIMAL_FULL_WIDTH2=\"decimalFullWidth2\",e.AIUEO_FULL_WIDTH=\"aiueoFullWidth\",e.IROHA_FULL_WIDTH=\"irohaFullWidth\",e.DECIMAL_ZERO=\"decimalZero\",e.BULLET=\"bullet\",e.GANADA=\"ganada\",e.CHOSUNG=\"chosung\",e.DECIMAL_ENCLOSED_FULLSTOP=\"decimalEnclosedFullstop\",e.DECIMAL_ENCLOSED_PARENTHESES=\"decimalEnclosedParen\",e.DECIMAL_ENCLOSED_CIRCLE_CHINESE=\"decimalEnclosedCircleChinese\",e.IDEOGRAPH_ENCLOSED_CIRCLE=\"ideographEnclosedCircle\",e.IDEOGRAPH_TRADITIONAL=\"ideographTraditional\",e.IDEOGRAPH_ZODIAC=\"ideographZodiac\",e.IDEOGRAPH_ZODIAC_TRADITIONAL=\"ideographZodiacTraditional\",e.TAIWANESE_COUNTING=\"taiwaneseCounting\",e.IDEOGRAPH_LEGAL_TRADITIONAL=\"ideographLegalTraditional\",e.TAIWANESE_COUNTING_THOUSAND=\"taiwaneseCountingThousand\",e.TAIWANESE_DIGITAL=\"taiwaneseDigital\",e.CHINESE_COUNTING=\"chineseCounting\",e.CHINESE_LEGAL_SIMPLIFIED=\"chineseLegalSimplified\",e.CHINESE_COUNTING_THOUSAND=\"chineseCountingThousand\",e.KOREAN_DIGITAL=\"koreanDigital\",e.KOREAN_COUNTING=\"koreanCounting\",e.KOREAN_LEGAL=\"koreanLegal\",e.KOREAN_DIGITAL2=\"koreanDigital2\",e.VIETNAMESE_COUNTING=\"vietnameseCounting\",e.RUSSIAN_LOWER=\"russianLower\",e.RUSSIAN_UPPER=\"russianUpper\",e.NONE=\"none\",e.NUMBER_IN_DASH=\"numberInDash\",e.HEBREW1=\"hebrew1\",e.HEBREW2=\"hebrew2\",e.ARABIC_ALPHA=\"arabicAlpha\",e.ARABIC_ABJAD=\"arabicAbjad\",e.HINDI_VOWELS=\"hindiVowels\",e.HINDI_CONSONANTS=\"hindiConsonants\",e.HINDI_NUMBERS=\"hindiNumbers\",e.HINDI_COUNTING=\"hindiCounting\",e.THAI_LETTERS=\"thaiLetters\",e.THAI_NUMBERS=\"thaiNumbers\",e.THAI_COUNTING=\"thaiCounting\",e.BAHT_TEXT=\"bahtText\",e.DOLLAR_TEXT=\"dollarText\",e.CUSTOM=\"custom\"}(Ui||(Ui={}));class zi extends o{constructor(){super(...arguments),this.xmlKeys={ilvl:\"w:ilvl\",tentative:\"w15:tentative\"}}}class ji extends s{constructor(e){super(\"w:numFmt\"),this.root.push(new a({val:e}))}}class Wi extends s{constructor(e){super(\"w:lvlText\"),this.root.push(new a({val:e}))}}class Ki extends s{constructor(e){super(\"w:lvlJc\"),this.root.push(new a({val:e}))}}!function(e){e.NOTHING=\"nothing\",e.SPACE=\"space\",e.TAB=\"tab\"}(Hi||(Hi={}));class Gi extends s{constructor(e){super(\"w:suff\"),this.root.push(new a({val:e}))}}class Vi extends s{constructor(){super(\"w:isLgl\")}}class $i extends s{constructor({level:e,format:t,text:r,alignment:n=m.START,start:s=1,style:i,suffix:o,isLegalNumberingStyle:a}){if(super(\"w:lvl\"),this.root.push(new C(\"w:start\",(0,S.vH)(s))),t&&this.root.push(new ji(t)),o&&this.root.push(new Gi(o)),a&&this.root.push(new Vi),r&&this.root.push(new Wi(r)),this.root.push(new Ki(n)),this.paragraphProperties=new Sn(i&&i.paragraph),this.runProperties=new pe(i&&i.run),this.root.push(this.paragraphProperties),this.root.push(this.runProperties),e>9)throw new Error(\"Level cannot be greater than 9. Read more here: https://answers.microsoft.com/en-us/msoffice/forum/all/does-word-support-more-than-9-list-levels/d130fdcd-1781-446d-8c84-c6c79124e4d7\");this.root.push(new zi({ilvl:(0,S.vH)(e),tentative:1}))}}class Xi extends $i{}class qi extends $i{}class Zi extends s{constructor(e){super(\"w:multiLevelType\"),this.root.push(new a({val:e}))}}class Yi extends o{constructor(){super(...arguments),this.xmlKeys={abstractNumId:\"w:abstractNumId\",restartNumberingAfterBreak:\"w15:restartNumberingAfterBreak\"}}}class Ji extends s{constructor(e,t){super(\"w:abstractNum\"),this.root.push(new Yi({abstractNumId:(0,S.vH)(e),restartNumberingAfterBreak:0})),this.root.push(new Zi(\"hybridMultilevel\")),this.id=e;for(const e of t)this.root.push(new Xi(e))}}class Qi extends s{constructor(e){super(\"w:abstractNumId\"),this.root.push(new a({val:e}))}}class eo extends o{constructor(){super(...arguments),this.xmlKeys={numId:\"w:numId\"}}}class to extends s{constructor(e){super(\"w:num\"),this.numId=e.numId,this.reference=e.reference,this.instance=e.instance,this.root.push(new eo({numId:(0,S.vH)(e.numId)})),this.root.push(new Qi((0,S.vH)(e.abstractNumId))),e.overrideLevel&&this.root.push(new no(e.overrideLevel.num,e.overrideLevel.start))}}class ro extends o{constructor(){super(...arguments),this.xmlKeys={ilvl:\"w:ilvl\"}}}class no extends s{constructor(e,t){super(\"w:lvlOverride\"),this.root.push(new ro({ilvl:e})),void 0!==t&&this.root.push(new io(t))}}class so extends o{constructor(){super(...arguments),this.xmlKeys={val:\"w:val\"}}}class io extends s{constructor(e){super(\"w:startOverride\"),this.root.push(new so({val:e}))}}class oo extends s{constructor(e){super(\"w:numbering\"),this.abstractNumberingMap=new Map,this.concreteNumberingMap=new Map,this.referenceConfigMap=new Map,this.root.push(new pn({wpc:\"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\",mc:\"http://schemas.openxmlformats.org/markup-compatibility/2006\",o:\"urn:schemas-microsoft-com:office:office\",r:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",m:\"http://schemas.openxmlformats.org/officeDocument/2006/math\",v:\"urn:schemas-microsoft-com:vml\",wp14:\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\",wp:\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\",w10:\"urn:schemas-microsoft-com:office:word\",w:\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\",w14:\"http://schemas.microsoft.com/office/word/2010/wordml\",w15:\"http://schemas.microsoft.com/office/word/2012/wordml\",wpg:\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\",wpi:\"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\",wne:\"http://schemas.microsoft.com/office/word/2006/wordml\",wps:\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\",Ignorable:\"w14 w15 wp14\"}));const t=new Ji((0,Ke.NY)(),[{level:0,format:Ui.BULLET,text:\"●\",alignment:m.LEFT,style:{paragraph:{indent:{left:(0,Ke.vw)(.5),hanging:(0,Ke.vw)(.25)}}}},{level:1,format:Ui.BULLET,text:\"○\",alignment:m.LEFT,style:{paragraph:{indent:{left:(0,Ke.vw)(1),hanging:(0,Ke.vw)(.25)}}}},{level:2,format:Ui.BULLET,text:\"■\",alignment:m.LEFT,style:{paragraph:{indent:{left:2160,hanging:(0,Ke.vw)(.25)}}}},{level:3,format:Ui.BULLET,text:\"●\",alignment:m.LEFT,style:{paragraph:{indent:{left:2880,hanging:(0,Ke.vw)(.25)}}}},{level:4,format:Ui.BULLET,text:\"○\",alignment:m.LEFT,style:{paragraph:{indent:{left:3600,hanging:(0,Ke.vw)(.25)}}}},{level:5,format:Ui.BULLET,text:\"■\",alignment:m.LEFT,style:{paragraph:{indent:{left:4320,hanging:(0,Ke.vw)(.25)}}}},{level:6,format:Ui.BULLET,text:\"●\",alignment:m.LEFT,style:{paragraph:{indent:{left:5040,hanging:(0,Ke.vw)(.25)}}}},{level:7,format:Ui.BULLET,text:\"●\",alignment:m.LEFT,style:{paragraph:{indent:{left:5760,hanging:(0,Ke.vw)(.25)}}}},{level:8,format:Ui.BULLET,text:\"●\",alignment:m.LEFT,style:{paragraph:{indent:{left:6480,hanging:(0,Ke.vw)(.25)}}}}]);this.concreteNumberingMap.set(\"default-bullet-numbering\",new to({numId:1,abstractNumId:t.id,reference:\"default-bullet-numbering\",instance:0,overrideLevel:{num:0,start:1}})),this.abstractNumberingMap.set(\"default-bullet-numbering\",t);for(const t of e.config)this.abstractNumberingMap.set(t.reference,new Ji((0,Ke.NY)(),t.levels)),this.referenceConfigMap.set(t.reference,t.levels)}prepForXml(e){for(const e of this.abstractNumberingMap.values())this.root.push(e);for(const e of this.concreteNumberingMap.values())this.root.push(e);return super.prepForXml(e)}createConcreteNumberingInstance(e,t){const r=this.abstractNumberingMap.get(e);if(!r)return;const n=`${e}-${t}`;if(this.concreteNumberingMap.has(n))return;const s=this.referenceConfigMap.get(e),i=s&&s[0].start,o={numId:(0,Ke.NY)(),abstractNumId:r.id,reference:e,instance:t,overrideLevel:i&&Number.isInteger(i)?{num:0,start:i}:{num:0,start:1}};this.concreteNumberingMap.set(n,new to(o))}get ConcreteNumbering(){return Array.from(this.concreteNumberingMap.values())}get ReferenceConfig(){return Array.from(this.referenceConfigMap.values())}}class ao extends o{constructor(){super(...arguments),this.xmlKeys={version:\"w:val\",name:\"w:name\",uri:\"w:uri\"}}}class co extends s{constructor(e){super(\"w:compatSetting\"),this.root.push(new ao({version:e,uri:\"http://schemas.microsoft.com/office/word\",name:\"compatibilityMode\"}))}}class uo extends s{constructor(e){super(\"w:compat\"),e.version&&this.root.push(new co(e.version)),e.useSingleBorderforContiguousCells&&this.root.push(new I(\"w:useSingleBorderforContiguousCells\",e.useSingleBorderforContiguousCells)),e.wordPerfectJustification&&this.root.push(new I(\"w:wpJustification\",e.wordPerfectJustification)),e.noTabStopForHangingIndent&&this.root.push(new I(\"w:noTabHangInd\",e.noTabStopForHangingIndent)),e.noLeading&&this.root.push(new I(\"w:noLeading\",e.noLeading)),e.spaceForUnderline&&this.root.push(new I(\"w:spaceForUL\",e.spaceForUnderline)),e.noColumnBalance&&this.root.push(new I(\"w:noColumnBalance\",e.noColumnBalance)),e.balanceSingleByteDoubleByteWidth&&this.root.push(new I(\"w:balanceSingleByteDoubleByteWidth\",e.balanceSingleByteDoubleByteWidth)),e.noExtraLineSpacing&&this.root.push(new I(\"w:noExtraLineSpacing\",e.noExtraLineSpacing)),e.doNotLeaveBackslashAlone&&this.root.push(new I(\"w:doNotLeaveBackslashAlone\",e.doNotLeaveBackslashAlone)),e.underlineTrailingSpaces&&this.root.push(new I(\"w:ulTrailSpace\",e.underlineTrailingSpaces)),e.doNotExpandShiftReturn&&this.root.push(new I(\"w:doNotExpandShiftReturn\",e.doNotExpandShiftReturn)),e.spacingInWholePoints&&this.root.push(new I(\"w:spacingInWholePoints\",e.spacingInWholePoints)),e.lineWrapLikeWord6&&this.root.push(new I(\"w:lineWrapLikeWord6\",e.lineWrapLikeWord6)),e.printBodyTextBeforeHeader&&this.root.push(new I(\"w:printBodyTextBeforeHeader\",e.printBodyTextBeforeHeader)),e.printColorsBlack&&this.root.push(new I(\"w:printColBlack\",e.printColorsBlack)),e.spaceWidth&&this.root.push(new I(\"w:wpSpaceWidth\",e.spaceWidth)),e.showBreaksInFrames&&this.root.push(new I(\"w:showBreaksInFrames\",e.showBreaksInFrames)),e.subFontBySize&&this.root.push(new I(\"w:subFontBySize\",e.subFontBySize)),e.suppressBottomSpacing&&this.root.push(new I(\"w:suppressBottomSpacing\",e.suppressBottomSpacing)),e.suppressTopSpacing&&this.root.push(new I(\"w:suppressTopSpacing\",e.suppressTopSpacing)),e.suppressSpacingAtTopOfPage&&this.root.push(new I(\"w:suppressSpacingAtTopOfPage\",e.suppressSpacingAtTopOfPage)),e.suppressTopSpacingWP&&this.root.push(new I(\"w:suppressTopSpacingWP\",e.suppressTopSpacingWP)),e.suppressSpBfAfterPgBrk&&this.root.push(new I(\"w:suppressSpBfAfterPgBrk\",e.suppressSpBfAfterPgBrk)),e.swapBordersFacingPages&&this.root.push(new I(\"w:swapBordersFacingPages\",e.swapBordersFacingPages)),e.convertMailMergeEsc&&this.root.push(new I(\"w:convMailMergeEsc\",e.convertMailMergeEsc)),e.truncateFontHeightsLikeWP6&&this.root.push(new I(\"w:truncateFontHeightsLikeWP6\",e.truncateFontHeightsLikeWP6)),e.macWordSmallCaps&&this.root.push(new I(\"w:mwSmallCaps\",e.macWordSmallCaps)),e.usePrinterMetrics&&this.root.push(new I(\"w:usePrinterMetrics\",e.usePrinterMetrics)),e.doNotSuppressParagraphBorders&&this.root.push(new I(\"w:doNotSuppressParagraphBorders\",e.doNotSuppressParagraphBorders)),e.wrapTrailSpaces&&this.root.push(new I(\"w:wrapTrailSpaces\",e.wrapTrailSpaces)),e.footnoteLayoutLikeWW8&&this.root.push(new I(\"w:footnoteLayoutLikeWW8\",e.footnoteLayoutLikeWW8)),e.shapeLayoutLikeWW8&&this.root.push(new I(\"w:shapeLayoutLikeWW8\",e.shapeLayoutLikeWW8)),e.alignTablesRowByRow&&this.root.push(new I(\"w:alignTablesRowByRow\",e.alignTablesRowByRow)),e.forgetLastTabAlignment&&this.root.push(new I(\"w:forgetLastTabAlignment\",e.forgetLastTabAlignment)),e.adjustLineHeightInTable&&this.root.push(new I(\"w:adjustLineHeightInTable\",e.adjustLineHeightInTable)),e.autoSpaceLikeWord95&&this.root.push(new I(\"w:autoSpaceLikeWord95\",e.autoSpaceLikeWord95)),e.noSpaceRaiseLower&&this.root.push(new I(\"w:noSpaceRaiseLower\",e.noSpaceRaiseLower)),e.doNotUseHTMLParagraphAutoSpacing&&this.root.push(new I(\"w:doNotUseHTMLParagraphAutoSpacing\",e.doNotUseHTMLParagraphAutoSpacing)),e.layoutRawTableWidth&&this.root.push(new I(\"w:layoutRawTableWidth\",e.layoutRawTableWidth)),e.layoutTableRowsApart&&this.root.push(new I(\"w:layoutTableRowsApart\",e.layoutTableRowsApart)),e.useWord97LineBreakRules&&this.root.push(new I(\"w:useWord97LineBreakRules\",e.useWord97LineBreakRules)),e.doNotBreakWrappedTables&&this.root.push(new I(\"w:doNotBreakWrappedTables\",e.doNotBreakWrappedTables)),e.doNotSnapToGridInCell&&this.root.push(new I(\"w:doNotSnapToGridInCell\",e.doNotSnapToGridInCell)),e.selectFieldWithFirstOrLastCharacter&&this.root.push(new I(\"w:selectFldWithFirstOrLastChar\",e.selectFieldWithFirstOrLastCharacter)),e.applyBreakingRules&&this.root.push(new I(\"w:applyBreakingRules\",e.applyBreakingRules)),e.doNotWrapTextWithPunctuation&&this.root.push(new I(\"w:doNotWrapTextWithPunct\",e.doNotWrapTextWithPunctuation)),e.doNotUseEastAsianBreakRules&&this.root.push(new I(\"w:doNotUseEastAsianBreakRules\",e.doNotUseEastAsianBreakRules)),e.useWord2002TableStyleRules&&this.root.push(new I(\"w:useWord2002TableStyleRules\",e.useWord2002TableStyleRules)),e.growAutofit&&this.root.push(new I(\"w:growAutofit\",e.growAutofit)),e.useFELayout&&this.root.push(new I(\"w:useFELayout\",e.useFELayout)),e.useNormalStyleForList&&this.root.push(new I(\"w:useNormalStyleForList\",e.useNormalStyleForList)),e.doNotUseIndentAsNumberingTabStop&&this.root.push(new I(\"w:doNotUseIndentAsNumberingTabStop\",e.doNotUseIndentAsNumberingTabStop)),e.useAlternateEastAsianLineBreakRules&&this.root.push(new I(\"w:useAltKinsokuLineBreakRules\",e.useAlternateEastAsianLineBreakRules)),e.allowSpaceOfSameStyleInTable&&this.root.push(new I(\"w:allowSpaceOfSameStyleInTable\",e.allowSpaceOfSameStyleInTable)),e.doNotSuppressIndentation&&this.root.push(new I(\"w:doNotSuppressIndentation\",e.doNotSuppressIndentation)),e.doNotAutofitConstrainedTables&&this.root.push(new I(\"w:doNotAutofitConstrainedTables\",e.doNotAutofitConstrainedTables)),e.autofitToFirstFixedWidthCell&&this.root.push(new I(\"w:autofitToFirstFixedWidthCell\",e.autofitToFirstFixedWidthCell)),e.underlineTabInNumberingList&&this.root.push(new I(\"w:underlineTabInNumList\",e.underlineTabInNumberingList)),e.displayHangulFixedWidth&&this.root.push(new I(\"w:displayHangulFixedWidth\",e.displayHangulFixedWidth)),e.splitPgBreakAndParaMark&&this.root.push(new I(\"w:splitPgBreakAndParaMark\",e.splitPgBreakAndParaMark)),e.doNotVerticallyAlignCellWithSp&&this.root.push(new I(\"w:doNotVertAlignCellWithSp\",e.doNotVerticallyAlignCellWithSp)),e.doNotBreakConstrainedForcedTable&&this.root.push(new I(\"w:doNotBreakConstrainedForcedTable\",e.doNotBreakConstrainedForcedTable)),e.ignoreVerticalAlignmentInTextboxes&&this.root.push(new I(\"w:doNotVertAlignInTxbx\",e.ignoreVerticalAlignmentInTextboxes)),e.useAnsiKerningPairs&&this.root.push(new I(\"w:useAnsiKerningPairs\",e.useAnsiKerningPairs)),e.cachedColumnBalance&&this.root.push(new I(\"w:cachedColBalance\",e.cachedColumnBalance))}}class lo extends o{constructor(){super(...arguments),this.xmlKeys={wpc:\"xmlns:wpc\",mc:\"xmlns:mc\",o:\"xmlns:o\",r:\"xmlns:r\",m:\"xmlns:m\",v:\"xmlns:v\",wp14:\"xmlns:wp14\",wp:\"xmlns:wp\",w10:\"xmlns:w10\",w:\"xmlns:w\",w14:\"xmlns:w14\",w15:\"xmlns:w15\",wpg:\"xmlns:wpg\",wpi:\"xmlns:wpi\",wne:\"xmlns:wne\",wps:\"xmlns:wps\",Ignorable:\"mc:Ignorable\"}}}class ho extends s{constructor(e){var t,r,n,s;super(\"w:settings\"),this.root.push(new lo({wpc:\"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\",mc:\"http://schemas.openxmlformats.org/markup-compatibility/2006\",o:\"urn:schemas-microsoft-com:office:office\",r:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",m:\"http://schemas.openxmlformats.org/officeDocument/2006/math\",v:\"urn:schemas-microsoft-com:vml\",wp14:\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\",wp:\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\",w10:\"urn:schemas-microsoft-com:office:word\",w:\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\",w14:\"http://schemas.microsoft.com/office/word/2010/wordml\",w15:\"http://schemas.microsoft.com/office/word/2012/wordml\",wpg:\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\",wpi:\"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\",wne:\"http://schemas.microsoft.com/office/word/2006/wordml\",wps:\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\",Ignorable:\"w14 w15 wp14\"})),this.root.push(new I(\"w:displayBackgroundShape\",!0)),void 0!==e.trackRevisions&&this.root.push(new I(\"w:trackRevisions\",e.trackRevisions)),void 0!==e.evenAndOddHeaders&&this.root.push(new I(\"w:evenAndOddHeaders\",e.evenAndOddHeaders)),void 0!==e.updateFields&&this.root.push(new I(\"w:updateFields\",e.updateFields)),this.root.push(new uo(Object.assign(Object.assign({},null!==(t=e.compatibility)&&void 0!==t?t:{}),{version:null!==(s=null!==(n=null===(r=e.compatibility)||void 0===r?void 0:r.version)&&void 0!==n?n:e.compatibilityModeVersion)&&void 0!==s?s:15})))}}class po extends o{constructor(){super(...arguments),this.xmlKeys={val:\"w:val\"}}}class fo extends s{constructor(e){super(\"w:name\"),this.root.push(new po({val:e}))}}class mo extends s{constructor(e){super(\"w:uiPriority\"),this.root.push(new po({val:(0,S.vH)(e)}))}}class wo extends o{constructor(){super(...arguments),this.xmlKeys={type:\"w:type\",styleId:\"w:styleId\",default:\"w:default\",customStyle:\"w:customStyle\"}}}class go extends s{constructor(e,t){super(\"w:style\"),this.root.push(new wo(e)),t.name&&this.root.push(new fo(t.name)),t.basedOn&&this.root.push(new N(\"w:basedOn\",t.basedOn)),t.next&&this.root.push(new N(\"w:next\",t.next)),t.link&&this.root.push(new N(\"w:link\",t.link)),void 0!==t.uiPriority&&this.root.push(new mo(t.uiPriority)),void 0!==t.semiHidden&&this.root.push(new I(\"w:semiHidden\",t.semiHidden)),void 0!==t.unhideWhenUsed&&this.root.push(new I(\"w:unhideWhenUsed\",t.unhideWhenUsed)),void 0!==t.quickFormat&&this.root.push(new I(\"w:qFormat\",t.quickFormat))}}class yo extends go{constructor(e){super({type:\"paragraph\",styleId:e.id},e),this.paragraphProperties=new Sn(e.paragraph),this.runProperties=new pe(e.run),this.root.push(this.paragraphProperties),this.root.push(this.runProperties)}}class bo extends go{constructor(e){super({type:\"character\",styleId:e.id},Object.assign({uiPriority:99,unhideWhenUsed:!0},e)),this.runProperties=new pe(e.run),this.root.push(this.runProperties)}}class xo extends yo{constructor(e){super(Object.assign(Object.assign({},e),{basedOn:\"Normal\",next:\"Normal\",quickFormat:!0}))}}class vo extends xo{constructor(e){super(Object.assign(Object.assign({},e),{id:\"Title\",name:\"Title\"}))}}class _o extends xo{constructor(e){super(Object.assign(Object.assign({},e),{id:\"Heading1\",name:\"Heading 1\"}))}}class Eo extends xo{constructor(e){super(Object.assign(Object.assign({},e),{id:\"Heading2\",name:\"Heading 2\"}))}}class To extends xo{constructor(e){super(Object.assign(Object.assign({},e),{id:\"Heading3\",name:\"Heading 3\"}))}}class Ao extends xo{constructor(e){super(Object.assign(Object.assign({},e),{id:\"Heading4\",name:\"Heading 4\"}))}}class So extends xo{constructor(e){super(Object.assign(Object.assign({},e),{id:\"Heading5\",name:\"Heading 5\"}))}}class Io extends xo{constructor(e){super(Object.assign(Object.assign({},e),{id:\"Heading6\",name:\"Heading 6\"}))}}class Ro extends xo{constructor(e){super(Object.assign(Object.assign({},e),{id:\"Strong\",name:\"Strong\"}))}}class No extends yo{constructor(e){super(Object.assign(Object.assign({},e),{id:\"ListParagraph\",name:\"List Paragraph\",basedOn:\"Normal\",quickFormat:!0}))}}class Co extends yo{constructor(e){super(Object.assign(Object.assign({},e),{id:\"FootnoteText\",name:\"footnote text\",link:\"FootnoteTextChar\",basedOn:\"Normal\",uiPriority:99,semiHidden:!0,unhideWhenUsed:!0,paragraph:{spacing:{after:0,line:240,lineRule:Ae.AUTO}},run:{size:20}}))}}class Oo extends bo{constructor(e){super(Object.assign(Object.assign({},e),{id:\"FootnoteReference\",name:\"footnote reference\",basedOn:\"DefaultParagraphFont\",semiHidden:!0,run:{superScript:!0}}))}}class ko extends bo{constructor(e){super(Object.assign(Object.assign({},e),{id:\"FootnoteTextChar\",name:\"Footnote Text Char\",basedOn:\"DefaultParagraphFont\",link:\"FootnoteText\",semiHidden:!0,run:{size:20}}))}}class Lo extends bo{constructor(e){super(Object.assign(Object.assign({},e),{id:\"Hyperlink\",name:\"Hyperlink\",basedOn:\"DefaultParagraphFont\",run:{color:\"0563C1\",underline:{type:T.SINGLE}}}))}}class Do extends s{constructor(e){if(super(\"w:styles\"),e.initialStyles&&this.root.push(e.initialStyles),e.importedStyles)for(const t of e.importedStyles)this.root.push(t);if(e.paragraphStyles)for(const t of e.paragraphStyles)this.root.push(new yo(t));if(e.characterStyles)for(const t of e.characterStyles)this.root.push(new bo(t))}}class Po extends s{constructor(e){super(\"w:pPrDefault\"),this.root.push(new Sn(e))}}class Fo extends s{constructor(e){super(\"w:rPrDefault\"),this.root.push(new pe(e))}}class Bo extends s{constructor(e){super(\"w:docDefaults\"),this.runPropertiesDefaults=new Fo(e.run),this.paragraphPropertiesDefaults=new Po(e.paragraph),this.root.push(this.runPropertiesDefaults),this.root.push(this.paragraphPropertiesDefaults)}}class Mo{newInstance(e){const t=(0,c.xml2js)(e,{compact:!1});let r;for(const e of t.elements||[])\"w:styles\"===e.name&&(r=e);if(void 0===r)throw new Error(\"can not find styles element\");const n=r.elements||[];return new Do({initialStyles:new p(r.attributes),importedStyles:n.map((e=>u(e)))})}}class Uo{newInstance(e={}){var t;return{initialStyles:new pn({mc:\"http://schemas.openxmlformats.org/markup-compatibility/2006\",r:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",w:\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\",w14:\"http://schemas.microsoft.com/office/word/2010/wordml\",w15:\"http://schemas.microsoft.com/office/word/2012/wordml\",Ignorable:\"w14 w15\"}),importedStyles:[new Bo(null!==(t=e.document)&&void 0!==t?t:{}),new vo(Object.assign({run:{size:56}},e.title)),new _o(Object.assign({run:{color:\"2E74B5\",size:32}},e.heading1)),new Eo(Object.assign({run:{color:\"2E74B5\",size:26}},e.heading2)),new To(Object.assign({run:{color:\"1F4D78\",size:24}},e.heading3)),new Ao(Object.assign({run:{color:\"2E74B5\",italics:!0}},e.heading4)),new So(Object.assign({run:{color:\"2E74B5\"}},e.heading5)),new Io(Object.assign({run:{color:\"1F4D78\"}},e.heading6)),new Ro(Object.assign({run:{bold:!0}},e.strong)),new No(e.listParagraph||{}),new Lo(e.hyperlink||{}),new Oo(e.footnoteReference||{}),new Co(e.footnoteText||{}),new ko(e.footnoteTextChar||{})]}}}class Ho{constructor(e,t={}){var r,n,s,i,o,a,c;if(this.currentRelationshipId=1,this.headers=[],this.footers=[],this.coreProperties=new di(Object.assign(Object.assign({},e),{creator:null!==(r=e.creator)&&void 0!==r?r:\"Un-named\",revision:null!==(n=e.revision)&&void 0!==n?n:1,lastModifiedBy:null!==(s=e.lastModifiedBy)&&void 0!==s?s:\"Un-named\"})),this.numbering=new oo(e.numbering?e.numbering:{config:[]}),this.comments=new ur(null!==(i=e.comments)&&void 0!==i?i:{children:[]}),this.fileRelationships=new gn,this.customProperties=new bi(null!==(o=e.customProperties)&&void 0!==o?o:[]),this.appProperties=new oi,this.footnotesWrapper=new Li,this.contentTypes=new pi,this.documentWrapper=new yn({background:e.background}),this.settings=new ho({compatibilityModeVersion:e.compatabilityModeVersion,compatibility:e.compatibility,evenAndOddHeaders:!!e.evenAndOddHeaderAndFooters,trackRevisions:null===(a=e.features)||void 0===a?void 0:a.trackRevisions,updateFields:null===(c=e.features)||void 0===c?void 0:c.updateFields}),this.media=t.template&&t.template.media?t.template.media:new Bi,t.template&&(this.currentRelationshipId=t.template.currentRelationshipId+1),t.template&&e.externalStyles)throw Error(\"can not use both template and external styles\");if(t.template&&t.template.styles){const e=new Mo;this.styles=e.newInstance(t.template.styles)}else if(e.externalStyles){const t=new Mo;this.styles=t.newInstance(e.externalStyles)}else if(e.styles){const t=(new Uo).newInstance(e.styles.default);this.styles=new Do(Object.assign(Object.assign({},t),e.styles))}else{const e=new Uo;this.styles=new Do(e.newInstance())}if(this.addDefaultRelationships(),t.template&&t.template.headers)for(const e of t.template.headers)this.addHeaderToDocument(e.header,e.type);if(t.template&&t.template.footers)for(const e of t.template.footers)this.addFooterToDocument(e.footer,e.type);for(const t of e.sections)this.addSection(t);if(e.footnotes)for(const t in e.footnotes)this.footnotesWrapper.View.createFootNote(parseFloat(t),e.footnotes[t].children)}addSection({headers:e={},footers:t={},children:r,properties:n}){this.documentWrapper.View.Body.addSection(Object.assign(Object.assign({},n),{headerWrapperGroup:{default:e.default?this.createHeader(e.default):void 0,first:e.first?this.createHeader(e.first):void 0,even:e.even?this.createHeader(e.even):void 0},footerWrapperGroup:{default:t.default?this.createFooter(t.default):void 0,first:t.first?this.createFooter(t.first):void 0,even:t.even?this.createFooter(t.even):void 0}}));for(const e of r)this.documentWrapper.View.add(e)}createHeader(e){const t=new Fi(this.media,this.currentRelationshipId++);for(const r of e.options.children)t.add(r);return this.addHeaderToDocument(t),t}createFooter(e){const t=new _i(this.media,this.currentRelationshipId++);for(const r of e.options.children)t.add(r);return this.addFooterToDocument(t),t}addHeaderToDocument(e,t=Le.DEFAULT){this.headers.push({header:e,type:t}),this.documentWrapper.Relationships.createRelationship(e.View.ReferenceId,\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/header\",`header${this.headers.length}.xml`),this.contentTypes.addHeader(this.headers.length)}addFooterToDocument(e,t=Le.DEFAULT){this.footers.push({footer:e,type:t}),this.documentWrapper.Relationships.createRelationship(e.View.ReferenceId,\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer\",`footer${this.footers.length}.xml`),this.contentTypes.addFooter(this.footers.length)}addDefaultRelationships(){this.fileRelationships.createRelationship(1,\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\"word/document.xml\"),this.fileRelationships.createRelationship(2,\"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\",\"docProps/core.xml\"),this.fileRelationships.createRelationship(3,\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties\",\"docProps/app.xml\"),this.fileRelationships.createRelationship(4,\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties\",\"docProps/custom.xml\"),this.documentWrapper.Relationships.createRelationship(this.currentRelationshipId++,\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\",\"styles.xml\"),this.documentWrapper.Relationships.createRelationship(this.currentRelationshipId++,\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering\",\"numbering.xml\"),this.documentWrapper.Relationships.createRelationship(this.currentRelationshipId++,\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes\",\"footnotes.xml\"),this.documentWrapper.Relationships.createRelationship(this.currentRelationshipId++,\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings\",\"settings.xml\"),this.documentWrapper.Relationships.createRelationship(this.currentRelationshipId++,\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\",\"comments.xml\")}get Document(){return this.documentWrapper}get Styles(){return this.styles}get CoreProperties(){return this.coreProperties}get Numbering(){return this.numbering}get Media(){return this.media}get FileRelationships(){return this.fileRelationships}get Headers(){return this.headers.map((e=>e.header))}get Footers(){return this.footers.map((e=>e.footer))}get ContentTypes(){return this.contentTypes}get CustomProperties(){return this.customProperties}get AppProperties(){return this.appProperties}get FootNotes(){return this.footnotesWrapper}get Settings(){return this.settings}get Comments(){return this.comments}}const zo=\"\";class jo extends s{constructor(e={}){super(\"w:instrText\"),this.properties=e,this.root.push(new V({space:v.PRESERVE}));let t=\"TOC\";this.properties.captionLabel&&(t=`${t} \\\\a \"${this.properties.captionLabel}\"`),this.properties.entriesFromBookmark&&(t=`${t} \\\\b \"${this.properties.entriesFromBookmark}\"`),this.properties.captionLabelIncludingNumbers&&(t=`${t} \\\\c \"${this.properties.captionLabelIncludingNumbers}\"`),this.properties.sequenceAndPageNumbersSeparator&&(t=`${t} \\\\d \"${this.properties.sequenceAndPageNumbersSeparator}\"`),this.properties.tcFieldIdentifier&&(t=`${t} \\\\f \"${this.properties.tcFieldIdentifier}\"`),this.properties.hyperlink&&(t=`${t} \\\\h`),this.properties.tcFieldLevelRange&&(t=`${t} \\\\l \"${this.properties.tcFieldLevelRange}\"`),this.properties.pageNumbersEntryLevelsRange&&(t=`${t} \\\\n \"${this.properties.pageNumbersEntryLevelsRange}\"`),this.properties.headingStyleRange&&(t=`${t} \\\\o \"${this.properties.headingStyleRange}\"`),this.properties.entryAndPageNumberSeparator&&(t=`${t} \\\\p \"${this.properties.entryAndPageNumberSeparator}\"`),this.properties.seqFieldIdentifierForPrefix&&(t=`${t} \\\\s \"${this.properties.seqFieldIdentifierForPrefix}\"`),this.properties.stylesWithLevels&&this.properties.stylesWithLevels.length&&(t=`${t} \\\\t \"${this.properties.stylesWithLevels.map((e=>`${e.styleName},${e.level}`)).join(\",\")}\"`),this.properties.useAppliedParagraphOutlineLevel&&(t=`${t} \\\\u`),this.properties.preserveTabInEntries&&(t=`${t} \\\\w`),this.properties.preserveNewLineInEntries&&(t=`${t} \\\\x`),this.properties.hideTabAndPageNumbersInWebView&&(t=`${t} \\\\z`),this.root.push(t)}}class Wo extends s{constructor(){super(\"w:sdtContent\")}}class Ko extends s{constructor(e){super(\"w:sdtPr\"),this.root.push(new N(\"w:alias\",e))}}class Go extends s{constructor(e=\"Table of Contents\",t){super(\"w:sdt\"),this.root.push(new Ko(e));const r=new Wo,n=new In({children:[new me({children:[new W(!0),new jo(t),new K]})]});r.addChildElement(n);const s=new In({children:[new me({children:[new G]})]});r.addChildElement(s),this.root.push(r)}}class Vo{constructor(e,t){this.styleName=e,this.level=t}}class $o{constructor(e={children:[]}){this.options=e}}class Xo{constructor(e={children:[]}){this.options=e}}class qo extends o{constructor(){super(...arguments),this.xmlKeys={id:\"w:id\"}}}class Zo extends s{constructor(e){super(\"w:footnoteReference\"),this.root.push(new qo({id:e}))}}class Yo extends me{constructor(e){super({style:\"FootnoteReference\"}),this.root.push(new Zo(e))}}class Jo extends s{constructor(e){super(\"w:ins\"),this.root.push(new J({id:e.id,author:e.author,date:e.date})),this.addChildElement(new we(e))}}class Qo extends s{constructor(){super(\"w:delInstrText\"),this.root.push(new V({space:v.PRESERVE})),this.root.push(\"PAGE\")}}class ea extends s{constructor(){super(\"w:delInstrText\"),this.root.push(new V({space:v.PRESERVE})),this.root.push(\"NUMPAGES\")}}class ta extends s{constructor(){super(\"w:delInstrText\"),this.root.push(new V({space:v.PRESERVE})),this.root.push(\"SECTIONPAGES\")}}class ra extends s{constructor(e){super(\"w:delText\"),this.root.push(new V({space:v.PRESERVE})),this.root.push(e)}}class na extends s{constructor(e){super(\"w:del\"),this.root.push(new J({id:e.id,author:e.author,date:e.date})),this.deletedTextRunWrapper=new sa(e),this.addChildElement(this.deletedTextRunWrapper)}}class sa extends s{constructor(e){if(super(\"w:r\"),this.root.push(new pe(e)),e.children)for(const t of e.children)if(\"string\"!=typeof t)this.root.push(t);else switch(t){case A.CURRENT:this.root.push(new W),this.root.push(new Qo),this.root.push(new K),this.root.push(new G);break;case A.TOTAL_PAGES:this.root.push(new W),this.root.push(new ea),this.root.push(new K),this.root.push(new G);break;case A.TOTAL_PAGES_IN_SECTION:this.root.push(new W),this.root.push(new ta),this.root.push(new K),this.root.push(new G);break;default:this.root.push(new ra(t))}else e.text&&this.root.push(new ra(e.text));if(e.break)for(let t=0;t{n=n.replace(new RegExp(`{${e.fileName}}`,\"g\"),(r+t).toString())})),n}getMediaData(e,t){return t.Array.filter((t=>e.search(`{${t.fileName}}`)>0))}}class ua{replace(e,t){let r=e;for(const e of t)r=r.replace(new RegExp(`{${e.reference}-${e.instance}}`,\"g\"),e.numId.toString());return r}}var la,ha=function(e,t,r,n){return new(r||(r=Promise))((function(s,i){function o(e){try{c(n.next(e))}catch(e){i(e)}}function a(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,a)}c((n=n.apply(e,t||[])).next())}))};!function(e){e.NONE=\"\",e.WITH_2_BLANKS=\" \",e.WITH_4_BLANKS=\" \",e.WITH_TAB=\"\\t\"}(la||(la={}));class pa{static toString(e,t){return ha(this,void 0,void 0,(function*(){const r=this.compiler.compile(e,t);return yield r.generateAsync({type:\"string\",mimeType:\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",compression:\"DEFLATE\"})}))}static toBuffer(e,t){return ha(this,void 0,void 0,(function*(){const r=this.compiler.compile(e,t);return yield r.generateAsync({type:\"nodebuffer\",mimeType:\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",compression:\"DEFLATE\"})}))}static toBase64String(e,t){return ha(this,void 0,void 0,(function*(){const r=this.compiler.compile(e,t);return yield r.generateAsync({type:\"base64\",mimeType:\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",compression:\"DEFLATE\"})}))}static toBlob(e,t){return ha(this,void 0,void 0,(function*(){const r=this.compiler.compile(e,t);return yield r.generateAsync({type:\"blob\",mimeType:\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",compression:\"DEFLATE\"})}))}static toStream(e,t){return this.compiler.compile(e,t).generateNodeStream({type:\"nodebuffer\",streamFiles:!0,mimeType:\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",compression:\"DEFLATE\"})}}pa.compiler=new class{constructor(){this.formatter=new aa,this.imageReplacer=new ca,this.numberingReplacer=new ua}compile(e,t){const r=new ia,n=this.xmlifyFile(e,t),s=new Map(Object.entries(n));for(const[,e]of s)if(Array.isArray(e))for(const t of e)r.file(t.path,t.data);else r.file(e.path,e.data);for(const t of e.Media.Array){const e=t.stream;r.file(`word/media/${t.fileName}`,e)}return r}xmlifyFile(e,t){const r=e.Document.Relationships.RelationshipCount+1,n=oa(this.formatter.format(e.Document.View,{viewWrapper:e.Document,file:e}),{indent:t,declaration:{standalone:\"yes\",encoding:\"UTF-8\"}}),s=this.imageReplacer.getMediaData(n,e.Media);return{Relationships:{data:(()=>(s.forEach(((t,n)=>{e.Document.Relationships.createRelationship(r+n,\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",`media/${t.fileName}`)})),oa(this.formatter.format(e.Document.Relationships,{viewWrapper:e.Document,file:e}),{indent:t,declaration:{encoding:\"UTF-8\"}})))(),path:\"word/_rels/document.xml.rels\"},Document:{data:(()=>{const t=this.imageReplacer.replace(n,s,r);return this.numberingReplacer.replace(t,e.Numbering.ConcreteNumbering)})(),path:\"word/document.xml\"},Styles:{data:(()=>{const r=oa(this.formatter.format(e.Styles,{viewWrapper:e.Document,file:e}),{indent:t,declaration:{standalone:\"yes\",encoding:\"UTF-8\"}});return this.numberingReplacer.replace(r,e.Numbering.ConcreteNumbering)})(),path:\"word/styles.xml\"},Properties:{data:oa(this.formatter.format(e.CoreProperties,{viewWrapper:e.Document,file:e}),{indent:t,declaration:{standalone:\"yes\",encoding:\"UTF-8\"}}),path:\"docProps/core.xml\"},Numbering:{data:oa(this.formatter.format(e.Numbering,{viewWrapper:e.Document,file:e}),{indent:t,declaration:{standalone:\"yes\",encoding:\"UTF-8\"}}),path:\"word/numbering.xml\"},FileRelationships:{data:oa(this.formatter.format(e.FileRelationships,{viewWrapper:e.Document,file:e}),{indent:t,declaration:{encoding:\"UTF-8\"}}),path:\"_rels/.rels\"},HeaderRelationships:e.Headers.map(((r,n)=>{const s=oa(this.formatter.format(r.View,{viewWrapper:r,file:e}),{indent:t,declaration:{encoding:\"UTF-8\"}});return this.imageReplacer.getMediaData(s,e.Media).forEach(((e,t)=>{r.Relationships.createRelationship(t,\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",`media/${e.fileName}`)})),{data:oa(this.formatter.format(r.Relationships,{viewWrapper:r,file:e}),{indent:t,declaration:{encoding:\"UTF-8\"}}),path:`word/_rels/header${n+1}.xml.rels`}})),FooterRelationships:e.Footers.map(((r,n)=>{const s=oa(this.formatter.format(r.View,{viewWrapper:r,file:e}),{indent:t,declaration:{encoding:\"UTF-8\"}});return this.imageReplacer.getMediaData(s,e.Media).forEach(((e,t)=>{r.Relationships.createRelationship(t,\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",`media/${e.fileName}`)})),{data:oa(this.formatter.format(r.Relationships,{viewWrapper:r,file:e}),{indent:t,declaration:{encoding:\"UTF-8\"}}),path:`word/_rels/footer${n+1}.xml.rels`}})),Headers:e.Headers.map(((r,n)=>{const s=oa(this.formatter.format(r.View,{viewWrapper:r,file:e}),{indent:t,declaration:{encoding:\"UTF-8\"}}),i=this.imageReplacer.getMediaData(s,e.Media),o=this.imageReplacer.replace(s,i,0);return{data:this.numberingReplacer.replace(o,e.Numbering.ConcreteNumbering),path:`word/header${n+1}.xml`}})),Footers:e.Footers.map(((r,n)=>{const s=oa(this.formatter.format(r.View,{viewWrapper:r,file:e}),{indent:t,declaration:{encoding:\"UTF-8\"}}),i=this.imageReplacer.getMediaData(s,e.Media),o=this.imageReplacer.replace(s,i,0);return{data:this.numberingReplacer.replace(o,e.Numbering.ConcreteNumbering),path:`word/footer${n+1}.xml`}})),ContentTypes:{data:oa(this.formatter.format(e.ContentTypes,{viewWrapper:e.Document,file:e}),{indent:t,declaration:{encoding:\"UTF-8\"}}),path:\"[Content_Types].xml\"},CustomProperties:{data:oa(this.formatter.format(e.CustomProperties,{viewWrapper:e.Document,file:e}),{indent:t,declaration:{standalone:\"yes\",encoding:\"UTF-8\"}}),path:\"docProps/custom.xml\"},AppProperties:{data:oa(this.formatter.format(e.AppProperties,{viewWrapper:e.Document,file:e}),{indent:t,declaration:{standalone:\"yes\",encoding:\"UTF-8\"}}),path:\"docProps/app.xml\"},FootNotes:{data:oa(this.formatter.format(e.FootNotes.View,{viewWrapper:e.FootNotes,file:e}),{indent:t,declaration:{encoding:\"UTF-8\"}}),path:\"word/footnotes.xml\"},FootNotesRelationships:{data:oa(this.formatter.format(e.FootNotes.Relationships,{viewWrapper:e.FootNotes,file:e}),{indent:t,declaration:{encoding:\"UTF-8\"}}),path:\"word/_rels/footnotes.xml.rels\"},Settings:{data:oa(this.formatter.format(e.Settings,{viewWrapper:e.Document,file:e}),{indent:t,declaration:{standalone:\"yes\",encoding:\"UTF-8\"}}),path:\"word/settings.xml\"},Comments:{data:oa(this.formatter.format(e.Comments,{viewWrapper:e.Document,file:e}),{indent:t,declaration:{standalone:\"yes\",encoding:\"UTF-8\"}}),path:\"word/comments.xml\"}}}};var da=function(e,t,r,n){return new(r||(r=Promise))((function(s,i){function o(e){try{c(n.next(e))}catch(e){i(e)}}function a(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,a)}c((n=n.apply(e,t||[])).next())}))};const fa={\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/header\":\"header\",\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer\":\"footer\",\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\":\"image\",\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\":\"hyperlink\"};var ma;!function(e){e.HEADER=\"header\",e.FOOTER=\"footer\",e.IMAGE=\"image\",e.HYPERLINK=\"hyperlink\"}(ma||(ma={}));class wa{extract(e){return da(this,void 0,void 0,(function*(){const t=yield ia.loadAsync(e),r=yield t.files[\"word/document.xml\"].async(\"text\"),n=yield t.files[\"word/_rels/document.xml.rels\"].async(\"text\"),s=this.extractDocumentRefs(r),i=this.findReferenceFiles(n),o=new Bi;return{headers:yield this.createHeaders(t,s,i,o,0),footers:yield this.createFooters(t,s,i,o,s.headers.length),currentRelationshipId:s.footers.length+s.headers.length,styles:yield t.files[\"word/styles.xml\"].async(\"text\"),titlePageIsDefined:this.checkIfTitlePageIsDefined(r),media:o}}))}createFooters(e,t,r,n,s){return da(this,void 0,void 0,(function*(){const i=t.footers.map(((t,i)=>da(this,void 0,void 0,(function*(){const o=r.find((e=>e.id===t.id));if(null===o||!o)throw new Error(`Can not find target file for id ${t.id}`);const a=yield e.files[`word/${o.target}`].async(\"text\"),l=(0,c.xml2js)(a,{compact:!1,captureSpacesBetweenElements:!0});if(!l.elements)return;const h=l.elements.reduce(((e,t)=>\"w:ftr\"===t.name?t:e)),p=u(h),d=new _i(n,s+i,p);return yield this.addRelationshipToWrapper(o,e,d,n),{type:t.type,footer:d}})))).filter((e=>!!e));return Promise.all(i)}))}createHeaders(e,t,r,n,s){return da(this,void 0,void 0,(function*(){const i=t.headers.map(((t,i)=>da(this,void 0,void 0,(function*(){const o=r.find((e=>e.id===t.id));if(null===o||!o)throw new Error(`Can not find target file for id ${t.id}`);const a=yield e.files[`word/${o.target}`].async(\"text\"),l=(0,c.xml2js)(a,{compact:!1,captureSpacesBetweenElements:!0});if(!l.elements)return;const h=l.elements.reduce(((e,t)=>\"w:hdr\"===t.name?t:e)),p=u(h),d=new Fi(n,s+i,p);return yield this.addRelationshipToWrapper(o,e,d,n),{type:t.type,header:d}})))).filter((e=>!!e));return Promise.all(i)}))}addRelationshipToWrapper(e,t,r,n){return da(this,void 0,void 0,(function*(){const s=t.files[`word/_rels/${e.target}.rels`];if(!s)return;const i=yield s.async(\"text\"),o=this.findReferenceFiles(i).filter((e=>e.type===ma.IMAGE)),a=this.findReferenceFiles(i).filter((e=>e.type===ma.HYPERLINK));for(const e of o){const s=ia.support.arraybuffer?\"arraybuffer\":\"nodebuffer\",i=yield t.files[`word/${e.target}`].async(s),o=n.addMedia(i,{width:100,height:100});r.Relationships.createRelationship(e.id,\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",`media/${o.fileName}`)}for(const e of a)r.Relationships.createRelationship(e.id,\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",e.target,Ce.EXTERNAL)}))}findReferenceFiles(e){const t=(0,c.xml2js)(e,{compact:!0});return(Array.isArray(t.Relationships.Relationship)?t.Relationships.Relationship:[t.Relationships.Relationship]).map((e=>{if(void 0===e._attributes)throw Error(\"relationship element has no attributes\");return{id:this.parseRefId(e._attributes.Id),type:fa[e._attributes.Type],target:e._attributes.Target}})).filter((e=>null!==e.type))}extractDocumentRefs(e){const t=(0,c.xml2js)(e,{compact:!0})[\"w:document\"][\"w:body\"][\"w:sectPr\"],r=t[\"w:headerReference\"];let n;n=void 0===r?[]:Array.isArray(r)?r:[r];const s=n.map((e=>{if(void 0===e._attributes)throw Error(\"header reference element has no attributes\");return{type:e._attributes[\"w:type\"],id:this.parseRefId(e._attributes[\"r:id\"])}})),i=t[\"w:footerReference\"];let o;return o=void 0===i?[]:Array.isArray(i)?i:[i],{headers:s,footers:o.map((e=>{if(void 0===e._attributes)throw Error(\"footer reference element has no attributes\");return{type:e._attributes[\"w:type\"],id:this.parseRefId(e._attributes[\"r:id\"])}}))}}checkIfTitlePageIsDefined(e){return void 0!==(0,c.xml2js)(e,{compact:!0})[\"w:document\"][\"w:body\"][\"w:sectPr\"][\"w:titlePg\"]}parseRefId(e){const t=/^rId(\\d+)$/.exec(e);if(null===t)throw new Error(\"Invalid ref id\");return parseInt(t[1],10)}}var ga=r(5575)})(),n})()));","'use strict';\n//parse Empty Node as self closing node\nconst buildOptions = require('./util').buildOptions;\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attrNodeName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataTagName: false,\n cdataPositionChar: '\\\\c',\n format: false,\n indentBy: ' ',\n supressEmptyNode: false,\n tagValueProcessor: function(a) {\n return a;\n },\n attrValueProcessor: function(a) {\n return a;\n },\n};\n\nconst props = [\n 'attributeNamePrefix',\n 'attrNodeName',\n 'textNodeName',\n 'ignoreAttributes',\n 'cdataTagName',\n 'cdataPositionChar',\n 'format',\n 'indentBy',\n 'supressEmptyNode',\n 'tagValueProcessor',\n 'attrValueProcessor',\n 'rootNodeName', //when array as root\n];\n\nfunction Parser(options) {\n this.options = buildOptions(options, defaultOptions, props);\n if (this.options.ignoreAttributes || this.options.attrNodeName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n if (this.options.cdataTagName) {\n this.isCDATA = isCDATA;\n } else {\n this.isCDATA = function(/*a*/) {\n return false;\n };\n }\n this.replaceCDATAstr = replaceCDATAstr;\n this.replaceCDATAarr = replaceCDATAarr;\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n\n if (this.options.supressEmptyNode) {\n this.buildTextNode = buildEmptyTextNode;\n this.buildObjNode = buildEmptyObjNode;\n } else {\n this.buildTextNode = buildTextValNode;\n this.buildObjNode = buildObjectNode;\n }\n\n this.buildTextValNode = buildTextValNode;\n this.buildObjectNode = buildObjectNode;\n}\n\nParser.prototype.parse = function(jObj) {\n if(Array.isArray(jObj) && this.options.rootNodeName && this.options.rootNodeName.length > 1){\n jObj = {\n [this.options.rootNodeName] : jObj\n }\n }\n return this.j2x(jObj, 0).val;\n};\n\nParser.prototype.j2x = function(jObj, level) {\n let attrStr = '';\n let val = '';\n for (let key in jObj) {\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node\n } else if (jObj[key] === null) {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr) {\n attrStr += ' ' + attr + '=\"' + this.options.attrValueProcessor('' + jObj[key]) + '\"';\n } else if (this.isCDATA(key)) {\n if (jObj[this.options.textNodeName]) {\n val += this.replaceCDATAstr(jObj[this.options.textNodeName], jObj[key]);\n } else {\n val += this.replaceCDATAstr('', jObj[key]);\n }\n } else {\n //tag value\n if (key === this.options.textNodeName) {\n if (jObj[this.options.cdataTagName]) {\n //value will added while processing cdata\n } else {\n val += this.options.tagValueProcessor('' + jObj[key]);\n }\n } else {\n val += this.buildTextNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n if (this.isCDATA(key)) {\n val += this.indentate(level);\n if (jObj[this.options.textNodeName]) {\n val += this.replaceCDATAarr(jObj[this.options.textNodeName], jObj[key]);\n } else {\n val += this.replaceCDATAarr('', jObj[key]);\n }\n } else {\n //nested nodes\n const arrLen = jObj[key].length;\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n val += this.processTextOrObjNode(item, key, level)\n } else {\n val += this.buildTextNode(item, key, '', level);\n }\n }\n }\n } else {\n //nested node\n if (this.options.attrNodeName && key === this.options.attrNodeName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += ' ' + Ks[j] + '=\"' + this.options.attrValueProcessor('' + jObj[key][Ks[j]]) + '\"';\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level)\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nfunction processTextOrObjNode (object, key, level) {\n const result = this.j2x(object, level + 1);\n if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n return this.buildTextNode(result.val, key, result.attrStr, level);\n } else {\n return this.buildObjNode(result.val, key, result.attrStr, level);\n }\n}\n\nfunction replaceCDATAstr(str, cdata) {\n str = this.options.tagValueProcessor('' + str);\n if (this.options.cdataPositionChar === '' || str === '') {\n return str + '');\n }\n return str + this.newLine;\n }\n}\n\nfunction buildObjectNode(val, key, attrStr, level) {\n if (attrStr && val.indexOf('<') === -1) {\n return (\n this.indentate(level) +\n '<' +\n key +\n attrStr +\n '>' +\n val +\n //+ this.newLine\n // + this.indentate(level)\n '' +\n this.options.tagValueProcessor(val) +\n ' 1) {\n jObj[tagName] = [];\n for (let tag in node.child[tagName]) {\n if (node.child[tagName].hasOwnProperty(tag)) {\n jObj[tagName].push(convertToJson(node.child[tagName][tag], options, tagName));\n }\n }\n } else {\n const result = convertToJson(node.child[tagName][0], options, tagName);\n const asArray = (options.arrayMode === true && typeof result === 'object') || util.isTagNameInArrayMode(tagName, options.arrayMode, parentTagName);\n jObj[tagName] = asArray ? [result] : result;\n }\n }\n\n //add value\n return jObj;\n};\n\nexports.convertToJson = convertToJson;\n","'use strict';\n\nconst util = require('./util');\nconst buildOptions = require('./util').buildOptions;\nconst x2j = require('./xmlstr2xmlnode');\n\n//TODO: do it later\nconst convertToJsonString = function(node, options) {\n options = buildOptions(options, x2j.defaultOptions, x2j.props);\n\n options.indentBy = options.indentBy || '';\n return _cToJsonStr(node, options, 0);\n};\n\nconst _cToJsonStr = function(node, options, level) {\n let jObj = '{';\n\n //traver through all the children\n const keys = Object.keys(node.child);\n\n for (let index = 0; index < keys.length; index++) {\n const tagname = keys[index];\n if (node.child[tagname] && node.child[tagname].length > 1) {\n jObj += '\"' + tagname + '\" : [ ';\n for (let tag in node.child[tagname]) {\n jObj += _cToJsonStr(node.child[tagname][tag], options) + ' , ';\n }\n jObj = jObj.substr(0, jObj.length - 1) + ' ] '; //remove extra comma in last\n } else {\n jObj += '\"' + tagname + '\" : ' + _cToJsonStr(node.child[tagname][0], options) + ' ,';\n }\n }\n util.merge(jObj, node.attrsMap);\n //add attrsMap as new children\n if (util.isEmptyObject(jObj)) {\n return util.isExist(node.val) ? node.val : '';\n } else {\n if (util.isExist(node.val)) {\n if (!(typeof node.val === 'string' && (node.val === '' || node.val === options.cdataPositionChar))) {\n jObj += '\"' + options.textNodeName + '\" : ' + stringval(node.val);\n }\n }\n }\n //add value\n if (jObj[jObj.length - 1] === ',') {\n jObj = jObj.substr(0, jObj.length - 2);\n }\n return jObj + '}';\n};\n\nfunction stringval(v) {\n if (v === true || v === false || !isNaN(v)) {\n return v;\n } else {\n return '\"' + v + '\"';\n }\n}\n\nfunction indentate(options, level) {\n return options.indentBy.repeat(level);\n}\n\nexports.convertToJsonString = convertToJsonString;\n","'use strict';\n\nconst nodeToJson = require('./node2json');\nconst xmlToNodeobj = require('./xmlstr2xmlnode');\nconst x2xmlnode = require('./xmlstr2xmlnode');\nconst buildOptions = require('./util').buildOptions;\nconst validator = require('./validator');\n\nexports.parse = function(xmlData, givenOptions = {}, validationOption) {\n if( validationOption){\n if(validationOption === true) validationOption = {}\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( result.err.msg)\n }\n }\n if(givenOptions.parseTrueNumberOnly \n && givenOptions.parseNodeValue !== false\n && !givenOptions.numParseOptions){\n \n givenOptions.numParseOptions = {\n leadingZeros: false,\n }\n }\n let options = buildOptions(givenOptions, x2xmlnode.defaultOptions, x2xmlnode.props);\n\n const traversableObj = xmlToNodeobj.getTraversalObj(xmlData, options)\n //print(traversableObj, \" \");\n return nodeToJson.convertToJson(traversableObj, options);\n};\nexports.convertTonimn = require('./nimndata').convert2nimn;\nexports.getTraversalObj = xmlToNodeobj.getTraversalObj;\nexports.convertToJson = nodeToJson.convertToJson;\nexports.convertToJsonString = require('./node2json_str').convertToJsonString;\nexports.validate = validator.validate;\nexports.j2xParser = require('./json2xml');\nexports.parseToNimn = function(xmlData, schema, options) {\n return exports.convertTonimn(exports.getTraversalObj(xmlData, options), schema, options);\n};\n\n\nfunction print(xmlNode, indentation){\n if(xmlNode){\n console.log(indentation + \"{\")\n console.log(indentation + \" \\\"tagName\\\": \\\"\" + xmlNode.tagname + \"\\\", \");\n if(xmlNode.parent){\n console.log(indentation + \" \\\"parent\\\": \\\"\" + xmlNode.parent.tagname + \"\\\", \");\n }\n console.log(indentation + \" \\\"val\\\": \\\"\" + xmlNode.val + \"\\\", \");\n console.log(indentation + \" \\\"attrs\\\": \" + JSON.stringify(xmlNode.attrsMap,null,4) + \", \");\n\n if(xmlNode.child){\n console.log(indentation + \"\\\"child\\\": {\")\n const indentation2 = indentation + indentation;\n Object.keys(xmlNode.child).forEach( function(key) {\n const node = xmlNode.child[key];\n\n if(Array.isArray(node)){\n console.log(indentation + \"\\\"\"+key+\"\\\" :[\")\n node.forEach( function(item,index) {\n //console.log(indentation + \" \\\"\"+index+\"\\\" : [\")\n print(item, indentation2);\n })\n console.log(indentation + \"],\") \n }else{\n console.log(indentation + \" \\\"\"+key+\"\\\" : {\")\n print(node, indentation2);\n console.log(indentation + \"},\") \n }\n });\n console.log(indentation + \"},\")\n }\n console.log(indentation + \"},\")\n }\n}\n","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if (arrayMode === 'strict') {\n target[keys[i]] = [ a[keys[i]] ];\n } else {\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.buildOptions = function(options, defaultOptions, props) {\n let newOptions = {};\n if (!options) {\n return defaultOptions; //if there are not options\n }\n\n for (let i = 0; i < props.length; i++) {\n if (options[props[i]] !== undefined) {\n newOptions[props[i]] = options[props[i]];\n } else {\n newOptions[props[i]] = defaultOptions[props[i]];\n }\n }\n return newOptions;\n};\n\n/**\n * Check if a tag name should be treated as array\n *\n * @param tagName the node tagname\n * @param arrayMode the array mode option\n * @param parentTagName the parent tag name\n * @returns {boolean} true if node should be parsed as array\n */\nexports.isTagNameInArrayMode = function (tagName, arrayMode, parentTagName) {\n if (arrayMode === false) {\n return false;\n } else if (arrayMode instanceof RegExp) {\n return arrayMode.test(tagName);\n } else if (typeof arrayMode === 'function') {\n return !!arrayMode(tagName, parentTagName);\n }\n\n return arrayMode === \"strict\";\n}\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n","'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n};\n\nconst props = ['allowBooleanAttributes'];\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = util.buildOptions(options, defaultOptions, props);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n\n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n i+=2;\n i = readPI(xmlData,i);\n if (i.err) return i;\n }else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n \n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else {\n tags.push({tagName, tagStartPos});\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i+1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else{\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if (xmlData[i] === ' ' || xmlData[i] === '\\t' || xmlData[i] === '\\n' || xmlData[i] === '\\r') {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n }else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n }else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\"+\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n \"' found.\", {line: 1, col: 1});\n }\n\n return true;\n};\n\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n","'use strict';\n\nmodule.exports = function(tagname, parent, val) {\n this.tagname = tagname;\n this.parent = parent;\n this.child = {}; //child tags\n this.attrsMap = {}; //attributes map\n this.val = val; //text only\n this.addChild = function(child) {\n if (Array.isArray(this.child[child.tagname])) {\n //already presents\n this.child[child.tagname].push(child);\n } else {\n this.child[child.tagname] = [child];\n }\n };\n};\n","'use strict';\n\nconst util = require('./util');\nconst buildOptions = require('./util').buildOptions;\nconst xmlNode = require('./xmlNode');\nconst toNumber = require(\"strnum\");\n\nconst regx =\n '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attrNodeName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n ignoreNameSpace: false,\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseNodeValue: true,\n parseAttributeValue: false,\n arrayMode: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataTagName: false,\n cdataPositionChar: '\\\\c',\n numParseOptions: {\n hex: true,\n leadingZeros: true\n },\n tagValueProcessor: function(a, tagName) {\n return a;\n },\n attrValueProcessor: function(a, attrName) {\n return a;\n },\n stopNodes: [],\n alwaysCreateTextNode: false\n //decodeStrict: false,\n};\n\nexports.defaultOptions = defaultOptions;\n\nconst props = [\n 'attributeNamePrefix',\n 'attrNodeName',\n 'textNodeName',\n 'ignoreAttributes',\n 'ignoreNameSpace',\n 'allowBooleanAttributes',\n 'parseNodeValue',\n 'parseAttributeValue',\n 'arrayMode',\n 'trimValues',\n 'cdataTagName',\n 'cdataPositionChar',\n 'tagValueProcessor',\n 'attrValueProcessor',\n 'parseTrueNumberOnly',\n 'numParseOptions',\n 'stopNodes',\n 'alwaysCreateTextNode'\n];\nexports.props = props;\n\n/**\n * Trim -> valueProcessor -> parse value\n * @param {string} tagName\n * @param {string} val\n * @param {object} options\n */\nfunction processTagValue(tagName, val, options) {\n if (val) {\n if (options.trimValues) {\n val = val.trim();\n }\n val = options.tagValueProcessor(val, tagName);\n val = parseValue(val, options.parseNodeValue, options.numParseOptions);\n }\n\n return val;\n}\n\nfunction resolveNameSpace(tagname, options) {\n if (options.ignoreNameSpace) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if(newval === 'true' ) return true;\n else if(newval === 'false' ) return false;\n else return toNumber(val, options);\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])(.*?)\\\\3)?', 'g');\n\nfunction buildAttributesMap(attrStr, options) {\n if (!options.ignoreAttributes && typeof attrStr === 'string') {\n attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = resolveNameSpace(matches[i][1], options);\n if (attrName.length) {\n if (matches[i][4] !== undefined) {\n if (options.trimValues) {\n matches[i][4] = matches[i][4].trim();\n }\n matches[i][4] = options.attrValueProcessor(matches[i][4], attrName);\n attrs[options.attributeNamePrefix + attrName] = parseValue(\n matches[i][4],\n options.parseAttributeValue,\n options.numParseOptions\n );\n } else if (options.allowBooleanAttributes) {\n attrs[options.attributeNamePrefix + attrName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (options.attrNodeName) {\n const attrCollection = {};\n attrCollection[options.attrNodeName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n}\n\nconst getTraversalObj = function(xmlData, options) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\");\n options = buildOptions(options, defaultOptions, props);\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n\n//function match(xmlData){\n for(let i=0; i< xmlData.length; i++){\n const ch = xmlData[i];\n if(ch === '<'){\n if( xmlData[i+1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n if(options.ignoreNameSpace){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n /* if (currentNode.parent) {\n currentNode.parent.val = util.getValue(currentNode.parent.val) + '' + processTagValue2(tagName, textData , options);\n } */\n if(currentNode){\n if(currentNode.val){\n currentNode.val = util.getValue(currentNode.val) + '' + processTagValue(tagName, textData , options);\n }else{\n currentNode.val = processTagValue(tagName, textData , options);\n }\n }\n\n if (options.stopNodes.length && options.stopNodes.includes(currentNode.tagname)) {\n currentNode.child = []\n if (currentNode.attrsMap == undefined) { currentNode.attrsMap = {}}\n currentNode.val = xmlData.substr(currentNode.startIndex + 1, i - currentNode.startIndex - 1)\n }\n currentNode = currentNode.parent;\n textData = \"\";\n i = closeIndex;\n } else if( xmlData[i+1] === '?') {\n i = findClosingIndex(xmlData, \"?>\", i, \"Pi Tag is not closed.\")\n } else if(xmlData.substr(i + 1, 3) === '!--') {\n i = findClosingIndex(xmlData, \"-->\", i, \"Comment is not closed.\")\n } else if( xmlData.substr(i + 1, 2) === '!D') {\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"DOCTYPE is not closed.\")\n const tagExp = xmlData.substring(i, closeIndex);\n if(tagExp.indexOf(\"[\") >= 0){\n i = xmlData.indexOf(\"]>\", i) + 1;\n }else{\n i = closeIndex;\n }\n }else if(xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2\n const tagExp = xmlData.substring(i + 9,closeIndex);\n\n //considerations\n //1. CDATA will always have parent node\n //2. A tag with CDATA is not a leaf node so it's value would be string type.\n if(textData){\n currentNode.val = util.getValue(currentNode.val) + '' + processTagValue(currentNode.tagname, textData , options);\n textData = \"\";\n }\n\n if (options.cdataTagName) {\n //add cdata node\n const childNode = new xmlNode(options.cdataTagName, currentNode, tagExp);\n currentNode.addChild(childNode);\n //for backtracking\n currentNode.val = util.getValue(currentNode.val) + options.cdataPositionChar;\n //add rest value to parent node\n if (tagExp) {\n childNode.val = tagExp;\n }\n } else {\n currentNode.val = (currentNode.val || '') + (tagExp || '');\n }\n\n i = closeIndex + 2;\n }else {//Opening tag\n const result = closingIndexForOpeningTag(xmlData, i+1)\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.indexOf(\" \");\n let tagName = tagExp;\n let shouldBuildAttributesMap = true;\n if(separatorIndex !== -1){\n tagName = tagExp.substr(0, separatorIndex).replace(/\\s\\s*$/, '');\n tagExp = tagExp.substr(separatorIndex + 1);\n }\n\n if(options.ignoreNameSpace){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n shouldBuildAttributesMap = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n //save text to parent node\n if (currentNode && textData) {\n if(currentNode.tagname !== '!xml'){\n currentNode.val = util.getValue(currentNode.val) + '' + processTagValue( currentNode.tagname, textData, options);\n }\n }\n\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){//selfClosing tag\n\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n\n const childNode = new xmlNode(tagName, currentNode, '');\n if(tagName !== tagExp){\n childNode.attrsMap = buildAttributesMap(tagExp, options);\n }\n currentNode.addChild(childNode);\n }else{//opening tag\n\n const childNode = new xmlNode( tagName, currentNode );\n if (options.stopNodes.length && options.stopNodes.includes(childNode.tagname)) {\n childNode.startIndex=closeIndex;\n }\n if(tagName !== tagExp && shouldBuildAttributesMap){\n childNode.attrsMap = buildAttributesMap(tagExp, options);\n }\n currentNode.addChild(childNode);\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }else{\n textData += xmlData[i];\n }\n }\n return xmlObj;\n}\n\nfunction closingIndexForOpeningTag(data, i){\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < data.length; index++) {\n let ch = data[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === '>') {\n return {\n data: tagExp,\n index: index\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n const closingIndex = xmlData.indexOf(str, i);\n if(closingIndex === -1){\n throw new Error(errMsg)\n }else{\n return closingIndex + str.length - 1;\n }\n}\n\nexports.getTraversalObj = getTraversalObj;\n","/*\n* FileSaver.js\n* A saveAs() FileSaver implementation.\n*\n* By Eli Grey, http://eligrey.com\n*\n* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n* source : http://purl.eligrey.com/github/FileSaver.js\n*/\n\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nvar _global = typeof window === 'object' && window.window === window\n ? window : typeof self === 'object' && self.self === self\n ? self : typeof global === 'object' && global.global === global\n ? global\n : this\n\nfunction bom (blob, opts) {\n if (typeof opts === 'undefined') opts = { autoBom: false }\n else if (typeof opts !== 'object') {\n console.warn('Deprecated: Expected third argument to be a object')\n opts = { autoBom: !opts }\n }\n\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (opts.autoBom && /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xFEFF), blob], { type: blob.type })\n }\n return blob\n}\n\nfunction download (url, name, opts) {\n var xhr = new XMLHttpRequest()\n xhr.open('GET', url)\n xhr.responseType = 'blob'\n xhr.onload = function () {\n saveAs(xhr.response, name, opts)\n }\n xhr.onerror = function () {\n console.error('could not download file')\n }\n xhr.send()\n}\n\nfunction corsEnabled (url) {\n var xhr = new XMLHttpRequest()\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false)\n try {\n xhr.send()\n } catch (e) {}\n return xhr.status >= 200 && xhr.status <= 299\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click (node) {\n try {\n node.dispatchEvent(new MouseEvent('click'))\n } catch (e) {\n var evt = document.createEvent('MouseEvents')\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80,\n 20, false, false, false, false, 0, null)\n node.dispatchEvent(evt)\n }\n}\n\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nvar isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent)\n\nvar saveAs = _global.saveAs || (\n // probably in some web worker\n (typeof window !== 'object' || window !== _global)\n ? function saveAs () { /* noop */ }\n\n // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView\n : ('download' in HTMLAnchorElement.prototype && !isMacOSWebView)\n ? function saveAs (blob, name, opts) {\n var URL = _global.URL || _global.webkitURL\n var a = document.createElement('a')\n name = name || blob.name || 'download'\n\n a.download = name\n a.rel = 'noopener' // tabnabbing\n\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob\n if (a.origin !== location.origin) {\n corsEnabled(a.href)\n ? download(blob, name, opts)\n : click(a, a.target = '_blank')\n } else {\n click(a)\n }\n } else {\n // Support blobs\n a.href = URL.createObjectURL(blob)\n setTimeout(function () { URL.revokeObjectURL(a.href) }, 4E4) // 40s\n setTimeout(function () { click(a) }, 0)\n }\n }\n\n // Use msSaveOrOpenBlob as a second approach\n : 'msSaveOrOpenBlob' in navigator\n ? function saveAs (blob, name, opts) {\n name = name || blob.name || 'download'\n\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts)\n } else {\n var a = document.createElement('a')\n a.href = blob\n a.target = '_blank'\n setTimeout(function () { click(a) })\n }\n } else {\n navigator.msSaveOrOpenBlob(bom(blob, opts), name)\n }\n }\n\n // Fallback to using FileReader and a popup\n : function saveAs (blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank')\n if (popup) {\n popup.document.title =\n popup.document.body.innerText = 'downloading...'\n }\n\n if (typeof blob === 'string') return download(blob, name, opts)\n\n var force = blob.type === 'application/octet-stream'\n var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari\n var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent)\n\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n var reader = new FileReader()\n reader.onloadend = function () {\n var url = reader.result\n url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;')\n if (popup) popup.location.href = url\n else location = url\n popup = null // reverse-tabnabbing #460\n }\n reader.readAsDataURL(blob)\n } else {\n var URL = _global.URL || _global.webkitURL\n var url = URL.createObjectURL(blob)\n if (popup) popup.location = url\n else location.href = url\n popup = null // reverse-tabnabbing #460\n setTimeout(function () { URL.revokeObjectURL(url) }, 4E4) // 40s\n }\n }\n)\n\n_global.saveAs = saveAs.saveAs = saveAs\n\nif (typeof module !== 'undefined') {\n module.exports = saveAs;\n}\n","/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","import * as glMatrix from \"./common.js\";\n/**\n * 2x2 Matrix\n * @module mat2\n */\n\n/**\n * Creates a new identity mat2\n *\n * @returns {mat2} a new 2x2 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n }\n\n out[0] = 1;\n out[3] = 1;\n return out;\n}\n/**\n * Creates a new mat2 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat2} a matrix to clone\n * @returns {mat2} a new 2x2 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Copy the values from one mat2 to another\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Set a mat2 to the identity matrix\n *\n * @param {mat2} out the receiving matrix\n * @returns {mat2} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n}\n/**\n * Create a new mat2 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m10 Component in column 1, row 0 position (index 2)\n * @param {Number} m11 Component in column 1, row 1 position (index 3)\n * @returns {mat2} out A new 2x2 matrix\n */\n\nexport function fromValues(m00, m01, m10, m11) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = m00;\n out[1] = m01;\n out[2] = m10;\n out[3] = m11;\n return out;\n}\n/**\n * Set the components of a mat2 to the given values\n *\n * @param {mat2} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m10 Component in column 1, row 0 position (index 2)\n * @param {Number} m11 Component in column 1, row 1 position (index 3)\n * @returns {mat2} out\n */\n\nexport function set(out, m00, m01, m10, m11) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m10;\n out[3] = m11;\n return out;\n}\n/**\n * Transpose the values of a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache\n // some values\n if (out === a) {\n var a1 = a[1];\n out[1] = a[2];\n out[2] = a1;\n } else {\n out[0] = a[0];\n out[1] = a[2];\n out[2] = a[1];\n out[3] = a[3];\n }\n\n return out;\n}\n/**\n * Inverts a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nexport function invert(out, a) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3]; // Calculate the determinant\n\n var det = a0 * a3 - a2 * a1;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = a3 * det;\n out[1] = -a1 * det;\n out[2] = -a2 * det;\n out[3] = a0 * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nexport function adjoint(out, a) {\n // Caching this value is nessecary if out == a\n var a0 = a[0];\n out[0] = a[3];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a0;\n return out;\n}\n/**\n * Calculates the determinant of a mat2\n *\n * @param {ReadonlyMat2} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n return a[0] * a[3] - a[2] * a[1];\n}\n/**\n * Multiplies two mat2's\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nexport function multiply(out, a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = a0 * b0 + a2 * b1;\n out[1] = a1 * b0 + a3 * b1;\n out[2] = a0 * b2 + a2 * b3;\n out[3] = a1 * b2 + a3 * b3;\n return out;\n}\n/**\n * Rotates a mat2 by the given angle\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2} out\n */\n\nexport function rotate(out, a, rad) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out[0] = a0 * c + a2 * s;\n out[1] = a1 * c + a3 * s;\n out[2] = a0 * -s + a2 * c;\n out[3] = a1 * -s + a3 * c;\n return out;\n}\n/**\n * Scales the mat2 by the dimensions in the given vec2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat2} out\n **/\n\nexport function scale(out, a, v) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var v0 = v[0],\n v1 = v[1];\n out[0] = a0 * v0;\n out[1] = a1 * v0;\n out[2] = a2 * v1;\n out[3] = a3 * v1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat2.identity(dest);\n * mat2.rotate(dest, dest, rad);\n *\n * @param {mat2} out mat2 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = -s;\n out[3] = c;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat2.identity(dest);\n * mat2.scale(dest, dest, vec);\n *\n * @param {mat2} out mat2 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat2} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = v[1];\n return out;\n}\n/**\n * Returns a string representation of a mat2\n *\n * @param {ReadonlyMat2} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat2(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat2\n *\n * @param {ReadonlyMat2} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3]);\n}\n/**\n * Returns L, D and U matrices (Lower triangular, Diagonal and Upper triangular) by factorizing the input matrix\n * @param {ReadonlyMat2} L the lower triangular matrix\n * @param {ReadonlyMat2} D the diagonal matrix\n * @param {ReadonlyMat2} U the upper triangular matrix\n * @param {ReadonlyMat2} a the input matrix to factorize\n */\n\nexport function LDU(L, D, U, a) {\n L[2] = a[2] / a[0];\n U[0] = a[0];\n U[1] = a[1];\n U[3] = a[3] - L[2] * U[1];\n return [L, D, U];\n}\n/**\n * Adds two mat2's\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat2} a The first matrix.\n * @param {ReadonlyMat2} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat2} a The first matrix.\n * @param {ReadonlyMat2} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat2} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\n * Adds two mat2's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat2} out the receiving vector\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat2} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\n * Alias for {@link mat2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat2.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 2x3 Matrix\n * @module mat2d\n * @description\n * A mat2d contains six elements defined as:\n *
\n * [a, b,\n *  c, d,\n *  tx, ty]\n * 
\n * This is a short form for the 3x3 matrix:\n *
\n * [a, b, 0,\n *  c, d, 0,\n *  tx, ty, 1]\n * 
\n * The last column is ignored so the array is shorter and operations are faster.\n */\n\n/**\n * Creates a new identity mat2d\n *\n * @returns {mat2d} a new 2x3 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(6);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[4] = 0;\n out[5] = 0;\n }\n\n out[0] = 1;\n out[3] = 1;\n return out;\n}\n/**\n * Creates a new mat2d initialized with values from an existing matrix\n *\n * @param {ReadonlyMat2d} a matrix to clone\n * @returns {mat2d} a new 2x3 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(6);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n return out;\n}\n/**\n * Copy the values from one mat2d to another\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the source matrix\n * @returns {mat2d} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n return out;\n}\n/**\n * Set a mat2d to the identity matrix\n *\n * @param {mat2d} out the receiving matrix\n * @returns {mat2d} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * Create a new mat2d with the given values\n *\n * @param {Number} a Component A (index 0)\n * @param {Number} b Component B (index 1)\n * @param {Number} c Component C (index 2)\n * @param {Number} d Component D (index 3)\n * @param {Number} tx Component TX (index 4)\n * @param {Number} ty Component TY (index 5)\n * @returns {mat2d} A new mat2d\n */\n\nexport function fromValues(a, b, c, d, tx, ty) {\n var out = new glMatrix.ARRAY_TYPE(6);\n out[0] = a;\n out[1] = b;\n out[2] = c;\n out[3] = d;\n out[4] = tx;\n out[5] = ty;\n return out;\n}\n/**\n * Set the components of a mat2d to the given values\n *\n * @param {mat2d} out the receiving matrix\n * @param {Number} a Component A (index 0)\n * @param {Number} b Component B (index 1)\n * @param {Number} c Component C (index 2)\n * @param {Number} d Component D (index 3)\n * @param {Number} tx Component TX (index 4)\n * @param {Number} ty Component TY (index 5)\n * @returns {mat2d} out\n */\n\nexport function set(out, a, b, c, d, tx, ty) {\n out[0] = a;\n out[1] = b;\n out[2] = c;\n out[3] = d;\n out[4] = tx;\n out[5] = ty;\n return out;\n}\n/**\n * Inverts a mat2d\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the source matrix\n * @returns {mat2d} out\n */\n\nexport function invert(out, a) {\n var aa = a[0],\n ab = a[1],\n ac = a[2],\n ad = a[3];\n var atx = a[4],\n aty = a[5];\n var det = aa * ad - ab * ac;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = ad * det;\n out[1] = -ab * det;\n out[2] = -ac * det;\n out[3] = aa * det;\n out[4] = (ac * aty - ad * atx) * det;\n out[5] = (ab * atx - aa * aty) * det;\n return out;\n}\n/**\n * Calculates the determinant of a mat2d\n *\n * @param {ReadonlyMat2d} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n return a[0] * a[3] - a[1] * a[2];\n}\n/**\n * Multiplies two mat2d's\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the first operand\n * @param {ReadonlyMat2d} b the second operand\n * @returns {mat2d} out\n */\n\nexport function multiply(out, a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5];\n out[0] = a0 * b0 + a2 * b1;\n out[1] = a1 * b0 + a3 * b1;\n out[2] = a0 * b2 + a2 * b3;\n out[3] = a1 * b2 + a3 * b3;\n out[4] = a0 * b4 + a2 * b5 + a4;\n out[5] = a1 * b4 + a3 * b5 + a5;\n return out;\n}\n/**\n * Rotates a mat2d by the given angle\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2d} out\n */\n\nexport function rotate(out, a, rad) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out[0] = a0 * c + a2 * s;\n out[1] = a1 * c + a3 * s;\n out[2] = a0 * -s + a2 * c;\n out[3] = a1 * -s + a3 * c;\n out[4] = a4;\n out[5] = a5;\n return out;\n}\n/**\n * Scales the mat2d by the dimensions in the given vec2\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to translate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat2d} out\n **/\n\nexport function scale(out, a, v) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var v0 = v[0],\n v1 = v[1];\n out[0] = a0 * v0;\n out[1] = a1 * v0;\n out[2] = a2 * v1;\n out[3] = a3 * v1;\n out[4] = a4;\n out[5] = a5;\n return out;\n}\n/**\n * Translates the mat2d by the dimensions in the given vec2\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to translate\n * @param {ReadonlyVec2} v the vec2 to translate the matrix by\n * @returns {mat2d} out\n **/\n\nexport function translate(out, a, v) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var v0 = v[0],\n v1 = v[1];\n out[0] = a0;\n out[1] = a1;\n out[2] = a2;\n out[3] = a3;\n out[4] = a0 * v0 + a2 * v1 + a4;\n out[5] = a1 * v0 + a3 * v1 + a5;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat2d.identity(dest);\n * mat2d.rotate(dest, dest, rad);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2d} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = -s;\n out[3] = c;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat2d.identity(dest);\n * mat2d.scale(dest, dest, vec);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat2d} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = v[1];\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat2d.identity(dest);\n * mat2d.translate(dest, dest, vec);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat2d} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = v[0];\n out[5] = v[1];\n return out;\n}\n/**\n * Returns a string representation of a mat2d\n *\n * @param {ReadonlyMat2d} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat2d(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat2d\n *\n * @param {ReadonlyMat2d} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], 1);\n}\n/**\n * Adds two mat2d's\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the first operand\n * @param {ReadonlyMat2d} b the second operand\n * @returns {mat2d} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the first operand\n * @param {ReadonlyMat2d} b the second operand\n * @returns {mat2d} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat2d} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n return out;\n}\n/**\n * Adds two mat2d's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat2d} out the receiving vector\n * @param {ReadonlyMat2d} a the first operand\n * @param {ReadonlyMat2d} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat2d} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat2d} a The first matrix.\n * @param {ReadonlyMat2d} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat2d} a The first matrix.\n * @param {ReadonlyMat2d} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5));\n}\n/**\n * Alias for {@link mat2d.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat2d.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 4x4 Matrix
Format: column-major, when typed out it looks like row-major
The matrices are being post multiplied.\n * @module mat4\n */\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(16);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Create a new mat4 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} A new mat4\n */\n\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} out\n */\n\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\n * Calculates the determinant of a mat4\n *\n * @param {ReadonlyMat4} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {mat4} out\n */\n\nexport function translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 from a dual quat.\n *\n * @param {mat4} out Matrix\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @returns {mat4} mat4 receiving operation result\n */\n\nexport function fromQuat2(out, a) {\n var translation = new glMatrix.ARRAY_TYPE(3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\n * Returns the translation vector component of a transformation\n * matrix. If a matrix is built with fromRotationTranslation,\n * the returned vector will be the same as the translation vector\n * originally supplied.\n * @param {vec3} out Vector to receive translation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\n * Returns the scaling factor component of a transformation\n * matrix. If a matrix is built with fromRotationTranslationScale\n * with a normalized Quaternion paramter, the returned vector will be\n * the same as the scaling vector\n * originally supplied.\n * @param {vec3} out Vector to receive scaling factor component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\n * Returns a quaternion representing the rotational component\n * of a transformation matrix. If a matrix is built with\n * fromRotationTranslation, the returned quaternion will be the\n * same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */\n\nexport function getRotation(out, mat) {\n var scaling = new glMatrix.ARRAY_TYPE(3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * mat4.translate(dest, origin);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n * mat4.translate(dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveNO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\n * Alias for {@link mat4.perspectiveNO}\n * @function\n */\n\nexport var perspective = perspectiveNO;\n/**\n * Generates a perspective projection matrix suitable for WebGPU with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveZO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = far * nf;\n out[14] = far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -near;\n }\n\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoNO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Alias for {@link mat4.orthoNO}\n * @function\n */\n\nexport var ortho = orthoNO;\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoZO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = near * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat4\n *\n * @param {ReadonlyMat4} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat4} out the receiving vector\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat4} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat4.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 4 Dimensional Vector\n * @module vec4\n */\n\n/**\n * Creates a new, empty vec4\n *\n * @returns {vec4} a new 4D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec4 initialized with values from an existing vector\n *\n * @param {ReadonlyVec4} a vector to clone\n * @returns {vec4} a new 4D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a new vec4 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} a new 4D vector\n */\n\nexport function fromValues(x, y, z, w) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Copy the values from one vec4 to another\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the source vector\n * @returns {vec4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */\n\nexport function set(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\n * Multiplies two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\n/**\n * Divides two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\n/**\n * Math.ceil the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to ceil\n * @returns {vec4} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\n/**\n * Math.floor the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to floor\n * @returns {vec4} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\n/**\n * Returns the minimum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\n/**\n * Returns the maximum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\n/**\n * Math.round the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to round\n * @returns {vec4} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\n/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\n * Adds two vec4's after scaling the second operand by a scalar value\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec4} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Calculates the length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Negates the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to negate\n * @returns {vec4} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to invert\n * @returns {vec4} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\n/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to normalize\n * @returns {vec4} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\n * Returns the cross-product of three vectors in a 4-dimensional space\n *\n * @param {ReadonlyVec4} result the receiving vector\n * @param {ReadonlyVec4} U the first vector\n * @param {ReadonlyVec4} V the second vector\n * @param {ReadonlyVec4} W the third vector\n * @returns {vec4} result\n */\n\nexport function cross(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0],\n B = v[0] * w[2] - v[2] * w[0],\n C = v[0] * w[3] - v[3] * w[0],\n D = v[1] * w[2] - v[2] * w[1],\n E = v[1] * w[3] - v[3] * w[1],\n F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec4} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec4} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec4} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n\n var v1, v2, v3, v4;\n var s1, s2;\n\n do {\n v1 = glMatrix.RANDOM() * 2 - 1;\n v2 = glMatrix.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n } while (s1 >= 1);\n\n do {\n v3 = glMatrix.RANDOM() * 2 - 1;\n v4 = glMatrix.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n } while (s2 >= 1);\n\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\n/**\n * Transforms the vec4 with a mat4.\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec4} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n/**\n * Transforms the vec4 with a quat\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec4} out\n */\n\nexport function transformQuat(out, a, q) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3]; // calculate quat * vec\n\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to zero\n *\n * @param {vec4} out the receiving vector\n * @returns {vec4} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec4} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Alias for {@link vec4.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec4.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec4.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec4.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec4.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec4.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec4s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 4;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\nimport * as mat3 from \"./mat3.js\";\nimport * as vec3 from \"./vec3.js\";\nimport * as vec4 from \"./vec4.js\";\n/**\n * Quaternion\n * @module quat\n */\n\n/**\n * Creates a new identity quat\n *\n * @returns {quat} a new quaternion\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n out[3] = 1;\n return out;\n}\n/**\n * Set a quat to the identity quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nexport function identity(out) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n}\n/**\n * Sets a quat from the given angle and rotation axis,\n * then returns it.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyVec3} axis the axis around which to rotate\n * @param {Number} rad the angle in radians\n * @returns {quat} out\n **/\n\nexport function setAxisAngle(out, axis, rad) {\n rad = rad * 0.5;\n var s = Math.sin(rad);\n out[0] = s * axis[0];\n out[1] = s * axis[1];\n out[2] = s * axis[2];\n out[3] = Math.cos(rad);\n return out;\n}\n/**\n * Gets the rotation axis and angle for a given\n * quaternion. If a quaternion is created with\n * setAxisAngle, this method will return the same\n * values as providied in the original parameter list\n * OR functionally equivalent values.\n * Example: The quaternion formed by axis [0, 0, 1] and\n * angle -90 is the same as the quaternion formed by\n * [0, 0, 1] and 270. This method favors the latter.\n * @param {vec3} out_axis Vector receiving the axis of rotation\n * @param {ReadonlyQuat} q Quaternion to be decomposed\n * @return {Number} Angle, in radians, of the rotation\n */\n\nexport function getAxisAngle(out_axis, q) {\n var rad = Math.acos(q[3]) * 2.0;\n var s = Math.sin(rad / 2.0);\n\n if (s > glMatrix.EPSILON) {\n out_axis[0] = q[0] / s;\n out_axis[1] = q[1] / s;\n out_axis[2] = q[2] / s;\n } else {\n // If s is zero, return any axis (no rotation - axis does not matter)\n out_axis[0] = 1;\n out_axis[1] = 0;\n out_axis[2] = 0;\n }\n\n return rad;\n}\n/**\n * Gets the angular distance between two unit quaternions\n *\n * @param {ReadonlyQuat} a Origin unit quaternion\n * @param {ReadonlyQuat} b Destination unit quaternion\n * @return {Number} Angle, in radians, between the two quaternions\n */\n\nexport function getAngle(a, b) {\n var dotproduct = dot(a, b);\n return Math.acos(2 * dotproduct * dotproduct - 1);\n}\n/**\n * Multiplies two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n */\n\nexport function multiply(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n out[0] = ax * bw + aw * bx + ay * bz - az * by;\n out[1] = ay * bw + aw * by + az * bx - ax * bz;\n out[2] = az * bw + aw * bz + ax * by - ay * bx;\n out[3] = aw * bw - ax * bx - ay * by - az * bz;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the X axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateX(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + aw * bx;\n out[1] = ay * bw + az * bx;\n out[2] = az * bw - ay * bx;\n out[3] = aw * bw - ax * bx;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Y axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateY(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var by = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw - az * by;\n out[1] = ay * bw + aw * by;\n out[2] = az * bw + ax * by;\n out[3] = aw * bw - ay * by;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Z axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateZ(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bz = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + ay * bz;\n out[1] = ay * bw - ax * bz;\n out[2] = az * bw + aw * bz;\n out[3] = aw * bw - az * bz;\n return out;\n}\n/**\n * Calculates the W component of a quat from the X, Y, and Z components.\n * Assumes that quaternion is 1 unit in length.\n * Any existing W component will be ignored.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate W component of\n * @returns {quat} out\n */\n\nexport function calculateW(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\n return out;\n}\n/**\n * Calculate the exponential of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nexport function exp(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var et = Math.exp(w);\n var s = r > 0 ? et * Math.sin(r) / r : 0;\n out[0] = x * s;\n out[1] = y * s;\n out[2] = z * s;\n out[3] = et * Math.cos(r);\n return out;\n}\n/**\n * Calculate the natural logarithm of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nexport function ln(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var t = r > 0 ? Math.atan2(r, w) / r : 0;\n out[0] = x * t;\n out[1] = y * t;\n out[2] = z * t;\n out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w);\n return out;\n}\n/**\n * Calculate the scalar power of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @param {Number} b amount to scale the quaternion by\n * @returns {quat} out\n */\n\nexport function pow(out, a, b) {\n ln(out, a);\n scale(out, out, b);\n exp(out, out);\n return out;\n}\n/**\n * Performs a spherical linear interpolation between two quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nexport function slerp(out, a, b, t) {\n // benchmarks:\n // http://jsperf.com/quaternion-slerp-implementations\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n var omega, cosom, sinom, scale0, scale1; // calc cosine\n\n cosom = ax * bx + ay * by + az * bz + aw * bw; // adjust signs (if necessary)\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n } // calculate coefficients\n\n\n if (1.0 - cosom > glMatrix.EPSILON) {\n // standard case (slerp)\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n // \"from\" and \"to\" quaternions are very close\n // ... so we can do a linear interpolation\n scale0 = 1.0 - t;\n scale1 = t;\n } // calculate final values\n\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n}\n/**\n * Generates a random unit quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nexport function random(out) {\n // Implementation of http://planning.cs.uiuc.edu/node198.html\n // TODO: Calling random 3 times is probably not the fastest solution\n var u1 = glMatrix.RANDOM();\n var u2 = glMatrix.RANDOM();\n var u3 = glMatrix.RANDOM();\n var sqrt1MinusU1 = Math.sqrt(1 - u1);\n var sqrtU1 = Math.sqrt(u1);\n out[0] = sqrt1MinusU1 * Math.sin(2.0 * Math.PI * u2);\n out[1] = sqrt1MinusU1 * Math.cos(2.0 * Math.PI * u2);\n out[2] = sqrtU1 * Math.sin(2.0 * Math.PI * u3);\n out[3] = sqrtU1 * Math.cos(2.0 * Math.PI * u3);\n return out;\n}\n/**\n * Calculates the inverse of a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate inverse of\n * @returns {quat} out\n */\n\nexport function invert(out, a) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3;\n var invDot = dot ? 1.0 / dot : 0; // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\n\n out[0] = -a0 * invDot;\n out[1] = -a1 * invDot;\n out[2] = -a2 * invDot;\n out[3] = a3 * invDot;\n return out;\n}\n/**\n * Calculates the conjugate of a quat\n * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate conjugate of\n * @returns {quat} out\n */\n\nexport function conjugate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a quaternion from the given 3x3 rotation matrix.\n *\n * NOTE: The resultant quaternion is not normalized, so you should be sure\n * to renormalize the quaternion yourself where necessary.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyMat3} m rotation matrix\n * @returns {quat} out\n * @function\n */\n\nexport function fromMat3(out, m) {\n // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\n // article \"Quaternion Calculus and Fast Animation\".\n var fTrace = m[0] + m[4] + m[8];\n var fRoot;\n\n if (fTrace > 0.0) {\n // |w| > 1/2, may as well choose w > 1/2\n fRoot = Math.sqrt(fTrace + 1.0); // 2w\n\n out[3] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot; // 1/(4w)\n\n out[0] = (m[5] - m[7]) * fRoot;\n out[1] = (m[6] - m[2]) * fRoot;\n out[2] = (m[1] - m[3]) * fRoot;\n } else {\n // |w| <= 1/2\n var i = 0;\n if (m[4] > m[0]) i = 1;\n if (m[8] > m[i * 3 + i]) i = 2;\n var j = (i + 1) % 3;\n var k = (i + 2) % 3;\n fRoot = Math.sqrt(m[i * 3 + i] - m[j * 3 + j] - m[k * 3 + k] + 1.0);\n out[i] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot;\n out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot;\n out[j] = (m[j * 3 + i] + m[i * 3 + j]) * fRoot;\n out[k] = (m[k * 3 + i] + m[i * 3 + k]) * fRoot;\n }\n\n return out;\n}\n/**\n * Creates a quaternion from the given euler angle x, y, z.\n *\n * @param {quat} out the receiving quaternion\n * @param {x} Angle to rotate around X axis in degrees.\n * @param {y} Angle to rotate around Y axis in degrees.\n * @param {z} Angle to rotate around Z axis in degrees.\n * @returns {quat} out\n * @function\n */\n\nexport function fromEuler(out, x, y, z) {\n var halfToRad = 0.5 * Math.PI / 180.0;\n x *= halfToRad;\n y *= halfToRad;\n z *= halfToRad;\n var sx = Math.sin(x);\n var cx = Math.cos(x);\n var sy = Math.sin(y);\n var cy = Math.cos(y);\n var sz = Math.sin(z);\n var cz = Math.cos(z);\n out[0] = sx * cy * cz - cx * sy * sz;\n out[1] = cx * sy * cz + sx * cy * sz;\n out[2] = cx * cy * sz - sx * sy * cz;\n out[3] = cx * cy * cz + sx * sy * sz;\n return out;\n}\n/**\n * Returns a string representation of a quatenion\n *\n * @param {ReadonlyQuat} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"quat(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {ReadonlyQuat} a quaternion to clone\n * @returns {quat} a new quaternion\n * @function\n */\n\nexport var clone = vec4.clone;\n/**\n * Creates a new quat initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} a new quaternion\n * @function\n */\n\nexport var fromValues = vec4.fromValues;\n/**\n * Copy the values from one quat to another\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the source quaternion\n * @returns {quat} out\n * @function\n */\n\nexport var copy = vec4.copy;\n/**\n * Set the components of a quat to the given values\n *\n * @param {quat} out the receiving quaternion\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} out\n * @function\n */\n\nexport var set = vec4.set;\n/**\n * Adds two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n * @function\n */\n\nexport var add = vec4.add;\n/**\n * Alias for {@link quat.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Scales a quat by a scalar number\n *\n * @param {quat} out the receiving vector\n * @param {ReadonlyQuat} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {quat} out\n * @function\n */\n\nexport var scale = vec4.scale;\n/**\n * Calculates the dot product of two quat's\n *\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\n\nexport var dot = vec4.dot;\n/**\n * Performs a linear interpolation between two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n * @function\n */\n\nexport var lerp = vec4.lerp;\n/**\n * Calculates the length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport var length = vec4.length;\n/**\n * Alias for {@link quat.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Calculates the squared length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\n\nexport var squaredLength = vec4.squaredLength;\n/**\n * Alias for {@link quat.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Normalize a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quaternion to normalize\n * @returns {quat} out\n * @function\n */\n\nexport var normalize = vec4.normalize;\n/**\n * Returns whether or not the quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyQuat} a The first quaternion.\n * @param {ReadonlyQuat} b The second quaternion.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport var exactEquals = vec4.exactEquals;\n/**\n * Returns whether or not the quaternions have approximately the same elements in the same position.\n *\n * @param {ReadonlyQuat} a The first vector.\n * @param {ReadonlyQuat} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport var equals = vec4.equals;\n/**\n * Sets a quaternion to represent the shortest rotation from one\n * vector to another.\n *\n * Both vectors are assumed to be unit length.\n *\n * @param {quat} out the receiving quaternion.\n * @param {ReadonlyVec3} a the initial vector\n * @param {ReadonlyVec3} b the destination vector\n * @returns {quat} out\n */\n\nexport var rotationTo = function () {\n var tmpvec3 = vec3.create();\n var xUnitVec3 = vec3.fromValues(1, 0, 0);\n var yUnitVec3 = vec3.fromValues(0, 1, 0);\n return function (out, a, b) {\n var dot = vec3.dot(a, b);\n\n if (dot < -0.999999) {\n vec3.cross(tmpvec3, xUnitVec3, a);\n if (vec3.len(tmpvec3) < 0.000001) vec3.cross(tmpvec3, yUnitVec3, a);\n vec3.normalize(tmpvec3, tmpvec3);\n setAxisAngle(out, tmpvec3, Math.PI);\n return out;\n } else if (dot > 0.999999) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n } else {\n vec3.cross(tmpvec3, a, b);\n out[0] = tmpvec3[0];\n out[1] = tmpvec3[1];\n out[2] = tmpvec3[2];\n out[3] = 1 + dot;\n return normalize(out, out);\n }\n };\n}();\n/**\n * Performs a spherical linear interpolation with two control points\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {ReadonlyQuat} c the third operand\n * @param {ReadonlyQuat} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nexport var sqlerp = function () {\n var temp1 = create();\n var temp2 = create();\n return function (out, a, b, c, d, t) {\n slerp(temp1, a, d, t);\n slerp(temp2, b, c, t);\n slerp(out, temp1, temp2, 2 * t * (1 - t));\n return out;\n };\n}();\n/**\n * Sets the specified quaternion with values corresponding to the given\n * axes. Each axis is a vec3 and is expected to be unit length and\n * perpendicular to all other specified axes.\n *\n * @param {ReadonlyVec3} view the vector representing the viewing direction\n * @param {ReadonlyVec3} right the vector representing the local \"right\" direction\n * @param {ReadonlyVec3} up the vector representing the local \"up\" direction\n * @returns {quat} out\n */\n\nexport var setAxes = function () {\n var matr = mat3.create();\n return function (out, view, right, up) {\n matr[0] = right[0];\n matr[3] = right[1];\n matr[6] = right[2];\n matr[1] = up[0];\n matr[4] = up[1];\n matr[7] = up[2];\n matr[2] = -view[0];\n matr[5] = -view[1];\n matr[8] = -view[2];\n return normalize(out, fromMat3(out, matr));\n };\n}();","import * as glMatrix from \"./common.js\";\nimport * as quat from \"./quat.js\";\nimport * as mat4 from \"./mat4.js\";\n/**\n * Dual Quaternion
\n * Format: [real, dual]
\n * Quaternion format: XYZW
\n * Make sure to have normalized dual quaternions, otherwise the functions may not work as intended.
\n * @module quat2\n */\n\n/**\n * Creates a new identity dual quat\n *\n * @returns {quat2} a new dual quaternion [real -> rotation, dual -> translation]\n */\n\nexport function create() {\n var dq = new glMatrix.ARRAY_TYPE(8);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n dq[0] = 0;\n dq[1] = 0;\n dq[2] = 0;\n dq[4] = 0;\n dq[5] = 0;\n dq[6] = 0;\n dq[7] = 0;\n }\n\n dq[3] = 1;\n return dq;\n}\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {ReadonlyQuat2} a dual quaternion to clone\n * @returns {quat2} new dual quaternion\n * @function\n */\n\nexport function clone(a) {\n var dq = new glMatrix.ARRAY_TYPE(8);\n dq[0] = a[0];\n dq[1] = a[1];\n dq[2] = a[2];\n dq[3] = a[3];\n dq[4] = a[4];\n dq[5] = a[5];\n dq[6] = a[6];\n dq[7] = a[7];\n return dq;\n}\n/**\n * Creates a new dual quat initialized with the given values\n *\n * @param {Number} x1 X component\n * @param {Number} y1 Y component\n * @param {Number} z1 Z component\n * @param {Number} w1 W component\n * @param {Number} x2 X component\n * @param {Number} y2 Y component\n * @param {Number} z2 Z component\n * @param {Number} w2 W component\n * @returns {quat2} new dual quaternion\n * @function\n */\n\nexport function fromValues(x1, y1, z1, w1, x2, y2, z2, w2) {\n var dq = new glMatrix.ARRAY_TYPE(8);\n dq[0] = x1;\n dq[1] = y1;\n dq[2] = z1;\n dq[3] = w1;\n dq[4] = x2;\n dq[5] = y2;\n dq[6] = z2;\n dq[7] = w2;\n return dq;\n}\n/**\n * Creates a new dual quat from the given values (quat and translation)\n *\n * @param {Number} x1 X component\n * @param {Number} y1 Y component\n * @param {Number} z1 Z component\n * @param {Number} w1 W component\n * @param {Number} x2 X component (translation)\n * @param {Number} y2 Y component (translation)\n * @param {Number} z2 Z component (translation)\n * @returns {quat2} new dual quaternion\n * @function\n */\n\nexport function fromRotationTranslationValues(x1, y1, z1, w1, x2, y2, z2) {\n var dq = new glMatrix.ARRAY_TYPE(8);\n dq[0] = x1;\n dq[1] = y1;\n dq[2] = z1;\n dq[3] = w1;\n var ax = x2 * 0.5,\n ay = y2 * 0.5,\n az = z2 * 0.5;\n dq[4] = ax * w1 + ay * z1 - az * y1;\n dq[5] = ay * w1 + az * x1 - ax * z1;\n dq[6] = az * w1 + ax * y1 - ay * x1;\n dq[7] = -ax * x1 - ay * y1 - az * z1;\n return dq;\n}\n/**\n * Creates a dual quat from a quaternion and a translation\n *\n * @param {ReadonlyQuat2} dual quaternion receiving operation result\n * @param {ReadonlyQuat} q a normalized quaternion\n * @param {ReadonlyVec3} t tranlation vector\n * @returns {quat2} dual quaternion receiving operation result\n * @function\n */\n\nexport function fromRotationTranslation(out, q, t) {\n var ax = t[0] * 0.5,\n ay = t[1] * 0.5,\n az = t[2] * 0.5,\n bx = q[0],\n by = q[1],\n bz = q[2],\n bw = q[3];\n out[0] = bx;\n out[1] = by;\n out[2] = bz;\n out[3] = bw;\n out[4] = ax * bw + ay * bz - az * by;\n out[5] = ay * bw + az * bx - ax * bz;\n out[6] = az * bw + ax * by - ay * bx;\n out[7] = -ax * bx - ay * by - az * bz;\n return out;\n}\n/**\n * Creates a dual quat from a translation\n *\n * @param {ReadonlyQuat2} dual quaternion receiving operation result\n * @param {ReadonlyVec3} t translation vector\n * @returns {quat2} dual quaternion receiving operation result\n * @function\n */\n\nexport function fromTranslation(out, t) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = t[0] * 0.5;\n out[5] = t[1] * 0.5;\n out[6] = t[2] * 0.5;\n out[7] = 0;\n return out;\n}\n/**\n * Creates a dual quat from a quaternion\n *\n * @param {ReadonlyQuat2} dual quaternion receiving operation result\n * @param {ReadonlyQuat} q the quaternion\n * @returns {quat2} dual quaternion receiving operation result\n * @function\n */\n\nexport function fromRotation(out, q) {\n out[0] = q[0];\n out[1] = q[1];\n out[2] = q[2];\n out[3] = q[3];\n out[4] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n return out;\n}\n/**\n * Creates a new dual quat from a matrix (4x4)\n *\n * @param {quat2} out the dual quaternion\n * @param {ReadonlyMat4} a the matrix\n * @returns {quat2} dual quat receiving operation result\n * @function\n */\n\nexport function fromMat4(out, a) {\n //TODO Optimize this\n var outer = quat.create();\n mat4.getRotation(outer, a);\n var t = new glMatrix.ARRAY_TYPE(3);\n mat4.getTranslation(t, a);\n fromRotationTranslation(out, outer, t);\n return out;\n}\n/**\n * Copy the values from one dual quat to another\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the source dual quaternion\n * @returns {quat2} out\n * @function\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n return out;\n}\n/**\n * Set a dual quat to the identity dual quaternion\n *\n * @param {quat2} out the receiving quaternion\n * @returns {quat2} out\n */\n\nexport function identity(out) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n return out;\n}\n/**\n * Set the components of a dual quat to the given values\n *\n * @param {quat2} out the receiving quaternion\n * @param {Number} x1 X component\n * @param {Number} y1 Y component\n * @param {Number} z1 Z component\n * @param {Number} w1 W component\n * @param {Number} x2 X component\n * @param {Number} y2 Y component\n * @param {Number} z2 Z component\n * @param {Number} w2 W component\n * @returns {quat2} out\n * @function\n */\n\nexport function set(out, x1, y1, z1, w1, x2, y2, z2, w2) {\n out[0] = x1;\n out[1] = y1;\n out[2] = z1;\n out[3] = w1;\n out[4] = x2;\n out[5] = y2;\n out[6] = z2;\n out[7] = w2;\n return out;\n}\n/**\n * Gets the real part of a dual quat\n * @param {quat} out real part\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @return {quat} real part\n */\n\nexport var getReal = quat.copy;\n/**\n * Gets the dual part of a dual quat\n * @param {quat} out dual part\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @return {quat} dual part\n */\n\nexport function getDual(out, a) {\n out[0] = a[4];\n out[1] = a[5];\n out[2] = a[6];\n out[3] = a[7];\n return out;\n}\n/**\n * Set the real component of a dual quat to the given quaternion\n *\n * @param {quat2} out the receiving quaternion\n * @param {ReadonlyQuat} q a quaternion representing the real part\n * @returns {quat2} out\n * @function\n */\n\nexport var setReal = quat.copy;\n/**\n * Set the dual component of a dual quat to the given quaternion\n *\n * @param {quat2} out the receiving quaternion\n * @param {ReadonlyQuat} q a quaternion representing the dual part\n * @returns {quat2} out\n * @function\n */\n\nexport function setDual(out, q) {\n out[4] = q[0];\n out[5] = q[1];\n out[6] = q[2];\n out[7] = q[3];\n return out;\n}\n/**\n * Gets the translation of a normalized dual quat\n * @param {vec3} out translation\n * @param {ReadonlyQuat2} a Dual Quaternion to be decomposed\n * @return {vec3} translation\n */\n\nexport function getTranslation(out, a) {\n var ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7],\n bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3];\n out[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n out[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n out[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n return out;\n}\n/**\n * Translates a dual quat by the given vector\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {quat2} out\n */\n\nexport function translate(out, a, v) {\n var ax1 = a[0],\n ay1 = a[1],\n az1 = a[2],\n aw1 = a[3],\n bx1 = v[0] * 0.5,\n by1 = v[1] * 0.5,\n bz1 = v[2] * 0.5,\n ax2 = a[4],\n ay2 = a[5],\n az2 = a[6],\n aw2 = a[7];\n out[0] = ax1;\n out[1] = ay1;\n out[2] = az1;\n out[3] = aw1;\n out[4] = aw1 * bx1 + ay1 * bz1 - az1 * by1 + ax2;\n out[5] = aw1 * by1 + az1 * bx1 - ax1 * bz1 + ay2;\n out[6] = aw1 * bz1 + ax1 * by1 - ay1 * bx1 + az2;\n out[7] = -ax1 * bx1 - ay1 * by1 - az1 * bz1 + aw2;\n return out;\n}\n/**\n * Rotates a dual quat around the X axis\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {number} rad how far should the rotation be\n * @returns {quat2} out\n */\n\nexport function rotateX(out, a, rad) {\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7],\n ax1 = ax * bw + aw * bx + ay * bz - az * by,\n ay1 = ay * bw + aw * by + az * bx - ax * bz,\n az1 = az * bw + aw * bz + ax * by - ay * bx,\n aw1 = aw * bw - ax * bx - ay * by - az * bz;\n quat.rotateX(out, a, rad);\n bx = out[0];\n by = out[1];\n bz = out[2];\n bw = out[3];\n out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n return out;\n}\n/**\n * Rotates a dual quat around the Y axis\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {number} rad how far should the rotation be\n * @returns {quat2} out\n */\n\nexport function rotateY(out, a, rad) {\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7],\n ax1 = ax * bw + aw * bx + ay * bz - az * by,\n ay1 = ay * bw + aw * by + az * bx - ax * bz,\n az1 = az * bw + aw * bz + ax * by - ay * bx,\n aw1 = aw * bw - ax * bx - ay * by - az * bz;\n quat.rotateY(out, a, rad);\n bx = out[0];\n by = out[1];\n bz = out[2];\n bw = out[3];\n out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n return out;\n}\n/**\n * Rotates a dual quat around the Z axis\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {number} rad how far should the rotation be\n * @returns {quat2} out\n */\n\nexport function rotateZ(out, a, rad) {\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7],\n ax1 = ax * bw + aw * bx + ay * bz - az * by,\n ay1 = ay * bw + aw * by + az * bx - ax * bz,\n az1 = az * bw + aw * bz + ax * by - ay * bx,\n aw1 = aw * bw - ax * bx - ay * by - az * bz;\n quat.rotateZ(out, a, rad);\n bx = out[0];\n by = out[1];\n bz = out[2];\n bw = out[3];\n out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n return out;\n}\n/**\n * Rotates a dual quat by a given quaternion (a * q)\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {ReadonlyQuat} q quaternion to rotate by\n * @returns {quat2} out\n */\n\nexport function rotateByQuatAppend(out, a, q) {\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3],\n ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n out[0] = ax * qw + aw * qx + ay * qz - az * qy;\n out[1] = ay * qw + aw * qy + az * qx - ax * qz;\n out[2] = az * qw + aw * qz + ax * qy - ay * qx;\n out[3] = aw * qw - ax * qx - ay * qy - az * qz;\n ax = a[4];\n ay = a[5];\n az = a[6];\n aw = a[7];\n out[4] = ax * qw + aw * qx + ay * qz - az * qy;\n out[5] = ay * qw + aw * qy + az * qx - ax * qz;\n out[6] = az * qw + aw * qz + ax * qy - ay * qx;\n out[7] = aw * qw - ax * qx - ay * qy - az * qz;\n return out;\n}\n/**\n * Rotates a dual quat by a given quaternion (q * a)\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat} q quaternion to rotate by\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @returns {quat2} out\n */\n\nexport function rotateByQuatPrepend(out, q, a) {\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3],\n bx = a[0],\n by = a[1],\n bz = a[2],\n bw = a[3];\n out[0] = qx * bw + qw * bx + qy * bz - qz * by;\n out[1] = qy * bw + qw * by + qz * bx - qx * bz;\n out[2] = qz * bw + qw * bz + qx * by - qy * bx;\n out[3] = qw * bw - qx * bx - qy * by - qz * bz;\n bx = a[4];\n by = a[5];\n bz = a[6];\n bw = a[7];\n out[4] = qx * bw + qw * bx + qy * bz - qz * by;\n out[5] = qy * bw + qw * by + qz * bx - qx * bz;\n out[6] = qz * bw + qw * bz + qx * by - qy * bx;\n out[7] = qw * bw - qx * bx - qy * by - qz * bz;\n return out;\n}\n/**\n * Rotates a dual quat around a given axis. Does the normalisation automatically\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @param {Number} rad how far the rotation should be\n * @returns {quat2} out\n */\n\nexport function rotateAroundAxis(out, a, axis, rad) {\n //Special case for rad = 0\n if (Math.abs(rad) < glMatrix.EPSILON) {\n return copy(out, a);\n }\n\n var axisLength = Math.hypot(axis[0], axis[1], axis[2]);\n rad = rad * 0.5;\n var s = Math.sin(rad);\n var bx = s * axis[0] / axisLength;\n var by = s * axis[1] / axisLength;\n var bz = s * axis[2] / axisLength;\n var bw = Math.cos(rad);\n var ax1 = a[0],\n ay1 = a[1],\n az1 = a[2],\n aw1 = a[3];\n out[0] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n out[1] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n out[2] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n out[3] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n var ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n out[4] = ax * bw + aw * bx + ay * bz - az * by;\n out[5] = ay * bw + aw * by + az * bx - ax * bz;\n out[6] = az * bw + aw * bz + ax * by - ay * bx;\n out[7] = aw * bw - ax * bx - ay * by - az * bz;\n return out;\n}\n/**\n * Adds two dual quat's\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the first operand\n * @param {ReadonlyQuat2} b the second operand\n * @returns {quat2} out\n * @function\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n return out;\n}\n/**\n * Multiplies two dual quat's\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the first operand\n * @param {ReadonlyQuat2} b the second operand\n * @returns {quat2} out\n */\n\nexport function multiply(out, a, b) {\n var ax0 = a[0],\n ay0 = a[1],\n az0 = a[2],\n aw0 = a[3],\n bx1 = b[4],\n by1 = b[5],\n bz1 = b[6],\n bw1 = b[7],\n ax1 = a[4],\n ay1 = a[5],\n az1 = a[6],\n aw1 = a[7],\n bx0 = b[0],\n by0 = b[1],\n bz0 = b[2],\n bw0 = b[3];\n out[0] = ax0 * bw0 + aw0 * bx0 + ay0 * bz0 - az0 * by0;\n out[1] = ay0 * bw0 + aw0 * by0 + az0 * bx0 - ax0 * bz0;\n out[2] = az0 * bw0 + aw0 * bz0 + ax0 * by0 - ay0 * bx0;\n out[3] = aw0 * bw0 - ax0 * bx0 - ay0 * by0 - az0 * bz0;\n out[4] = ax0 * bw1 + aw0 * bx1 + ay0 * bz1 - az0 * by1 + ax1 * bw0 + aw1 * bx0 + ay1 * bz0 - az1 * by0;\n out[5] = ay0 * bw1 + aw0 * by1 + az0 * bx1 - ax0 * bz1 + ay1 * bw0 + aw1 * by0 + az1 * bx0 - ax1 * bz0;\n out[6] = az0 * bw1 + aw0 * bz1 + ax0 * by1 - ay0 * bx1 + az1 * bw0 + aw1 * bz0 + ax1 * by0 - ay1 * bx0;\n out[7] = aw0 * bw1 - ax0 * bx1 - ay0 * by1 - az0 * bz1 + aw1 * bw0 - ax1 * bx0 - ay1 * by0 - az1 * bz0;\n return out;\n}\n/**\n * Alias for {@link quat2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Scales a dual quat by a scalar number\n *\n * @param {quat2} out the receiving dual quat\n * @param {ReadonlyQuat2} a the dual quat to scale\n * @param {Number} b amount to scale the dual quat by\n * @returns {quat2} out\n * @function\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n return out;\n}\n/**\n * Calculates the dot product of two dual quat's (The dot product of the real parts)\n *\n * @param {ReadonlyQuat2} a the first operand\n * @param {ReadonlyQuat2} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\n\nexport var dot = quat.dot;\n/**\n * Performs a linear interpolation between two dual quats's\n * NOTE: The resulting dual quaternions won't always be normalized (The error is most noticeable when t = 0.5)\n *\n * @param {quat2} out the receiving dual quat\n * @param {ReadonlyQuat2} a the first operand\n * @param {ReadonlyQuat2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat2} out\n */\n\nexport function lerp(out, a, b, t) {\n var mt = 1 - t;\n if (dot(a, b) < 0) t = -t;\n out[0] = a[0] * mt + b[0] * t;\n out[1] = a[1] * mt + b[1] * t;\n out[2] = a[2] * mt + b[2] * t;\n out[3] = a[3] * mt + b[3] * t;\n out[4] = a[4] * mt + b[4] * t;\n out[5] = a[5] * mt + b[5] * t;\n out[6] = a[6] * mt + b[6] * t;\n out[7] = a[7] * mt + b[7] * t;\n return out;\n}\n/**\n * Calculates the inverse of a dual quat. If they are normalized, conjugate is cheaper\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a dual quat to calculate inverse of\n * @returns {quat2} out\n */\n\nexport function invert(out, a) {\n var sqlen = squaredLength(a);\n out[0] = -a[0] / sqlen;\n out[1] = -a[1] / sqlen;\n out[2] = -a[2] / sqlen;\n out[3] = a[3] / sqlen;\n out[4] = -a[4] / sqlen;\n out[5] = -a[5] / sqlen;\n out[6] = -a[6] / sqlen;\n out[7] = a[7] / sqlen;\n return out;\n}\n/**\n * Calculates the conjugate of a dual quat\n * If the dual quaternion is normalized, this function is faster than quat2.inverse and produces the same result.\n *\n * @param {quat2} out the receiving quaternion\n * @param {ReadonlyQuat2} a quat to calculate conjugate of\n * @returns {quat2} out\n */\n\nexport function conjugate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a[3];\n out[4] = -a[4];\n out[5] = -a[5];\n out[6] = -a[6];\n out[7] = a[7];\n return out;\n}\n/**\n * Calculates the length of a dual quat\n *\n * @param {ReadonlyQuat2} a dual quat to calculate length of\n * @returns {Number} length of a\n * @function\n */\n\nexport var length = quat.length;\n/**\n * Alias for {@link quat2.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Calculates the squared length of a dual quat\n *\n * @param {ReadonlyQuat2} a dual quat to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\n\nexport var squaredLength = quat.squaredLength;\n/**\n * Alias for {@link quat2.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Normalize a dual quat\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a dual quaternion to normalize\n * @returns {quat2} out\n * @function\n */\n\nexport function normalize(out, a) {\n var magnitude = squaredLength(a);\n\n if (magnitude > 0) {\n magnitude = Math.sqrt(magnitude);\n var a0 = a[0] / magnitude;\n var a1 = a[1] / magnitude;\n var a2 = a[2] / magnitude;\n var a3 = a[3] / magnitude;\n var b0 = a[4];\n var b1 = a[5];\n var b2 = a[6];\n var b3 = a[7];\n var a_dot_b = a0 * b0 + a1 * b1 + a2 * b2 + a3 * b3;\n out[0] = a0;\n out[1] = a1;\n out[2] = a2;\n out[3] = a3;\n out[4] = (b0 - a0 * a_dot_b) / magnitude;\n out[5] = (b1 - a1 * a_dot_b) / magnitude;\n out[6] = (b2 - a2 * a_dot_b) / magnitude;\n out[7] = (b3 - a3 * a_dot_b) / magnitude;\n }\n\n return out;\n}\n/**\n * Returns a string representation of a dual quatenion\n *\n * @param {ReadonlyQuat2} a dual quaternion to represent as a string\n * @returns {String} string representation of the dual quat\n */\n\nexport function str(a) {\n return \"quat2(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \")\";\n}\n/**\n * Returns whether or not the dual quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyQuat2} a the first dual quaternion.\n * @param {ReadonlyQuat2} b the second dual quaternion.\n * @returns {Boolean} true if the dual quaternions are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7];\n}\n/**\n * Returns whether or not the dual quaternions have approximately the same elements in the same position.\n *\n * @param {ReadonlyQuat2} a the first dual quat.\n * @param {ReadonlyQuat2} b the second dual quat.\n * @returns {Boolean} true if the dual quats are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7));\n}","import * as glMatrix from \"./common.js\";\n/**\n * 3x3 Matrix\n * @module mat3\n */\n\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(9);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n }\n\n out[0] = 1;\n out[4] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {ReadonlyMat4} a the source 4x4 matrix\n * @returns {mat3} out\n */\n\nexport function fromMat4(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[4];\n out[4] = a[5];\n out[5] = a[6];\n out[6] = a[8];\n out[7] = a[9];\n out[8] = a[10];\n return out;\n}\n/**\n * Creates a new mat3 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat3} a matrix to clone\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Create a new mat3 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} A new mat3\n */\n\nexport function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set the components of a mat3 to the given values\n *\n * @param {mat3} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} out\n */\n\nexport function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a12 = a[5];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a01;\n out[5] = a[7];\n out[6] = a02;\n out[7] = a12;\n } else {\n out[0] = a[0];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a[1];\n out[4] = a[4];\n out[5] = a[7];\n out[6] = a[2];\n out[7] = a[5];\n out[8] = a[8];\n }\n\n return out;\n}\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20; // Calculate the determinant\n\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n out[0] = a11 * a22 - a12 * a21;\n out[1] = a02 * a21 - a01 * a22;\n out[2] = a01 * a12 - a02 * a11;\n out[3] = a12 * a20 - a10 * a22;\n out[4] = a00 * a22 - a02 * a20;\n out[5] = a02 * a10 - a00 * a12;\n out[6] = a10 * a21 - a11 * a20;\n out[7] = a01 * a20 - a00 * a21;\n out[8] = a00 * a11 - a01 * a10;\n return out;\n}\n/**\n * Calculates the determinant of a mat3\n *\n * @param {ReadonlyMat3} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n}\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b00 = b[0],\n b01 = b[1],\n b02 = b[2];\n var b10 = b[3],\n b11 = b[4],\n b12 = b[5];\n var b20 = b[6],\n b21 = b[7],\n b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to translate\n * @param {ReadonlyVec2} v vector to translate by\n * @returns {mat3} out\n */\n\nexport function translate(out, a, v) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n x = v[0],\n y = v[1];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a10;\n out[4] = a11;\n out[5] = a12;\n out[6] = x * a00 + y * a10 + a20;\n out[7] = x * a01 + y * a11 + a21;\n out[8] = x * a02 + y * a12 + a22;\n return out;\n}\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function rotate(out, a, rad) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c * a00 + s * a10;\n out[1] = c * a01 + s * a11;\n out[2] = c * a02 + s * a12;\n out[3] = c * a10 - s * a00;\n out[4] = c * a11 - s * a01;\n out[5] = c * a12 - s * a02;\n out[6] = a20;\n out[7] = a21;\n out[8] = a22;\n return out;\n}\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1];\n out[0] = x * a[0];\n out[1] = x * a[1];\n out[2] = x * a[2];\n out[3] = y * a[3];\n out[4] = y * a[4];\n out[5] = y * a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.translate(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat3} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = v[0];\n out[7] = v[1];\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.rotate(dest, dest, rad);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = -s;\n out[4] = c;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.scale(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat3} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = v[1];\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the values from a mat2d into a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to copy\n * @returns {mat3} out\n **/\n\nexport function fromMat2d(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = 0;\n out[3] = a[2];\n out[4] = a[3];\n out[5] = 0;\n out[6] = a[4];\n out[7] = a[5];\n out[8] = 1;\n return out;\n}\n/**\n * Calculates a 3x3 matrix from the given quaternion\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat3} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[3] = yx - wz;\n out[6] = zx + wy;\n out[1] = yx + wz;\n out[4] = 1 - xx - zz;\n out[7] = zy - wx;\n out[2] = zx - wy;\n out[5] = zy + wx;\n out[8] = 1 - xx - yy;\n return out;\n}\n/**\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyMat4} a Mat4 to derive the normal matrix from\n *\n * @returns {mat3} out\n */\n\nexport function normalFromMat4(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n return out;\n}\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */\n\nexport function projection(out, width, height) {\n out[0] = 2 / width;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = -2 / height;\n out[5] = 0;\n out[6] = -1;\n out[7] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat3\n *\n * @param {ReadonlyMat3} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat3\n *\n * @param {ReadonlyMat3} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\n/**\n * Adds two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat3} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n return out;\n}\n/**\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat3} out the receiving vector\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat3} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7],\n a8 = a[8];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8));\n}\n/**\n * Alias for {@link mat3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat3.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {ReadonlyVec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the source vector\n * @returns {vec2} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to ceil\n * @returns {vec2} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to floor\n * @returns {vec2} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to round\n * @returns {vec2} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\n * Calculates the length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to negate\n * @returns {vec2} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to invert\n * @returns {vec2} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to normalize\n * @returns {vec2} out\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {ReadonlyVec2} a The vec2 point to rotate\n * @param {ReadonlyVec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\n\nexport function rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\n * Get the angle between two 2D vectors\n * @param {ReadonlyVec2} a The first operand\n * @param {ReadonlyVec2} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\n * Alias for {@link vec2.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {ReadonlyVec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Calculates the length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the source vector\n * @returns {vec3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to ceil\n * @returns {vec3} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to floor\n * @returns {vec3} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to round\n * @returns {vec3} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Calculates the squared length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to negate\n * @returns {vec3} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to invert\n * @returns {vec3} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to normalize\n * @returns {vec3} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec3} out\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Get the angle between two 3D vectors\n * @param {ReadonlyVec3} a The first operand\n * @param {ReadonlyVec3} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec3.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var containers = []; // will store container HTMLElement references\nvar styleElements = []; // will store {prepend: HTMLElement, append: HTMLElement}\n\nvar usage = 'insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).';\n\nfunction insertCss(css, options) {\n options = options || {};\n\n if (css === undefined) {\n throw new Error(usage);\n }\n\n var position = options.prepend === true ? 'prepend' : 'append';\n var container = options.container !== undefined ? options.container : document.querySelector('head');\n var containerId = containers.indexOf(container);\n\n // first time we see this container, create the necessary entries\n if (containerId === -1) {\n containerId = containers.push(container) - 1;\n styleElements[containerId] = {};\n }\n\n // try to get the correponding container + position styleElement, create it otherwise\n var styleElement;\n\n if (styleElements[containerId] !== undefined && styleElements[containerId][position] !== undefined) {\n styleElement = styleElements[containerId][position];\n } else {\n styleElement = styleElements[containerId][position] = createStyleElement();\n\n if (position === 'prepend') {\n container.insertBefore(styleElement, container.childNodes[0]);\n } else {\n container.appendChild(styleElement);\n }\n }\n\n // strip potential UTF-8 BOM if css was read from a file\n if (css.charCodeAt(0) === 0xFEFF) { css = css.substr(1, css.length); }\n\n // actually add the stylesheet\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText += css\n } else {\n styleElement.textContent += css;\n }\n\n return styleElement;\n};\n\nfunction createStyleElement() {\n var styleElement = document.createElement('style');\n styleElement.setAttribute('type', 'text/css');\n return styleElement;\n}\n\nmodule.exports = insertCss;\nmodule.exports.insertCss = insertCss;\n","'use strict';\n\nconst denyList = new Set([\n\t'ENOTFOUND',\n\t'ENETUNREACH',\n\n\t// SSL errors from https://github.com/nodejs/node/blob/fc8e3e2cdc521978351de257030db0076d79e0ab/src/crypto/crypto_common.cc#L301-L328\n\t'UNABLE_TO_GET_ISSUER_CERT',\n\t'UNABLE_TO_GET_CRL',\n\t'UNABLE_TO_DECRYPT_CERT_SIGNATURE',\n\t'UNABLE_TO_DECRYPT_CRL_SIGNATURE',\n\t'UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY',\n\t'CERT_SIGNATURE_FAILURE',\n\t'CRL_SIGNATURE_FAILURE',\n\t'CERT_NOT_YET_VALID',\n\t'CERT_HAS_EXPIRED',\n\t'CRL_NOT_YET_VALID',\n\t'CRL_HAS_EXPIRED',\n\t'ERROR_IN_CERT_NOT_BEFORE_FIELD',\n\t'ERROR_IN_CERT_NOT_AFTER_FIELD',\n\t'ERROR_IN_CRL_LAST_UPDATE_FIELD',\n\t'ERROR_IN_CRL_NEXT_UPDATE_FIELD',\n\t'OUT_OF_MEM',\n\t'DEPTH_ZERO_SELF_SIGNED_CERT',\n\t'SELF_SIGNED_CERT_IN_CHAIN',\n\t'UNABLE_TO_GET_ISSUER_CERT_LOCALLY',\n\t'UNABLE_TO_VERIFY_LEAF_SIGNATURE',\n\t'CERT_CHAIN_TOO_LONG',\n\t'CERT_REVOKED',\n\t'INVALID_CA',\n\t'PATH_LENGTH_EXCEEDED',\n\t'INVALID_PURPOSE',\n\t'CERT_UNTRUSTED',\n\t'CERT_REJECTED',\n\t'HOSTNAME_MISMATCH'\n]);\n\n// TODO: Use `error?.code` when targeting Node.js 14\nmodule.exports = error => !denyList.has(error && error.code);\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","module.exports = self.fetch || (self.fetch = require('unfetch').default || require('unfetch'));\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","const toString = Object.prototype.toString;\n\n/**\n * Checks if an object is an instance of an Array (array or typed array).\n *\n * @param {any} value - Object to check.\n * @returns {boolean} True if the object is an array.\n */\nexport function isAnyArray(value) {\n return toString.call(value).endsWith('Array]');\n}\n","import { isAnyArray } from 'is-any-array';\n\nfunction max(input) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!isAnyArray(input)) {\n throw new TypeError('input must be an array');\n }\n\n if (input.length === 0) {\n throw new TypeError('input must not be empty');\n }\n\n var _options$fromIndex = options.fromIndex,\n fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n _options$toIndex = options.toIndex,\n toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n throw new Error('fromIndex must be a positive integer smaller than length');\n }\n\n if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n }\n\n var maxValue = input[fromIndex];\n\n for (var i = fromIndex + 1; i < toIndex; i++) {\n if (input[i] > maxValue) maxValue = input[i];\n }\n\n return maxValue;\n}\n\nexport { max as default };\n","import { isAnyArray } from 'is-any-array';\n\nfunction min(input) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!isAnyArray(input)) {\n throw new TypeError('input must be an array');\n }\n\n if (input.length === 0) {\n throw new TypeError('input must not be empty');\n }\n\n var _options$fromIndex = options.fromIndex,\n fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n _options$toIndex = options.toIndex,\n toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n throw new Error('fromIndex must be a positive integer smaller than length');\n }\n\n if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n }\n\n var minValue = input[fromIndex];\n\n for (var i = fromIndex + 1; i < toIndex; i++) {\n if (input[i] < minValue) minValue = input[i];\n }\n\n return minValue;\n}\n\nexport { min as default };\n","import { isAnyArray } from 'is-any-array';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\n\nfunction rescale(input) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!isAnyArray(input)) {\n throw new TypeError('input must be an array');\n } else if (input.length === 0) {\n throw new TypeError('input must not be empty');\n }\n\n var output;\n\n if (options.output !== undefined) {\n if (!isAnyArray(options.output)) {\n throw new TypeError('output option must be an array if specified');\n }\n\n output = options.output;\n } else {\n output = new Array(input.length);\n }\n\n var currentMin = min(input);\n var currentMax = max(input);\n\n if (currentMin === currentMax) {\n throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n }\n\n var _options$min = options.min,\n minValue = _options$min === void 0 ? options.autoMinMax ? currentMin : 0 : _options$min,\n _options$max = options.max,\n maxValue = _options$max === void 0 ? options.autoMinMax ? currentMax : 1 : _options$max;\n\n if (minValue >= maxValue) {\n throw new RangeError('min option must be smaller than max option');\n }\n\n var factor = (maxValue - minValue) / (currentMax - currentMin);\n\n for (var i = 0; i < input.length; i++) {\n output[i] = (input[i] - currentMin) * factor + minValue;\n }\n\n return output;\n}\n\nexport { rescale as default };\n","const indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\nexport function inspectMatrix() {\n return inspectMatrixWithOptions(this);\n}\n\nexport function inspectMatrixWithOptions(matrix, options = {}) {\n const {\n maxRows = 15,\n maxColumns = 10,\n maxNumSize = 8,\n padMinus = 'auto',\n } = options;\n return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize, padMinus)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize, padMinus) {\n const { rows, columns } = matrix;\n const maxI = Math.min(rows, maxRows);\n const maxJ = Math.min(columns, maxColumns);\n const result = [];\n\n if (padMinus === 'auto') {\n padMinus = false;\n loop: for (let i = 0; i < maxI; i++) {\n for (let j = 0; j < maxJ; j++) {\n if (matrix.get(i, j) < 0) {\n padMinus = true;\n break loop;\n }\n }\n }\n }\n\n for (let i = 0; i < maxI; i++) {\n let line = [];\n for (let j = 0; j < maxJ; j++) {\n line.push(formatNumber(matrix.get(i, j), maxNumSize, padMinus));\n }\n result.push(`${line.join(' ')}`);\n }\n if (maxJ !== columns) {\n result[result.length - 1] += ` ... ${columns - maxColumns} more columns`;\n }\n if (maxI !== rows) {\n result.push(`... ${rows - maxRows} more rows`);\n }\n return result.join(`\\n${indentData}`);\n}\n\nfunction formatNumber(num, maxNumSize, padMinus) {\n return (\n num >= 0 && padMinus\n ? ` ${formatNumber2(num, maxNumSize - 1)}`\n : formatNumber2(num, maxNumSize)\n ).padEnd(maxNumSize);\n}\n\nfunction formatNumber2(num, len) {\n // small.length numbers should be as is\n let str = num.toString();\n if (str.length <= len) return str;\n\n // (7)'0.00123' is better then (7)'1.23e-2'\n // (8)'0.000123' is worse then (7)'1.23e-3',\n let fix = num.toFixed(len);\n if (fix.length > len) {\n fix = num.toFixed(Math.max(0, len - (fix.length - len)));\n }\n if (\n fix.length <= len &&\n !fix.startsWith('0.000') &&\n !fix.startsWith('-0.000')\n ) {\n return fix;\n }\n\n // well, if it's still too long the user should've used longer numbers\n let exp = num.toExponential(len);\n if (exp.length > len) {\n exp = num.toExponential(Math.max(0, len - (exp.length - len)));\n }\n return exp.slice(0);\n}\n","import { isAnyArray } from 'is-any-array';\n\n/**\n * @private\n * Check that a row index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkRowIndex(matrix, index, outer) {\n let max = outer ? matrix.rows : matrix.rows - 1;\n if (index < 0 || index > max) {\n throw new RangeError('Row index out of range');\n }\n}\n\n/**\n * @private\n * Check that a column index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkColumnIndex(matrix, index, outer) {\n let max = outer ? matrix.columns : matrix.columns - 1;\n if (index < 0 || index > max) {\n throw new RangeError('Column index out of range');\n }\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkRowVector(matrix, vector) {\n if (vector.to1DArray) {\n vector = vector.to1DArray();\n }\n if (vector.length !== matrix.columns) {\n throw new RangeError(\n 'vector size must be the same as the number of columns',\n );\n }\n return vector;\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkColumnVector(matrix, vector) {\n if (vector.to1DArray) {\n vector = vector.to1DArray();\n }\n if (vector.length !== matrix.rows) {\n throw new RangeError('vector size must be the same as the number of rows');\n }\n return vector;\n}\n\nexport function checkRowIndices(matrix, rowIndices) {\n if (!isAnyArray(rowIndices)) {\n throw new TypeError('row indices must be an array');\n }\n\n for (let i = 0; i < rowIndices.length; i++) {\n if (rowIndices[i] < 0 || rowIndices[i] >= matrix.rows) {\n throw new RangeError('row indices are out of range');\n }\n }\n}\n\nexport function checkColumnIndices(matrix, columnIndices) {\n if (!isAnyArray(columnIndices)) {\n throw new TypeError('column indices must be an array');\n }\n\n for (let i = 0; i < columnIndices.length; i++) {\n if (columnIndices[i] < 0 || columnIndices[i] >= matrix.columns) {\n throw new RangeError('column indices are out of range');\n }\n }\n}\n\nexport function checkRange(matrix, startRow, endRow, startColumn, endColumn) {\n if (arguments.length !== 5) {\n throw new RangeError('expected 4 arguments');\n }\n checkNumber('startRow', startRow);\n checkNumber('endRow', endRow);\n checkNumber('startColumn', startColumn);\n checkNumber('endColumn', endColumn);\n if (\n startRow > endRow ||\n startColumn > endColumn ||\n startRow < 0 ||\n startRow >= matrix.rows ||\n endRow < 0 ||\n endRow >= matrix.rows ||\n startColumn < 0 ||\n startColumn >= matrix.columns ||\n endColumn < 0 ||\n endColumn >= matrix.columns\n ) {\n throw new RangeError('Submatrix indices are out of range');\n }\n}\n\nexport function newArray(length, value = 0) {\n let array = [];\n for (let i = 0; i < length; i++) {\n array.push(value);\n }\n return array;\n}\n\nfunction checkNumber(name, value) {\n if (typeof value !== 'number') {\n throw new TypeError(`${name} must be a number`);\n }\n}\n\nexport function checkNonEmpty(matrix) {\n if (matrix.isEmpty()) {\n throw new Error('Empty matrix has no elements to index');\n }\n}\n","import { isAnyArray } from 'is-any-array';\nimport rescale from 'ml-array-rescale';\n\nimport { inspectMatrix, inspectMatrixWithOptions } from './inspect';\nimport { installMathOperations } from './mathOperations';\nimport {\n sumByRow,\n sumByColumn,\n sumAll,\n productByRow,\n productByColumn,\n productAll,\n varianceByRow,\n varianceByColumn,\n varianceAll,\n centerByRow,\n centerByColumn,\n centerAll,\n scaleByRow,\n scaleByColumn,\n scaleAll,\n getScaleByRow,\n getScaleByColumn,\n getScaleAll,\n} from './stat';\nimport {\n checkRowVector,\n checkRowIndex,\n checkColumnIndex,\n checkColumnVector,\n checkRange,\n checkNonEmpty,\n checkRowIndices,\n checkColumnIndices,\n} from './util';\n\nexport class AbstractMatrix {\n static from1DArray(newRows, newColumns, newData) {\n let length = newRows * newColumns;\n if (length !== newData.length) {\n throw new RangeError('data length does not match given dimensions');\n }\n let newMatrix = new Matrix(newRows, newColumns);\n for (let row = 0; row < newRows; row++) {\n for (let column = 0; column < newColumns; column++) {\n newMatrix.set(row, column, newData[row * newColumns + column]);\n }\n }\n return newMatrix;\n }\n\n static rowVector(newData) {\n let vector = new Matrix(1, newData.length);\n for (let i = 0; i < newData.length; i++) {\n vector.set(0, i, newData[i]);\n }\n return vector;\n }\n\n static columnVector(newData) {\n let vector = new Matrix(newData.length, 1);\n for (let i = 0; i < newData.length; i++) {\n vector.set(i, 0, newData[i]);\n }\n return vector;\n }\n\n static zeros(rows, columns) {\n return new Matrix(rows, columns);\n }\n\n static ones(rows, columns) {\n return new Matrix(rows, columns).fill(1);\n }\n\n static rand(rows, columns, options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { random = Math.random } = options;\n let matrix = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n matrix.set(i, j, random());\n }\n }\n return matrix;\n }\n\n static randInt(rows, columns, options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { min = 0, max = 1000, random = Math.random } = options;\n if (!Number.isInteger(min)) throw new TypeError('min must be an integer');\n if (!Number.isInteger(max)) throw new TypeError('max must be an integer');\n if (min >= max) throw new RangeError('min must be smaller than max');\n let interval = max - min;\n let matrix = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n let value = min + Math.round(random() * interval);\n matrix.set(i, j, value);\n }\n }\n return matrix;\n }\n\n static eye(rows, columns, value) {\n if (columns === undefined) columns = rows;\n if (value === undefined) value = 1;\n let min = Math.min(rows, columns);\n let matrix = this.zeros(rows, columns);\n for (let i = 0; i < min; i++) {\n matrix.set(i, i, value);\n }\n return matrix;\n }\n\n static diag(data, rows, columns) {\n let l = data.length;\n if (rows === undefined) rows = l;\n if (columns === undefined) columns = rows;\n let min = Math.min(l, rows, columns);\n let matrix = this.zeros(rows, columns);\n for (let i = 0; i < min; i++) {\n matrix.set(i, i, data[i]);\n }\n return matrix;\n }\n\n static min(matrix1, matrix2) {\n matrix1 = this.checkMatrix(matrix1);\n matrix2 = this.checkMatrix(matrix2);\n let rows = matrix1.rows;\n let columns = matrix1.columns;\n let result = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n result.set(i, j, Math.min(matrix1.get(i, j), matrix2.get(i, j)));\n }\n }\n return result;\n }\n\n static max(matrix1, matrix2) {\n matrix1 = this.checkMatrix(matrix1);\n matrix2 = this.checkMatrix(matrix2);\n let rows = matrix1.rows;\n let columns = matrix1.columns;\n let result = new this(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n result.set(i, j, Math.max(matrix1.get(i, j), matrix2.get(i, j)));\n }\n }\n return result;\n }\n\n static checkMatrix(value) {\n return AbstractMatrix.isMatrix(value) ? value : new Matrix(value);\n }\n\n static isMatrix(value) {\n return value != null && value.klass === 'Matrix';\n }\n\n get size() {\n return this.rows * this.columns;\n }\n\n apply(callback) {\n if (typeof callback !== 'function') {\n throw new TypeError('callback must be a function');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n callback.call(this, i, j);\n }\n }\n return this;\n }\n\n to1DArray() {\n let array = [];\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n array.push(this.get(i, j));\n }\n }\n return array;\n }\n\n to2DArray() {\n let copy = [];\n for (let i = 0; i < this.rows; i++) {\n copy.push([]);\n for (let j = 0; j < this.columns; j++) {\n copy[i].push(this.get(i, j));\n }\n }\n return copy;\n }\n\n toJSON() {\n return this.to2DArray();\n }\n\n isRowVector() {\n return this.rows === 1;\n }\n\n isColumnVector() {\n return this.columns === 1;\n }\n\n isVector() {\n return this.rows === 1 || this.columns === 1;\n }\n\n isSquare() {\n return this.rows === this.columns;\n }\n\n isEmpty() {\n return this.rows === 0 || this.columns === 0;\n }\n\n isSymmetric() {\n if (this.isSquare()) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j <= i; j++) {\n if (this.get(i, j) !== this.get(j, i)) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n }\n\n isEchelonForm() {\n let i = 0;\n let j = 0;\n let previousColumn = -1;\n let isEchelonForm = true;\n let checked = false;\n while (i < this.rows && isEchelonForm) {\n j = 0;\n checked = false;\n while (j < this.columns && checked === false) {\n if (this.get(i, j) === 0) {\n j++;\n } else if (this.get(i, j) === 1 && j > previousColumn) {\n checked = true;\n previousColumn = j;\n } else {\n isEchelonForm = false;\n checked = true;\n }\n }\n i++;\n }\n return isEchelonForm;\n }\n\n isReducedEchelonForm() {\n let i = 0;\n let j = 0;\n let previousColumn = -1;\n let isReducedEchelonForm = true;\n let checked = false;\n while (i < this.rows && isReducedEchelonForm) {\n j = 0;\n checked = false;\n while (j < this.columns && checked === false) {\n if (this.get(i, j) === 0) {\n j++;\n } else if (this.get(i, j) === 1 && j > previousColumn) {\n checked = true;\n previousColumn = j;\n } else {\n isReducedEchelonForm = false;\n checked = true;\n }\n }\n for (let k = j + 1; k < this.rows; k++) {\n if (this.get(i, k) !== 0) {\n isReducedEchelonForm = false;\n }\n }\n i++;\n }\n return isReducedEchelonForm;\n }\n\n echelonForm() {\n let result = this.clone();\n let h = 0;\n let k = 0;\n while (h < result.rows && k < result.columns) {\n let iMax = h;\n for (let i = h; i < result.rows; i++) {\n if (result.get(i, k) > result.get(iMax, k)) {\n iMax = i;\n }\n }\n if (result.get(iMax, k) === 0) {\n k++;\n } else {\n result.swapRows(h, iMax);\n let tmp = result.get(h, k);\n for (let j = k; j < result.columns; j++) {\n result.set(h, j, result.get(h, j) / tmp);\n }\n for (let i = h + 1; i < result.rows; i++) {\n let factor = result.get(i, k) / result.get(h, k);\n result.set(i, k, 0);\n for (let j = k + 1; j < result.columns; j++) {\n result.set(i, j, result.get(i, j) - result.get(h, j) * factor);\n }\n }\n h++;\n k++;\n }\n }\n return result;\n }\n\n reducedEchelonForm() {\n let result = this.echelonForm();\n let m = result.columns;\n let n = result.rows;\n let h = n - 1;\n while (h >= 0) {\n if (result.maxRow(h) === 0) {\n h--;\n } else {\n let p = 0;\n let pivot = false;\n while (p < n && pivot === false) {\n if (result.get(h, p) === 1) {\n pivot = true;\n } else {\n p++;\n }\n }\n for (let i = 0; i < h; i++) {\n let factor = result.get(i, p);\n for (let j = p; j < m; j++) {\n let tmp = result.get(i, j) - factor * result.get(h, j);\n result.set(i, j, tmp);\n }\n }\n h--;\n }\n }\n return result;\n }\n\n set() {\n throw new Error('set method is unimplemented');\n }\n\n get() {\n throw new Error('get method is unimplemented');\n }\n\n repeat(options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { rows = 1, columns = 1 } = options;\n if (!Number.isInteger(rows) || rows <= 0) {\n throw new TypeError('rows must be a positive integer');\n }\n if (!Number.isInteger(columns) || columns <= 0) {\n throw new TypeError('columns must be a positive integer');\n }\n let matrix = new Matrix(this.rows * rows, this.columns * columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n matrix.setSubMatrix(this, this.rows * i, this.columns * j);\n }\n }\n return matrix;\n }\n\n fill(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, value);\n }\n }\n return this;\n }\n\n neg() {\n return this.mulS(-1);\n }\n\n getRow(index) {\n checkRowIndex(this, index);\n let row = [];\n for (let i = 0; i < this.columns; i++) {\n row.push(this.get(index, i));\n }\n return row;\n }\n\n getRowVector(index) {\n return Matrix.rowVector(this.getRow(index));\n }\n\n setRow(index, array) {\n checkRowIndex(this, index);\n array = checkRowVector(this, array);\n for (let i = 0; i < this.columns; i++) {\n this.set(index, i, array[i]);\n }\n return this;\n }\n\n swapRows(row1, row2) {\n checkRowIndex(this, row1);\n checkRowIndex(this, row2);\n for (let i = 0; i < this.columns; i++) {\n let temp = this.get(row1, i);\n this.set(row1, i, this.get(row2, i));\n this.set(row2, i, temp);\n }\n return this;\n }\n\n getColumn(index) {\n checkColumnIndex(this, index);\n let column = [];\n for (let i = 0; i < this.rows; i++) {\n column.push(this.get(i, index));\n }\n return column;\n }\n\n getColumnVector(index) {\n return Matrix.columnVector(this.getColumn(index));\n }\n\n setColumn(index, array) {\n checkColumnIndex(this, index);\n array = checkColumnVector(this, array);\n for (let i = 0; i < this.rows; i++) {\n this.set(i, index, array[i]);\n }\n return this;\n }\n\n swapColumns(column1, column2) {\n checkColumnIndex(this, column1);\n checkColumnIndex(this, column2);\n for (let i = 0; i < this.rows; i++) {\n let temp = this.get(i, column1);\n this.set(i, column1, this.get(i, column2));\n this.set(i, column2, temp);\n }\n return this;\n }\n\n addRowVector(vector) {\n vector = checkRowVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + vector[j]);\n }\n }\n return this;\n }\n\n subRowVector(vector) {\n vector = checkRowVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - vector[j]);\n }\n }\n return this;\n }\n\n mulRowVector(vector) {\n vector = checkRowVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * vector[j]);\n }\n }\n return this;\n }\n\n divRowVector(vector) {\n vector = checkRowVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / vector[j]);\n }\n }\n return this;\n }\n\n addColumnVector(vector) {\n vector = checkColumnVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + vector[i]);\n }\n }\n return this;\n }\n\n subColumnVector(vector) {\n vector = checkColumnVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - vector[i]);\n }\n }\n return this;\n }\n\n mulColumnVector(vector) {\n vector = checkColumnVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * vector[i]);\n }\n }\n return this;\n }\n\n divColumnVector(vector) {\n vector = checkColumnVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / vector[i]);\n }\n }\n return this;\n }\n\n mulRow(index, value) {\n checkRowIndex(this, index);\n for (let i = 0; i < this.columns; i++) {\n this.set(index, i, this.get(index, i) * value);\n }\n return this;\n }\n\n mulColumn(index, value) {\n checkColumnIndex(this, index);\n for (let i = 0; i < this.rows; i++) {\n this.set(i, index, this.get(i, index) * value);\n }\n return this;\n }\n\n max(by) {\n if (this.isEmpty()) {\n return NaN;\n }\n switch (by) {\n case 'row': {\n const max = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) > max[row]) {\n max[row] = this.get(row, column);\n }\n }\n }\n return max;\n }\n case 'column': {\n const max = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) > max[column]) {\n max[column] = this.get(row, column);\n }\n }\n }\n return max;\n }\n case undefined: {\n let max = this.get(0, 0);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) > max) {\n max = this.get(row, column);\n }\n }\n }\n return max;\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n maxIndex() {\n checkNonEmpty(this);\n let v = this.get(0, 0);\n let idx = [0, 0];\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n if (this.get(i, j) > v) {\n v = this.get(i, j);\n idx[0] = i;\n idx[1] = j;\n }\n }\n }\n return idx;\n }\n\n min(by) {\n if (this.isEmpty()) {\n return NaN;\n }\n\n switch (by) {\n case 'row': {\n const min = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) < min[row]) {\n min[row] = this.get(row, column);\n }\n }\n }\n return min;\n }\n case 'column': {\n const min = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) < min[column]) {\n min[column] = this.get(row, column);\n }\n }\n }\n return min;\n }\n case undefined: {\n let min = this.get(0, 0);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) < min) {\n min = this.get(row, column);\n }\n }\n }\n return min;\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n minIndex() {\n checkNonEmpty(this);\n let v = this.get(0, 0);\n let idx = [0, 0];\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n if (this.get(i, j) < v) {\n v = this.get(i, j);\n idx[0] = i;\n idx[1] = j;\n }\n }\n }\n return idx;\n }\n\n maxRow(row) {\n checkRowIndex(this, row);\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(row, 0);\n for (let i = 1; i < this.columns; i++) {\n if (this.get(row, i) > v) {\n v = this.get(row, i);\n }\n }\n return v;\n }\n\n maxRowIndex(row) {\n checkRowIndex(this, row);\n checkNonEmpty(this);\n let v = this.get(row, 0);\n let idx = [row, 0];\n for (let i = 1; i < this.columns; i++) {\n if (this.get(row, i) > v) {\n v = this.get(row, i);\n idx[1] = i;\n }\n }\n return idx;\n }\n\n minRow(row) {\n checkRowIndex(this, row);\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(row, 0);\n for (let i = 1; i < this.columns; i++) {\n if (this.get(row, i) < v) {\n v = this.get(row, i);\n }\n }\n return v;\n }\n\n minRowIndex(row) {\n checkRowIndex(this, row);\n checkNonEmpty(this);\n let v = this.get(row, 0);\n let idx = [row, 0];\n for (let i = 1; i < this.columns; i++) {\n if (this.get(row, i) < v) {\n v = this.get(row, i);\n idx[1] = i;\n }\n }\n return idx;\n }\n\n maxColumn(column) {\n checkColumnIndex(this, column);\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(0, column);\n for (let i = 1; i < this.rows; i++) {\n if (this.get(i, column) > v) {\n v = this.get(i, column);\n }\n }\n return v;\n }\n\n maxColumnIndex(column) {\n checkColumnIndex(this, column);\n checkNonEmpty(this);\n let v = this.get(0, column);\n let idx = [0, column];\n for (let i = 1; i < this.rows; i++) {\n if (this.get(i, column) > v) {\n v = this.get(i, column);\n idx[0] = i;\n }\n }\n return idx;\n }\n\n minColumn(column) {\n checkColumnIndex(this, column);\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(0, column);\n for (let i = 1; i < this.rows; i++) {\n if (this.get(i, column) < v) {\n v = this.get(i, column);\n }\n }\n return v;\n }\n\n minColumnIndex(column) {\n checkColumnIndex(this, column);\n checkNonEmpty(this);\n let v = this.get(0, column);\n let idx = [0, column];\n for (let i = 1; i < this.rows; i++) {\n if (this.get(i, column) < v) {\n v = this.get(i, column);\n idx[0] = i;\n }\n }\n return idx;\n }\n\n diag() {\n let min = Math.min(this.rows, this.columns);\n let diag = [];\n for (let i = 0; i < min; i++) {\n diag.push(this.get(i, i));\n }\n return diag;\n }\n\n norm(type = 'frobenius') {\n let result = 0;\n if (type === 'max') {\n return this.max();\n } else if (type === 'frobenius') {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n result = result + this.get(i, j) * this.get(i, j);\n }\n }\n return Math.sqrt(result);\n } else {\n throw new RangeError(`unknown norm type: ${type}`);\n }\n }\n\n cumulativeSum() {\n let sum = 0;\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n sum += this.get(i, j);\n this.set(i, j, sum);\n }\n }\n return this;\n }\n\n dot(vector2) {\n if (AbstractMatrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\n let vector1 = this.to1DArray();\n if (vector1.length !== vector2.length) {\n throw new RangeError('vectors do not have the same size');\n }\n let dot = 0;\n for (let i = 0; i < vector1.length; i++) {\n dot += vector1[i] * vector2[i];\n }\n return dot;\n }\n\n mmul(other) {\n other = Matrix.checkMatrix(other);\n\n let m = this.rows;\n let n = this.columns;\n let p = other.columns;\n\n let result = new Matrix(m, p);\n\n let Bcolj = new Float64Array(n);\n for (let j = 0; j < p; j++) {\n for (let k = 0; k < n; k++) {\n Bcolj[k] = other.get(k, j);\n }\n\n for (let i = 0; i < m; i++) {\n let s = 0;\n for (let k = 0; k < n; k++) {\n s += this.get(i, k) * Bcolj[k];\n }\n\n result.set(i, j, s);\n }\n }\n return result;\n }\n\n strassen2x2(other) {\n other = Matrix.checkMatrix(other);\n let result = new Matrix(2, 2);\n const a11 = this.get(0, 0);\n const b11 = other.get(0, 0);\n const a12 = this.get(0, 1);\n const b12 = other.get(0, 1);\n const a21 = this.get(1, 0);\n const b21 = other.get(1, 0);\n const a22 = this.get(1, 1);\n const b22 = other.get(1, 1);\n\n // Compute intermediate values.\n const m1 = (a11 + a22) * (b11 + b22);\n const m2 = (a21 + a22) * b11;\n const m3 = a11 * (b12 - b22);\n const m4 = a22 * (b21 - b11);\n const m5 = (a11 + a12) * b22;\n const m6 = (a21 - a11) * (b11 + b12);\n const m7 = (a12 - a22) * (b21 + b22);\n\n // Combine intermediate values into the output.\n const c00 = m1 + m4 - m5 + m7;\n const c01 = m3 + m5;\n const c10 = m2 + m4;\n const c11 = m1 - m2 + m3 + m6;\n\n result.set(0, 0, c00);\n result.set(0, 1, c01);\n result.set(1, 0, c10);\n result.set(1, 1, c11);\n return result;\n }\n\n strassen3x3(other) {\n other = Matrix.checkMatrix(other);\n let result = new Matrix(3, 3);\n\n const a00 = this.get(0, 0);\n const a01 = this.get(0, 1);\n const a02 = this.get(0, 2);\n const a10 = this.get(1, 0);\n const a11 = this.get(1, 1);\n const a12 = this.get(1, 2);\n const a20 = this.get(2, 0);\n const a21 = this.get(2, 1);\n const a22 = this.get(2, 2);\n\n const b00 = other.get(0, 0);\n const b01 = other.get(0, 1);\n const b02 = other.get(0, 2);\n const b10 = other.get(1, 0);\n const b11 = other.get(1, 1);\n const b12 = other.get(1, 2);\n const b20 = other.get(2, 0);\n const b21 = other.get(2, 1);\n const b22 = other.get(2, 2);\n\n const m1 = (a00 + a01 + a02 - a10 - a11 - a21 - a22) * b11;\n const m2 = (a00 - a10) * (-b01 + b11);\n const m3 = a11 * (-b00 + b01 + b10 - b11 - b12 - b20 + b22);\n const m4 = (-a00 + a10 + a11) * (b00 - b01 + b11);\n const m5 = (a10 + a11) * (-b00 + b01);\n const m6 = a00 * b00;\n const m7 = (-a00 + a20 + a21) * (b00 - b02 + b12);\n const m8 = (-a00 + a20) * (b02 - b12);\n const m9 = (a20 + a21) * (-b00 + b02);\n const m10 = (a00 + a01 + a02 - a11 - a12 - a20 - a21) * b12;\n const m11 = a21 * (-b00 + b02 + b10 - b11 - b12 - b20 + b21);\n const m12 = (-a02 + a21 + a22) * (b11 + b20 - b21);\n const m13 = (a02 - a22) * (b11 - b21);\n const m14 = a02 * b20;\n const m15 = (a21 + a22) * (-b20 + b21);\n const m16 = (-a02 + a11 + a12) * (b12 + b20 - b22);\n const m17 = (a02 - a12) * (b12 - b22);\n const m18 = (a11 + a12) * (-b20 + b22);\n const m19 = a01 * b10;\n const m20 = a12 * b21;\n const m21 = a10 * b02;\n const m22 = a20 * b01;\n const m23 = a22 * b22;\n\n const c00 = m6 + m14 + m19;\n const c01 = m1 + m4 + m5 + m6 + m12 + m14 + m15;\n const c02 = m6 + m7 + m9 + m10 + m14 + m16 + m18;\n const c10 = m2 + m3 + m4 + m6 + m14 + m16 + m17;\n const c11 = m2 + m4 + m5 + m6 + m20;\n const c12 = m14 + m16 + m17 + m18 + m21;\n const c20 = m6 + m7 + m8 + m11 + m12 + m13 + m14;\n const c21 = m12 + m13 + m14 + m15 + m22;\n const c22 = m6 + m7 + m8 + m9 + m23;\n\n result.set(0, 0, c00);\n result.set(0, 1, c01);\n result.set(0, 2, c02);\n result.set(1, 0, c10);\n result.set(1, 1, c11);\n result.set(1, 2, c12);\n result.set(2, 0, c20);\n result.set(2, 1, c21);\n result.set(2, 2, c22);\n return result;\n }\n\n mmulStrassen(y) {\n y = Matrix.checkMatrix(y);\n let x = this.clone();\n let r1 = x.rows;\n let c1 = x.columns;\n let r2 = y.rows;\n let c2 = y.columns;\n if (c1 !== r2) {\n // eslint-disable-next-line no-console\n console.warn(\n `Multiplying ${r1} x ${c1} and ${r2} x ${c2} matrix: dimensions do not match.`,\n );\n }\n\n // Put a matrix into the top left of a matrix of zeros.\n // `rows` and `cols` are the dimensions of the output matrix.\n function embed(mat, rows, cols) {\n let r = mat.rows;\n let c = mat.columns;\n if (r === rows && c === cols) {\n return mat;\n } else {\n let resultat = AbstractMatrix.zeros(rows, cols);\n resultat = resultat.setSubMatrix(mat, 0, 0);\n return resultat;\n }\n }\n\n // Make sure both matrices are the same size.\n // This is exclusively for simplicity:\n // this algorithm can be implemented with matrices of different sizes.\n\n let r = Math.max(r1, r2);\n let c = Math.max(c1, c2);\n x = embed(x, r, c);\n y = embed(y, r, c);\n\n // Our recursive multiplication function.\n function blockMult(a, b, rows, cols) {\n // For small matrices, resort to naive multiplication.\n if (rows <= 512 || cols <= 512) {\n return a.mmul(b); // a is equivalent to this\n }\n\n // Apply dynamic padding.\n if (rows % 2 === 1 && cols % 2 === 1) {\n a = embed(a, rows + 1, cols + 1);\n b = embed(b, rows + 1, cols + 1);\n } else if (rows % 2 === 1) {\n a = embed(a, rows + 1, cols);\n b = embed(b, rows + 1, cols);\n } else if (cols % 2 === 1) {\n a = embed(a, rows, cols + 1);\n b = embed(b, rows, cols + 1);\n }\n\n let halfRows = parseInt(a.rows / 2, 10);\n let halfCols = parseInt(a.columns / 2, 10);\n // Subdivide input matrices.\n let a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n let b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n\n let a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\n let b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\n\n let a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\n let b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\n\n let a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\n let b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\n\n // Compute intermediate values.\n let m1 = blockMult(\n AbstractMatrix.add(a11, a22),\n AbstractMatrix.add(b11, b22),\n halfRows,\n halfCols,\n );\n let m2 = blockMult(AbstractMatrix.add(a21, a22), b11, halfRows, halfCols);\n let m3 = blockMult(a11, AbstractMatrix.sub(b12, b22), halfRows, halfCols);\n let m4 = blockMult(a22, AbstractMatrix.sub(b21, b11), halfRows, halfCols);\n let m5 = blockMult(AbstractMatrix.add(a11, a12), b22, halfRows, halfCols);\n let m6 = blockMult(\n AbstractMatrix.sub(a21, a11),\n AbstractMatrix.add(b11, b12),\n halfRows,\n halfCols,\n );\n let m7 = blockMult(\n AbstractMatrix.sub(a12, a22),\n AbstractMatrix.add(b21, b22),\n halfRows,\n halfCols,\n );\n\n // Combine intermediate values into the output.\n let c11 = AbstractMatrix.add(m1, m4);\n c11.sub(m5);\n c11.add(m7);\n let c12 = AbstractMatrix.add(m3, m5);\n let c21 = AbstractMatrix.add(m2, m4);\n let c22 = AbstractMatrix.sub(m1, m2);\n c22.add(m3);\n c22.add(m6);\n\n // Crop output to the desired size (undo dynamic padding).\n let resultat = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n resultat = resultat.setSubMatrix(c11, 0, 0);\n resultat = resultat.setSubMatrix(c12, c11.rows, 0);\n resultat = resultat.setSubMatrix(c21, 0, c11.columns);\n resultat = resultat.setSubMatrix(c22, c11.rows, c11.columns);\n return resultat.subMatrix(0, rows - 1, 0, cols - 1);\n }\n\n return blockMult(x, y, r, c);\n }\n\n scaleRows(options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { min = 0, max = 1 } = options;\n if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n if (min >= max) throw new RangeError('min must be smaller than max');\n let newMatrix = new Matrix(this.rows, this.columns);\n for (let i = 0; i < this.rows; i++) {\n const row = this.getRow(i);\n if (row.length > 0) {\n rescale(row, { min, max, output: row });\n }\n newMatrix.setRow(i, row);\n }\n return newMatrix;\n }\n\n scaleColumns(options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { min = 0, max = 1 } = options;\n if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n if (min >= max) throw new RangeError('min must be smaller than max');\n let newMatrix = new Matrix(this.rows, this.columns);\n for (let i = 0; i < this.columns; i++) {\n const column = this.getColumn(i);\n if (column.length) {\n rescale(column, {\n min: min,\n max: max,\n output: column,\n });\n }\n newMatrix.setColumn(i, column);\n }\n return newMatrix;\n }\n\n flipRows() {\n const middle = Math.ceil(this.columns / 2);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < middle; j++) {\n let first = this.get(i, j);\n let last = this.get(i, this.columns - 1 - j);\n this.set(i, j, last);\n this.set(i, this.columns - 1 - j, first);\n }\n }\n return this;\n }\n\n flipColumns() {\n const middle = Math.ceil(this.rows / 2);\n for (let j = 0; j < this.columns; j++) {\n for (let i = 0; i < middle; i++) {\n let first = this.get(i, j);\n let last = this.get(this.rows - 1 - i, j);\n this.set(i, j, last);\n this.set(this.rows - 1 - i, j, first);\n }\n }\n return this;\n }\n\n kroneckerProduct(other) {\n other = Matrix.checkMatrix(other);\n\n let m = this.rows;\n let n = this.columns;\n let p = other.rows;\n let q = other.columns;\n\n let result = new Matrix(m * p, n * q);\n for (let i = 0; i < m; i++) {\n for (let j = 0; j < n; j++) {\n for (let k = 0; k < p; k++) {\n for (let l = 0; l < q; l++) {\n result.set(p * i + k, q * j + l, this.get(i, j) * other.get(k, l));\n }\n }\n }\n }\n return result;\n }\n\n kroneckerSum(other) {\n other = Matrix.checkMatrix(other);\n if (!this.isSquare() || !other.isSquare()) {\n throw new Error('Kronecker Sum needs two Square Matrices');\n }\n let m = this.rows;\n let n = other.rows;\n let AxI = this.kroneckerProduct(Matrix.eye(n, n));\n let IxB = Matrix.eye(m, m).kroneckerProduct(other);\n return AxI.add(IxB);\n }\n\n transpose() {\n let result = new Matrix(this.columns, this.rows);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n result.set(j, i, this.get(i, j));\n }\n }\n return result;\n }\n\n sortRows(compareFunction = compareNumbers) {\n for (let i = 0; i < this.rows; i++) {\n this.setRow(i, this.getRow(i).sort(compareFunction));\n }\n return this;\n }\n\n sortColumns(compareFunction = compareNumbers) {\n for (let i = 0; i < this.columns; i++) {\n this.setColumn(i, this.getColumn(i).sort(compareFunction));\n }\n return this;\n }\n\n subMatrix(startRow, endRow, startColumn, endColumn) {\n checkRange(this, startRow, endRow, startColumn, endColumn);\n let newMatrix = new Matrix(\n endRow - startRow + 1,\n endColumn - startColumn + 1,\n );\n for (let i = startRow; i <= endRow; i++) {\n for (let j = startColumn; j <= endColumn; j++) {\n newMatrix.set(i - startRow, j - startColumn, this.get(i, j));\n }\n }\n return newMatrix;\n }\n\n subMatrixRow(indices, startColumn, endColumn) {\n if (startColumn === undefined) startColumn = 0;\n if (endColumn === undefined) endColumn = this.columns - 1;\n if (\n startColumn > endColumn ||\n startColumn < 0 ||\n startColumn >= this.columns ||\n endColumn < 0 ||\n endColumn >= this.columns\n ) {\n throw new RangeError('Argument out of range');\n }\n\n let newMatrix = new Matrix(indices.length, endColumn - startColumn + 1);\n for (let i = 0; i < indices.length; i++) {\n for (let j = startColumn; j <= endColumn; j++) {\n if (indices[i] < 0 || indices[i] >= this.rows) {\n throw new RangeError(`Row index out of range: ${indices[i]}`);\n }\n newMatrix.set(i, j - startColumn, this.get(indices[i], j));\n }\n }\n return newMatrix;\n }\n\n subMatrixColumn(indices, startRow, endRow) {\n if (startRow === undefined) startRow = 0;\n if (endRow === undefined) endRow = this.rows - 1;\n if (\n startRow > endRow ||\n startRow < 0 ||\n startRow >= this.rows ||\n endRow < 0 ||\n endRow >= this.rows\n ) {\n throw new RangeError('Argument out of range');\n }\n\n let newMatrix = new Matrix(endRow - startRow + 1, indices.length);\n for (let i = 0; i < indices.length; i++) {\n for (let j = startRow; j <= endRow; j++) {\n if (indices[i] < 0 || indices[i] >= this.columns) {\n throw new RangeError(`Column index out of range: ${indices[i]}`);\n }\n newMatrix.set(j - startRow, i, this.get(j, indices[i]));\n }\n }\n return newMatrix;\n }\n\n setSubMatrix(matrix, startRow, startColumn) {\n matrix = Matrix.checkMatrix(matrix);\n if (matrix.isEmpty()) {\n return this;\n }\n let endRow = startRow + matrix.rows - 1;\n let endColumn = startColumn + matrix.columns - 1;\n checkRange(this, startRow, endRow, startColumn, endColumn);\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n this.set(startRow + i, startColumn + j, matrix.get(i, j));\n }\n }\n return this;\n }\n\n selection(rowIndices, columnIndices) {\n checkRowIndices(this, rowIndices);\n checkColumnIndices(this, columnIndices);\n let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n for (let i = 0; i < rowIndices.length; i++) {\n let rowIndex = rowIndices[i];\n for (let j = 0; j < columnIndices.length; j++) {\n let columnIndex = columnIndices[j];\n newMatrix.set(i, j, this.get(rowIndex, columnIndex));\n }\n }\n return newMatrix;\n }\n\n trace() {\n let min = Math.min(this.rows, this.columns);\n let trace = 0;\n for (let i = 0; i < min; i++) {\n trace += this.get(i, i);\n }\n return trace;\n }\n\n clone() {\n let newMatrix = new Matrix(this.rows, this.columns);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n newMatrix.set(row, column, this.get(row, column));\n }\n }\n return newMatrix;\n }\n\n sum(by) {\n switch (by) {\n case 'row':\n return sumByRow(this);\n case 'column':\n return sumByColumn(this);\n case undefined:\n return sumAll(this);\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n product(by) {\n switch (by) {\n case 'row':\n return productByRow(this);\n case 'column':\n return productByColumn(this);\n case undefined:\n return productAll(this);\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n mean(by) {\n const sum = this.sum(by);\n switch (by) {\n case 'row': {\n for (let i = 0; i < this.rows; i++) {\n sum[i] /= this.columns;\n }\n return sum;\n }\n case 'column': {\n for (let i = 0; i < this.columns; i++) {\n sum[i] /= this.rows;\n }\n return sum;\n }\n case undefined:\n return sum / this.size;\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n variance(by, options = {}) {\n if (typeof by === 'object') {\n options = by;\n by = undefined;\n }\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { unbiased = true, mean = this.mean(by) } = options;\n if (typeof unbiased !== 'boolean') {\n throw new TypeError('unbiased must be a boolean');\n }\n switch (by) {\n case 'row': {\n if (!isAnyArray(mean)) {\n throw new TypeError('mean must be an array');\n }\n return varianceByRow(this, unbiased, mean);\n }\n case 'column': {\n if (!isAnyArray(mean)) {\n throw new TypeError('mean must be an array');\n }\n return varianceByColumn(this, unbiased, mean);\n }\n case undefined: {\n if (typeof mean !== 'number') {\n throw new TypeError('mean must be a number');\n }\n return varianceAll(this, unbiased, mean);\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n standardDeviation(by, options) {\n if (typeof by === 'object') {\n options = by;\n by = undefined;\n }\n const variance = this.variance(by, options);\n if (by === undefined) {\n return Math.sqrt(variance);\n } else {\n for (let i = 0; i < variance.length; i++) {\n variance[i] = Math.sqrt(variance[i]);\n }\n return variance;\n }\n }\n\n center(by, options = {}) {\n if (typeof by === 'object') {\n options = by;\n by = undefined;\n }\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { center = this.mean(by) } = options;\n switch (by) {\n case 'row': {\n if (!isAnyArray(center)) {\n throw new TypeError('center must be an array');\n }\n centerByRow(this, center);\n return this;\n }\n case 'column': {\n if (!isAnyArray(center)) {\n throw new TypeError('center must be an array');\n }\n centerByColumn(this, center);\n return this;\n }\n case undefined: {\n if (typeof center !== 'number') {\n throw new TypeError('center must be a number');\n }\n centerAll(this, center);\n return this;\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n scale(by, options = {}) {\n if (typeof by === 'object') {\n options = by;\n by = undefined;\n }\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n let scale = options.scale;\n switch (by) {\n case 'row': {\n if (scale === undefined) {\n scale = getScaleByRow(this);\n } else if (!isAnyArray(scale)) {\n throw new TypeError('scale must be an array');\n }\n scaleByRow(this, scale);\n return this;\n }\n case 'column': {\n if (scale === undefined) {\n scale = getScaleByColumn(this);\n } else if (!isAnyArray(scale)) {\n throw new TypeError('scale must be an array');\n }\n scaleByColumn(this, scale);\n return this;\n }\n case undefined: {\n if (scale === undefined) {\n scale = getScaleAll(this);\n } else if (typeof scale !== 'number') {\n throw new TypeError('scale must be a number');\n }\n scaleAll(this, scale);\n return this;\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n toString(options) {\n return inspectMatrixWithOptions(this, options);\n }\n}\n\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n AbstractMatrix.prototype[Symbol.for('nodejs.util.inspect.custom')] =\n inspectMatrix;\n}\n\nfunction compareNumbers(a, b) {\n return a - b;\n}\n\nfunction isArrayOfNumbers(array) {\n return array.every((element) => {\n return typeof element === 'number';\n });\n}\n\n// Synonyms\nAbstractMatrix.random = AbstractMatrix.rand;\nAbstractMatrix.randomInt = AbstractMatrix.randInt;\nAbstractMatrix.diagonal = AbstractMatrix.diag;\nAbstractMatrix.prototype.diagonal = AbstractMatrix.prototype.diag;\nAbstractMatrix.identity = AbstractMatrix.eye;\nAbstractMatrix.prototype.negate = AbstractMatrix.prototype.neg;\nAbstractMatrix.prototype.tensorProduct =\n AbstractMatrix.prototype.kroneckerProduct;\n\nexport default class Matrix extends AbstractMatrix {\n constructor(nRows, nColumns) {\n super();\n if (Matrix.isMatrix(nRows)) {\n // eslint-disable-next-line no-constructor-return\n return nRows.clone();\n } else if (Number.isInteger(nRows) && nRows >= 0) {\n // Create an empty matrix\n this.data = [];\n if (Number.isInteger(nColumns) && nColumns >= 0) {\n for (let i = 0; i < nRows; i++) {\n this.data.push(new Float64Array(nColumns));\n }\n } else {\n throw new TypeError('nColumns must be a positive integer');\n }\n } else if (isAnyArray(nRows)) {\n // Copy the values from the 2D array\n const arrayData = nRows;\n nRows = arrayData.length;\n nColumns = nRows ? arrayData[0].length : 0;\n if (typeof nColumns !== 'number') {\n throw new TypeError(\n 'Data must be a 2D array with at least one element',\n );\n }\n this.data = [];\n for (let i = 0; i < nRows; i++) {\n if (arrayData[i].length !== nColumns) {\n throw new RangeError('Inconsistent array dimensions');\n }\n if (!isArrayOfNumbers(arrayData[i])) {\n throw new TypeError('Input data contains non-numeric values');\n }\n this.data.push(Float64Array.from(arrayData[i]));\n }\n } else {\n throw new TypeError(\n 'First argument must be a positive number or an array',\n );\n }\n this.rows = nRows;\n this.columns = nColumns;\n }\n\n set(rowIndex, columnIndex, value) {\n this.data[rowIndex][columnIndex] = value;\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.data[rowIndex][columnIndex];\n }\n\n removeRow(index) {\n checkRowIndex(this, index);\n this.data.splice(index, 1);\n this.rows -= 1;\n return this;\n }\n\n addRow(index, array) {\n if (array === undefined) {\n array = index;\n index = this.rows;\n }\n checkRowIndex(this, index, true);\n array = Float64Array.from(checkRowVector(this, array));\n this.data.splice(index, 0, array);\n this.rows += 1;\n return this;\n }\n\n removeColumn(index) {\n checkColumnIndex(this, index);\n for (let i = 0; i < this.rows; i++) {\n const newRow = new Float64Array(this.columns - 1);\n for (let j = 0; j < index; j++) {\n newRow[j] = this.data[i][j];\n }\n for (let j = index + 1; j < this.columns; j++) {\n newRow[j - 1] = this.data[i][j];\n }\n this.data[i] = newRow;\n }\n this.columns -= 1;\n return this;\n }\n\n addColumn(index, array) {\n if (typeof array === 'undefined') {\n array = index;\n index = this.columns;\n }\n checkColumnIndex(this, index, true);\n array = checkColumnVector(this, array);\n for (let i = 0; i < this.rows; i++) {\n const newRow = new Float64Array(this.columns + 1);\n let j = 0;\n for (; j < index; j++) {\n newRow[j] = this.data[i][j];\n }\n newRow[j++] = array[i];\n for (; j < this.columns + 1; j++) {\n newRow[j] = this.data[i][j - 1];\n }\n this.data[i] = newRow;\n }\n this.columns += 1;\n return this;\n }\n}\n\ninstallMathOperations(AbstractMatrix, Matrix);\n","import { newArray } from './util';\n\nexport function sumByRow(matrix) {\n let sum = newArray(matrix.rows);\n for (let i = 0; i < matrix.rows; ++i) {\n for (let j = 0; j < matrix.columns; ++j) {\n sum[i] += matrix.get(i, j);\n }\n }\n return sum;\n}\n\nexport function sumByColumn(matrix) {\n let sum = newArray(matrix.columns);\n for (let i = 0; i < matrix.rows; ++i) {\n for (let j = 0; j < matrix.columns; ++j) {\n sum[j] += matrix.get(i, j);\n }\n }\n return sum;\n}\n\nexport function sumAll(matrix) {\n let v = 0;\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n v += matrix.get(i, j);\n }\n }\n return v;\n}\n\nexport function productByRow(matrix) {\n let sum = newArray(matrix.rows, 1);\n for (let i = 0; i < matrix.rows; ++i) {\n for (let j = 0; j < matrix.columns; ++j) {\n sum[i] *= matrix.get(i, j);\n }\n }\n return sum;\n}\n\nexport function productByColumn(matrix) {\n let sum = newArray(matrix.columns, 1);\n for (let i = 0; i < matrix.rows; ++i) {\n for (let j = 0; j < matrix.columns; ++j) {\n sum[j] *= matrix.get(i, j);\n }\n }\n return sum;\n}\n\nexport function productAll(matrix) {\n let v = 1;\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n v *= matrix.get(i, j);\n }\n }\n return v;\n}\n\nexport function varianceByRow(matrix, unbiased, mean) {\n const rows = matrix.rows;\n const cols = matrix.columns;\n const variance = [];\n\n for (let i = 0; i < rows; i++) {\n let sum1 = 0;\n let sum2 = 0;\n let x = 0;\n for (let j = 0; j < cols; j++) {\n x = matrix.get(i, j) - mean[i];\n sum1 += x;\n sum2 += x * x;\n }\n if (unbiased) {\n variance.push((sum2 - (sum1 * sum1) / cols) / (cols - 1));\n } else {\n variance.push((sum2 - (sum1 * sum1) / cols) / cols);\n }\n }\n return variance;\n}\n\nexport function varianceByColumn(matrix, unbiased, mean) {\n const rows = matrix.rows;\n const cols = matrix.columns;\n const variance = [];\n\n for (let j = 0; j < cols; j++) {\n let sum1 = 0;\n let sum2 = 0;\n let x = 0;\n for (let i = 0; i < rows; i++) {\n x = matrix.get(i, j) - mean[j];\n sum1 += x;\n sum2 += x * x;\n }\n if (unbiased) {\n variance.push((sum2 - (sum1 * sum1) / rows) / (rows - 1));\n } else {\n variance.push((sum2 - (sum1 * sum1) / rows) / rows);\n }\n }\n return variance;\n}\n\nexport function varianceAll(matrix, unbiased, mean) {\n const rows = matrix.rows;\n const cols = matrix.columns;\n const size = rows * cols;\n\n let sum1 = 0;\n let sum2 = 0;\n let x = 0;\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < cols; j++) {\n x = matrix.get(i, j) - mean;\n sum1 += x;\n sum2 += x * x;\n }\n }\n if (unbiased) {\n return (sum2 - (sum1 * sum1) / size) / (size - 1);\n } else {\n return (sum2 - (sum1 * sum1) / size) / size;\n }\n}\n\nexport function centerByRow(matrix, mean) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) - mean[i]);\n }\n }\n}\n\nexport function centerByColumn(matrix, mean) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) - mean[j]);\n }\n }\n}\n\nexport function centerAll(matrix, mean) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) - mean);\n }\n }\n}\n\nexport function getScaleByRow(matrix) {\n const scale = [];\n for (let i = 0; i < matrix.rows; i++) {\n let sum = 0;\n for (let j = 0; j < matrix.columns; j++) {\n sum += Math.pow(matrix.get(i, j), 2) / (matrix.columns - 1);\n }\n scale.push(Math.sqrt(sum));\n }\n return scale;\n}\n\nexport function scaleByRow(matrix, scale) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) / scale[i]);\n }\n }\n}\n\nexport function getScaleByColumn(matrix) {\n const scale = [];\n for (let j = 0; j < matrix.columns; j++) {\n let sum = 0;\n for (let i = 0; i < matrix.rows; i++) {\n sum += Math.pow(matrix.get(i, j), 2) / (matrix.rows - 1);\n }\n scale.push(Math.sqrt(sum));\n }\n return scale;\n}\n\nexport function scaleByColumn(matrix, scale) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) / scale[j]);\n }\n }\n}\n\nexport function getScaleAll(matrix) {\n const divider = matrix.size - 1;\n let sum = 0;\n for (let j = 0; j < matrix.columns; j++) {\n for (let i = 0; i < matrix.rows; i++) {\n sum += Math.pow(matrix.get(i, j), 2) / divider;\n }\n }\n return Math.sqrt(sum);\n}\n\nexport function scaleAll(matrix, scale) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) / scale);\n }\n }\n}\n","export function installMathOperations(AbstractMatrix, Matrix) {\n AbstractMatrix.prototype.add = function add(value) {\n if (typeof value === 'number') return this.addS(value);\n return this.addM(value);\n };\n\n AbstractMatrix.prototype.addS = function addS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.addM = function addM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.add = function add(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.add(value);\n };\n\n AbstractMatrix.prototype.sub = function sub(value) {\n if (typeof value === 'number') return this.subS(value);\n return this.subM(value);\n };\n\n AbstractMatrix.prototype.subS = function subS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.subM = function subM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.sub = function sub(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sub(value);\n };\n AbstractMatrix.prototype.subtract = AbstractMatrix.prototype.sub;\n AbstractMatrix.prototype.subtractS = AbstractMatrix.prototype.subS;\n AbstractMatrix.prototype.subtractM = AbstractMatrix.prototype.subM;\n AbstractMatrix.subtract = AbstractMatrix.sub;\n\n AbstractMatrix.prototype.mul = function mul(value) {\n if (typeof value === 'number') return this.mulS(value);\n return this.mulM(value);\n };\n\n AbstractMatrix.prototype.mulS = function mulS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.mulM = function mulM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.mul = function mul(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.mul(value);\n };\n AbstractMatrix.prototype.multiply = AbstractMatrix.prototype.mul;\n AbstractMatrix.prototype.multiplyS = AbstractMatrix.prototype.mulS;\n AbstractMatrix.prototype.multiplyM = AbstractMatrix.prototype.mulM;\n AbstractMatrix.multiply = AbstractMatrix.mul;\n\n AbstractMatrix.prototype.div = function div(value) {\n if (typeof value === 'number') return this.divS(value);\n return this.divM(value);\n };\n\n AbstractMatrix.prototype.divS = function divS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.divM = function divM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.div = function div(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.div(value);\n };\n AbstractMatrix.prototype.divide = AbstractMatrix.prototype.div;\n AbstractMatrix.prototype.divideS = AbstractMatrix.prototype.divS;\n AbstractMatrix.prototype.divideM = AbstractMatrix.prototype.divM;\n AbstractMatrix.divide = AbstractMatrix.div;\n\n AbstractMatrix.prototype.mod = function mod(value) {\n if (typeof value === 'number') return this.modS(value);\n return this.modM(value);\n };\n\n AbstractMatrix.prototype.modS = function modS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) % value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.modM = function modM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) % matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.mod = function mod(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.mod(value);\n };\n AbstractMatrix.prototype.modulus = AbstractMatrix.prototype.mod;\n AbstractMatrix.prototype.modulusS = AbstractMatrix.prototype.modS;\n AbstractMatrix.prototype.modulusM = AbstractMatrix.prototype.modM;\n AbstractMatrix.modulus = AbstractMatrix.mod;\n\n AbstractMatrix.prototype.and = function and(value) {\n if (typeof value === 'number') return this.andS(value);\n return this.andM(value);\n };\n\n AbstractMatrix.prototype.andS = function andS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) & value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.andM = function andM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) & matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.and = function and(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.and(value);\n };\n\n AbstractMatrix.prototype.or = function or(value) {\n if (typeof value === 'number') return this.orS(value);\n return this.orM(value);\n };\n\n AbstractMatrix.prototype.orS = function orS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) | value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.orM = function orM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) | matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.or = function or(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.or(value);\n };\n\n AbstractMatrix.prototype.xor = function xor(value) {\n if (typeof value === 'number') return this.xorS(value);\n return this.xorM(value);\n };\n\n AbstractMatrix.prototype.xorS = function xorS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) ^ value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.xorM = function xorM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) ^ matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.xor = function xor(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.xor(value);\n };\n\n AbstractMatrix.prototype.leftShift = function leftShift(value) {\n if (typeof value === 'number') return this.leftShiftS(value);\n return this.leftShiftM(value);\n };\n\n AbstractMatrix.prototype.leftShiftS = function leftShiftS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) << value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.leftShiftM = function leftShiftM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) << matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.leftShift = function leftShift(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.leftShift(value);\n };\n\n AbstractMatrix.prototype.signPropagatingRightShift = function signPropagatingRightShift(value) {\n if (typeof value === 'number') return this.signPropagatingRightShiftS(value);\n return this.signPropagatingRightShiftM(value);\n };\n\n AbstractMatrix.prototype.signPropagatingRightShiftS = function signPropagatingRightShiftS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) >> value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.signPropagatingRightShiftM = function signPropagatingRightShiftM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) >> matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.signPropagatingRightShift = function signPropagatingRightShift(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.signPropagatingRightShift(value);\n };\n\n AbstractMatrix.prototype.rightShift = function rightShift(value) {\n if (typeof value === 'number') return this.rightShiftS(value);\n return this.rightShiftM(value);\n };\n\n AbstractMatrix.prototype.rightShiftS = function rightShiftS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) >>> value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.rightShiftM = function rightShiftM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) >>> matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.rightShift = function rightShift(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.rightShift(value);\n };\n AbstractMatrix.prototype.zeroFillRightShift = AbstractMatrix.prototype.rightShift;\n AbstractMatrix.prototype.zeroFillRightShiftS = AbstractMatrix.prototype.rightShiftS;\n AbstractMatrix.prototype.zeroFillRightShiftM = AbstractMatrix.prototype.rightShiftM;\n AbstractMatrix.zeroFillRightShift = AbstractMatrix.rightShift;\n\n AbstractMatrix.prototype.not = function not() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, ~(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.not = function not(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.not();\n };\n\n AbstractMatrix.prototype.abs = function abs() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.abs(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.abs = function abs(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.abs();\n };\n\n AbstractMatrix.prototype.acos = function acos() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.acos(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.acos = function acos(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.acos();\n };\n\n AbstractMatrix.prototype.acosh = function acosh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.acosh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.acosh = function acosh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.acosh();\n };\n\n AbstractMatrix.prototype.asin = function asin() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.asin(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.asin = function asin(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.asin();\n };\n\n AbstractMatrix.prototype.asinh = function asinh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.asinh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.asinh = function asinh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.asinh();\n };\n\n AbstractMatrix.prototype.atan = function atan() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.atan(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.atan = function atan(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.atan();\n };\n\n AbstractMatrix.prototype.atanh = function atanh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.atanh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.atanh = function atanh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.atanh();\n };\n\n AbstractMatrix.prototype.cbrt = function cbrt() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.cbrt(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.cbrt = function cbrt(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.cbrt();\n };\n\n AbstractMatrix.prototype.ceil = function ceil() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.ceil(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.ceil = function ceil(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.ceil();\n };\n\n AbstractMatrix.prototype.clz32 = function clz32() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.clz32(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.clz32 = function clz32(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.clz32();\n };\n\n AbstractMatrix.prototype.cos = function cos() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.cos(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.cos = function cos(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.cos();\n };\n\n AbstractMatrix.prototype.cosh = function cosh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.cosh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.cosh = function cosh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.cosh();\n };\n\n AbstractMatrix.prototype.exp = function exp() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.exp(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.exp = function exp(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.exp();\n };\n\n AbstractMatrix.prototype.expm1 = function expm1() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.expm1(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.expm1 = function expm1(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.expm1();\n };\n\n AbstractMatrix.prototype.floor = function floor() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.floor(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.floor = function floor(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.floor();\n };\n\n AbstractMatrix.prototype.fround = function fround() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.fround(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.fround = function fround(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.fround();\n };\n\n AbstractMatrix.prototype.log = function log() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.log(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.log = function log(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.log();\n };\n\n AbstractMatrix.prototype.log1p = function log1p() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.log1p(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.log1p = function log1p(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.log1p();\n };\n\n AbstractMatrix.prototype.log10 = function log10() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.log10(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.log10 = function log10(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.log10();\n };\n\n AbstractMatrix.prototype.log2 = function log2() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.log2(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.log2 = function log2(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.log2();\n };\n\n AbstractMatrix.prototype.round = function round() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.round(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.round = function round(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.round();\n };\n\n AbstractMatrix.prototype.sign = function sign() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.sign(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.sign = function sign(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sign();\n };\n\n AbstractMatrix.prototype.sin = function sin() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.sin(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.sin = function sin(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sin();\n };\n\n AbstractMatrix.prototype.sinh = function sinh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.sinh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.sinh = function sinh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sinh();\n };\n\n AbstractMatrix.prototype.sqrt = function sqrt() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.sqrt(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.sqrt = function sqrt(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sqrt();\n };\n\n AbstractMatrix.prototype.tan = function tan() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.tan(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.tan = function tan(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.tan();\n };\n\n AbstractMatrix.prototype.tanh = function tanh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.tanh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.tanh = function tanh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.tanh();\n };\n\n AbstractMatrix.prototype.trunc = function trunc() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.trunc(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.trunc = function trunc(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.trunc();\n };\n\n AbstractMatrix.pow = function pow(matrix, arg0) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.pow(arg0);\n };\n\n AbstractMatrix.prototype.pow = function pow(value) {\n if (typeof value === 'number') return this.powS(value);\n return this.powM(value);\n };\n\n AbstractMatrix.prototype.powS = function powS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.pow(this.get(i, j), value));\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.powM = function powM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.pow(this.get(i, j), matrix.get(i, j)));\n }\n }\n return this;\n };\n}\n","import { AbstractMatrix } from '../matrix';\n\nexport default class BaseView extends AbstractMatrix {\n constructor(matrix, rows, columns) {\n super();\n this.matrix = matrix;\n this.rows = rows;\n this.columns = columns;\n }\n}\n","import { checkColumnIndex } from '../util';\n\nimport BaseView from './base';\n\nexport default class MatrixColumnView extends BaseView {\n constructor(matrix, column) {\n checkColumnIndex(matrix, column);\n super(matrix, matrix.rows, 1);\n this.column = column;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(rowIndex, this.column, value);\n return this;\n }\n\n get(rowIndex) {\n return this.matrix.get(rowIndex, this.column);\n }\n}\n","import { checkColumnIndices } from '../util';\n\nimport BaseView from './base';\n\nexport default class MatrixColumnSelectionView extends BaseView {\n constructor(matrix, columnIndices) {\n checkColumnIndices(matrix, columnIndices);\n super(matrix, matrix.rows, columnIndices.length);\n this.columnIndices = columnIndices;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(rowIndex, this.columnIndices[columnIndex], value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(rowIndex, this.columnIndices[columnIndex]);\n }\n}\n","import BaseView from './base';\n\nexport default class MatrixFlipColumnView extends BaseView {\n constructor(matrix) {\n super(matrix, matrix.rows, matrix.columns);\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(rowIndex, this.columns - columnIndex - 1, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(rowIndex, this.columns - columnIndex - 1);\n }\n}\n","import BaseView from './base';\n\nexport default class MatrixFlipRowView extends BaseView {\n constructor(matrix) {\n super(matrix, matrix.rows, matrix.columns);\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(this.rows - rowIndex - 1, columnIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(this.rows - rowIndex - 1, columnIndex);\n }\n}\n","import { checkRowIndex } from '../util';\n\nimport BaseView from './base';\n\nexport default class MatrixRowView extends BaseView {\n constructor(matrix, row) {\n checkRowIndex(matrix, row);\n super(matrix, 1, matrix.columns);\n this.row = row;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(this.row, columnIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(this.row, columnIndex);\n }\n}\n","import { checkRowIndices } from '../util';\n\nimport BaseView from './base';\n\nexport default class MatrixRowSelectionView extends BaseView {\n constructor(matrix, rowIndices) {\n checkRowIndices(matrix, rowIndices);\n super(matrix, rowIndices.length, matrix.columns);\n this.rowIndices = rowIndices;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(this.rowIndices[rowIndex], columnIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(this.rowIndices[rowIndex], columnIndex);\n }\n}\n","import { checkRowIndices, checkColumnIndices } from '../util';\n\nimport BaseView from './base';\n\nexport default class MatrixSelectionView extends BaseView {\n constructor(matrix, rowIndices, columnIndices) {\n checkRowIndices(matrix, rowIndices);\n checkColumnIndices(matrix, columnIndices);\n super(matrix, rowIndices.length, columnIndices.length);\n this.rowIndices = rowIndices;\n this.columnIndices = columnIndices;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(\n this.rowIndices[rowIndex],\n this.columnIndices[columnIndex],\n value,\n );\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(\n this.rowIndices[rowIndex],\n this.columnIndices[columnIndex],\n );\n }\n}\n","import { checkRange } from '../util';\n\nimport BaseView from './base';\n\nexport default class MatrixSubView extends BaseView {\n constructor(matrix, startRow, endRow, startColumn, endColumn) {\n checkRange(matrix, startRow, endRow, startColumn, endColumn);\n super(matrix, endRow - startRow + 1, endColumn - startColumn + 1);\n this.startRow = startRow;\n this.startColumn = startColumn;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(\n this.startRow + rowIndex,\n this.startColumn + columnIndex,\n value,\n );\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(\n this.startRow + rowIndex,\n this.startColumn + columnIndex,\n );\n }\n}\n","import BaseView from './base';\n\nexport default class MatrixTransposeView extends BaseView {\n constructor(matrix) {\n super(matrix, matrix.columns, matrix.rows);\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(columnIndex, rowIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(columnIndex, rowIndex);\n }\n}\n","import { AbstractMatrix } from '../matrix';\n\nexport default class WrapperMatrix1D extends AbstractMatrix {\n constructor(data, options = {}) {\n const { rows = 1 } = options;\n\n if (data.length % rows !== 0) {\n throw new Error('the data length is not divisible by the number of rows');\n }\n super();\n this.rows = rows;\n this.columns = data.length / rows;\n this.data = data;\n }\n\n set(rowIndex, columnIndex, value) {\n let index = this._calculateIndex(rowIndex, columnIndex);\n this.data[index] = value;\n return this;\n }\n\n get(rowIndex, columnIndex) {\n let index = this._calculateIndex(rowIndex, columnIndex);\n return this.data[index];\n }\n\n _calculateIndex(row, column) {\n return row * this.columns + column;\n }\n}\n","import { AbstractMatrix } from '../matrix';\n\nexport default class WrapperMatrix2D extends AbstractMatrix {\n constructor(data) {\n super();\n this.data = data;\n this.rows = data.length;\n this.columns = data[0].length;\n }\n\n set(rowIndex, columnIndex, value) {\n this.data[rowIndex][columnIndex] = value;\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.data[rowIndex][columnIndex];\n }\n}\n","import { isAnyArray } from 'is-any-array';\n\nimport WrapperMatrix1D from './WrapperMatrix1D';\nimport WrapperMatrix2D from './WrapperMatrix2D';\n\nexport function wrap(array, options) {\n if (isAnyArray(array)) {\n if (array[0] && isAnyArray(array[0])) {\n return new WrapperMatrix2D(array);\n } else {\n return new WrapperMatrix1D(array, options);\n }\n } else {\n throw new Error('the argument is not an array');\n }\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nexport default class LuDecomposition {\n constructor(matrix) {\n matrix = WrapperMatrix2D.checkMatrix(matrix);\n\n let lu = matrix.clone();\n let rows = lu.rows;\n let columns = lu.columns;\n let pivotVector = new Float64Array(rows);\n let pivotSign = 1;\n let i, j, k, p, s, t, v;\n let LUcolj, kmax;\n\n for (i = 0; i < rows; i++) {\n pivotVector[i] = i;\n }\n\n LUcolj = new Float64Array(rows);\n\n for (j = 0; j < columns; j++) {\n for (i = 0; i < rows; i++) {\n LUcolj[i] = lu.get(i, j);\n }\n\n for (i = 0; i < rows; i++) {\n kmax = Math.min(i, j);\n s = 0;\n for (k = 0; k < kmax; k++) {\n s += lu.get(i, k) * LUcolj[k];\n }\n LUcolj[i] -= s;\n lu.set(i, j, LUcolj[i]);\n }\n\n p = j;\n for (i = j + 1; i < rows; i++) {\n if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) {\n p = i;\n }\n }\n\n if (p !== j) {\n for (k = 0; k < columns; k++) {\n t = lu.get(p, k);\n lu.set(p, k, lu.get(j, k));\n lu.set(j, k, t);\n }\n\n v = pivotVector[p];\n pivotVector[p] = pivotVector[j];\n pivotVector[j] = v;\n\n pivotSign = -pivotSign;\n }\n\n if (j < rows && lu.get(j, j) !== 0) {\n for (i = j + 1; i < rows; i++) {\n lu.set(i, j, lu.get(i, j) / lu.get(j, j));\n }\n }\n }\n\n this.LU = lu;\n this.pivotVector = pivotVector;\n this.pivotSign = pivotSign;\n }\n\n isSingular() {\n let data = this.LU;\n let col = data.columns;\n for (let j = 0; j < col; j++) {\n if (data.get(j, j) === 0) {\n return true;\n }\n }\n return false;\n }\n\n solve(value) {\n value = Matrix.checkMatrix(value);\n\n let lu = this.LU;\n let rows = lu.rows;\n\n if (rows !== value.rows) {\n throw new Error('Invalid matrix dimensions');\n }\n if (this.isSingular()) {\n throw new Error('LU matrix is singular');\n }\n\n let count = value.columns;\n let X = value.subMatrixRow(this.pivotVector, 0, count - 1);\n let columns = lu.columns;\n let i, j, k;\n\n for (k = 0; k < columns; k++) {\n for (i = k + 1; i < columns; i++) {\n for (j = 0; j < count; j++) {\n X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n }\n }\n }\n for (k = columns - 1; k >= 0; k--) {\n for (j = 0; j < count; j++) {\n X.set(k, j, X.get(k, j) / lu.get(k, k));\n }\n for (i = 0; i < k; i++) {\n for (j = 0; j < count; j++) {\n X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n }\n }\n }\n return X;\n }\n\n get determinant() {\n let data = this.LU;\n if (!data.isSquare()) {\n throw new Error('Matrix must be square');\n }\n let determinant = this.pivotSign;\n let col = data.columns;\n for (let j = 0; j < col; j++) {\n determinant *= data.get(j, j);\n }\n return determinant;\n }\n\n get lowerTriangularMatrix() {\n let data = this.LU;\n let rows = data.rows;\n let columns = data.columns;\n let X = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n if (i > j) {\n X.set(i, j, data.get(i, j));\n } else if (i === j) {\n X.set(i, j, 1);\n } else {\n X.set(i, j, 0);\n }\n }\n }\n return X;\n }\n\n get upperTriangularMatrix() {\n let data = this.LU;\n let rows = data.rows;\n let columns = data.columns;\n let X = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n if (i <= j) {\n X.set(i, j, data.get(i, j));\n } else {\n X.set(i, j, 0);\n }\n }\n }\n return X;\n }\n\n get pivotPermutationVector() {\n return Array.from(this.pivotVector);\n }\n}\n","export function hypotenuse(a, b) {\n let r = 0;\n if (Math.abs(a) > Math.abs(b)) {\n r = b / a;\n return Math.abs(a) * Math.sqrt(1 + r * r);\n }\n if (b !== 0) {\n r = a / b;\n return Math.abs(b) * Math.sqrt(1 + r * r);\n }\n return 0;\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class QrDecomposition {\n constructor(value) {\n value = WrapperMatrix2D.checkMatrix(value);\n\n let qr = value.clone();\n let m = value.rows;\n let n = value.columns;\n let rdiag = new Float64Array(n);\n let i, j, k, s;\n\n for (k = 0; k < n; k++) {\n let nrm = 0;\n for (i = k; i < m; i++) {\n nrm = hypotenuse(nrm, qr.get(i, k));\n }\n if (nrm !== 0) {\n if (qr.get(k, k) < 0) {\n nrm = -nrm;\n }\n for (i = k; i < m; i++) {\n qr.set(i, k, qr.get(i, k) / nrm);\n }\n qr.set(k, k, qr.get(k, k) + 1);\n for (j = k + 1; j < n; j++) {\n s = 0;\n for (i = k; i < m; i++) {\n s += qr.get(i, k) * qr.get(i, j);\n }\n s = -s / qr.get(k, k);\n for (i = k; i < m; i++) {\n qr.set(i, j, qr.get(i, j) + s * qr.get(i, k));\n }\n }\n }\n rdiag[k] = -nrm;\n }\n\n this.QR = qr;\n this.Rdiag = rdiag;\n }\n\n solve(value) {\n value = Matrix.checkMatrix(value);\n\n let qr = this.QR;\n let m = qr.rows;\n\n if (value.rows !== m) {\n throw new Error('Matrix row dimensions must agree');\n }\n if (!this.isFullRank()) {\n throw new Error('Matrix is rank deficient');\n }\n\n let count = value.columns;\n let X = value.clone();\n let n = qr.columns;\n let i, j, k, s;\n\n for (k = 0; k < n; k++) {\n for (j = 0; j < count; j++) {\n s = 0;\n for (i = k; i < m; i++) {\n s += qr.get(i, k) * X.get(i, j);\n }\n s = -s / qr.get(k, k);\n for (i = k; i < m; i++) {\n X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n }\n }\n }\n for (k = n - 1; k >= 0; k--) {\n for (j = 0; j < count; j++) {\n X.set(k, j, X.get(k, j) / this.Rdiag[k]);\n }\n for (i = 0; i < k; i++) {\n for (j = 0; j < count; j++) {\n X.set(i, j, X.get(i, j) - X.get(k, j) * qr.get(i, k));\n }\n }\n }\n\n return X.subMatrix(0, n - 1, 0, count - 1);\n }\n\n isFullRank() {\n let columns = this.QR.columns;\n for (let i = 0; i < columns; i++) {\n if (this.Rdiag[i] === 0) {\n return false;\n }\n }\n return true;\n }\n\n get upperTriangularMatrix() {\n let qr = this.QR;\n let n = qr.columns;\n let X = new Matrix(n, n);\n let i, j;\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n if (i < j) {\n X.set(i, j, qr.get(i, j));\n } else if (i === j) {\n X.set(i, j, this.Rdiag[i]);\n } else {\n X.set(i, j, 0);\n }\n }\n }\n return X;\n }\n\n get orthogonalMatrix() {\n let qr = this.QR;\n let rows = qr.rows;\n let columns = qr.columns;\n let X = new Matrix(rows, columns);\n let i, j, k, s;\n\n for (k = columns - 1; k >= 0; k--) {\n for (i = 0; i < rows; i++) {\n X.set(i, k, 0);\n }\n X.set(k, k, 1);\n for (j = k; j < columns; j++) {\n if (qr.get(k, k) !== 0) {\n s = 0;\n for (i = k; i < rows; i++) {\n s += qr.get(i, k) * X.get(i, j);\n }\n\n s = -s / qr.get(k, k);\n\n for (i = k; i < rows; i++) {\n X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n }\n }\n }\n }\n return X;\n }\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class SingularValueDecomposition {\n constructor(value, options = {}) {\n value = WrapperMatrix2D.checkMatrix(value);\n\n if (value.isEmpty()) {\n throw new Error('Matrix must be non-empty');\n }\n\n let m = value.rows;\n let n = value.columns;\n\n const {\n computeLeftSingularVectors = true,\n computeRightSingularVectors = true,\n autoTranspose = false,\n } = options;\n\n let wantu = Boolean(computeLeftSingularVectors);\n let wantv = Boolean(computeRightSingularVectors);\n\n let swapped = false;\n let a;\n if (m < n) {\n if (!autoTranspose) {\n a = value.clone();\n // eslint-disable-next-line no-console\n console.warn(\n 'Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose',\n );\n } else {\n a = value.transpose();\n m = a.rows;\n n = a.columns;\n swapped = true;\n let aux = wantu;\n wantu = wantv;\n wantv = aux;\n }\n } else {\n a = value.clone();\n }\n\n let nu = Math.min(m, n);\n let ni = Math.min(m + 1, n);\n let s = new Float64Array(ni);\n let U = new Matrix(m, nu);\n let V = new Matrix(n, n);\n\n let e = new Float64Array(n);\n let work = new Float64Array(m);\n\n let si = new Float64Array(ni);\n for (let i = 0; i < ni; i++) si[i] = i;\n\n let nct = Math.min(m - 1, n);\n let nrt = Math.max(0, Math.min(n - 2, m));\n let mrc = Math.max(nct, nrt);\n\n for (let k = 0; k < mrc; k++) {\n if (k < nct) {\n s[k] = 0;\n for (let i = k; i < m; i++) {\n s[k] = hypotenuse(s[k], a.get(i, k));\n }\n if (s[k] !== 0) {\n if (a.get(k, k) < 0) {\n s[k] = -s[k];\n }\n for (let i = k; i < m; i++) {\n a.set(i, k, a.get(i, k) / s[k]);\n }\n a.set(k, k, a.get(k, k) + 1);\n }\n s[k] = -s[k];\n }\n\n for (let j = k + 1; j < n; j++) {\n if (k < nct && s[k] !== 0) {\n let t = 0;\n for (let i = k; i < m; i++) {\n t += a.get(i, k) * a.get(i, j);\n }\n t = -t / a.get(k, k);\n for (let i = k; i < m; i++) {\n a.set(i, j, a.get(i, j) + t * a.get(i, k));\n }\n }\n e[j] = a.get(k, j);\n }\n\n if (wantu && k < nct) {\n for (let i = k; i < m; i++) {\n U.set(i, k, a.get(i, k));\n }\n }\n\n if (k < nrt) {\n e[k] = 0;\n for (let i = k + 1; i < n; i++) {\n e[k] = hypotenuse(e[k], e[i]);\n }\n if (e[k] !== 0) {\n if (e[k + 1] < 0) {\n e[k] = 0 - e[k];\n }\n for (let i = k + 1; i < n; i++) {\n e[i] /= e[k];\n }\n e[k + 1] += 1;\n }\n e[k] = -e[k];\n if (k + 1 < m && e[k] !== 0) {\n for (let i = k + 1; i < m; i++) {\n work[i] = 0;\n }\n for (let i = k + 1; i < m; i++) {\n for (let j = k + 1; j < n; j++) {\n work[i] += e[j] * a.get(i, j);\n }\n }\n for (let j = k + 1; j < n; j++) {\n let t = -e[j] / e[k + 1];\n for (let i = k + 1; i < m; i++) {\n a.set(i, j, a.get(i, j) + t * work[i]);\n }\n }\n }\n if (wantv) {\n for (let i = k + 1; i < n; i++) {\n V.set(i, k, e[i]);\n }\n }\n }\n }\n\n let p = Math.min(n, m + 1);\n if (nct < n) {\n s[nct] = a.get(nct, nct);\n }\n if (m < p) {\n s[p - 1] = 0;\n }\n if (nrt + 1 < p) {\n e[nrt] = a.get(nrt, p - 1);\n }\n e[p - 1] = 0;\n\n if (wantu) {\n for (let j = nct; j < nu; j++) {\n for (let i = 0; i < m; i++) {\n U.set(i, j, 0);\n }\n U.set(j, j, 1);\n }\n for (let k = nct - 1; k >= 0; k--) {\n if (s[k] !== 0) {\n for (let j = k + 1; j < nu; j++) {\n let t = 0;\n for (let i = k; i < m; i++) {\n t += U.get(i, k) * U.get(i, j);\n }\n t = -t / U.get(k, k);\n for (let i = k; i < m; i++) {\n U.set(i, j, U.get(i, j) + t * U.get(i, k));\n }\n }\n for (let i = k; i < m; i++) {\n U.set(i, k, -U.get(i, k));\n }\n U.set(k, k, 1 + U.get(k, k));\n for (let i = 0; i < k - 1; i++) {\n U.set(i, k, 0);\n }\n } else {\n for (let i = 0; i < m; i++) {\n U.set(i, k, 0);\n }\n U.set(k, k, 1);\n }\n }\n }\n\n if (wantv) {\n for (let k = n - 1; k >= 0; k--) {\n if (k < nrt && e[k] !== 0) {\n for (let j = k + 1; j < n; j++) {\n let t = 0;\n for (let i = k + 1; i < n; i++) {\n t += V.get(i, k) * V.get(i, j);\n }\n t = -t / V.get(k + 1, k);\n for (let i = k + 1; i < n; i++) {\n V.set(i, j, V.get(i, j) + t * V.get(i, k));\n }\n }\n }\n for (let i = 0; i < n; i++) {\n V.set(i, k, 0);\n }\n V.set(k, k, 1);\n }\n }\n\n let pp = p - 1;\n let iter = 0;\n let eps = Number.EPSILON;\n while (p > 0) {\n let k, kase;\n for (k = p - 2; k >= -1; k--) {\n if (k === -1) {\n break;\n }\n const alpha =\n Number.MIN_VALUE + eps * Math.abs(s[k] + Math.abs(s[k + 1]));\n if (Math.abs(e[k]) <= alpha || Number.isNaN(e[k])) {\n e[k] = 0;\n break;\n }\n }\n if (k === p - 2) {\n kase = 4;\n } else {\n let ks;\n for (ks = p - 1; ks >= k; ks--) {\n if (ks === k) {\n break;\n }\n let t =\n (ks !== p ? Math.abs(e[ks]) : 0) +\n (ks !== k + 1 ? Math.abs(e[ks - 1]) : 0);\n if (Math.abs(s[ks]) <= eps * t) {\n s[ks] = 0;\n break;\n }\n }\n if (ks === k) {\n kase = 3;\n } else if (ks === p - 1) {\n kase = 1;\n } else {\n kase = 2;\n k = ks;\n }\n }\n\n k++;\n\n switch (kase) {\n case 1: {\n let f = e[p - 2];\n e[p - 2] = 0;\n for (let j = p - 2; j >= k; j--) {\n let t = hypotenuse(s[j], f);\n let cs = s[j] / t;\n let sn = f / t;\n s[j] = t;\n if (j !== k) {\n f = -sn * e[j - 1];\n e[j - 1] = cs * e[j - 1];\n }\n if (wantv) {\n for (let i = 0; i < n; i++) {\n t = cs * V.get(i, j) + sn * V.get(i, p - 1);\n V.set(i, p - 1, -sn * V.get(i, j) + cs * V.get(i, p - 1));\n V.set(i, j, t);\n }\n }\n }\n break;\n }\n case 2: {\n let f = e[k - 1];\n e[k - 1] = 0;\n for (let j = k; j < p; j++) {\n let t = hypotenuse(s[j], f);\n let cs = s[j] / t;\n let sn = f / t;\n s[j] = t;\n f = -sn * e[j];\n e[j] = cs * e[j];\n if (wantu) {\n for (let i = 0; i < m; i++) {\n t = cs * U.get(i, j) + sn * U.get(i, k - 1);\n U.set(i, k - 1, -sn * U.get(i, j) + cs * U.get(i, k - 1));\n U.set(i, j, t);\n }\n }\n }\n break;\n }\n case 3: {\n const scale = Math.max(\n Math.abs(s[p - 1]),\n Math.abs(s[p - 2]),\n Math.abs(e[p - 2]),\n Math.abs(s[k]),\n Math.abs(e[k]),\n );\n const sp = s[p - 1] / scale;\n const spm1 = s[p - 2] / scale;\n const epm1 = e[p - 2] / scale;\n const sk = s[k] / scale;\n const ek = e[k] / scale;\n const b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;\n const c = sp * epm1 * (sp * epm1);\n let shift = 0;\n if (b !== 0 || c !== 0) {\n if (b < 0) {\n shift = 0 - Math.sqrt(b * b + c);\n } else {\n shift = Math.sqrt(b * b + c);\n }\n shift = c / (b + shift);\n }\n let f = (sk + sp) * (sk - sp) + shift;\n let g = sk * ek;\n for (let j = k; j < p - 1; j++) {\n let t = hypotenuse(f, g);\n if (t === 0) t = Number.MIN_VALUE;\n let cs = f / t;\n let sn = g / t;\n if (j !== k) {\n e[j - 1] = t;\n }\n f = cs * s[j] + sn * e[j];\n e[j] = cs * e[j] - sn * s[j];\n g = sn * s[j + 1];\n s[j + 1] = cs * s[j + 1];\n if (wantv) {\n for (let i = 0; i < n; i++) {\n t = cs * V.get(i, j) + sn * V.get(i, j + 1);\n V.set(i, j + 1, -sn * V.get(i, j) + cs * V.get(i, j + 1));\n V.set(i, j, t);\n }\n }\n t = hypotenuse(f, g);\n if (t === 0) t = Number.MIN_VALUE;\n cs = f / t;\n sn = g / t;\n s[j] = t;\n f = cs * e[j] + sn * s[j + 1];\n s[j + 1] = -sn * e[j] + cs * s[j + 1];\n g = sn * e[j + 1];\n e[j + 1] = cs * e[j + 1];\n if (wantu && j < m - 1) {\n for (let i = 0; i < m; i++) {\n t = cs * U.get(i, j) + sn * U.get(i, j + 1);\n U.set(i, j + 1, -sn * U.get(i, j) + cs * U.get(i, j + 1));\n U.set(i, j, t);\n }\n }\n }\n e[p - 2] = f;\n iter = iter + 1;\n break;\n }\n case 4: {\n if (s[k] <= 0) {\n s[k] = s[k] < 0 ? -s[k] : 0;\n if (wantv) {\n for (let i = 0; i <= pp; i++) {\n V.set(i, k, -V.get(i, k));\n }\n }\n }\n while (k < pp) {\n if (s[k] >= s[k + 1]) {\n break;\n }\n let t = s[k];\n s[k] = s[k + 1];\n s[k + 1] = t;\n if (wantv && k < n - 1) {\n for (let i = 0; i < n; i++) {\n t = V.get(i, k + 1);\n V.set(i, k + 1, V.get(i, k));\n V.set(i, k, t);\n }\n }\n if (wantu && k < m - 1) {\n for (let i = 0; i < m; i++) {\n t = U.get(i, k + 1);\n U.set(i, k + 1, U.get(i, k));\n U.set(i, k, t);\n }\n }\n k++;\n }\n iter = 0;\n p--;\n break;\n }\n // no default\n }\n }\n\n if (swapped) {\n let tmp = V;\n V = U;\n U = tmp;\n }\n\n this.m = m;\n this.n = n;\n this.s = s;\n this.U = U;\n this.V = V;\n }\n\n solve(value) {\n let Y = value;\n let e = this.threshold;\n let scols = this.s.length;\n let Ls = Matrix.zeros(scols, scols);\n\n for (let i = 0; i < scols; i++) {\n if (Math.abs(this.s[i]) <= e) {\n Ls.set(i, i, 0);\n } else {\n Ls.set(i, i, 1 / this.s[i]);\n }\n }\n\n let U = this.U;\n let V = this.rightSingularVectors;\n\n let VL = V.mmul(Ls);\n let vrows = V.rows;\n let urows = U.rows;\n let VLU = Matrix.zeros(vrows, urows);\n\n for (let i = 0; i < vrows; i++) {\n for (let j = 0; j < urows; j++) {\n let sum = 0;\n for (let k = 0; k < scols; k++) {\n sum += VL.get(i, k) * U.get(j, k);\n }\n VLU.set(i, j, sum);\n }\n }\n\n return VLU.mmul(Y);\n }\n\n solveForDiagonal(value) {\n return this.solve(Matrix.diag(value));\n }\n\n inverse() {\n let V = this.V;\n let e = this.threshold;\n let vrows = V.rows;\n let vcols = V.columns;\n let X = new Matrix(vrows, this.s.length);\n\n for (let i = 0; i < vrows; i++) {\n for (let j = 0; j < vcols; j++) {\n if (Math.abs(this.s[j]) > e) {\n X.set(i, j, V.get(i, j) / this.s[j]);\n }\n }\n }\n\n let U = this.U;\n\n let urows = U.rows;\n let ucols = U.columns;\n let Y = new Matrix(vrows, urows);\n\n for (let i = 0; i < vrows; i++) {\n for (let j = 0; j < urows; j++) {\n let sum = 0;\n for (let k = 0; k < ucols; k++) {\n sum += X.get(i, k) * U.get(j, k);\n }\n Y.set(i, j, sum);\n }\n }\n\n return Y;\n }\n\n get condition() {\n return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n }\n\n get norm2() {\n return this.s[0];\n }\n\n get rank() {\n let tol = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON;\n let r = 0;\n let s = this.s;\n for (let i = 0, ii = s.length; i < ii; i++) {\n if (s[i] > tol) {\n r++;\n }\n }\n return r;\n }\n\n get diagonal() {\n return Array.from(this.s);\n }\n\n get threshold() {\n return (Number.EPSILON / 2) * Math.max(this.m, this.n) * this.s[0];\n }\n\n get leftSingularVectors() {\n return this.U;\n }\n\n get rightSingularVectors() {\n return this.V;\n }\n\n get diagonalMatrix() {\n return Matrix.diag(this.s);\n }\n}\n","import LuDecomposition from './dc/lu';\nimport QrDecomposition from './dc/qr';\nimport SingularValueDecomposition from './dc/svd';\nimport Matrix from './matrix';\nimport WrapperMatrix2D from './wrap/WrapperMatrix2D';\n\nexport function inverse(matrix, useSVD = false) {\n matrix = WrapperMatrix2D.checkMatrix(matrix);\n if (useSVD) {\n return new SingularValueDecomposition(matrix).inverse();\n } else {\n return solve(matrix, Matrix.eye(matrix.rows));\n }\n}\n\nexport function solve(leftHandSide, rightHandSide, useSVD = false) {\n leftHandSide = WrapperMatrix2D.checkMatrix(leftHandSide);\n rightHandSide = WrapperMatrix2D.checkMatrix(rightHandSide);\n if (useSVD) {\n return new SingularValueDecomposition(leftHandSide).solve(rightHandSide);\n } else {\n return leftHandSide.isSquare()\n ? new LuDecomposition(leftHandSide).solve(rightHandSide)\n : new QrDecomposition(leftHandSide).solve(rightHandSide);\n }\n}\n","import LuDecomposition from './dc/lu';\nimport Matrix from './matrix';\nimport MatrixSelectionView from './views/selection';\n\nexport function determinant(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (matrix.isSquare()) {\n if (matrix.columns === 0) {\n return 1;\n }\n\n let a, b, c, d;\n if (matrix.columns === 2) {\n // 2 x 2 matrix\n a = matrix.get(0, 0);\n b = matrix.get(0, 1);\n c = matrix.get(1, 0);\n d = matrix.get(1, 1);\n\n return a * d - b * c;\n } else if (matrix.columns === 3) {\n // 3 x 3 matrix\n let subMatrix0, subMatrix1, subMatrix2;\n subMatrix0 = new MatrixSelectionView(matrix, [1, 2], [1, 2]);\n subMatrix1 = new MatrixSelectionView(matrix, [1, 2], [0, 2]);\n subMatrix2 = new MatrixSelectionView(matrix, [1, 2], [0, 1]);\n a = matrix.get(0, 0);\n b = matrix.get(0, 1);\n c = matrix.get(0, 2);\n\n return (\n a * determinant(subMatrix0) -\n b * determinant(subMatrix1) +\n c * determinant(subMatrix2)\n );\n } else {\n // general purpose determinant using the LU decomposition\n return new LuDecomposition(matrix).determinant;\n }\n } else {\n throw Error('determinant can only be calculated for a square matrix');\n }\n}\n","import SingularValueDecomposition from './dc/svd';\nimport Matrix from './matrix';\n\nfunction xrange(n, exception) {\n let range = [];\n for (let i = 0; i < n; i++) {\n if (i !== exception) {\n range.push(i);\n }\n }\n return range;\n}\n\nfunction dependenciesOneRow(\n error,\n matrix,\n index,\n thresholdValue = 10e-10,\n thresholdError = 10e-10,\n) {\n if (error > thresholdError) {\n return new Array(matrix.rows + 1).fill(0);\n } else {\n let returnArray = matrix.addRow(index, [0]);\n for (let i = 0; i < returnArray.rows; i++) {\n if (Math.abs(returnArray.get(i, 0)) < thresholdValue) {\n returnArray.set(i, 0, 0);\n }\n }\n return returnArray.to1DArray();\n }\n}\n\nexport function linearDependencies(matrix, options = {}) {\n const { thresholdValue = 10e-10, thresholdError = 10e-10 } = options;\n matrix = Matrix.checkMatrix(matrix);\n\n let n = matrix.rows;\n let results = new Matrix(n, n);\n\n for (let i = 0; i < n; i++) {\n let b = Matrix.columnVector(matrix.getRow(i));\n let Abis = matrix.subMatrixRow(xrange(n, i)).transpose();\n let svd = new SingularValueDecomposition(Abis);\n let x = svd.solve(b);\n let error = Matrix.sub(b, Abis.mmul(x)).abs().max();\n results.setRow(\n i,\n dependenciesOneRow(error, x, i, thresholdValue, thresholdError),\n );\n }\n return results;\n}\n","import SVD from './dc/svd';\nimport Matrix from './matrix';\n\nexport function pseudoInverse(matrix, threshold = Number.EPSILON) {\n matrix = Matrix.checkMatrix(matrix);\n if (matrix.isEmpty()) {\n // with a zero dimension, the pseudo-inverse is the transpose, since all 0xn and nx0 matrices are singular\n // (0xn)*(nx0)*(0xn) = 0xn\n // (nx0)*(0xn)*(nx0) = nx0\n return matrix.transpose();\n }\n let svdSolution = new SVD(matrix, { autoTranspose: true });\n\n let U = svdSolution.leftSingularVectors;\n let V = svdSolution.rightSingularVectors;\n let s = svdSolution.diagonal;\n\n for (let i = 0; i < s.length; i++) {\n if (Math.abs(s[i]) > threshold) {\n s[i] = 1.0 / s[i];\n } else {\n s[i] = 0.0;\n }\n }\n\n return V.mmul(Matrix.diag(s).mmul(U.transpose()));\n}\n","import { isAnyArray } from 'is-any-array';\n\nimport Matrix from './matrix';\n\nexport function covariance(xMatrix, yMatrix = xMatrix, options = {}) {\n xMatrix = new Matrix(xMatrix);\n let yIsSame = false;\n if (\n typeof yMatrix === 'object' &&\n !Matrix.isMatrix(yMatrix) &&\n !isAnyArray(yMatrix)\n ) {\n options = yMatrix;\n yMatrix = xMatrix;\n yIsSame = true;\n } else {\n yMatrix = new Matrix(yMatrix);\n }\n if (xMatrix.rows !== yMatrix.rows) {\n throw new TypeError('Both matrices must have the same number of rows');\n }\n const { center = true } = options;\n if (center) {\n xMatrix = xMatrix.center('column');\n if (!yIsSame) {\n yMatrix = yMatrix.center('column');\n }\n }\n const cov = xMatrix.transpose().mmul(yMatrix);\n for (let i = 0; i < cov.rows; i++) {\n for (let j = 0; j < cov.columns; j++) {\n cov.set(i, j, cov.get(i, j) * (1 / (xMatrix.rows - 1)));\n }\n }\n return cov;\n}\n","import { isAnyArray } from 'is-any-array';\n\nimport Matrix from './matrix';\n\nexport function correlation(xMatrix, yMatrix = xMatrix, options = {}) {\n xMatrix = new Matrix(xMatrix);\n let yIsSame = false;\n if (\n typeof yMatrix === 'object' &&\n !Matrix.isMatrix(yMatrix) &&\n !isAnyArray(yMatrix)\n ) {\n options = yMatrix;\n yMatrix = xMatrix;\n yIsSame = true;\n } else {\n yMatrix = new Matrix(yMatrix);\n }\n if (xMatrix.rows !== yMatrix.rows) {\n throw new TypeError('Both matrices must have the same number of rows');\n }\n\n const { center = true, scale = true } = options;\n if (center) {\n xMatrix.center('column');\n if (!yIsSame) {\n yMatrix.center('column');\n }\n }\n if (scale) {\n xMatrix.scale('column');\n if (!yIsSame) {\n yMatrix.scale('column');\n }\n }\n\n const sdx = xMatrix.standardDeviation('column', { unbiased: true });\n const sdy = yIsSame\n ? sdx\n : yMatrix.standardDeviation('column', { unbiased: true });\n\n const corr = xMatrix.transpose().mmul(yMatrix);\n for (let i = 0; i < corr.rows; i++) {\n for (let j = 0; j < corr.columns; j++) {\n corr.set(\n i,\n j,\n corr.get(i, j) * (1 / (sdx[i] * sdy[j])) * (1 / (xMatrix.rows - 1)),\n );\n }\n }\n return corr;\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class EigenvalueDecomposition {\n constructor(matrix, options = {}) {\n const { assumeSymmetric = false } = options;\n\n matrix = WrapperMatrix2D.checkMatrix(matrix);\n if (!matrix.isSquare()) {\n throw new Error('Matrix is not a square matrix');\n }\n\n if (matrix.isEmpty()) {\n throw new Error('Matrix must be non-empty');\n }\n\n let n = matrix.columns;\n let V = new Matrix(n, n);\n let d = new Float64Array(n);\n let e = new Float64Array(n);\n let value = matrix;\n let i, j;\n\n let isSymmetric = false;\n if (assumeSymmetric) {\n isSymmetric = true;\n } else {\n isSymmetric = matrix.isSymmetric();\n }\n\n if (isSymmetric) {\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n V.set(i, j, value.get(i, j));\n }\n }\n tred2(n, e, d, V);\n tql2(n, e, d, V);\n } else {\n let H = new Matrix(n, n);\n let ort = new Float64Array(n);\n for (j = 0; j < n; j++) {\n for (i = 0; i < n; i++) {\n H.set(i, j, value.get(i, j));\n }\n }\n orthes(n, H, ort, V);\n hqr2(n, e, d, V, H);\n }\n\n this.n = n;\n this.e = e;\n this.d = d;\n this.V = V;\n }\n\n get realEigenvalues() {\n return Array.from(this.d);\n }\n\n get imaginaryEigenvalues() {\n return Array.from(this.e);\n }\n\n get eigenvectorMatrix() {\n return this.V;\n }\n\n get diagonalMatrix() {\n let n = this.n;\n let e = this.e;\n let d = this.d;\n let X = new Matrix(n, n);\n let i, j;\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n X.set(i, j, 0);\n }\n X.set(i, i, d[i]);\n if (e[i] > 0) {\n X.set(i, i + 1, e[i]);\n } else if (e[i] < 0) {\n X.set(i, i - 1, e[i]);\n }\n }\n return X;\n }\n}\n\nfunction tred2(n, e, d, V) {\n let f, g, h, i, j, k, hh, scale;\n\n for (j = 0; j < n; j++) {\n d[j] = V.get(n - 1, j);\n }\n\n for (i = n - 1; i > 0; i--) {\n scale = 0;\n h = 0;\n for (k = 0; k < i; k++) {\n scale = scale + Math.abs(d[k]);\n }\n\n if (scale === 0) {\n e[i] = d[i - 1];\n for (j = 0; j < i; j++) {\n d[j] = V.get(i - 1, j);\n V.set(i, j, 0);\n V.set(j, i, 0);\n }\n } else {\n for (k = 0; k < i; k++) {\n d[k] /= scale;\n h += d[k] * d[k];\n }\n\n f = d[i - 1];\n g = Math.sqrt(h);\n if (f > 0) {\n g = -g;\n }\n\n e[i] = scale * g;\n h = h - f * g;\n d[i - 1] = f - g;\n for (j = 0; j < i; j++) {\n e[j] = 0;\n }\n\n for (j = 0; j < i; j++) {\n f = d[j];\n V.set(j, i, f);\n g = e[j] + V.get(j, j) * f;\n for (k = j + 1; k <= i - 1; k++) {\n g += V.get(k, j) * d[k];\n e[k] += V.get(k, j) * f;\n }\n e[j] = g;\n }\n\n f = 0;\n for (j = 0; j < i; j++) {\n e[j] /= h;\n f += e[j] * d[j];\n }\n\n hh = f / (h + h);\n for (j = 0; j < i; j++) {\n e[j] -= hh * d[j];\n }\n\n for (j = 0; j < i; j++) {\n f = d[j];\n g = e[j];\n for (k = j; k <= i - 1; k++) {\n V.set(k, j, V.get(k, j) - (f * e[k] + g * d[k]));\n }\n d[j] = V.get(i - 1, j);\n V.set(i, j, 0);\n }\n }\n d[i] = h;\n }\n\n for (i = 0; i < n - 1; i++) {\n V.set(n - 1, i, V.get(i, i));\n V.set(i, i, 1);\n h = d[i + 1];\n if (h !== 0) {\n for (k = 0; k <= i; k++) {\n d[k] = V.get(k, i + 1) / h;\n }\n\n for (j = 0; j <= i; j++) {\n g = 0;\n for (k = 0; k <= i; k++) {\n g += V.get(k, i + 1) * V.get(k, j);\n }\n for (k = 0; k <= i; k++) {\n V.set(k, j, V.get(k, j) - g * d[k]);\n }\n }\n }\n\n for (k = 0; k <= i; k++) {\n V.set(k, i + 1, 0);\n }\n }\n\n for (j = 0; j < n; j++) {\n d[j] = V.get(n - 1, j);\n V.set(n - 1, j, 0);\n }\n\n V.set(n - 1, n - 1, 1);\n e[0] = 0;\n}\n\nfunction tql2(n, e, d, V) {\n let g, h, i, j, k, l, m, p, r, dl1, c, c2, c3, el1, s, s2, iter;\n\n for (i = 1; i < n; i++) {\n e[i - 1] = e[i];\n }\n\n e[n - 1] = 0;\n\n let f = 0;\n let tst1 = 0;\n let eps = Number.EPSILON;\n\n for (l = 0; l < n; l++) {\n tst1 = Math.max(tst1, Math.abs(d[l]) + Math.abs(e[l]));\n m = l;\n while (m < n) {\n if (Math.abs(e[m]) <= eps * tst1) {\n break;\n }\n m++;\n }\n\n if (m > l) {\n iter = 0;\n do {\n iter = iter + 1;\n\n g = d[l];\n p = (d[l + 1] - g) / (2 * e[l]);\n r = hypotenuse(p, 1);\n if (p < 0) {\n r = -r;\n }\n\n d[l] = e[l] / (p + r);\n d[l + 1] = e[l] * (p + r);\n dl1 = d[l + 1];\n h = g - d[l];\n for (i = l + 2; i < n; i++) {\n d[i] -= h;\n }\n\n f = f + h;\n\n p = d[m];\n c = 1;\n c2 = c;\n c3 = c;\n el1 = e[l + 1];\n s = 0;\n s2 = 0;\n for (i = m - 1; i >= l; i--) {\n c3 = c2;\n c2 = c;\n s2 = s;\n g = c * e[i];\n h = c * p;\n r = hypotenuse(p, e[i]);\n e[i + 1] = s * r;\n s = e[i] / r;\n c = p / r;\n p = c * d[i] - s * g;\n d[i + 1] = h + s * (c * g + s * d[i]);\n\n for (k = 0; k < n; k++) {\n h = V.get(k, i + 1);\n V.set(k, i + 1, s * V.get(k, i) + c * h);\n V.set(k, i, c * V.get(k, i) - s * h);\n }\n }\n\n p = (-s * s2 * c3 * el1 * e[l]) / dl1;\n e[l] = s * p;\n d[l] = c * p;\n } while (Math.abs(e[l]) > eps * tst1);\n }\n d[l] = d[l] + f;\n e[l] = 0;\n }\n\n for (i = 0; i < n - 1; i++) {\n k = i;\n p = d[i];\n for (j = i + 1; j < n; j++) {\n if (d[j] < p) {\n k = j;\n p = d[j];\n }\n }\n\n if (k !== i) {\n d[k] = d[i];\n d[i] = p;\n for (j = 0; j < n; j++) {\n p = V.get(j, i);\n V.set(j, i, V.get(j, k));\n V.set(j, k, p);\n }\n }\n }\n}\n\nfunction orthes(n, H, ort, V) {\n let low = 0;\n let high = n - 1;\n let f, g, h, i, j, m;\n let scale;\n\n for (m = low + 1; m <= high - 1; m++) {\n scale = 0;\n for (i = m; i <= high; i++) {\n scale = scale + Math.abs(H.get(i, m - 1));\n }\n\n if (scale !== 0) {\n h = 0;\n for (i = high; i >= m; i--) {\n ort[i] = H.get(i, m - 1) / scale;\n h += ort[i] * ort[i];\n }\n\n g = Math.sqrt(h);\n if (ort[m] > 0) {\n g = -g;\n }\n\n h = h - ort[m] * g;\n ort[m] = ort[m] - g;\n\n for (j = m; j < n; j++) {\n f = 0;\n for (i = high; i >= m; i--) {\n f += ort[i] * H.get(i, j);\n }\n\n f = f / h;\n for (i = m; i <= high; i++) {\n H.set(i, j, H.get(i, j) - f * ort[i]);\n }\n }\n\n for (i = 0; i <= high; i++) {\n f = 0;\n for (j = high; j >= m; j--) {\n f += ort[j] * H.get(i, j);\n }\n\n f = f / h;\n for (j = m; j <= high; j++) {\n H.set(i, j, H.get(i, j) - f * ort[j]);\n }\n }\n\n ort[m] = scale * ort[m];\n H.set(m, m - 1, scale * g);\n }\n }\n\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n V.set(i, j, i === j ? 1 : 0);\n }\n }\n\n for (m = high - 1; m >= low + 1; m--) {\n if (H.get(m, m - 1) !== 0) {\n for (i = m + 1; i <= high; i++) {\n ort[i] = H.get(i, m - 1);\n }\n\n for (j = m; j <= high; j++) {\n g = 0;\n for (i = m; i <= high; i++) {\n g += ort[i] * V.get(i, j);\n }\n\n g = g / ort[m] / H.get(m, m - 1);\n for (i = m; i <= high; i++) {\n V.set(i, j, V.get(i, j) + g * ort[i]);\n }\n }\n }\n }\n}\n\nfunction hqr2(nn, e, d, V, H) {\n let n = nn - 1;\n let low = 0;\n let high = nn - 1;\n let eps = Number.EPSILON;\n let exshift = 0;\n let norm = 0;\n let p = 0;\n let q = 0;\n let r = 0;\n let s = 0;\n let z = 0;\n let iter = 0;\n let i, j, k, l, m, t, w, x, y;\n let ra, sa, vr, vi;\n let notlast, cdivres;\n\n for (i = 0; i < nn; i++) {\n if (i < low || i > high) {\n d[i] = H.get(i, i);\n e[i] = 0;\n }\n\n for (j = Math.max(i - 1, 0); j < nn; j++) {\n norm = norm + Math.abs(H.get(i, j));\n }\n }\n\n while (n >= low) {\n l = n;\n while (l > low) {\n s = Math.abs(H.get(l - 1, l - 1)) + Math.abs(H.get(l, l));\n if (s === 0) {\n s = norm;\n }\n if (Math.abs(H.get(l, l - 1)) < eps * s) {\n break;\n }\n l--;\n }\n\n if (l === n) {\n H.set(n, n, H.get(n, n) + exshift);\n d[n] = H.get(n, n);\n e[n] = 0;\n n--;\n iter = 0;\n } else if (l === n - 1) {\n w = H.get(n, n - 1) * H.get(n - 1, n);\n p = (H.get(n - 1, n - 1) - H.get(n, n)) / 2;\n q = p * p + w;\n z = Math.sqrt(Math.abs(q));\n H.set(n, n, H.get(n, n) + exshift);\n H.set(n - 1, n - 1, H.get(n - 1, n - 1) + exshift);\n x = H.get(n, n);\n\n if (q >= 0) {\n z = p >= 0 ? p + z : p - z;\n d[n - 1] = x + z;\n d[n] = d[n - 1];\n if (z !== 0) {\n d[n] = x - w / z;\n }\n e[n - 1] = 0;\n e[n] = 0;\n x = H.get(n, n - 1);\n s = Math.abs(x) + Math.abs(z);\n p = x / s;\n q = z / s;\n r = Math.sqrt(p * p + q * q);\n p = p / r;\n q = q / r;\n\n for (j = n - 1; j < nn; j++) {\n z = H.get(n - 1, j);\n H.set(n - 1, j, q * z + p * H.get(n, j));\n H.set(n, j, q * H.get(n, j) - p * z);\n }\n\n for (i = 0; i <= n; i++) {\n z = H.get(i, n - 1);\n H.set(i, n - 1, q * z + p * H.get(i, n));\n H.set(i, n, q * H.get(i, n) - p * z);\n }\n\n for (i = low; i <= high; i++) {\n z = V.get(i, n - 1);\n V.set(i, n - 1, q * z + p * V.get(i, n));\n V.set(i, n, q * V.get(i, n) - p * z);\n }\n } else {\n d[n - 1] = x + p;\n d[n] = x + p;\n e[n - 1] = z;\n e[n] = -z;\n }\n\n n = n - 2;\n iter = 0;\n } else {\n x = H.get(n, n);\n y = 0;\n w = 0;\n if (l < n) {\n y = H.get(n - 1, n - 1);\n w = H.get(n, n - 1) * H.get(n - 1, n);\n }\n\n if (iter === 10) {\n exshift += x;\n for (i = low; i <= n; i++) {\n H.set(i, i, H.get(i, i) - x);\n }\n s = Math.abs(H.get(n, n - 1)) + Math.abs(H.get(n - 1, n - 2));\n x = y = 0.75 * s;\n w = -0.4375 * s * s;\n }\n\n if (iter === 30) {\n s = (y - x) / 2;\n s = s * s + w;\n if (s > 0) {\n s = Math.sqrt(s);\n if (y < x) {\n s = -s;\n }\n s = x - w / ((y - x) / 2 + s);\n for (i = low; i <= n; i++) {\n H.set(i, i, H.get(i, i) - s);\n }\n exshift += s;\n x = y = w = 0.964;\n }\n }\n\n iter = iter + 1;\n\n m = n - 2;\n while (m >= l) {\n z = H.get(m, m);\n r = x - z;\n s = y - z;\n p = (r * s - w) / H.get(m + 1, m) + H.get(m, m + 1);\n q = H.get(m + 1, m + 1) - z - r - s;\n r = H.get(m + 2, m + 1);\n s = Math.abs(p) + Math.abs(q) + Math.abs(r);\n p = p / s;\n q = q / s;\n r = r / s;\n if (m === l) {\n break;\n }\n if (\n Math.abs(H.get(m, m - 1)) * (Math.abs(q) + Math.abs(r)) <\n eps *\n (Math.abs(p) *\n (Math.abs(H.get(m - 1, m - 1)) +\n Math.abs(z) +\n Math.abs(H.get(m + 1, m + 1))))\n ) {\n break;\n }\n m--;\n }\n\n for (i = m + 2; i <= n; i++) {\n H.set(i, i - 2, 0);\n if (i > m + 2) {\n H.set(i, i - 3, 0);\n }\n }\n\n for (k = m; k <= n - 1; k++) {\n notlast = k !== n - 1;\n if (k !== m) {\n p = H.get(k, k - 1);\n q = H.get(k + 1, k - 1);\n r = notlast ? H.get(k + 2, k - 1) : 0;\n x = Math.abs(p) + Math.abs(q) + Math.abs(r);\n if (x !== 0) {\n p = p / x;\n q = q / x;\n r = r / x;\n }\n }\n\n if (x === 0) {\n break;\n }\n\n s = Math.sqrt(p * p + q * q + r * r);\n if (p < 0) {\n s = -s;\n }\n\n if (s !== 0) {\n if (k !== m) {\n H.set(k, k - 1, -s * x);\n } else if (l !== m) {\n H.set(k, k - 1, -H.get(k, k - 1));\n }\n\n p = p + s;\n x = p / s;\n y = q / s;\n z = r / s;\n q = q / p;\n r = r / p;\n\n for (j = k; j < nn; j++) {\n p = H.get(k, j) + q * H.get(k + 1, j);\n if (notlast) {\n p = p + r * H.get(k + 2, j);\n H.set(k + 2, j, H.get(k + 2, j) - p * z);\n }\n\n H.set(k, j, H.get(k, j) - p * x);\n H.set(k + 1, j, H.get(k + 1, j) - p * y);\n }\n\n for (i = 0; i <= Math.min(n, k + 3); i++) {\n p = x * H.get(i, k) + y * H.get(i, k + 1);\n if (notlast) {\n p = p + z * H.get(i, k + 2);\n H.set(i, k + 2, H.get(i, k + 2) - p * r);\n }\n\n H.set(i, k, H.get(i, k) - p);\n H.set(i, k + 1, H.get(i, k + 1) - p * q);\n }\n\n for (i = low; i <= high; i++) {\n p = x * V.get(i, k) + y * V.get(i, k + 1);\n if (notlast) {\n p = p + z * V.get(i, k + 2);\n V.set(i, k + 2, V.get(i, k + 2) - p * r);\n }\n\n V.set(i, k, V.get(i, k) - p);\n V.set(i, k + 1, V.get(i, k + 1) - p * q);\n }\n }\n }\n }\n }\n\n if (norm === 0) {\n return;\n }\n\n for (n = nn - 1; n >= 0; n--) {\n p = d[n];\n q = e[n];\n\n if (q === 0) {\n l = n;\n H.set(n, n, 1);\n for (i = n - 1; i >= 0; i--) {\n w = H.get(i, i) - p;\n r = 0;\n for (j = l; j <= n; j++) {\n r = r + H.get(i, j) * H.get(j, n);\n }\n\n if (e[i] < 0) {\n z = w;\n s = r;\n } else {\n l = i;\n if (e[i] === 0) {\n H.set(i, n, w !== 0 ? -r / w : -r / (eps * norm));\n } else {\n x = H.get(i, i + 1);\n y = H.get(i + 1, i);\n q = (d[i] - p) * (d[i] - p) + e[i] * e[i];\n t = (x * s - z * r) / q;\n H.set(i, n, t);\n H.set(\n i + 1,\n n,\n Math.abs(x) > Math.abs(z) ? (-r - w * t) / x : (-s - y * t) / z,\n );\n }\n\n t = Math.abs(H.get(i, n));\n if (eps * t * t > 1) {\n for (j = i; j <= n; j++) {\n H.set(j, n, H.get(j, n) / t);\n }\n }\n }\n }\n } else if (q < 0) {\n l = n - 1;\n\n if (Math.abs(H.get(n, n - 1)) > Math.abs(H.get(n - 1, n))) {\n H.set(n - 1, n - 1, q / H.get(n, n - 1));\n H.set(n - 1, n, -(H.get(n, n) - p) / H.get(n, n - 1));\n } else {\n cdivres = cdiv(0, -H.get(n - 1, n), H.get(n - 1, n - 1) - p, q);\n H.set(n - 1, n - 1, cdivres[0]);\n H.set(n - 1, n, cdivres[1]);\n }\n\n H.set(n, n - 1, 0);\n H.set(n, n, 1);\n for (i = n - 2; i >= 0; i--) {\n ra = 0;\n sa = 0;\n for (j = l; j <= n; j++) {\n ra = ra + H.get(i, j) * H.get(j, n - 1);\n sa = sa + H.get(i, j) * H.get(j, n);\n }\n\n w = H.get(i, i) - p;\n\n if (e[i] < 0) {\n z = w;\n r = ra;\n s = sa;\n } else {\n l = i;\n if (e[i] === 0) {\n cdivres = cdiv(-ra, -sa, w, q);\n H.set(i, n - 1, cdivres[0]);\n H.set(i, n, cdivres[1]);\n } else {\n x = H.get(i, i + 1);\n y = H.get(i + 1, i);\n vr = (d[i] - p) * (d[i] - p) + e[i] * e[i] - q * q;\n vi = (d[i] - p) * 2 * q;\n if (vr === 0 && vi === 0) {\n vr =\n eps *\n norm *\n (Math.abs(w) +\n Math.abs(q) +\n Math.abs(x) +\n Math.abs(y) +\n Math.abs(z));\n }\n cdivres = cdiv(\n x * r - z * ra + q * sa,\n x * s - z * sa - q * ra,\n vr,\n vi,\n );\n H.set(i, n - 1, cdivres[0]);\n H.set(i, n, cdivres[1]);\n if (Math.abs(x) > Math.abs(z) + Math.abs(q)) {\n H.set(\n i + 1,\n n - 1,\n (-ra - w * H.get(i, n - 1) + q * H.get(i, n)) / x,\n );\n H.set(\n i + 1,\n n,\n (-sa - w * H.get(i, n) - q * H.get(i, n - 1)) / x,\n );\n } else {\n cdivres = cdiv(\n -r - y * H.get(i, n - 1),\n -s - y * H.get(i, n),\n z,\n q,\n );\n H.set(i + 1, n - 1, cdivres[0]);\n H.set(i + 1, n, cdivres[1]);\n }\n }\n\n t = Math.max(Math.abs(H.get(i, n - 1)), Math.abs(H.get(i, n)));\n if (eps * t * t > 1) {\n for (j = i; j <= n; j++) {\n H.set(j, n - 1, H.get(j, n - 1) / t);\n H.set(j, n, H.get(j, n) / t);\n }\n }\n }\n }\n }\n }\n\n for (i = 0; i < nn; i++) {\n if (i < low || i > high) {\n for (j = i; j < nn; j++) {\n V.set(i, j, H.get(i, j));\n }\n }\n }\n\n for (j = nn - 1; j >= low; j--) {\n for (i = low; i <= high; i++) {\n z = 0;\n for (k = low; k <= Math.min(j, high); k++) {\n z = z + V.get(i, k) * H.get(k, j);\n }\n V.set(i, j, z);\n }\n }\n}\n\nfunction cdiv(xr, xi, yr, yi) {\n let r, d;\n if (Math.abs(yr) > Math.abs(yi)) {\n r = yi / yr;\n d = yr + r * yi;\n return [(xr + r * xi) / d, (xi - r * xr) / d];\n } else {\n r = yr / yi;\n d = yi + r * yr;\n return [(r * xr + xi) / d, (r * xi - xr) / d];\n }\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nexport default class CholeskyDecomposition {\n constructor(value) {\n value = WrapperMatrix2D.checkMatrix(value);\n if (!value.isSymmetric()) {\n throw new Error('Matrix is not symmetric');\n }\n\n let a = value;\n let dimension = a.rows;\n let l = new Matrix(dimension, dimension);\n let positiveDefinite = true;\n let i, j, k;\n\n for (j = 0; j < dimension; j++) {\n let d = 0;\n for (k = 0; k < j; k++) {\n let s = 0;\n for (i = 0; i < k; i++) {\n s += l.get(k, i) * l.get(j, i);\n }\n s = (a.get(j, k) - s) / l.get(k, k);\n l.set(j, k, s);\n d = d + s * s;\n }\n\n d = a.get(j, j) - d;\n\n positiveDefinite &= d > 0;\n l.set(j, j, Math.sqrt(Math.max(d, 0)));\n for (k = j + 1; k < dimension; k++) {\n l.set(j, k, 0);\n }\n }\n\n this.L = l;\n this.positiveDefinite = Boolean(positiveDefinite);\n }\n\n isPositiveDefinite() {\n return this.positiveDefinite;\n }\n\n solve(value) {\n value = WrapperMatrix2D.checkMatrix(value);\n\n let l = this.L;\n let dimension = l.rows;\n\n if (value.rows !== dimension) {\n throw new Error('Matrix dimensions do not match');\n }\n if (this.isPositiveDefinite() === false) {\n throw new Error('Matrix is not positive definite');\n }\n\n let count = value.columns;\n let B = value.clone();\n let i, j, k;\n\n for (k = 0; k < dimension; k++) {\n for (j = 0; j < count; j++) {\n for (i = 0; i < k; i++) {\n B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(k, i));\n }\n B.set(k, j, B.get(k, j) / l.get(k, k));\n }\n }\n\n for (k = dimension - 1; k >= 0; k--) {\n for (j = 0; j < count; j++) {\n for (i = k + 1; i < dimension; i++) {\n B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(i, k));\n }\n B.set(k, j, B.get(k, j) / l.get(k, k));\n }\n }\n\n return B;\n }\n\n get lowerTriangularMatrix() {\n return this.L;\n }\n}\n","import { isAnyArray } from 'is-any-array';\n\nimport Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nexport default class nipals {\n constructor(X, options = {}) {\n X = WrapperMatrix2D.checkMatrix(X);\n let { Y } = options;\n const {\n scaleScores = false,\n maxIterations = 1000,\n terminationCriteria = 1e-10,\n } = options;\n\n let u;\n if (Y) {\n if (isAnyArray(Y) && typeof Y[0] === 'number') {\n Y = Matrix.columnVector(Y);\n } else {\n Y = WrapperMatrix2D.checkMatrix(Y);\n }\n if (Y.rows !== X.rows) {\n throw new Error('Y should have the same number of rows as X');\n }\n u = Y.getColumnVector(0);\n } else {\n u = X.getColumnVector(0);\n }\n\n let diff = 1;\n let t, q, w, tOld;\n\n for (\n let counter = 0;\n counter < maxIterations && diff > terminationCriteria;\n counter++\n ) {\n w = X.transpose().mmul(u).div(u.transpose().mmul(u).get(0, 0));\n w = w.div(w.norm());\n\n t = X.mmul(w).div(w.transpose().mmul(w).get(0, 0));\n\n if (counter > 0) {\n diff = t.clone().sub(tOld).pow(2).sum();\n }\n tOld = t.clone();\n\n if (Y) {\n q = Y.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n q = q.div(q.norm());\n\n u = Y.mmul(q).div(q.transpose().mmul(q).get(0, 0));\n } else {\n u = t;\n }\n }\n\n if (Y) {\n let p = X.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n p = p.div(p.norm());\n let xResidual = X.clone().sub(t.clone().mmul(p.transpose()));\n let residual = u.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n let yResidual = Y.clone().sub(\n t.clone().mulS(residual.get(0, 0)).mmul(q.transpose()),\n );\n\n this.t = t;\n this.p = p.transpose();\n this.w = w.transpose();\n this.q = q;\n this.u = u;\n this.s = t.transpose().mmul(t);\n this.xResidual = xResidual;\n this.yResidual = yResidual;\n this.betas = residual;\n } else {\n this.w = w.transpose();\n this.s = t.transpose().mmul(t).sqrt();\n if (scaleScores) {\n this.t = t.clone().div(this.s.get(0, 0));\n } else {\n this.t = t;\n }\n this.xResidual = X.sub(t.mmul(w.transpose()));\n }\n }\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/*******************************************************************************\n * Copyright (c) 2013 IBM Corp.\n *\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * and Eclipse Distribution License v1.0 which accompany this distribution.\n *\n * The Eclipse Public License is available at\n * http://www.eclipse.org/legal/epl-v10.html\n * and the Eclipse Distribution License is available at\n * http://www.eclipse.org/org/documents/edl-v10.php.\n *\n * Contributors:\n * Andrew Banks - initial API and implementation and initial documentation\n *******************************************************************************/\n\n\n// Only expose a single object name in the global namespace.\n// Everything must go through this module. Global Paho module\n// only has a single public function, client, which returns\n// a Paho client object given connection details.\n\n/**\n * Send and receive messages using web browsers.\n *

\n * This programming interface lets a JavaScript client application use the MQTT V3.1 or\n * V3.1.1 protocol to connect to an MQTT-supporting messaging server.\n *\n * The function supported includes:\n *

    \n *
  1. Connecting to and disconnecting from a server. The server is identified by its host name and port number.\n *
  2. Specifying options that relate to the communications link with the server,\n * for example the frequency of keep-alive heartbeats, and whether SSL/TLS is required.\n *
  3. Subscribing to and receiving messages from MQTT Topics.\n *
  4. Publishing messages to MQTT Topics.\n *
\n *

\n * The API consists of two main objects:\n *

\n *
{@link Paho.Client}
\n *
This contains methods that provide the functionality of the API,\n * including provision of callbacks that notify the application when a message\n * arrives from or is delivered to the messaging server,\n * or when the status of its connection to the messaging server changes.
\n *
{@link Paho.Message}
\n *
This encapsulates the payload of the message along with various attributes\n * associated with its delivery, in particular the destination to which it has\n * been (or is about to be) sent.
\n *
\n *

\n * The programming interface validates parameters passed to it, and will throw\n * an Error containing an error message intended for developer use, if it detects\n * an error with any parameter.\n *

\n * Example:\n *\n *

\nvar client = new Paho.MQTT.Client(location.hostname, Number(location.port), \"clientId\");\nclient.onConnectionLost = onConnectionLost;\nclient.onMessageArrived = onMessageArrived;\nclient.connect({onSuccess:onConnect});\n\nfunction onConnect() {\n  // Once a connection has been made, make a subscription and send a message.\n  console.log(\"onConnect\");\n  client.subscribe(\"/World\");\n  var message = new Paho.MQTT.Message(\"Hello\");\n  message.destinationName = \"/World\";\n  client.send(message);\n};\nfunction onConnectionLost(responseObject) {\n  if (responseObject.errorCode !== 0)\n\tconsole.log(\"onConnectionLost:\"+responseObject.errorMessage);\n};\nfunction onMessageArrived(message) {\n  console.log(\"onMessageArrived:\"+message.payloadString);\n  client.disconnect();\n};\n * 
\n * @namespace Paho\n */\n\n/* jshint shadow:true */\n(function ExportLibrary(root, factory) {\n\tif(typeof exports === \"object\" && typeof module === \"object\"){\n\t\tmodule.exports = factory();\n\t} else if (typeof define === \"function\" && define.amd){\n\t\tdefine(factory);\n\t} else if (typeof exports === \"object\"){\n\t\texports = factory();\n\t} else {\n\t\t//if (typeof root.Paho === \"undefined\"){\n\t\t//\troot.Paho = {};\n\t\t//}\n\t\troot.Paho = factory();\n\t}\n})(this, function LibraryFactory(){\n\n\n\tvar PahoMQTT = (function (global) {\n\n\t// Private variables below, these are only visible inside the function closure\n\t// which is used to define the module.\n\tvar version = \"@VERSION@-@BUILDLEVEL@\";\n\n\t/**\n\t * @private\n\t */\n\tvar localStorage = global.localStorage || (function () {\n\t\tvar data = {};\n\n\t\treturn {\n\t\t\tsetItem: function (key, item) { data[key] = item; },\n\t\t\tgetItem: function (key) { return data[key]; },\n\t\t\tremoveItem: function (key) { delete data[key]; },\n\t\t};\n\t})();\n\n\t\t/**\n\t * Unique message type identifiers, with associated\n\t * associated integer values.\n\t * @private\n\t */\n\t\tvar MESSAGE_TYPE = {\n\t\t\tCONNECT: 1,\n\t\t\tCONNACK: 2,\n\t\t\tPUBLISH: 3,\n\t\t\tPUBACK: 4,\n\t\t\tPUBREC: 5,\n\t\t\tPUBREL: 6,\n\t\t\tPUBCOMP: 7,\n\t\t\tSUBSCRIBE: 8,\n\t\t\tSUBACK: 9,\n\t\t\tUNSUBSCRIBE: 10,\n\t\t\tUNSUBACK: 11,\n\t\t\tPINGREQ: 12,\n\t\t\tPINGRESP: 13,\n\t\t\tDISCONNECT: 14\n\t\t};\n\n\t\t// Collection of utility methods used to simplify module code\n\t\t// and promote the DRY pattern.\n\n\t\t/**\n\t * Validate an object's parameter names to ensure they\n\t * match a list of expected variables name for this option\n\t * type. Used to ensure option object passed into the API don't\n\t * contain erroneous parameters.\n\t * @param {Object} obj - User options object\n\t * @param {Object} keys - valid keys and types that may exist in obj.\n\t * @throws {Error} Invalid option parameter found.\n\t * @private\n\t */\n\t\tvar validate = function(obj, keys) {\n\t\t\tfor (var key in obj) {\n\t\t\t\tif (obj.hasOwnProperty(key)) {\n\t\t\t\t\tif (keys.hasOwnProperty(key)) {\n\t\t\t\t\t\tif (typeof obj[key] !== keys[key])\n\t\t\t\t\t\t\tthrow new Error(format(ERROR.INVALID_TYPE, [typeof obj[key], key]));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar errorStr = \"Unknown property, \" + key + \". Valid properties are:\";\n\t\t\t\t\t\tfor (var validKey in keys)\n\t\t\t\t\t\t\tif (keys.hasOwnProperty(validKey))\n\t\t\t\t\t\t\t\terrorStr = errorStr+\" \"+validKey;\n\t\t\t\t\t\tthrow new Error(errorStr);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t * Return a new function which runs the user function bound\n\t * to a fixed scope.\n\t * @param {function} User function\n\t * @param {object} Function scope\n\t * @return {function} User function bound to another scope\n\t * @private\n\t */\n\t\tvar scope = function (f, scope) {\n\t\t\treturn function () {\n\t\t\t\treturn f.apply(scope, arguments);\n\t\t\t};\n\t\t};\n\n\t\t/**\n\t * Unique message type identifiers, with associated\n\t * associated integer values.\n\t * @private\n\t */\n\t\tvar ERROR = {\n\t\t\tOK: {code:0, text:\"AMQJSC0000I OK.\"},\n\t\t\tCONNECT_TIMEOUT: {code:1, text:\"AMQJSC0001E Connect timed out.\"},\n\t\t\tSUBSCRIBE_TIMEOUT: {code:2, text:\"AMQJS0002E Subscribe timed out.\"},\n\t\t\tUNSUBSCRIBE_TIMEOUT: {code:3, text:\"AMQJS0003E Unsubscribe timed out.\"},\n\t\t\tPING_TIMEOUT: {code:4, text:\"AMQJS0004E Ping timed out.\"},\n\t\t\tINTERNAL_ERROR: {code:5, text:\"AMQJS0005E Internal error. Error Message: {0}, Stack trace: {1}\"},\n\t\t\tCONNACK_RETURNCODE: {code:6, text:\"AMQJS0006E Bad Connack return code:{0} {1}.\"},\n\t\t\tSOCKET_ERROR: {code:7, text:\"AMQJS0007E Socket error:{0}.\"},\n\t\t\tSOCKET_CLOSE: {code:8, text:\"AMQJS0008I Socket closed.\"},\n\t\t\tMALFORMED_UTF: {code:9, text:\"AMQJS0009E Malformed UTF data:{0} {1} {2}.\"},\n\t\t\tUNSUPPORTED: {code:10, text:\"AMQJS0010E {0} is not supported by this browser.\"},\n\t\t\tINVALID_STATE: {code:11, text:\"AMQJS0011E Invalid state {0}.\"},\n\t\t\tINVALID_TYPE: {code:12, text:\"AMQJS0012E Invalid type {0} for {1}.\"},\n\t\t\tINVALID_ARGUMENT: {code:13, text:\"AMQJS0013E Invalid argument {0} for {1}.\"},\n\t\t\tUNSUPPORTED_OPERATION: {code:14, text:\"AMQJS0014E Unsupported operation.\"},\n\t\t\tINVALID_STORED_DATA: {code:15, text:\"AMQJS0015E Invalid data in local storage key={0} value={1}.\"},\n\t\t\tINVALID_MQTT_MESSAGE_TYPE: {code:16, text:\"AMQJS0016E Invalid MQTT message type {0}.\"},\n\t\t\tMALFORMED_UNICODE: {code:17, text:\"AMQJS0017E Malformed Unicode string:{0} {1}.\"},\n\t\t\tBUFFER_FULL: {code:18, text:\"AMQJS0018E Message buffer is full, maximum buffer size: {0}.\"},\n\t\t};\n\n\t\t/** CONNACK RC Meaning. */\n\t\tvar CONNACK_RC = {\n\t\t\t0:\"Connection Accepted\",\n\t\t\t1:\"Connection Refused: unacceptable protocol version\",\n\t\t\t2:\"Connection Refused: identifier rejected\",\n\t\t\t3:\"Connection Refused: server unavailable\",\n\t\t\t4:\"Connection Refused: bad user name or password\",\n\t\t\t5:\"Connection Refused: not authorized\"\n\t\t};\n\n\t/**\n\t * Format an error message text.\n\t * @private\n\t * @param {error} ERROR value above.\n\t * @param {substitutions} [array] substituted into the text.\n\t * @return the text with the substitutions made.\n\t */\n\t\tvar format = function(error, substitutions) {\n\t\t\tvar text = error.text;\n\t\t\tif (substitutions) {\n\t\t\t\tvar field,start;\n\t\t\t\tfor (var i=0; i 0) {\n\t\t\t\t\t\tvar part1 = text.substring(0,start);\n\t\t\t\t\t\tvar part2 = text.substring(start+field.length);\n\t\t\t\t\t\ttext = part1+substitutions[i]+part2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn text;\n\t\t};\n\n\t\t//MQTT protocol and version 6 M Q I s d p 3\n\t\tvar MqttProtoIdentifierv3 = [0x00,0x06,0x4d,0x51,0x49,0x73,0x64,0x70,0x03];\n\t\t//MQTT proto/version for 311 4 M Q T T 4\n\t\tvar MqttProtoIdentifierv4 = [0x00,0x04,0x4d,0x51,0x54,0x54,0x04];\n\n\t\t/**\n\t * Construct an MQTT wire protocol message.\n\t * @param type MQTT packet type.\n\t * @param options optional wire message attributes.\n\t *\n\t * Optional properties\n\t *\n\t * messageIdentifier: message ID in the range [0..65535]\n\t * payloadMessage:\tApplication Message - PUBLISH only\n\t * connectStrings:\tarray of 0 or more Strings to be put into the CONNECT payload\n\t * topics:\t\t\tarray of strings (SUBSCRIBE, UNSUBSCRIBE)\n\t * requestQoS:\t\tarray of QoS values [0..2]\n\t *\n\t * \"Flag\" properties\n\t * cleanSession:\ttrue if present / false if absent (CONNECT)\n\t * willMessage: \ttrue if present / false if absent (CONNECT)\n\t * isRetained:\t\ttrue if present / false if absent (CONNECT)\n\t * userName:\t\ttrue if present / false if absent (CONNECT)\n\t * password:\t\ttrue if present / false if absent (CONNECT)\n\t * keepAliveInterval:\tinteger [0..65535] (CONNECT)\n\t *\n\t * @private\n\t * @ignore\n\t */\n\t\tvar WireMessage = function (type, options) {\n\t\t\tthis.type = type;\n\t\t\tfor (var name in options) {\n\t\t\t\tif (options.hasOwnProperty(name)) {\n\t\t\t\t\tthis[name] = options[name];\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tWireMessage.prototype.encode = function() {\n\t\t// Compute the first byte of the fixed header\n\t\t\tvar first = ((this.type & 0x0f) << 4);\n\n\t\t\t/*\n\t\t * Now calculate the length of the variable header + payload by adding up the lengths\n\t\t * of all the component parts\n\t\t */\n\n\t\t\tvar remLength = 0;\n\t\t\tvar topicStrLength = [];\n\t\t\tvar destinationNameLength = 0;\n\t\t\tvar willMessagePayloadBytes;\n\n\t\t\t// if the message contains a messageIdentifier then we need two bytes for that\n\t\t\tif (this.messageIdentifier !== undefined)\n\t\t\t\tremLength += 2;\n\n\t\t\tswitch(this.type) {\n\t\t\t// If this a Connect then we need to include 12 bytes for its header\n\t\t\tcase MESSAGE_TYPE.CONNECT:\n\t\t\t\tswitch(this.mqttVersion) {\n\t\t\t\tcase 3:\n\t\t\t\t\tremLength += MqttProtoIdentifierv3.length + 3;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tremLength += MqttProtoIdentifierv4.length + 3;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tremLength += UTF8Length(this.clientId) + 2;\n\t\t\t\tif (this.willMessage !== undefined) {\n\t\t\t\t\tremLength += UTF8Length(this.willMessage.destinationName) + 2;\n\t\t\t\t\t// Will message is always a string, sent as UTF-8 characters with a preceding length.\n\t\t\t\t\twillMessagePayloadBytes = this.willMessage.payloadBytes;\n\t\t\t\t\tif (!(willMessagePayloadBytes instanceof Uint8Array))\n\t\t\t\t\t\twillMessagePayloadBytes = new Uint8Array(payloadBytes);\n\t\t\t\t\tremLength += willMessagePayloadBytes.byteLength +2;\n\t\t\t\t}\n\t\t\t\tif (this.userName !== undefined)\n\t\t\t\t\tremLength += UTF8Length(this.userName) + 2;\n\t\t\t\tif (this.password !== undefined)\n\t\t\t\t\tremLength += UTF8Length(this.password) + 2;\n\t\t\t\tbreak;\n\n\t\t\t// Subscribe, Unsubscribe can both contain topic strings\n\t\t\tcase MESSAGE_TYPE.SUBSCRIBE:\n\t\t\t\tfirst |= 0x02; // Qos = 1;\n\t\t\t\tfor ( var i = 0; i < this.topics.length; i++) {\n\t\t\t\t\ttopicStrLength[i] = UTF8Length(this.topics[i]);\n\t\t\t\t\tremLength += topicStrLength[i] + 2;\n\t\t\t\t}\n\t\t\t\tremLength += this.requestedQos.length; // 1 byte for each topic's Qos\n\t\t\t\t// QoS on Subscribe only\n\t\t\t\tbreak;\n\n\t\t\tcase MESSAGE_TYPE.UNSUBSCRIBE:\n\t\t\t\tfirst |= 0x02; // Qos = 1;\n\t\t\t\tfor ( var i = 0; i < this.topics.length; i++) {\n\t\t\t\t\ttopicStrLength[i] = UTF8Length(this.topics[i]);\n\t\t\t\t\tremLength += topicStrLength[i] + 2;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase MESSAGE_TYPE.PUBREL:\n\t\t\t\tfirst |= 0x02; // Qos = 1;\n\t\t\t\tbreak;\n\n\t\t\tcase MESSAGE_TYPE.PUBLISH:\n\t\t\t\tif (this.payloadMessage.duplicate) first |= 0x08;\n\t\t\t\tfirst = first |= (this.payloadMessage.qos << 1);\n\t\t\t\tif (this.payloadMessage.retained) first |= 0x01;\n\t\t\t\tdestinationNameLength = UTF8Length(this.payloadMessage.destinationName);\n\t\t\t\tremLength += destinationNameLength + 2;\n\t\t\t\tvar payloadBytes = this.payloadMessage.payloadBytes;\n\t\t\t\tremLength += payloadBytes.byteLength;\n\t\t\t\tif (payloadBytes instanceof ArrayBuffer)\n\t\t\t\t\tpayloadBytes = new Uint8Array(payloadBytes);\n\t\t\t\telse if (!(payloadBytes instanceof Uint8Array))\n\t\t\t\t\tpayloadBytes = new Uint8Array(payloadBytes.buffer);\n\t\t\t\tbreak;\n\n\t\t\tcase MESSAGE_TYPE.DISCONNECT:\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Now we can allocate a buffer for the message\n\n\t\t\tvar mbi = encodeMBI(remLength); // Convert the length to MQTT MBI format\n\t\t\tvar pos = mbi.length + 1; // Offset of start of variable header\n\t\t\tvar buffer = new ArrayBuffer(remLength + pos);\n\t\t\tvar byteStream = new Uint8Array(buffer); // view it as a sequence of bytes\n\n\t\t\t//Write the fixed header into the buffer\n\t\t\tbyteStream[0] = first;\n\t\t\tbyteStream.set(mbi,1);\n\n\t\t\t// If this is a PUBLISH then the variable header starts with a topic\n\t\t\tif (this.type == MESSAGE_TYPE.PUBLISH)\n\t\t\t\tpos = writeString(this.payloadMessage.destinationName, destinationNameLength, byteStream, pos);\n\t\t\t// If this is a CONNECT then the variable header contains the protocol name/version, flags and keepalive time\n\n\t\t\telse if (this.type == MESSAGE_TYPE.CONNECT) {\n\t\t\t\tswitch (this.mqttVersion) {\n\t\t\t\tcase 3:\n\t\t\t\t\tbyteStream.set(MqttProtoIdentifierv3, pos);\n\t\t\t\t\tpos += MqttProtoIdentifierv3.length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tbyteStream.set(MqttProtoIdentifierv4, pos);\n\t\t\t\t\tpos += MqttProtoIdentifierv4.length;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tvar connectFlags = 0;\n\t\t\t\tif (this.cleanSession)\n\t\t\t\t\tconnectFlags = 0x02;\n\t\t\t\tif (this.willMessage !== undefined ) {\n\t\t\t\t\tconnectFlags |= 0x04;\n\t\t\t\t\tconnectFlags |= (this.willMessage.qos<<3);\n\t\t\t\t\tif (this.willMessage.retained) {\n\t\t\t\t\t\tconnectFlags |= 0x20;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.userName !== undefined)\n\t\t\t\t\tconnectFlags |= 0x80;\n\t\t\t\tif (this.password !== undefined)\n\t\t\t\t\tconnectFlags |= 0x40;\n\t\t\t\tbyteStream[pos++] = connectFlags;\n\t\t\t\tpos = writeUint16 (this.keepAliveInterval, byteStream, pos);\n\t\t\t}\n\n\t\t\t// Output the messageIdentifier - if there is one\n\t\t\tif (this.messageIdentifier !== undefined)\n\t\t\t\tpos = writeUint16 (this.messageIdentifier, byteStream, pos);\n\n\t\t\tswitch(this.type) {\n\t\t\tcase MESSAGE_TYPE.CONNECT:\n\t\t\t\tpos = writeString(this.clientId, UTF8Length(this.clientId), byteStream, pos);\n\t\t\t\tif (this.willMessage !== undefined) {\n\t\t\t\t\tpos = writeString(this.willMessage.destinationName, UTF8Length(this.willMessage.destinationName), byteStream, pos);\n\t\t\t\t\tpos = writeUint16(willMessagePayloadBytes.byteLength, byteStream, pos);\n\t\t\t\t\tbyteStream.set(willMessagePayloadBytes, pos);\n\t\t\t\t\tpos += willMessagePayloadBytes.byteLength;\n\n\t\t\t\t}\n\t\t\t\tif (this.userName !== undefined)\n\t\t\t\t\tpos = writeString(this.userName, UTF8Length(this.userName), byteStream, pos);\n\t\t\t\tif (this.password !== undefined)\n\t\t\t\t\tpos = writeString(this.password, UTF8Length(this.password), byteStream, pos);\n\t\t\t\tbreak;\n\n\t\t\tcase MESSAGE_TYPE.PUBLISH:\n\t\t\t\t// PUBLISH has a text or binary payload, if text do not add a 2 byte length field, just the UTF characters.\n\t\t\t\tbyteStream.set(payloadBytes, pos);\n\n\t\t\t\tbreak;\n\n\t\t\t\t// \t case MESSAGE_TYPE.PUBREC:\n\t\t\t\t// \t case MESSAGE_TYPE.PUBREL:\n\t\t\t\t// \t case MESSAGE_TYPE.PUBCOMP:\n\t\t\t\t// \t \tbreak;\n\n\t\t\tcase MESSAGE_TYPE.SUBSCRIBE:\n\t\t\t\t// SUBSCRIBE has a list of topic strings and request QoS\n\t\t\t\tfor (var i=0; i> 4;\n\t\t\tvar messageInfo = first &= 0x0f;\n\t\t\tpos += 1;\n\n\n\t\t\t// Decode the remaining length (MBI format)\n\n\t\t\tvar digit;\n\t\t\tvar remLength = 0;\n\t\t\tvar multiplier = 1;\n\t\t\tdo {\n\t\t\t\tif (pos == input.length) {\n\t\t\t\t\treturn [null,startingPos];\n\t\t\t\t}\n\t\t\t\tdigit = input[pos++];\n\t\t\t\tremLength += ((digit & 0x7F) * multiplier);\n\t\t\t\tmultiplier *= 128;\n\t\t\t} while ((digit & 0x80) !== 0);\n\n\t\t\tvar endPos = pos+remLength;\n\t\t\tif (endPos > input.length) {\n\t\t\t\treturn [null,startingPos];\n\t\t\t}\n\n\t\t\tvar wireMessage = new WireMessage(type);\n\t\t\tswitch(type) {\n\t\t\tcase MESSAGE_TYPE.CONNACK:\n\t\t\t\tvar connectAcknowledgeFlags = input[pos++];\n\t\t\t\tif (connectAcknowledgeFlags & 0x01)\n\t\t\t\t\twireMessage.sessionPresent = true;\n\t\t\t\twireMessage.returnCode = input[pos++];\n\t\t\t\tbreak;\n\n\t\t\tcase MESSAGE_TYPE.PUBLISH:\n\t\t\t\tvar qos = (messageInfo >> 1) & 0x03;\n\n\t\t\t\tvar len = readUint16(input, pos);\n\t\t\t\tpos += 2;\n\t\t\t\tvar topicName = parseUTF8(input, pos, len);\n\t\t\t\tpos += len;\n\t\t\t\t// If QoS 1 or 2 there will be a messageIdentifier\n\t\t\t\tif (qos > 0) {\n\t\t\t\t\twireMessage.messageIdentifier = readUint16(input, pos);\n\t\t\t\t\tpos += 2;\n\t\t\t\t}\n\n\t\t\t\tvar message = new Message(input.subarray(pos, endPos));\n\t\t\t\tif ((messageInfo & 0x01) == 0x01)\n\t\t\t\t\tmessage.retained = true;\n\t\t\t\tif ((messageInfo & 0x08) == 0x08)\n\t\t\t\t\tmessage.duplicate = true;\n\t\t\t\tmessage.qos = qos;\n\t\t\t\tmessage.destinationName = topicName;\n\t\t\t\twireMessage.payloadMessage = message;\n\t\t\t\tbreak;\n\n\t\t\tcase MESSAGE_TYPE.PUBACK:\n\t\t\tcase MESSAGE_TYPE.PUBREC:\n\t\t\tcase MESSAGE_TYPE.PUBREL:\n\t\t\tcase MESSAGE_TYPE.PUBCOMP:\n\t\t\tcase MESSAGE_TYPE.UNSUBACK:\n\t\t\t\twireMessage.messageIdentifier = readUint16(input, pos);\n\t\t\t\tbreak;\n\n\t\t\tcase MESSAGE_TYPE.SUBACK:\n\t\t\t\twireMessage.messageIdentifier = readUint16(input, pos);\n\t\t\t\tpos += 2;\n\t\t\t\twireMessage.returnCode = input.subarray(pos, endPos);\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn [wireMessage,endPos];\n\t\t}\n\n\t\tfunction writeUint16(input, buffer, offset) {\n\t\t\tbuffer[offset++] = input >> 8; //MSB\n\t\t\tbuffer[offset++] = input % 256; //LSB\n\t\t\treturn offset;\n\t\t}\n\n\t\tfunction writeString(input, utf8Length, buffer, offset) {\n\t\t\toffset = writeUint16(utf8Length, buffer, offset);\n\t\t\tstringToUTF8(input, buffer, offset);\n\t\t\treturn offset + utf8Length;\n\t\t}\n\n\t\tfunction readUint16(buffer, offset) {\n\t\t\treturn 256*buffer[offset] + buffer[offset+1];\n\t\t}\n\n\t\t/**\n\t * Encodes an MQTT Multi-Byte Integer\n\t * @private\n\t */\n\t\tfunction encodeMBI(number) {\n\t\t\tvar output = new Array(1);\n\t\t\tvar numBytes = 0;\n\n\t\t\tdo {\n\t\t\t\tvar digit = number % 128;\n\t\t\t\tnumber = number >> 7;\n\t\t\t\tif (number > 0) {\n\t\t\t\t\tdigit |= 0x80;\n\t\t\t\t}\n\t\t\t\toutput[numBytes++] = digit;\n\t\t\t} while ( (number > 0) && (numBytes<4) );\n\n\t\t\treturn output;\n\t\t}\n\n\t\t/**\n\t * Takes a String and calculates its length in bytes when encoded in UTF8.\n\t * @private\n\t */\n\t\tfunction UTF8Length(input) {\n\t\t\tvar output = 0;\n\t\t\tfor (var i = 0; i 0x7FF)\n\t\t\t\t{\n\t\t\t\t\t// Surrogate pair means its a 4 byte character\n\t\t\t\t\tif (0xD800 <= charCode && charCode <= 0xDBFF)\n\t\t\t\t\t{\n\t\t\t\t\t\ti++;\n\t\t\t\t\t\toutput++;\n\t\t\t\t\t}\n\t\t\t\t\toutput +=3;\n\t\t\t\t}\n\t\t\t\telse if (charCode > 0x7F)\n\t\t\t\t\toutput +=2;\n\t\t\t\telse\n\t\t\t\t\toutput++;\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\n\t\t/**\n\t * Takes a String and writes it into an array as UTF8 encoded bytes.\n\t * @private\n\t */\n\t\tfunction stringToUTF8(input, output, start) {\n\t\t\tvar pos = start;\n\t\t\tfor (var i = 0; i>6 & 0x1F | 0xC0;\n\t\t\t\t\toutput[pos++] = charCode & 0x3F | 0x80;\n\t\t\t\t} else if (charCode <= 0xFFFF) {\n\t\t\t\t\toutput[pos++] = charCode>>12 & 0x0F | 0xE0;\n\t\t\t\t\toutput[pos++] = charCode>>6 & 0x3F | 0x80;\n\t\t\t\t\toutput[pos++] = charCode & 0x3F | 0x80;\n\t\t\t\t} else {\n\t\t\t\t\toutput[pos++] = charCode>>18 & 0x07 | 0xF0;\n\t\t\t\t\toutput[pos++] = charCode>>12 & 0x3F | 0x80;\n\t\t\t\t\toutput[pos++] = charCode>>6 & 0x3F | 0x80;\n\t\t\t\t\toutput[pos++] = charCode & 0x3F | 0x80;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\n\t\tfunction parseUTF8(input, offset, length) {\n\t\t\tvar output = \"\";\n\t\t\tvar utf16;\n\t\t\tvar pos = offset;\n\n\t\t\twhile (pos < offset+length)\n\t\t\t{\n\t\t\t\tvar byte1 = input[pos++];\n\t\t\t\tif (byte1 < 128)\n\t\t\t\t\tutf16 = byte1;\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tvar byte2 = input[pos++]-128;\n\t\t\t\t\tif (byte2 < 0)\n\t\t\t\t\t\tthrow new Error(format(ERROR.MALFORMED_UTF, [byte1.toString(16), byte2.toString(16),\"\"]));\n\t\t\t\t\tif (byte1 < 0xE0) // 2 byte character\n\t\t\t\t\t\tutf16 = 64*(byte1-0xC0) + byte2;\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tvar byte3 = input[pos++]-128;\n\t\t\t\t\t\tif (byte3 < 0)\n\t\t\t\t\t\t\tthrow new Error(format(ERROR.MALFORMED_UTF, [byte1.toString(16), byte2.toString(16), byte3.toString(16)]));\n\t\t\t\t\t\tif (byte1 < 0xF0) // 3 byte character\n\t\t\t\t\t\t\tutf16 = 4096*(byte1-0xE0) + 64*byte2 + byte3;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar byte4 = input[pos++]-128;\n\t\t\t\t\t\t\tif (byte4 < 0)\n\t\t\t\t\t\t\t\tthrow new Error(format(ERROR.MALFORMED_UTF, [byte1.toString(16), byte2.toString(16), byte3.toString(16), byte4.toString(16)]));\n\t\t\t\t\t\t\tif (byte1 < 0xF8) // 4 byte character\n\t\t\t\t\t\t\t\tutf16 = 262144*(byte1-0xF0) + 4096*byte2 + 64*byte3 + byte4;\n\t\t\t\t\t\t\telse // longer encodings are not supported\n\t\t\t\t\t\t\t\tthrow new Error(format(ERROR.MALFORMED_UTF, [byte1.toString(16), byte2.toString(16), byte3.toString(16), byte4.toString(16)]));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (utf16 > 0xFFFF) // 4 byte character - express as a surrogate pair\n\t\t\t\t{\n\t\t\t\t\tutf16 -= 0x10000;\n\t\t\t\t\toutput += String.fromCharCode(0xD800 + (utf16 >> 10)); // lead character\n\t\t\t\t\tutf16 = 0xDC00 + (utf16 & 0x3FF); // trail character\n\t\t\t\t}\n\t\t\t\toutput += String.fromCharCode(utf16);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\n\t\t/**\n\t * Repeat keepalive requests, monitor responses.\n\t * @ignore\n\t */\n\t\tvar Pinger = function(client, keepAliveInterval) {\n\t\t\tthis._client = client;\n\t\t\tthis._keepAliveInterval = keepAliveInterval*1000;\n\t\t\tthis.isReset = false;\n\n\t\t\tvar pingReq = new WireMessage(MESSAGE_TYPE.PINGREQ).encode();\n\n\t\t\tvar doTimeout = function (pinger) {\n\t\t\t\treturn function () {\n\t\t\t\t\treturn doPing.apply(pinger);\n\t\t\t\t};\n\t\t\t};\n\n\t\t\t/** @ignore */\n\t\t\tvar doPing = function() {\n\t\t\t\tif (!this.isReset) {\n\t\t\t\t\tthis._client._trace(\"Pinger.doPing\", \"Timed out\");\n\t\t\t\t\tthis._client._disconnected( ERROR.PING_TIMEOUT.code , format(ERROR.PING_TIMEOUT));\n\t\t\t\t} else {\n\t\t\t\t\tthis.isReset = false;\n\t\t\t\t\tthis._client._trace(\"Pinger.doPing\", \"send PINGREQ\");\n\t\t\t\t\tthis._client.socket.send(pingReq);\n\t\t\t\t\tthis.timeout = setTimeout(doTimeout(this), this._keepAliveInterval);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.reset = function() {\n\t\t\t\tthis.isReset = true;\n\t\t\t\tclearTimeout(this.timeout);\n\t\t\t\tif (this._keepAliveInterval > 0)\n\t\t\t\t\tthis.timeout = setTimeout(doTimeout(this), this._keepAliveInterval);\n\t\t\t};\n\n\t\t\tthis.cancel = function() {\n\t\t\t\tclearTimeout(this.timeout);\n\t\t\t};\n\t\t};\n\n\t\t/**\n\t * Monitor request completion.\n\t * @ignore\n\t */\n\t\tvar Timeout = function(client, timeoutSeconds, action, args) {\n\t\t\tif (!timeoutSeconds)\n\t\t\t\ttimeoutSeconds = 30;\n\n\t\t\tvar doTimeout = function (action, client, args) {\n\t\t\t\treturn function () {\n\t\t\t\t\treturn action.apply(client, args);\n\t\t\t\t};\n\t\t\t};\n\t\t\tthis.timeout = setTimeout(doTimeout(action, client, args), timeoutSeconds * 1000);\n\n\t\t\tthis.cancel = function() {\n\t\t\t\tclearTimeout(this.timeout);\n\t\t\t};\n\t\t};\n\n\t/**\n\t * Internal implementation of the Websockets MQTT V3.1 client.\n\t *\n\t * @name Paho.ClientImpl @constructor\n\t * @param {String} host the DNS nameof the webSocket host.\n\t * @param {Number} port the port number for that host.\n\t * @param {String} clientId the MQ client identifier.\n\t */\n\t\tvar ClientImpl = function (uri, host, port, path, clientId) {\n\t\t// Check dependencies are satisfied in this browser.\n\t\t\tif (!(\"WebSocket\" in global && global.WebSocket !== null)) {\n\t\t\t\tthrow new Error(format(ERROR.UNSUPPORTED, [\"WebSocket\"]));\n\t\t\t}\n\t\t\tif (!(\"ArrayBuffer\" in global && global.ArrayBuffer !== null)) {\n\t\t\t\tthrow new Error(format(ERROR.UNSUPPORTED, [\"ArrayBuffer\"]));\n\t\t\t}\n\t\t\tthis._trace(\"Paho.Client\", uri, host, port, path, clientId);\n\n\t\t\tthis.host = host;\n\t\t\tthis.port = port;\n\t\t\tthis.path = path;\n\t\t\tthis.uri = uri;\n\t\t\tthis.clientId = clientId;\n\t\t\tthis._wsuri = null;\n\n\t\t\t// Local storagekeys are qualified with the following string.\n\t\t\t// The conditional inclusion of path in the key is for backward\n\t\t\t// compatibility to when the path was not configurable and assumed to\n\t\t\t// be /mqtt\n\t\t\tthis._localKey=host+\":\"+port+(path!=\"/mqtt\"?\":\"+path:\"\")+\":\"+clientId+\":\";\n\n\t\t\t// Create private instance-only message queue\n\t\t\t// Internal queue of messages to be sent, in sending order.\n\t\t\tthis._msg_queue = [];\n\t\t\tthis._buffered_msg_queue = [];\n\n\t\t\t// Messages we have sent and are expecting a response for, indexed by their respective message ids.\n\t\t\tthis._sentMessages = {};\n\n\t\t\t// Messages we have received and acknowleged and are expecting a confirm message for\n\t\t\t// indexed by their respective message ids.\n\t\t\tthis._receivedMessages = {};\n\n\t\t\t// Internal list of callbacks to be executed when messages\n\t\t\t// have been successfully sent over web socket, e.g. disconnect\n\t\t\t// when it doesn't have to wait for ACK, just message is dispatched.\n\t\t\tthis._notify_msg_sent = {};\n\n\t\t\t// Unique identifier for SEND messages, incrementing\n\t\t\t// counter as messages are sent.\n\t\t\tthis._message_identifier = 1;\n\n\t\t\t// Used to determine the transmission sequence of stored sent messages.\n\t\t\tthis._sequence = 0;\n\n\n\t\t\t// Load the local state, if any, from the saved version, only restore state relevant to this client.\n\t\t\tfor (var key in localStorage)\n\t\t\t\tif ( key.indexOf(\"Sent:\"+this._localKey) === 0 || key.indexOf(\"Received:\"+this._localKey) === 0)\n\t\t\t\t\tthis.restore(key);\n\t\t};\n\n\t\t// Messaging Client public instance members.\n\t\tClientImpl.prototype.host = null;\n\t\tClientImpl.prototype.port = null;\n\t\tClientImpl.prototype.path = null;\n\t\tClientImpl.prototype.uri = null;\n\t\tClientImpl.prototype.clientId = null;\n\n\t\t// Messaging Client private instance members.\n\t\tClientImpl.prototype.socket = null;\n\t\t/* true once we have received an acknowledgement to a CONNECT packet. */\n\t\tClientImpl.prototype.connected = false;\n\t\t/* The largest message identifier allowed, may not be larger than 2**16 but\n\t\t * if set smaller reduces the maximum number of outbound messages allowed.\n\t\t */\n\t\tClientImpl.prototype.maxMessageIdentifier = 65536;\n\t\tClientImpl.prototype.connectOptions = null;\n\t\tClientImpl.prototype.hostIndex = null;\n\t\tClientImpl.prototype.onConnected = null;\n\t\tClientImpl.prototype.onConnectionLost = null;\n\t\tClientImpl.prototype.onMessageDelivered = null;\n\t\tClientImpl.prototype.onMessageArrived = null;\n\t\tClientImpl.prototype.traceFunction = null;\n\t\tClientImpl.prototype._msg_queue = null;\n\t\tClientImpl.prototype._buffered_msg_queue = null;\n\t\tClientImpl.prototype._connectTimeout = null;\n\t\t/* The sendPinger monitors how long we allow before we send data to prove to the server that we are alive. */\n\t\tClientImpl.prototype.sendPinger = null;\n\t\t/* The receivePinger monitors how long we allow before we require evidence that the server is alive. */\n\t\tClientImpl.prototype.receivePinger = null;\n\t\tClientImpl.prototype._reconnectInterval = 1; // Reconnect Delay, starts at 1 second\n\t\tClientImpl.prototype._reconnecting = false;\n\t\tClientImpl.prototype._reconnectTimeout = null;\n\t\tClientImpl.prototype.disconnectedPublishing = false;\n\t\tClientImpl.prototype.disconnectedBufferSize = 5000;\n\n\t\tClientImpl.prototype.receiveBuffer = null;\n\n\t\tClientImpl.prototype._traceBuffer = null;\n\t\tClientImpl.prototype._MAX_TRACE_ENTRIES = 100;\n\n\t\tClientImpl.prototype.connect = function (connectOptions) {\n\t\t\tvar connectOptionsMasked = this._traceMask(connectOptions, \"password\");\n\t\t\tthis._trace(\"Client.connect\", connectOptionsMasked, this.socket, this.connected);\n\n\t\t\tif (this.connected)\n\t\t\t\tthrow new Error(format(ERROR.INVALID_STATE, [\"already connected\"]));\n\t\t\tif (this.socket)\n\t\t\t\tthrow new Error(format(ERROR.INVALID_STATE, [\"already connected\"]));\n\n\t\t\tif (this._reconnecting) {\n\t\t\t// connect() function is called while reconnect is in progress.\n\t\t\t// Terminate the auto reconnect process to use new connect options.\n\t\t\t\tthis._reconnectTimeout.cancel();\n\t\t\t\tthis._reconnectTimeout = null;\n\t\t\t\tthis._reconnecting = false;\n\t\t\t}\n\n\t\t\tthis.connectOptions = connectOptions;\n\t\t\tthis._reconnectInterval = 1;\n\t\t\tthis._reconnecting = false;\n\t\t\tif (connectOptions.uris) {\n\t\t\t\tthis.hostIndex = 0;\n\t\t\t\tthis._doConnect(connectOptions.uris[0]);\n\t\t\t} else {\n\t\t\t\tthis._doConnect(this.uri);\n\t\t\t}\n\n\t\t};\n\n\t\tClientImpl.prototype.subscribe = function (filter, subscribeOptions) {\n\t\t\tthis._trace(\"Client.subscribe\", filter, subscribeOptions);\n\n\t\t\tif (!this.connected)\n\t\t\t\tthrow new Error(format(ERROR.INVALID_STATE, [\"not connected\"]));\n\n var wireMessage = new WireMessage(MESSAGE_TYPE.SUBSCRIBE);\n wireMessage.topics = filter.constructor === Array ? filter : [filter];\n if (subscribeOptions.qos === undefined)\n subscribeOptions.qos = 0;\n wireMessage.requestedQos = [];\n for (var i = 0; i < wireMessage.topics.length; i++)\n wireMessage.requestedQos[i] = subscribeOptions.qos;\n\n\t\t\tif (subscribeOptions.onSuccess) {\n\t\t\t\twireMessage.onSuccess = function(grantedQos) {subscribeOptions.onSuccess({invocationContext:subscribeOptions.invocationContext,grantedQos:grantedQos});};\n\t\t\t}\n\n\t\t\tif (subscribeOptions.onFailure) {\n\t\t\t\twireMessage.onFailure = function(errorCode) {subscribeOptions.onFailure({invocationContext:subscribeOptions.invocationContext,errorCode:errorCode, errorMessage:format(errorCode)});};\n\t\t\t}\n\n\t\t\tif (subscribeOptions.timeout) {\n\t\t\t\twireMessage.timeOut = new Timeout(this, subscribeOptions.timeout, subscribeOptions.onFailure,\n\t\t\t\t\t[{invocationContext:subscribeOptions.invocationContext,\n\t\t\t\t\t\terrorCode:ERROR.SUBSCRIBE_TIMEOUT.code,\n\t\t\t\t\t\terrorMessage:format(ERROR.SUBSCRIBE_TIMEOUT)}]);\n\t\t\t}\n\n\t\t\t// All subscriptions return a SUBACK.\n\t\t\tthis._requires_ack(wireMessage);\n\t\t\tthis._schedule_message(wireMessage);\n\t\t};\n\n\t\t/** @ignore */\n\t\tClientImpl.prototype.unsubscribe = function(filter, unsubscribeOptions) {\n\t\t\tthis._trace(\"Client.unsubscribe\", filter, unsubscribeOptions);\n\n\t\t\tif (!this.connected)\n\t\t\t\tthrow new Error(format(ERROR.INVALID_STATE, [\"not connected\"]));\n\n var wireMessage = new WireMessage(MESSAGE_TYPE.UNSUBSCRIBE);\n wireMessage.topics = filter.constructor === Array ? filter : [filter];\n\n\t\t\tif (unsubscribeOptions.onSuccess) {\n\t\t\t\twireMessage.callback = function() {unsubscribeOptions.onSuccess({invocationContext:unsubscribeOptions.invocationContext});};\n\t\t\t}\n\t\t\tif (unsubscribeOptions.timeout) {\n\t\t\t\twireMessage.timeOut = new Timeout(this, unsubscribeOptions.timeout, unsubscribeOptions.onFailure,\n\t\t\t\t\t[{invocationContext:unsubscribeOptions.invocationContext,\n\t\t\t\t\t\terrorCode:ERROR.UNSUBSCRIBE_TIMEOUT.code,\n\t\t\t\t\t\terrorMessage:format(ERROR.UNSUBSCRIBE_TIMEOUT)}]);\n\t\t\t}\n\n\t\t\t// All unsubscribes return a SUBACK.\n\t\t\tthis._requires_ack(wireMessage);\n\t\t\tthis._schedule_message(wireMessage);\n\t\t};\n\n\t\tClientImpl.prototype.send = function (message) {\n\t\t\tthis._trace(\"Client.send\", message);\n\n\t\t\tvar wireMessage = new WireMessage(MESSAGE_TYPE.PUBLISH);\n\t\t\twireMessage.payloadMessage = message;\n\n\t\t\tif (this.connected) {\n\t\t\t// Mark qos 1 & 2 message as \"ACK required\"\n\t\t\t// For qos 0 message, invoke onMessageDelivered callback if there is one.\n\t\t\t// Then schedule the message.\n\t\t\t\tif (message.qos > 0) {\n\t\t\t\t\tthis._requires_ack(wireMessage);\n\t\t\t\t} else if (this.onMessageDelivered) {\n\t\t\t\t\tthis._notify_msg_sent[wireMessage] = this.onMessageDelivered(wireMessage.payloadMessage);\n\t\t\t\t}\n\t\t\t\tthis._schedule_message(wireMessage);\n\t\t\t} else {\n\t\t\t// Currently disconnected, will not schedule this message\n\t\t\t// Check if reconnecting is in progress and disconnected publish is enabled.\n\t\t\t\tif (this._reconnecting && this.disconnectedPublishing) {\n\t\t\t\t// Check the limit which include the \"required ACK\" messages\n\t\t\t\t\tvar messageCount = Object.keys(this._sentMessages).length + this._buffered_msg_queue.length;\n\t\t\t\t\tif (messageCount > this.disconnectedBufferSize) {\n\t\t\t\t\t\tthrow new Error(format(ERROR.BUFFER_FULL, [this.disconnectedBufferSize]));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (message.qos > 0) {\n\t\t\t\t\t\t// Mark this message as \"ACK required\"\n\t\t\t\t\t\t\tthis._requires_ack(wireMessage);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twireMessage.sequence = ++this._sequence;\n\t\t\t\t\t\t\t// Add messages in fifo order to array, by adding to start\n\t\t\t\t\t\t\tthis._buffered_msg_queue.unshift(wireMessage);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(format(ERROR.INVALID_STATE, [\"not connected\"]));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tClientImpl.prototype.disconnect = function () {\n\t\t\tthis._trace(\"Client.disconnect\");\n\n\t\t\tif (this._reconnecting) {\n\t\t\t// disconnect() function is called while reconnect is in progress.\n\t\t\t// Terminate the auto reconnect process.\n\t\t\t\tthis._reconnectTimeout.cancel();\n\t\t\t\tthis._reconnectTimeout = null;\n\t\t\t\tthis._reconnecting = false;\n\t\t\t}\n\n\t\t\tif (!this.socket)\n\t\t\t\tthrow new Error(format(ERROR.INVALID_STATE, [\"not connecting or connected\"]));\n\n\t\t\tvar wireMessage = new WireMessage(MESSAGE_TYPE.DISCONNECT);\n\n\t\t\t// Run the disconnected call back as soon as the message has been sent,\n\t\t\t// in case of a failure later on in the disconnect processing.\n\t\t\t// as a consequence, the _disconected call back may be run several times.\n\t\t\tthis._notify_msg_sent[wireMessage] = scope(this._disconnected, this);\n\n\t\t\tthis._schedule_message(wireMessage);\n\t\t};\n\n\t\tClientImpl.prototype.getTraceLog = function () {\n\t\t\tif ( this._traceBuffer !== null ) {\n\t\t\t\tthis._trace(\"Client.getTraceLog\", new Date());\n\t\t\t\tthis._trace(\"Client.getTraceLog in flight messages\", this._sentMessages.length);\n\t\t\t\tfor (var key in this._sentMessages)\n\t\t\t\t\tthis._trace(\"_sentMessages \",key, this._sentMessages[key]);\n\t\t\t\tfor (var key in this._receivedMessages)\n\t\t\t\t\tthis._trace(\"_receivedMessages \",key, this._receivedMessages[key]);\n\n\t\t\t\treturn this._traceBuffer;\n\t\t\t}\n\t\t};\n\n\t\tClientImpl.prototype.startTrace = function () {\n\t\t\tif ( this._traceBuffer === null ) {\n\t\t\t\tthis._traceBuffer = [];\n\t\t\t}\n\t\t\tthis._trace(\"Client.startTrace\", new Date(), version);\n\t\t};\n\n\t\tClientImpl.prototype.stopTrace = function () {\n\t\t\tdelete this._traceBuffer;\n\t\t};\n\n\t\tClientImpl.prototype._doConnect = function (wsurl) {\n\t\t// When the socket is open, this client will send the CONNECT WireMessage using the saved parameters.\n\t\t\tif (this.connectOptions.useSSL) {\n\t\t\t\tvar uriParts = wsurl.split(\":\");\n\t\t\t\turiParts[0] = \"wss\";\n\t\t\t\twsurl = uriParts.join(\":\");\n\t\t\t}\n\t\t\tthis._wsuri = wsurl;\n\t\t\tthis.connected = false;\n\n\n\n\t\t\tif (this.connectOptions.mqttVersion < 4) {\n\t\t\t\tthis.socket = new WebSocket(wsurl, [\"mqttv3.1\"]);\n\t\t\t} else {\n\t\t\t\tthis.socket = new WebSocket(wsurl, [\"mqtt\"]);\n\t\t\t}\n\t\t\tthis.socket.binaryType = \"arraybuffer\";\n\t\t\tthis.socket.onopen = scope(this._on_socket_open, this);\n\t\t\tthis.socket.onmessage = scope(this._on_socket_message, this);\n\t\t\tthis.socket.onerror = scope(this._on_socket_error, this);\n\t\t\tthis.socket.onclose = scope(this._on_socket_close, this);\n\n\t\t\tthis.sendPinger = new Pinger(this, this.connectOptions.keepAliveInterval);\n\t\t\tthis.receivePinger = new Pinger(this, this.connectOptions.keepAliveInterval);\n\t\t\tif (this._connectTimeout) {\n\t\t\t\tthis._connectTimeout.cancel();\n\t\t\t\tthis._connectTimeout = null;\n\t\t\t}\n\t\t\tthis._connectTimeout = new Timeout(this, this.connectOptions.timeout, this._disconnected, [ERROR.CONNECT_TIMEOUT.code, format(ERROR.CONNECT_TIMEOUT)]);\n\t\t};\n\n\n\t\t// Schedule a new message to be sent over the WebSockets\n\t\t// connection. CONNECT messages cause WebSocket connection\n\t\t// to be started. All other messages are queued internally\n\t\t// until this has happened. When WS connection starts, process\n\t\t// all outstanding messages.\n\t\tClientImpl.prototype._schedule_message = function (message) {\n\t\t\t// Add messages in fifo order to array, by adding to start\n\t\t\tthis._msg_queue.unshift(message);\n\t\t\t// Process outstanding messages in the queue if we have an open socket, and have received CONNACK.\n\t\t\tif (this.connected) {\n\t\t\t\tthis._process_queue();\n\t\t\t}\n\t\t};\n\n\t\tClientImpl.prototype.store = function(prefix, wireMessage) {\n\t\t\tvar storedMessage = {type:wireMessage.type, messageIdentifier:wireMessage.messageIdentifier, version:1};\n\n\t\t\tswitch(wireMessage.type) {\n\t\t\tcase MESSAGE_TYPE.PUBLISH:\n\t\t\t\tif(wireMessage.pubRecReceived)\n\t\t\t\t\tstoredMessage.pubRecReceived = true;\n\n\t\t\t\t// Convert the payload to a hex string.\n\t\t\t\tstoredMessage.payloadMessage = {};\n\t\t\t\tvar hex = \"\";\n\t\t\t\tvar messageBytes = wireMessage.payloadMessage.payloadBytes;\n\t\t\t\tfor (var i=0; i= 2) {\n\t\t\t\t\tvar x = parseInt(hex.substring(0, 2), 16);\n\t\t\t\t\thex = hex.substring(2, hex.length);\n\t\t\t\t\tbyteStream[i++] = x;\n\t\t\t\t}\n\t\t\t\tvar payloadMessage = new Message(byteStream);\n\n\t\t\t\tpayloadMessage.qos = storedMessage.payloadMessage.qos;\n\t\t\t\tpayloadMessage.destinationName = storedMessage.payloadMessage.destinationName;\n\t\t\t\tif (storedMessage.payloadMessage.duplicate)\n\t\t\t\t\tpayloadMessage.duplicate = true;\n\t\t\t\tif (storedMessage.payloadMessage.retained)\n\t\t\t\t\tpayloadMessage.retained = true;\n\t\t\t\twireMessage.payloadMessage = payloadMessage;\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tthrow Error(format(ERROR.INVALID_STORED_DATA, [key, value]));\n\t\t\t}\n\n\t\t\tif (key.indexOf(\"Sent:\"+this._localKey) === 0) {\n\t\t\t\twireMessage.payloadMessage.duplicate = true;\n\t\t\t\tthis._sentMessages[wireMessage.messageIdentifier] = wireMessage;\n\t\t\t} else if (key.indexOf(\"Received:\"+this._localKey) === 0) {\n\t\t\t\tthis._receivedMessages[wireMessage.messageIdentifier] = wireMessage;\n\t\t\t}\n\t\t};\n\n\t\tClientImpl.prototype._process_queue = function () {\n\t\t\tvar message = null;\n\n\t\t\t// Send all queued messages down socket connection\n\t\t\twhile ((message = this._msg_queue.pop())) {\n\t\t\t\tthis._socket_send(message);\n\t\t\t\t// Notify listeners that message was successfully sent\n\t\t\t\tif (this._notify_msg_sent[message]) {\n\t\t\t\t\tthis._notify_msg_sent[message]();\n\t\t\t\t\tdelete this._notify_msg_sent[message];\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t * Expect an ACK response for this message. Add message to the set of in progress\n\t * messages and set an unused identifier in this message.\n\t * @ignore\n\t */\n\t\tClientImpl.prototype._requires_ack = function (wireMessage) {\n\t\t\tvar messageCount = Object.keys(this._sentMessages).length;\n\t\t\tif (messageCount > this.maxMessageIdentifier)\n\t\t\t\tthrow Error (\"Too many messages:\"+messageCount);\n\n\t\t\twhile(this._sentMessages[this._message_identifier] !== undefined) {\n\t\t\t\tthis._message_identifier++;\n\t\t\t}\n\t\t\twireMessage.messageIdentifier = this._message_identifier;\n\t\t\tthis._sentMessages[wireMessage.messageIdentifier] = wireMessage;\n\t\t\tif (wireMessage.type === MESSAGE_TYPE.PUBLISH) {\n\t\t\t\tthis.store(\"Sent:\", wireMessage);\n\t\t\t}\n\t\t\tif (this._message_identifier === this.maxMessageIdentifier) {\n\t\t\t\tthis._message_identifier = 1;\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t * Called when the underlying websocket has been opened.\n\t * @ignore\n\t */\n\t\tClientImpl.prototype._on_socket_open = function () {\n\t\t// Create the CONNECT message object.\n\t\t\tvar wireMessage = new WireMessage(MESSAGE_TYPE.CONNECT, this.connectOptions);\n\t\t\twireMessage.clientId = this.clientId;\n\t\t\tthis._socket_send(wireMessage);\n\t\t};\n\n\t\t/**\n\t * Called when the underlying websocket has received a complete packet.\n\t * @ignore\n\t */\n\t\tClientImpl.prototype._on_socket_message = function (event) {\n\t\t\tthis._trace(\"Client._on_socket_message\", event.data);\n\t\t\tvar messages = this._deframeMessages(event.data);\n\t\t\tfor (var i = 0; i < messages.length; i+=1) {\n\t\t\t\tthis._handleMessage(messages[i]);\n\t\t\t}\n\t\t};\n\n\t\tClientImpl.prototype._deframeMessages = function(data) {\n\t\t\tvar byteArray = new Uint8Array(data);\n\t\t\tvar messages = [];\n\t\t\tif (this.receiveBuffer) {\n\t\t\t\tvar newData = new Uint8Array(this.receiveBuffer.length+byteArray.length);\n\t\t\t\tnewData.set(this.receiveBuffer);\n\t\t\t\tnewData.set(byteArray,this.receiveBuffer.length);\n\t\t\t\tbyteArray = newData;\n\t\t\t\tdelete this.receiveBuffer;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tvar offset = 0;\n\t\t\t\twhile(offset < byteArray.length) {\n\t\t\t\t\tvar result = decodeMessage(byteArray,offset);\n\t\t\t\t\tvar wireMessage = result[0];\n\t\t\t\t\toffset = result[1];\n\t\t\t\t\tif (wireMessage !== null) {\n\t\t\t\t\t\tmessages.push(wireMessage);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (offset < byteArray.length) {\n\t\t\t\t\tthis.receiveBuffer = byteArray.subarray(offset);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tvar errorStack = ((error.hasOwnProperty(\"stack\") == \"undefined\") ? error.stack.toString() : \"No Error Stack Available\");\n\t\t\t\tthis._disconnected(ERROR.INTERNAL_ERROR.code , format(ERROR.INTERNAL_ERROR, [error.message,errorStack]));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn messages;\n\t\t};\n\n\t\tClientImpl.prototype._handleMessage = function(wireMessage) {\n\n\t\t\tthis._trace(\"Client._handleMessage\", wireMessage);\n\n\t\t\ttry {\n\t\t\t\tswitch(wireMessage.type) {\n\t\t\t\tcase MESSAGE_TYPE.CONNACK:\n\t\t\t\t\tthis._connectTimeout.cancel();\n\t\t\t\t\tif (this._reconnectTimeout)\n\t\t\t\t\t\tthis._reconnectTimeout.cancel();\n\n\t\t\t\t\t// If we have started using clean session then clear up the local state.\n\t\t\t\t\tif (this.connectOptions.cleanSession) {\n\t\t\t\t\t\tfor (var key in this._sentMessages) {\n\t\t\t\t\t\t\tvar sentMessage = this._sentMessages[key];\n\t\t\t\t\t\t\tlocalStorage.removeItem(\"Sent:\"+this._localKey+sentMessage.messageIdentifier);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._sentMessages = {};\n\n\t\t\t\t\t\tfor (var key in this._receivedMessages) {\n\t\t\t\t\t\t\tvar receivedMessage = this._receivedMessages[key];\n\t\t\t\t\t\t\tlocalStorage.removeItem(\"Received:\"+this._localKey+receivedMessage.messageIdentifier);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._receivedMessages = {};\n\t\t\t\t\t}\n\t\t\t\t\t// Client connected and ready for business.\n\t\t\t\t\tif (wireMessage.returnCode === 0) {\n\n\t\t\t\t\t\tthis.connected = true;\n\t\t\t\t\t\t// Jump to the end of the list of uris and stop looking for a good host.\n\n\t\t\t\t\t\tif (this.connectOptions.uris)\n\t\t\t\t\t\t\tthis.hostIndex = this.connectOptions.uris.length;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._disconnected(ERROR.CONNACK_RETURNCODE.code , format(ERROR.CONNACK_RETURNCODE, [wireMessage.returnCode, CONNACK_RC[wireMessage.returnCode]]));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Resend messages.\n\t\t\t\t\tvar sequencedMessages = [];\n\t\t\t\t\tfor (var msgId in this._sentMessages) {\n\t\t\t\t\t\tif (this._sentMessages.hasOwnProperty(msgId))\n\t\t\t\t\t\t\tsequencedMessages.push(this._sentMessages[msgId]);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Also schedule qos 0 buffered messages if any\n\t\t\t\t\tif (this._buffered_msg_queue.length > 0) {\n\t\t\t\t\t\tvar msg = null;\n\t\t\t\t\t\twhile ((msg = this._buffered_msg_queue.pop())) {\n\t\t\t\t\t\t\tsequencedMessages.push(msg);\n\t\t\t\t\t\t\tif (this.onMessageDelivered)\n\t\t\t\t\t\t\t\tthis._notify_msg_sent[msg] = this.onMessageDelivered(msg.payloadMessage);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Sort sentMessages into the original sent order.\n\t\t\t\t\tvar sequencedMessages = sequencedMessages.sort(function(a,b) {return a.sequence - b.sequence;} );\n\t\t\t\t\tfor (var i=0, len=sequencedMessages.length; i\n\t * Most applications will create just one Client object and then call its connect() method,\n\t * however applications can create more than one Client object if they wish.\n\t * In this case the combination of host, port and clientId attributes must be different for each Client object.\n\t *

\n\t * The send, subscribe and unsubscribe methods are implemented as asynchronous JavaScript methods\n\t * (even though the underlying protocol exchange might be synchronous in nature).\n\t * This means they signal their completion by calling back to the application,\n\t * via Success or Failure callback functions provided by the application on the method in question.\n\t * Such callbacks are called at most once per method invocation and do not persist beyond the lifetime\n\t * of the script that made the invocation.\n\t *

\n\t * In contrast there are some callback functions, most notably onMessageArrived,\n\t * that are defined on the {@link Paho.Client} object.\n\t * These may get called multiple times, and aren't directly related to specific method invocations made by the client.\n\t *\n\t * @name Paho.Client\n\t *\n\t * @constructor\n\t *\n\t * @param {string} host - the address of the messaging server, as a fully qualified WebSocket URI, as a DNS name or dotted decimal IP address.\n\t * @param {number} port - the port number to connect to - only required if host is not a URI\n\t * @param {string} path - the path on the host to connect to - only used if host is not a URI. Default: '/mqtt'.\n\t * @param {string} clientId - the Messaging client identifier, between 1 and 23 characters in length.\n\t *\n\t * @property {string} host - read only the server's DNS hostname or dotted decimal IP address.\n\t * @property {number} port - read only the server's port.\n\t * @property {string} path - read only the server's path.\n\t * @property {string} clientId - read only used when connecting to the server.\n\t * @property {function} onConnectionLost - called when a connection has been lost.\n\t * after a connect() method has succeeded.\n\t * Establish the call back used when a connection has been lost. The connection may be\n\t * lost because the client initiates a disconnect or because the server or network\n\t * cause the client to be disconnected. The disconnect call back may be called without\n\t * the connectionComplete call back being invoked if, for example the client fails to\n\t * connect.\n\t * A single response object parameter is passed to the onConnectionLost callback containing the following fields:\n\t *

    \n\t *
  1. errorCode\n\t *
  2. errorMessage\n\t *
\n\t * @property {function} onMessageDelivered - called when a message has been delivered.\n\t * All processing that this Client will ever do has been completed. So, for example,\n\t * in the case of a Qos=2 message sent by this client, the PubComp flow has been received from the server\n\t * and the message has been removed from persistent storage before this callback is invoked.\n\t * Parameters passed to the onMessageDelivered callback are:\n\t *
    \n\t *
  1. {@link Paho.Message} that was delivered.\n\t *
\n\t * @property {function} onMessageArrived - called when a message has arrived in this Paho.client.\n\t * Parameters passed to the onMessageArrived callback are:\n\t *
    \n\t *
  1. {@link Paho.Message} that has arrived.\n\t *
\n\t * @property {function} onConnected - called when a connection is successfully made to the server.\n\t * after a connect() method.\n\t * Parameters passed to the onConnected callback are:\n\t *
    \n\t *
  1. reconnect (boolean) - If true, the connection was the result of a reconnect.
  2. \n\t *
  3. URI (string) - The URI used to connect to the server.
  4. \n\t *
\n\t * @property {boolean} disconnectedPublishing - if set, will enable disconnected publishing in\n\t * in the event that the connection to the server is lost.\n\t * @property {number} disconnectedBufferSize - Used to set the maximum number of messages that the disconnected\n\t * buffer will hold before rejecting new messages. Default size: 5000 messages\n\t * @property {function} trace - called whenever trace is called. TODO\n\t */\n\t\tvar Client = function (host, port, path, clientId) {\n\n\t\t\tvar uri;\n\n\t\t\tif (typeof host !== \"string\")\n\t\t\t\tthrow new Error(format(ERROR.INVALID_TYPE, [typeof host, \"host\"]));\n\n\t\t\tif (arguments.length == 2) {\n\t\t\t// host: must be full ws:// uri\n\t\t\t// port: clientId\n\t\t\t\tclientId = port;\n\t\t\t\turi = host;\n\t\t\t\tvar match = uri.match(/^(wss?):\\/\\/((\\[(.+)\\])|([^\\/]+?))(:(\\d+))?(\\/.*)$/);\n\t\t\t\tif (match) {\n\t\t\t\t\thost = match[4]||match[2];\n\t\t\t\t\tport = parseInt(match[7]);\n\t\t\t\t\tpath = match[8];\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(format(ERROR.INVALID_ARGUMENT,[host,\"host\"]));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (arguments.length == 3) {\n\t\t\t\t\tclientId = path;\n\t\t\t\t\tpath = \"/mqtt\";\n\t\t\t\t}\n\t\t\t\tif (typeof port !== \"number\" || port < 0)\n\t\t\t\t\tthrow new Error(format(ERROR.INVALID_TYPE, [typeof port, \"port\"]));\n\t\t\t\tif (typeof path !== \"string\")\n\t\t\t\t\tthrow new Error(format(ERROR.INVALID_TYPE, [typeof path, \"path\"]));\n\n\t\t\t\tvar ipv6AddSBracket = (host.indexOf(\":\") !== -1 && host.slice(0,1) !== \"[\" && host.slice(-1) !== \"]\");\n\t\t\t\turi = \"ws://\"+(ipv6AddSBracket?\"[\"+host+\"]\":host)+\":\"+port+path;\n\t\t\t}\n\n\t\t\tvar clientIdLength = 0;\n\t\t\tfor (var i = 0; i 65535)\n\t\t\t\tthrow new Error(format(ERROR.INVALID_ARGUMENT, [clientId, \"clientId\"]));\n\n\t\t\tvar client = new ClientImpl(uri, host, port, path, clientId);\n\n\t\t\t//Public Properties\n\t\t\tObject.defineProperties(this,{\n\t\t\t\t\"host\":{\n\t\t\t\t\tget: function() { return host; },\n\t\t\t\t\tset: function() { throw new Error(format(ERROR.UNSUPPORTED_OPERATION)); }\n\t\t\t\t},\n\t\t\t\t\"port\":{\n\t\t\t\t\tget: function() { return port; },\n\t\t\t\t\tset: function() { throw new Error(format(ERROR.UNSUPPORTED_OPERATION)); }\n\t\t\t\t},\n\t\t\t\t\"path\":{\n\t\t\t\t\tget: function() { return path; },\n\t\t\t\t\tset: function() { throw new Error(format(ERROR.UNSUPPORTED_OPERATION)); }\n\t\t\t\t},\n\t\t\t\t\"uri\":{\n\t\t\t\t\tget: function() { return uri; },\n\t\t\t\t\tset: function() { throw new Error(format(ERROR.UNSUPPORTED_OPERATION)); }\n\t\t\t\t},\n\t\t\t\t\"clientId\":{\n\t\t\t\t\tget: function() { return client.clientId; },\n\t\t\t\t\tset: function() { throw new Error(format(ERROR.UNSUPPORTED_OPERATION)); }\n\t\t\t\t},\n\t\t\t\t\"onConnected\":{\n\t\t\t\t\tget: function() { return client.onConnected; },\n\t\t\t\t\tset: function(newOnConnected) {\n\t\t\t\t\t\tif (typeof newOnConnected === \"function\")\n\t\t\t\t\t\t\tclient.onConnected = newOnConnected;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthrow new Error(format(ERROR.INVALID_TYPE, [typeof newOnConnected, \"onConnected\"]));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"disconnectedPublishing\":{\n\t\t\t\t\tget: function() { return client.disconnectedPublishing; },\n\t\t\t\t\tset: function(newDisconnectedPublishing) {\n\t\t\t\t\t\tclient.disconnectedPublishing = newDisconnectedPublishing;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"disconnectedBufferSize\":{\n\t\t\t\t\tget: function() { return client.disconnectedBufferSize; },\n\t\t\t\t\tset: function(newDisconnectedBufferSize) {\n\t\t\t\t\t\tclient.disconnectedBufferSize = newDisconnectedBufferSize;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"onConnectionLost\":{\n\t\t\t\t\tget: function() { return client.onConnectionLost; },\n\t\t\t\t\tset: function(newOnConnectionLost) {\n\t\t\t\t\t\tif (typeof newOnConnectionLost === \"function\")\n\t\t\t\t\t\t\tclient.onConnectionLost = newOnConnectionLost;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthrow new Error(format(ERROR.INVALID_TYPE, [typeof newOnConnectionLost, \"onConnectionLost\"]));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"onMessageDelivered\":{\n\t\t\t\t\tget: function() { return client.onMessageDelivered; },\n\t\t\t\t\tset: function(newOnMessageDelivered) {\n\t\t\t\t\t\tif (typeof newOnMessageDelivered === \"function\")\n\t\t\t\t\t\t\tclient.onMessageDelivered = newOnMessageDelivered;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthrow new Error(format(ERROR.INVALID_TYPE, [typeof newOnMessageDelivered, \"onMessageDelivered\"]));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"onMessageArrived\":{\n\t\t\t\t\tget: function() { return client.onMessageArrived; },\n\t\t\t\t\tset: function(newOnMessageArrived) {\n\t\t\t\t\t\tif (typeof newOnMessageArrived === \"function\")\n\t\t\t\t\t\t\tclient.onMessageArrived = newOnMessageArrived;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthrow new Error(format(ERROR.INVALID_TYPE, [typeof newOnMessageArrived, \"onMessageArrived\"]));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"trace\":{\n\t\t\t\t\tget: function() { return client.traceFunction; },\n\t\t\t\t\tset: function(trace) {\n\t\t\t\t\t\tif(typeof trace === \"function\"){\n\t\t\t\t\t\t\tclient.traceFunction = trace;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthrow new Error(format(ERROR.INVALID_TYPE, [typeof trace, \"onTrace\"]));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t});\n\n\t\t\t/**\n\t\t * Connect this Messaging client to its server.\n\t\t *\n\t\t * @name Paho.Client#connect\n\t\t * @function\n\t\t * @param {object} connectOptions - Attributes used with the connection.\n\t\t * @param {number} connectOptions.timeout - If the connect has not succeeded within this\n\t\t * number of seconds, it is deemed to have failed.\n\t\t * The default is 30 seconds.\n\t\t * @param {string} connectOptions.userName - Authentication username for this connection.\n\t\t * @param {string} connectOptions.password - Authentication password for this connection.\n\t\t * @param {Paho.Message} connectOptions.willMessage - sent by the server when the client\n\t\t * disconnects abnormally.\n\t\t * @param {number} connectOptions.keepAliveInterval - the server disconnects this client if\n\t\t * there is no activity for this number of seconds.\n\t\t * The default value of 60 seconds is assumed if not set.\n\t\t * @param {boolean} connectOptions.cleanSession - if true(default) the client and server\n\t\t * persistent state is deleted on successful connect.\n\t\t * @param {boolean} connectOptions.useSSL - if present and true, use an SSL Websocket connection.\n\t\t * @param {object} connectOptions.invocationContext - passed to the onSuccess callback or onFailure callback.\n\t\t * @param {function} connectOptions.onSuccess - called when the connect acknowledgement\n\t\t * has been received from the server.\n\t\t * A single response object parameter is passed to the onSuccess callback containing the following fields:\n\t\t *
    \n\t\t *
  1. invocationContext as passed in to the onSuccess method in the connectOptions.\n\t\t *
\n\t * @param {function} connectOptions.onFailure - called when the connect request has failed or timed out.\n\t\t * A single response object parameter is passed to the onFailure callback containing the following fields:\n\t\t *
    \n\t\t *
  1. invocationContext as passed in to the onFailure method in the connectOptions.\n\t\t *
  2. errorCode a number indicating the nature of the error.\n\t\t *
  3. errorMessage text describing the error.\n\t\t *
\n\t * @param {array} connectOptions.hosts - If present this contains either a set of hostnames or fully qualified\n\t\t * WebSocket URIs (ws://iot.eclipse.org:80/ws), that are tried in order in place\n\t\t * of the host and port paramater on the construtor. The hosts are tried one at at time in order until\n\t\t * one of then succeeds.\n\t * @param {array} connectOptions.ports - If present the set of ports matching the hosts. If hosts contains URIs, this property\n\t\t * is not used.\n\t * @param {boolean} connectOptions.reconnect - Sets whether the client will automatically attempt to reconnect\n\t * to the server if the connection is lost.\n\t *
    \n\t *
  • If set to false, the client will not attempt to automatically reconnect to the server in the event that the\n\t * connection is lost.
  • \n\t *
  • If set to true, in the event that the connection is lost, the client will attempt to reconnect to the server.\n\t * It will initially wait 1 second before it attempts to reconnect, for every failed reconnect attempt, the delay\n\t * will double until it is at 2 minutes at which point the delay will stay at 2 minutes.
  • \n\t *
\n\t * @param {number} connectOptions.mqttVersion - The version of MQTT to use to connect to the MQTT Broker.\n\t *
    \n\t *
  • 3 - MQTT V3.1
  • \n\t *
  • 4 - MQTT V3.1.1
  • \n\t *
\n\t * @param {boolean} connectOptions.mqttVersionExplicit - If set to true, will force the connection to use the\n\t * selected MQTT Version or will fail to connect.\n\t * @param {array} connectOptions.uris - If present, should contain a list of fully qualified WebSocket uris\n\t * (e.g. ws://iot.eclipse.org:80/ws), that are tried in order in place of the host and port parameter of the construtor.\n\t * The uris are tried one at a time in order until one of them succeeds. Do not use this in conjunction with hosts as\n\t * the hosts array will be converted to uris and will overwrite this property.\n\t\t * @throws {InvalidState} If the client is not in disconnected state. The client must have received connectionLost\n\t\t * or disconnected before calling connect for a second or subsequent time.\n\t\t */\n\t\t\tthis.connect = function (connectOptions) {\n\t\t\t\tconnectOptions = connectOptions || {} ;\n\t\t\t\tvalidate(connectOptions, {timeout:\"number\",\n\t\t\t\t\tuserName:\"string\",\n\t\t\t\t\tpassword:\"string\",\n\t\t\t\t\twillMessage:\"object\",\n\t\t\t\t\tkeepAliveInterval:\"number\",\n\t\t\t\t\tcleanSession:\"boolean\",\n\t\t\t\t\tuseSSL:\"boolean\",\n\t\t\t\t\tinvocationContext:\"object\",\n\t\t\t\t\tonSuccess:\"function\",\n\t\t\t\t\tonFailure:\"function\",\n\t\t\t\t\thosts:\"object\",\n\t\t\t\t\tports:\"object\",\n\t\t\t\t\treconnect:\"boolean\",\n\t\t\t\t\tmqttVersion:\"number\",\n\t\t\t\t\tmqttVersionExplicit:\"boolean\",\n\t\t\t\t\turis: \"object\"});\n\n\t\t\t\t// If no keep alive interval is set, assume 60 seconds.\n\t\t\t\tif (connectOptions.keepAliveInterval === undefined)\n\t\t\t\t\tconnectOptions.keepAliveInterval = 60;\n\n\t\t\t\tif (connectOptions.mqttVersion > 4 || connectOptions.mqttVersion < 3) {\n\t\t\t\t\tthrow new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.mqttVersion, \"connectOptions.mqttVersion\"]));\n\t\t\t\t}\n\n\t\t\t\tif (connectOptions.mqttVersion === undefined) {\n\t\t\t\t\tconnectOptions.mqttVersionExplicit = false;\n\t\t\t\t\tconnectOptions.mqttVersion = 4;\n\t\t\t\t} else {\n\t\t\t\t\tconnectOptions.mqttVersionExplicit = true;\n\t\t\t\t}\n\n\t\t\t\t//Check that if password is set, so is username\n\t\t\t\tif (connectOptions.password !== undefined && connectOptions.userName === undefined)\n\t\t\t\t\tthrow new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.password, \"connectOptions.password\"]));\n\n\t\t\t\tif (connectOptions.willMessage) {\n\t\t\t\t\tif (!(connectOptions.willMessage instanceof Message))\n\t\t\t\t\t\tthrow new Error(format(ERROR.INVALID_TYPE, [connectOptions.willMessage, \"connectOptions.willMessage\"]));\n\t\t\t\t\t// The will message must have a payload that can be represented as a string.\n\t\t\t\t\t// Cause the willMessage to throw an exception if this is not the case.\n\t\t\t\t\tconnectOptions.willMessage.stringPayload = null;\n\n\t\t\t\t\tif (typeof connectOptions.willMessage.destinationName === \"undefined\")\n\t\t\t\t\t\tthrow new Error(format(ERROR.INVALID_TYPE, [typeof connectOptions.willMessage.destinationName, \"connectOptions.willMessage.destinationName\"]));\n\t\t\t\t}\n\t\t\t\tif (typeof connectOptions.cleanSession === \"undefined\")\n\t\t\t\t\tconnectOptions.cleanSession = true;\n\t\t\t\tif (connectOptions.hosts) {\n\n\t\t\t\t\tif (!(connectOptions.hosts instanceof Array) )\n\t\t\t\t\t\tthrow new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.hosts, \"connectOptions.hosts\"]));\n\t\t\t\t\tif (connectOptions.hosts.length <1 )\n\t\t\t\t\t\tthrow new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.hosts, \"connectOptions.hosts\"]));\n\n\t\t\t\t\tvar usingURIs = false;\n\t\t\t\t\tfor (var i = 0; i\n\t\t * @param {object} subscribeOptions - used to control the subscription\n\t\t *\n\t\t * @param {number} subscribeOptions.qos - the maximum qos of any publications sent\n\t\t * as a result of making this subscription.\n\t\t * @param {object} subscribeOptions.invocationContext - passed to the onSuccess callback\n\t\t * or onFailure callback.\n\t\t * @param {function} subscribeOptions.onSuccess - called when the subscribe acknowledgement\n\t\t * has been received from the server.\n\t\t * A single response object parameter is passed to the onSuccess callback containing the following fields:\n\t\t *
    \n\t\t *
  1. invocationContext if set in the subscribeOptions.\n\t\t *
\n\t\t * @param {function} subscribeOptions.onFailure - called when the subscribe request has failed or timed out.\n\t\t * A single response object parameter is passed to the onFailure callback containing the following fields:\n\t\t *
    \n\t\t *
  1. invocationContext - if set in the subscribeOptions.\n\t\t *
  2. errorCode - a number indicating the nature of the error.\n\t\t *
  3. errorMessage - text describing the error.\n\t\t *
\n\t\t * @param {number} subscribeOptions.timeout - which, if present, determines the number of\n\t\t * seconds after which the onFailure calback is called.\n\t\t * The presence of a timeout does not prevent the onSuccess\n\t\t * callback from being called when the subscribe completes.\n\t\t * @throws {InvalidState} if the client is not in connected state.\n\t\t */\n\t\t\tthis.subscribe = function (filter, subscribeOptions) {\n\t\t\t\tif (typeof filter !== \"string\" && filter.constructor !== Array)\n\t\t\t\t\tthrow new Error(\"Invalid argument:\"+filter);\n\t\t\t\tsubscribeOptions = subscribeOptions || {} ;\n\t\t\t\tvalidate(subscribeOptions, {qos:\"number\",\n\t\t\t\t\tinvocationContext:\"object\",\n\t\t\t\t\tonSuccess:\"function\",\n\t\t\t\t\tonFailure:\"function\",\n\t\t\t\t\ttimeout:\"number\"\n\t\t\t\t});\n\t\t\t\tif (subscribeOptions.timeout && !subscribeOptions.onFailure)\n\t\t\t\t\tthrow new Error(\"subscribeOptions.timeout specified with no onFailure callback.\");\n\t\t\t\tif (typeof subscribeOptions.qos !== \"undefined\" && !(subscribeOptions.qos === 0 || subscribeOptions.qos === 1 || subscribeOptions.qos === 2 ))\n\t\t\t\t\tthrow new Error(format(ERROR.INVALID_ARGUMENT, [subscribeOptions.qos, \"subscribeOptions.qos\"]));\n\t\t\t\tclient.subscribe(filter, subscribeOptions);\n\t\t\t};\n\n\t\t/**\n\t\t * Unsubscribe for messages, stop receiving messages sent to destinations described by the filter.\n\t\t *\n\t\t * @name Paho.Client#unsubscribe\n\t\t * @function\n\t\t * @param {string} filter - describing the destinations to receive messages from.\n\t\t * @param {object} unsubscribeOptions - used to control the subscription\n\t\t * @param {object} unsubscribeOptions.invocationContext - passed to the onSuccess callback\n\t\t\t\t\t\t\t\t\t\t\t or onFailure callback.\n\t\t * @param {function} unsubscribeOptions.onSuccess - called when the unsubscribe acknowledgement has been received from the server.\n\t\t * A single response object parameter is passed to the\n\t\t * onSuccess callback containing the following fields:\n\t\t *
    \n\t\t *
  1. invocationContext - if set in the unsubscribeOptions.\n\t\t *
\n\t\t * @param {function} unsubscribeOptions.onFailure called when the unsubscribe request has failed or timed out.\n\t\t * A single response object parameter is passed to the onFailure callback containing the following fields:\n\t\t *
    \n\t\t *
  1. invocationContext - if set in the unsubscribeOptions.\n\t\t *
  2. errorCode - a number indicating the nature of the error.\n\t\t *
  3. errorMessage - text describing the error.\n\t\t *
\n\t\t * @param {number} unsubscribeOptions.timeout - which, if present, determines the number of seconds\n\t\t * after which the onFailure callback is called. The presence of\n\t\t * a timeout does not prevent the onSuccess callback from being\n\t\t * called when the unsubscribe completes\n\t\t * @throws {InvalidState} if the client is not in connected state.\n\t\t */\n\t\t\tthis.unsubscribe = function (filter, unsubscribeOptions) {\n\t\t\t\tif (typeof filter !== \"string\" && filter.constructor !== Array)\n\t\t\t\t\tthrow new Error(\"Invalid argument:\"+filter);\n\t\t\t\tunsubscribeOptions = unsubscribeOptions || {} ;\n\t\t\t\tvalidate(unsubscribeOptions, {invocationContext:\"object\",\n\t\t\t\t\tonSuccess:\"function\",\n\t\t\t\t\tonFailure:\"function\",\n\t\t\t\t\ttimeout:\"number\"\n\t\t\t\t});\n\t\t\t\tif (unsubscribeOptions.timeout && !unsubscribeOptions.onFailure)\n\t\t\t\t\tthrow new Error(\"unsubscribeOptions.timeout specified with no onFailure callback.\");\n\t\t\t\tclient.unsubscribe(filter, unsubscribeOptions);\n\t\t\t};\n\n\t\t\t/**\n\t\t * Send a message to the consumers of the destination in the Message.\n\t\t *\n\t\t * @name Paho.Client#send\n\t\t * @function\n\t\t * @param {string|Paho.Message} topic - mandatory The name of the destination to which the message is to be sent.\n\t\t * \t\t\t\t\t - If it is the only parameter, used as Paho.Message object.\n\t\t * @param {String|ArrayBuffer} payload - The message data to be sent.\n\t\t * @param {number} qos The Quality of Service used to deliver the message.\n\t\t * \t\t
\n\t\t * \t\t\t
0 Best effort (default).\n\t\t * \t\t\t
1 At least once.\n\t\t * \t\t\t
2 Exactly once.\n\t\t * \t\t
\n\t\t * @param {Boolean} retained If true, the message is to be retained by the server and delivered\n\t\t * to both current and future subscriptions.\n\t\t * If false the server only delivers the message to current subscribers, this is the default for new Messages.\n\t\t * A received message has the retained boolean set to true if the message was published\n\t\t * with the retained boolean set to true\n\t\t * and the subscrption was made after the message has been published.\n\t\t * @throws {InvalidState} if the client is not connected.\n\t\t */\n\t\t\tthis.send = function (topic,payload,qos,retained) {\n\t\t\t\tvar message ;\n\n\t\t\t\tif(arguments.length === 0){\n\t\t\t\t\tthrow new Error(\"Invalid argument.\"+\"length\");\n\n\t\t\t\t}else if(arguments.length == 1) {\n\n\t\t\t\t\tif (!(topic instanceof Message) && (typeof topic !== \"string\"))\n\t\t\t\t\t\tthrow new Error(\"Invalid argument:\"+ typeof topic);\n\n\t\t\t\t\tmessage = topic;\n\t\t\t\t\tif (typeof message.destinationName === \"undefined\")\n\t\t\t\t\t\tthrow new Error(format(ERROR.INVALID_ARGUMENT,[message.destinationName,\"Message.destinationName\"]));\n\t\t\t\t\tclient.send(message);\n\n\t\t\t\t}else {\n\t\t\t\t//parameter checking in Message object\n\t\t\t\t\tmessage = new Message(payload);\n\t\t\t\t\tmessage.destinationName = topic;\n\t\t\t\t\tif(arguments.length >= 3)\n\t\t\t\t\t\tmessage.qos = qos;\n\t\t\t\t\tif(arguments.length >= 4)\n\t\t\t\t\t\tmessage.retained = retained;\n\t\t\t\t\tclient.send(message);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t/**\n\t\t * Publish a message to the consumers of the destination in the Message.\n\t\t * Synonym for Paho.Mqtt.Client#send\n\t\t *\n\t\t * @name Paho.Client#publish\n\t\t * @function\n\t\t * @param {string|Paho.Message} topic - mandatory The name of the topic to which the message is to be published.\n\t\t * \t\t\t\t\t - If it is the only parameter, used as Paho.Message object.\n\t\t * @param {String|ArrayBuffer} payload - The message data to be published.\n\t\t * @param {number} qos The Quality of Service used to deliver the message.\n\t\t * \t\t
\n\t\t * \t\t\t
0 Best effort (default).\n\t\t * \t\t\t
1 At least once.\n\t\t * \t\t\t
2 Exactly once.\n\t\t * \t\t
\n\t\t * @param {Boolean} retained If true, the message is to be retained by the server and delivered\n\t\t * to both current and future subscriptions.\n\t\t * If false the server only delivers the message to current subscribers, this is the default for new Messages.\n\t\t * A received message has the retained boolean set to true if the message was published\n\t\t * with the retained boolean set to true\n\t\t * and the subscrption was made after the message has been published.\n\t\t * @throws {InvalidState} if the client is not connected.\n\t\t */\n\t\t\tthis.publish = function(topic,payload,qos,retained) {\n\t\t\t\tvar message ;\n\n\t\t\t\tif(arguments.length === 0){\n\t\t\t\t\tthrow new Error(\"Invalid argument.\"+\"length\");\n\n\t\t\t\t}else if(arguments.length == 1) {\n\n\t\t\t\t\tif (!(topic instanceof Message) && (typeof topic !== \"string\"))\n\t\t\t\t\t\tthrow new Error(\"Invalid argument:\"+ typeof topic);\n\n\t\t\t\t\tmessage = topic;\n\t\t\t\t\tif (typeof message.destinationName === \"undefined\")\n\t\t\t\t\t\tthrow new Error(format(ERROR.INVALID_ARGUMENT,[message.destinationName,\"Message.destinationName\"]));\n\t\t\t\t\tclient.send(message);\n\n\t\t\t\t}else {\n\t\t\t\t\t//parameter checking in Message object\n\t\t\t\t\tmessage = new Message(payload);\n\t\t\t\t\tmessage.destinationName = topic;\n\t\t\t\t\tif(arguments.length >= 3)\n\t\t\t\t\t\tmessage.qos = qos;\n\t\t\t\t\tif(arguments.length >= 4)\n\t\t\t\t\t\tmessage.retained = retained;\n\t\t\t\t\tclient.send(message);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t/**\n\t\t * Normal disconnect of this Messaging client from its server.\n\t\t *\n\t\t * @name Paho.Client#disconnect\n\t\t * @function\n\t\t * @throws {InvalidState} if the client is already disconnected.\n\t\t */\n\t\t\tthis.disconnect = function () {\n\t\t\t\tclient.disconnect();\n\t\t\t};\n\n\t\t\t/**\n\t\t * Get the contents of the trace log.\n\t\t *\n\t\t * @name Paho.Client#getTraceLog\n\t\t * @function\n\t\t * @return {Object[]} tracebuffer containing the time ordered trace records.\n\t\t */\n\t\t\tthis.getTraceLog = function () {\n\t\t\t\treturn client.getTraceLog();\n\t\t\t};\n\n\t\t\t/**\n\t\t * Start tracing.\n\t\t *\n\t\t * @name Paho.Client#startTrace\n\t\t * @function\n\t\t */\n\t\t\tthis.startTrace = function () {\n\t\t\t\tclient.startTrace();\n\t\t\t};\n\n\t\t\t/**\n\t\t * Stop tracing.\n\t\t *\n\t\t * @name Paho.Client#stopTrace\n\t\t * @function\n\t\t */\n\t\t\tthis.stopTrace = function () {\n\t\t\t\tclient.stopTrace();\n\t\t\t};\n\n\t\t\tthis.isConnected = function() {\n\t\t\t\treturn client.connected;\n\t\t\t};\n\t\t};\n\n\t\t/**\n\t * An application message, sent or received.\n\t *

\n\t * All attributes may be null, which implies the default values.\n\t *\n\t * @name Paho.Message\n\t * @constructor\n\t * @param {String|ArrayBuffer} payload The message data to be sent.\n\t *

\n\t * @property {string} payloadString read only The payload as a string if the payload consists of valid UTF-8 characters.\n\t * @property {ArrayBuffer} payloadBytes read only The payload as an ArrayBuffer.\n\t *

\n\t * @property {string} destinationName mandatory The name of the destination to which the message is to be sent\n\t * (for messages about to be sent) or the name of the destination from which the message has been received.\n\t * (for messages received by the onMessage function).\n\t *

\n\t * @property {number} qos The Quality of Service used to deliver the message.\n\t *

\n\t *
0 Best effort (default).\n\t *
1 At least once.\n\t *
2 Exactly once.\n\t *
\n\t *

\n\t * @property {Boolean} retained If true, the message is to be retained by the server and delivered\n\t * to both current and future subscriptions.\n\t * If false the server only delivers the message to current subscribers, this is the default for new Messages.\n\t * A received message has the retained boolean set to true if the message was published\n\t * with the retained boolean set to true\n\t * and the subscrption was made after the message has been published.\n\t *

\n\t * @property {Boolean} duplicate read only If true, this message might be a duplicate of one which has already been received.\n\t * This is only set on messages received from the server.\n\t *\n\t */\n\t\tvar Message = function (newPayload) {\n\t\t\tvar payload;\n\t\t\tif ( typeof newPayload === \"string\" ||\n\t\tnewPayload instanceof ArrayBuffer ||\n\t\t(ArrayBuffer.isView(newPayload) && !(newPayload instanceof DataView))\n\t\t\t) {\n\t\t\t\tpayload = newPayload;\n\t\t\t} else {\n\t\t\t\tthrow (format(ERROR.INVALID_ARGUMENT, [newPayload, \"newPayload\"]));\n\t\t\t}\n\n\t\t\tvar destinationName;\n\t\t\tvar qos = 0;\n\t\t\tvar retained = false;\n\t\t\tvar duplicate = false;\n\n\t\t\tObject.defineProperties(this,{\n\t\t\t\t\"payloadString\":{\n\t\t\t\t\tenumerable : true,\n\t\t\t\t\tget : function () {\n\t\t\t\t\t\tif (typeof payload === \"string\")\n\t\t\t\t\t\t\treturn payload;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\treturn parseUTF8(payload, 0, payload.length);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"payloadBytes\":{\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: function() {\n\t\t\t\t\t\tif (typeof payload === \"string\") {\n\t\t\t\t\t\t\tvar buffer = new ArrayBuffer(UTF8Length(payload));\n\t\t\t\t\t\t\tvar byteStream = new Uint8Array(buffer);\n\t\t\t\t\t\t\tstringToUTF8(payload, byteStream, 0);\n\n\t\t\t\t\t\t\treturn byteStream;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn payload;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"destinationName\":{\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: function() { return destinationName; },\n\t\t\t\t\tset: function(newDestinationName) {\n\t\t\t\t\t\tif (typeof newDestinationName === \"string\")\n\t\t\t\t\t\t\tdestinationName = newDestinationName;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthrow new Error(format(ERROR.INVALID_ARGUMENT, [newDestinationName, \"newDestinationName\"]));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"qos\":{\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: function() { return qos; },\n\t\t\t\t\tset: function(newQos) {\n\t\t\t\t\t\tif (newQos === 0 || newQos === 1 || newQos === 2 )\n\t\t\t\t\t\t\tqos = newQos;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthrow new Error(\"Invalid argument:\"+newQos);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"retained\":{\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: function() { return retained; },\n\t\t\t\t\tset: function(newRetained) {\n\t\t\t\t\t\tif (typeof newRetained === \"boolean\")\n\t\t\t\t\t\t\tretained = newRetained;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthrow new Error(format(ERROR.INVALID_ARGUMENT, [newRetained, \"newRetained\"]));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"topic\":{\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: function() { return destinationName; },\n\t\t\t\t\tset: function(newTopic) {destinationName=newTopic;}\n\t\t\t\t},\n\t\t\t\t\"duplicate\":{\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: function() { return duplicate; },\n\t\t\t\t\tset: function(newDuplicate) {duplicate=newDuplicate;}\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\t// Module contents.\n\t\treturn {\n\t\t\tClient: Client,\n\t\t\tMessage: Message\n\t\t};\n\t// eslint-disable-next-line no-nested-ternary\n\t})(typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n\treturn PahoMQTT;\n});\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","module.exports = require('./lib/index.js');\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _core = require('../core');\n\nvar _metaProps = require('../metaProps');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar defaultProps = {\n target: '_blank'\n};\n\nvar CSVDownload = function (_React$Component) {\n _inherits(CSVDownload, _React$Component);\n\n function CSVDownload(props) {\n _classCallCheck(this, CSVDownload);\n\n var _this = _possibleConstructorReturn(this, (CSVDownload.__proto__ || Object.getPrototypeOf(CSVDownload)).call(this, props));\n\n _this.state = {};\n return _this;\n }\n\n _createClass(CSVDownload, [{\n key: 'buildURI',\n value: function buildURI() {\n return _core.buildURI.apply(undefined, arguments);\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _props = this.props,\n data = _props.data,\n headers = _props.headers,\n separator = _props.separator,\n enclosingCharacter = _props.enclosingCharacter,\n uFEFF = _props.uFEFF,\n target = _props.target,\n specs = _props.specs,\n replace = _props.replace;\n\n this.state.page = window.open(this.buildURI(data, uFEFF, headers, separator, enclosingCharacter), target, specs, replace);\n }\n }, {\n key: 'getWindow',\n value: function getWindow() {\n return this.state.page;\n }\n }, {\n key: 'render',\n value: function render() {\n return null;\n }\n }]);\n\n return CSVDownload;\n}(_react2.default.Component);\n\nCSVDownload.defaultProps = Object.assign(_metaProps.defaultProps, defaultProps);\nCSVDownload.propTypes = _metaProps.propTypes;\nexports.default = CSVDownload;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _core = require('../core');\n\nvar _metaProps = require('../metaProps');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CSVLink = function (_React$Component) {\n _inherits(CSVLink, _React$Component);\n\n function CSVLink(props) {\n _classCallCheck(this, CSVLink);\n\n var _this = _possibleConstructorReturn(this, (CSVLink.__proto__ || Object.getPrototypeOf(CSVLink)).call(this, props));\n\n _this.buildURI = _this.buildURI.bind(_this);\n return _this;\n }\n\n _createClass(CSVLink, [{\n key: 'buildURI',\n value: function buildURI() {\n return _core.buildURI.apply(undefined, arguments);\n }\n }, {\n key: 'handleLegacy',\n value: function handleLegacy(event) {\n var isAsync = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (window.navigator.msSaveOrOpenBlob) {\n event.preventDefault();\n\n var _props = this.props,\n data = _props.data,\n headers = _props.headers,\n separator = _props.separator,\n filename = _props.filename,\n enclosingCharacter = _props.enclosingCharacter,\n uFEFF = _props.uFEFF;\n\n\n var csvData = isAsync && typeof data === 'function' ? data() : data;\n\n var blob = new Blob([uFEFF ? '\\uFEFF' : '', (0, _core.toCSV)(csvData, headers, separator, enclosingCharacter)]);\n window.navigator.msSaveBlob(blob, filename);\n\n return false;\n }\n }\n }, {\n key: 'handleAsyncClick',\n value: function handleAsyncClick(event) {\n var _this2 = this;\n\n var done = function done(proceed) {\n if (proceed === false) {\n event.preventDefault();\n return;\n }\n _this2.handleLegacy(event, true);\n };\n\n this.props.onClick(event, done);\n }\n }, {\n key: 'handleSyncClick',\n value: function handleSyncClick(event) {\n var stopEvent = this.props.onClick(event) === false;\n if (stopEvent) {\n event.preventDefault();\n return;\n }\n this.handleLegacy(event);\n }\n }, {\n key: 'handleClick',\n value: function handleClick() {\n var _this3 = this;\n\n return function (event) {\n if (typeof _this3.props.onClick === 'function') {\n return _this3.props.asyncOnClick ? _this3.handleAsyncClick(event) : _this3.handleSyncClick(event);\n }\n _this3.handleLegacy(event);\n };\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var _props2 = this.props,\n data = _props2.data,\n headers = _props2.headers,\n separator = _props2.separator,\n filename = _props2.filename,\n uFEFF = _props2.uFEFF,\n children = _props2.children,\n onClick = _props2.onClick,\n asyncOnClick = _props2.asyncOnClick,\n enclosingCharacter = _props2.enclosingCharacter,\n rest = _objectWithoutProperties(_props2, ['data', 'headers', 'separator', 'filename', 'uFEFF', 'children', 'onClick', 'asyncOnClick', 'enclosingCharacter']);\n\n var isNodeEnvironment = typeof window === 'undefined';\n var href = isNodeEnvironment ? '' : this.buildURI(data, uFEFF, headers, separator, enclosingCharacter);\n\n return _react2.default.createElement(\n 'a',\n _extends({\n download: filename\n }, rest, {\n ref: function ref(link) {\n return _this4.link = link;\n },\n target: '_self',\n href: href,\n onClick: this.handleClick()\n }),\n children\n );\n }\n }]);\n\n return CSVLink;\n}(_react2.default.Component);\n\nCSVLink.defaultProps = _metaProps.defaultProps;\nCSVLink.propTypes = _metaProps.propTypes;\nexports.default = CSVLink;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar isSafari = exports.isSafari = function isSafari() {\n return (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)\n );\n};\n\nvar isJsons = exports.isJsons = function isJsons(array) {\n return Array.isArray(array) && array.every(function (row) {\n return (typeof row === \"undefined\" ? \"undefined\" : _typeof(row)) === 'object' && !(row instanceof Array);\n });\n};\n\nvar isArrays = exports.isArrays = function isArrays(array) {\n return Array.isArray(array) && array.every(function (row) {\n return Array.isArray(row);\n });\n};\n\nvar jsonsHeaders = exports.jsonsHeaders = function jsonsHeaders(array) {\n return Array.from(array.map(function (json) {\n return Object.keys(json);\n }).reduce(function (a, b) {\n return new Set([].concat(_toConsumableArray(a), _toConsumableArray(b)));\n }, []));\n};\n\nvar jsons2arrays = exports.jsons2arrays = function jsons2arrays(jsons, headers) {\n headers = headers || jsonsHeaders(jsons);\n\n var headerLabels = headers;\n var headerKeys = headers;\n if (isJsons(headers)) {\n headerLabels = headers.map(function (header) {\n return header.label;\n });\n headerKeys = headers.map(function (header) {\n return header.key;\n });\n }\n\n var data = jsons.map(function (object) {\n return headerKeys.map(function (header) {\n return getHeaderValue(header, object);\n });\n });\n return [headerLabels].concat(_toConsumableArray(data));\n};\n\nvar getHeaderValue = exports.getHeaderValue = function getHeaderValue(property, obj) {\n var foundValue = property.replace(/\\[([^\\]]+)]/g, \".$1\").split(\".\").reduce(function (o, p, i, arr) {\n var value = o[p];\n if (value === undefined || value === null) {\n arr.splice(1);\n } else {\n return value;\n }\n }, obj);\n\n return foundValue === undefined ? property in obj ? obj[property] : '' : foundValue;\n};\n\nvar elementOrEmpty = exports.elementOrEmpty = function elementOrEmpty(element) {\n return typeof element === 'undefined' || element === null ? '' : element;\n};\n\nvar joiner = exports.joiner = function joiner(data) {\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';\n var enclosingCharacter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '\"';\n\n return data.filter(function (e) {\n return e;\n }).map(function (row) {\n return row.map(function (element) {\n return elementOrEmpty(element);\n }).map(function (column) {\n return \"\" + enclosingCharacter + column + enclosingCharacter;\n }).join(separator);\n }).join(\"\\n\");\n};\n\nvar arrays2csv = exports.arrays2csv = function arrays2csv(data, headers, separator, enclosingCharacter) {\n return joiner(headers ? [headers].concat(_toConsumableArray(data)) : data, separator, enclosingCharacter);\n};\n\nvar jsons2csv = exports.jsons2csv = function jsons2csv(data, headers, separator, enclosingCharacter) {\n return joiner(jsons2arrays(data, headers), separator, enclosingCharacter);\n};\n\nvar string2csv = exports.string2csv = function string2csv(data, headers, separator, enclosingCharacter) {\n return headers ? headers.join(separator) + \"\\n\" + data : data.replace(/\"/g, '\"\"');\n};\n\nvar toCSV = exports.toCSV = function toCSV(data, headers, separator, enclosingCharacter) {\n if (isJsons(data)) return jsons2csv(data, headers, separator, enclosingCharacter);\n if (isArrays(data)) return arrays2csv(data, headers, separator, enclosingCharacter);\n if (typeof data === 'string') return string2csv(data, headers, separator);\n throw new TypeError(\"Data should be a \\\"String\\\", \\\"Array of arrays\\\" OR \\\"Array of objects\\\" \");\n};\n\nvar buildURI = exports.buildURI = function buildURI(data, uFEFF, headers, separator, enclosingCharacter) {\n var csv = toCSV(data, headers, separator, enclosingCharacter);\n var type = isSafari() ? 'application/csv' : 'text/csv';\n var blob = new Blob([uFEFF ? \"\\uFEFF\" : '', csv], { type: type });\n var dataURI = \"data:\" + type + \";charset=utf-8,\" + (uFEFF ? \"\\uFEFF\" : '') + csv;\n\n var URL = window.URL || window.webkitURL;\n\n return typeof URL.createObjectURL === 'undefined' ? dataURI : URL.createObjectURL(blob);\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CSVLink = exports.CSVDownload = undefined;\n\nvar _Download = require('./components/Download');\n\nvar _Download2 = _interopRequireDefault(_Download);\n\nvar _Link = require('./components/Link');\n\nvar _Link2 = _interopRequireDefault(_Link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar CSVDownload = exports.CSVDownload = _Download2.default;\nvar CSVLink = exports.CSVLink = _Link2.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PropsNotForwarded = exports.defaultProps = exports.propTypes = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar propTypes = exports.propTypes = {\n data: (0, _propTypes.oneOfType)([_propTypes.string, _propTypes.array, _propTypes.func]).isRequired,\n headers: _propTypes.array,\n target: _propTypes.string,\n separator: _propTypes.string,\n filename: _propTypes.string,\n uFEFF: _propTypes.bool,\n onClick: _propTypes.func,\n asyncOnClick: _propTypes.bool,\n enclosingCharacter: _propTypes.string\n};\n\nvar defaultProps = exports.defaultProps = {\n separator: ',',\n filename: 'generatedBy_react-csv.csv',\n uFEFF: true,\n asyncOnClick: false,\n enclosingCharacter: '\"'\n};\n\nvar PropsNotForwarded = exports.PropsNotForwarded = ['data', 'headers'];","/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e= this.props.step ||\n length(values.max, currentValues.max) >= this.props.step;\n }\n\n /**\n * Return true if the component accepts a min and max value\n * @private\n * @return {boolean}\n */\n isMultiValue() {\n return isObject(this.props.value);\n }\n\n /**\n * Return true if the range is within the max and min value of the component\n * @private\n * @param {Range} values\n * @return {boolean}\n */\n isWithinRange(values) {\n if (this.isMultiValue()) {\n return values.min >= this.props.minValue &&\n values.max <= this.props.maxValue &&\n this.props.allowSameValues\n ? values.min <= values.max\n : values.min < values.max;\n }\n\n return values.max >= this.props.minValue && values.max <= this.props.maxValue;\n }\n\n /**\n * Return true if the new value should trigger a render\n * @private\n * @param {Range} values\n * @return {boolean}\n */\n shouldUpdate(values) {\n return this.isWithinRange(values) && this.hasStepDifference(values);\n }\n\n /**\n * Update the position of a slider\n * @private\n * @param {string} key\n * @param {Point} position\n * @return {void}\n */\n updatePosition(key, position) {\n const values = valueTransformer.getValueFromProps(this.props, this.isMultiValue());\n const positions = valueTransformer.getPositionsFromValues(values, this.props.minValue, this.props.maxValue, this.getTrackClientRect());\n\n positions[key] = position;\n this.lastKeyMoved = key;\n\n this.updatePositions(positions);\n }\n\n /**\n * Update the positions of multiple sliders\n * @private\n * @param {Object} positions\n * @param {Point} positions.min\n * @param {Point} positions.max\n * @return {void}\n */\n updatePositions(positions) {\n const values = {\n min: valueTransformer.getValueFromPosition(positions.min, this.props.minValue, this.props.maxValue, this.getTrackClientRect()),\n max: valueTransformer.getValueFromPosition(positions.max, this.props.minValue, this.props.maxValue, this.getTrackClientRect()),\n };\n\n const transformedValues = {\n min: valueTransformer.getStepValueFromValue(values.min, this.props.step),\n max: valueTransformer.getStepValueFromValue(values.max, this.props.step),\n };\n\n this.updateValues(transformedValues);\n }\n\n /**\n * Update the value of a slider\n * @private\n * @param {string} key\n * @param {number} value\n * @return {void}\n */\n updateValue(key, value) {\n const values = valueTransformer.getValueFromProps(this.props, this.isMultiValue());\n\n values[key] = value;\n\n this.updateValues(values);\n }\n\n /**\n * Update the values of multiple sliders\n * @private\n * @param {Range|number} values\n * @return {void}\n */\n updateValues(values) {\n if (!this.shouldUpdate(values)) {\n return;\n }\n\n this.props.onChange(this.isMultiValue() ? values : values.max);\n }\n\n /**\n * Increment the value of a slider by key name\n * @private\n * @param {string} key\n * @return {void}\n */\n incrementValue(key) {\n const values = valueTransformer.getValueFromProps(this.props, this.isMultiValue());\n const value = values[key] + this.props.step;\n\n this.updateValue(key, value);\n }\n\n /**\n * Decrement the value of a slider by key name\n * @private\n * @param {string} key\n * @return {void}\n */\n decrementValue(key) {\n const values = valueTransformer.getValueFromProps(this.props, this.isMultiValue());\n const value = values[key] - this.props.step;\n\n this.updateValue(key, value);\n }\n\n /**\n * Listen to mouseup event\n * @private\n * @return {void}\n */\n addDocumentMouseUpListener() {\n this.removeDocumentMouseUpListener();\n this.node.ownerDocument.addEventListener('mouseup', this.handleMouseUp);\n }\n\n /**\n * Listen to touchend event\n * @private\n * @return {void}\n */\n addDocumentTouchEndListener() {\n this.removeDocumentTouchEndListener();\n this.node.ownerDocument.addEventListener('touchend', this.handleTouchEnd);\n }\n\n /**\n * Stop listening to mouseup event\n * @private\n * @return {void}\n */\n removeDocumentMouseUpListener() {\n this.node.ownerDocument.removeEventListener('mouseup', this.handleMouseUp);\n }\n\n /**\n * Stop listening to touchend event\n * @private\n * @return {void}\n */\n removeDocumentTouchEndListener() {\n this.node.ownerDocument.removeEventListener('touchend', this.handleTouchEnd);\n }\n\n /**\n * Handle any \"mousemove\" event received by the slider\n * @private\n * @param {SyntheticEvent} event\n * @param {string} key\n * @return {void}\n */\n @autobind\n handleSliderDrag(event, key) {\n if (this.props.disabled) {\n return;\n }\n\n const position = valueTransformer.getPositionFromEvent(event, this.getTrackClientRect());\n this.isSliderDragging = true;\n requestAnimationFrame(() => this.updatePosition(key, position));\n }\n\n /**\n * Handle any \"mousemove\" event received by the track\n * @private\n * @param {SyntheticEvent} event\n * @return {void}\n */\n @autobind\n handleTrackDrag(event, prevEvent) {\n if (this.props.disabled || !this.props.draggableTrack || this.isSliderDragging) {\n return;\n }\n\n const {\n maxValue,\n minValue,\n value: { max, min },\n } = this.props;\n\n const position = valueTransformer.getPositionFromEvent(event, this.getTrackClientRect());\n const value = valueTransformer.getValueFromPosition(position, minValue, maxValue, this.getTrackClientRect());\n const stepValue = valueTransformer.getStepValueFromValue(value, this.props.step);\n\n const prevPosition = valueTransformer.getPositionFromEvent(prevEvent, this.getTrackClientRect());\n const prevValue = valueTransformer.getValueFromPosition(prevPosition, minValue, maxValue, this.getTrackClientRect());\n const prevStepValue = valueTransformer.getStepValueFromValue(prevValue, this.props.step);\n\n const offset = prevStepValue - stepValue;\n\n const transformedValues = {\n min: min - offset,\n max: max - offset,\n };\n\n this.updateValues(transformedValues);\n }\n\n /**\n * Handle any \"keydown\" event received by the slider\n * @private\n * @param {SyntheticEvent} event\n * @param {string} key\n * @return {void}\n */\n @autobind\n handleSliderKeyDown(event, key) {\n if (this.props.disabled) {\n return;\n }\n\n switch (event.keyCode) {\n case LEFT_ARROW:\n case DOWN_ARROW:\n event.preventDefault();\n this.decrementValue(key);\n break;\n\n case RIGHT_ARROW:\n case UP_ARROW:\n event.preventDefault();\n this.incrementValue(key);\n break;\n\n default:\n break;\n }\n }\n\n /**\n * Handle any \"mousedown\" event received by the track\n * @private\n * @param {SyntheticEvent} event\n * @param {Point} position\n * @return {void}\n */\n @autobind\n handleTrackMouseDown(event, position) {\n if (this.props.disabled) {\n return;\n }\n\n const {\n maxValue,\n minValue,\n value: { max, min },\n } = this.props;\n\n event.preventDefault();\n\n const value = valueTransformer.getValueFromPosition(position, minValue, maxValue, this.getTrackClientRect());\n const stepValue = valueTransformer.getStepValueFromValue(value, this.props.step);\n\n if (!this.props.draggableTrack || stepValue > max || stepValue < min) {\n this.updatePosition(this.getKeyByPosition(position), position);\n }\n }\n\n /**\n * Handle the start of any mouse/touch event\n * @private\n * @return {void}\n */\n @autobind\n handleInteractionStart() {\n if (this.props.onChangeStart) {\n this.props.onChangeStart(this.props.value);\n }\n\n if (this.props.onChangeComplete && !isDefined(this.startValue)) {\n this.startValue = this.props.value;\n }\n }\n\n /**\n * Handle the end of any mouse/touch event\n * @private\n * @return {void}\n */\n @autobind\n handleInteractionEnd() {\n if (this.isSliderDragging) {\n this.isSliderDragging = false;\n }\n\n if (!this.props.onChangeComplete || !isDefined(this.startValue)) {\n return;\n }\n\n if (this.startValue !== this.props.value) {\n this.props.onChangeComplete(this.props.value);\n }\n\n this.startValue = null;\n }\n\n /**\n * Handle any \"keydown\" event received by the component\n * @private\n * @param {SyntheticEvent} event\n * @return {void}\n */\n @autobind\n handleKeyDown(event) {\n this.handleInteractionStart(event);\n }\n\n /**\n * Handle any \"keyup\" event received by the component\n * @private\n * @param {SyntheticEvent} event\n * @return {void}\n */\n @autobind\n handleKeyUp(event) {\n this.handleInteractionEnd(event);\n }\n\n /**\n * Handle any \"mousedown\" event received by the component\n * @private\n * @param {SyntheticEvent} event\n * @return {void}\n */\n @autobind\n handleMouseDown(event) {\n this.handleInteractionStart(event);\n this.addDocumentMouseUpListener();\n }\n\n /**\n * Handle any \"mouseup\" event received by the component\n * @private\n * @param {SyntheticEvent} event\n */\n @autobind\n handleMouseUp(event) {\n this.handleInteractionEnd(event);\n this.removeDocumentMouseUpListener();\n }\n\n /**\n * Handle any \"touchstart\" event received by the component\n * @private\n * @param {SyntheticEvent} event\n * @return {void}\n */\n @autobind\n handleTouchStart(event) {\n this.handleInteractionStart(event);\n this.addDocumentTouchEndListener();\n }\n\n /**\n * Handle any \"touchend\" event received by the component\n * @private\n * @param {SyntheticEvent} event\n */\n @autobind\n handleTouchEnd(event) {\n this.handleInteractionEnd(event);\n this.removeDocumentTouchEndListener();\n }\n\n /**\n * Return JSX of sliders\n * @private\n * @return {JSX.Element}\n */\n renderSliders() {\n const values = valueTransformer.getValueFromProps(this.props, this.isMultiValue());\n const percentages = valueTransformer.getPercentagesFromValues(values, this.props.minValue, this.props.maxValue);\n const keys = this.props.allowSameValues &&\n this.lastKeyMoved === 'min'\n ? this.getKeys().reverse()\n : this.getKeys();\n\n return keys.map((key) => {\n const value = values[key];\n const percentage = percentages[key];\n\n let { maxValue, minValue } = this.props;\n\n if (key === 'min') {\n maxValue = values.max;\n } else {\n minValue = values.min;\n }\n\n const slider = (\n \n );\n\n return slider;\n });\n }\n\n /**\n * Return JSX of hidden inputs\n * @private\n * @return {JSX.Element}\n */\n renderHiddenInputs() {\n if (!this.props.name) {\n return [];\n }\n\n const isMultiValue = this.isMultiValue();\n const values = valueTransformer.getValueFromProps(this.props, isMultiValue);\n\n return this.getKeys().map((key) => {\n const value = values[key];\n const name = isMultiValue ? `${this.props.name}${captialize(key)}` : this.props.name;\n\n return (\n \n );\n });\n }\n\n /**\n * @ignore\n * @override\n * @return {JSX.Element}\n */\n render() {\n const componentClassName = this.getComponentClassName();\n const values = valueTransformer.getValueFromProps(this.props, this.isMultiValue());\n const percentages = valueTransformer.getPercentagesFromValues(values, this.props.minValue, this.props.maxValue);\n\n return (\n { this.node = node; }}\n className={componentClassName}\n onKeyDown={this.handleKeyDown}\n onKeyUp={this.handleKeyUp}\n onMouseDown={this.handleMouseDown}\n onTouchStart={this.handleTouchStart}>\n \n {this.props.minValue}\n \n\n { this.trackNode = trackNode; }}\n percentages={percentages}\n onTrackDrag={this.handleTrackDrag}\n onTrackMouseDown={this.handleTrackMouseDown}>\n\n {this.renderSliders()}\n \n\n \n {this.props.maxValue}\n \n\n {this.renderHiddenInputs()}\n \n );\n }\n}\n","/** @ignore */\nexport const DOWN_ARROW = 40;\n\n/** @ignore */\nexport const LEFT_ARROW = 37;\n\n/** @ignore */\nexport const RIGHT_ARROW = 39;\n\n/** @ignore */\nexport const UP_ARROW = 38;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * @ignore\n * @param {Object} props\n * @param {InputRangeClassNames} props.classNames\n * @param {Function} props.formatLabel\n * @param {string} props.type\n */\nexport default function Label(props) {\n const labelValue = props.formatLabel ? props.formatLabel(props.children, props.type) : props.children;\n\n return (\n \n \n {labelValue}\n \n \n );\n}\n\n/**\n * @type {Object}\n * @property {Function} children\n * @property {Function} classNames\n * @property {Function} formatLabel\n * @property {Function} type\n */\nLabel.propTypes = {\n children: PropTypes.node.isRequired,\n classNames: PropTypes.objectOf(PropTypes.string).isRequired,\n formatLabel: PropTypes.func,\n type: PropTypes.string.isRequired,\n};\n","import { isNumber } from '../utils';\n\n/**\n * @ignore\n * @param {Object} props - React component props\n * @return {?Error} Return Error if validation fails\n */\nexport default function rangePropType(props) {\n const { maxValue, minValue } = props;\n\n if (!isNumber(minValue) || !isNumber(maxValue)) {\n return new Error('\"minValue\" and \"maxValue\" must be a number');\n }\n\n if (minValue >= maxValue) {\n return new Error('\"minValue\" must be smaller than \"maxValue\"');\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport autobind from 'autobind-decorator';\nimport Label from './label';\n\n/**\n * @ignore\n */\nexport default class Slider extends React.Component {\n /**\n * Accepted propTypes of Slider\n * @override\n * @return {Object}\n * @property {Function} ariaLabelledby\n * @property {Function} ariaControls\n * @property {Function} className\n * @property {Function} formatLabel\n * @property {Function} maxValue\n * @property {Function} minValue\n * @property {Function} onSliderDrag\n * @property {Function} onSliderKeyDown\n * @property {Function} percentage\n * @property {Function} type\n * @property {Function} value\n */\n static get propTypes() {\n return {\n ariaLabelledby: PropTypes.string,\n ariaControls: PropTypes.string,\n classNames: PropTypes.objectOf(PropTypes.string).isRequired,\n formatLabel: PropTypes.func,\n maxValue: PropTypes.number,\n minValue: PropTypes.number,\n onSliderDrag: PropTypes.func.isRequired,\n onSliderKeyDown: PropTypes.func.isRequired,\n percentage: PropTypes.number.isRequired,\n type: PropTypes.string.isRequired,\n value: PropTypes.number.isRequired,\n };\n }\n\n /**\n * @param {Object} props\n * @param {string} [props.ariaLabelledby]\n * @param {string} [props.ariaControls]\n * @param {InputRangeClassNames} props.classNames\n * @param {Function} [props.formatLabel]\n * @param {number} [props.maxValue]\n * @param {number} [props.minValue]\n * @param {Function} props.onSliderKeyDown\n * @param {Function} props.onSliderDrag\n * @param {number} props.percentage\n * @param {number} props.type\n * @param {number} props.value\n */\n constructor(props) {\n super(props);\n\n /**\n * @private\n * @type {?Component}\n */\n this.node = null;\n }\n\n /**\n * @ignore\n * @override\n * @return {void}\n */\n componentWillUnmount() {\n this.removeDocumentMouseMoveListener();\n this.removeDocumentMouseUpListener();\n this.removeDocumentTouchEndListener();\n this.removeDocumentTouchMoveListener();\n }\n\n /**\n * @private\n * @return {Object}\n */\n getStyle() {\n const perc = (this.props.percentage || 0) * 100;\n const style = {\n position: 'absolute',\n left: `${perc}%`,\n };\n\n return style;\n }\n\n /**\n * Listen to mousemove event\n * @private\n * @return {void}\n */\n addDocumentMouseMoveListener() {\n this.removeDocumentMouseMoveListener();\n this.node.ownerDocument.addEventListener('mousemove', this.handleMouseMove);\n }\n\n /**\n * Listen to mouseup event\n * @private\n * @return {void}\n */\n addDocumentMouseUpListener() {\n this.removeDocumentMouseUpListener();\n this.node.ownerDocument.addEventListener('mouseup', this.handleMouseUp);\n }\n\n /**\n * Listen to touchmove event\n * @private\n * @return {void}\n */\n addDocumentTouchMoveListener() {\n this.removeDocumentTouchMoveListener();\n this.node.ownerDocument.addEventListener('touchmove', this.handleTouchMove);\n }\n\n /**\n * Listen to touchend event\n * @private\n * @return {void}\n */\n addDocumentTouchEndListener() {\n this.removeDocumentTouchEndListener();\n this.node.ownerDocument.addEventListener('touchend', this.handleTouchEnd);\n }\n\n /**\n * @private\n * @return {void}\n */\n removeDocumentMouseMoveListener() {\n this.node.ownerDocument.removeEventListener('mousemove', this.handleMouseMove);\n }\n\n /**\n * @private\n * @return {void}\n */\n removeDocumentMouseUpListener() {\n this.node.ownerDocument.removeEventListener('mouseup', this.handleMouseUp);\n }\n\n /**\n * @private\n * @return {void}\n */\n removeDocumentTouchMoveListener() {\n this.node.ownerDocument.removeEventListener('touchmove', this.handleTouchMove);\n }\n\n /**\n * @private\n * @return {void}\n */\n removeDocumentTouchEndListener() {\n this.node.ownerDocument.removeEventListener('touchend', this.handleTouchEnd);\n }\n\n /**\n * @private\n * @return {void}\n */\n @autobind\n handleMouseDown() {\n this.addDocumentMouseMoveListener();\n this.addDocumentMouseUpListener();\n }\n\n /**\n * @private\n * @return {void}\n */\n @autobind\n handleMouseUp() {\n this.removeDocumentMouseMoveListener();\n this.removeDocumentMouseUpListener();\n }\n\n /**\n * @private\n * @param {SyntheticEvent} event\n * @return {void}\n */\n @autobind\n handleMouseMove(event) {\n this.props.onSliderDrag(event, this.props.type);\n }\n\n /**\n * @private\n * @return {void}\n */\n @autobind\n handleTouchStart() {\n this.addDocumentTouchEndListener();\n this.addDocumentTouchMoveListener();\n }\n\n /**\n * @private\n * @param {SyntheticEvent} event\n * @return {void}\n */\n @autobind\n handleTouchMove(event) {\n this.props.onSliderDrag(event, this.props.type);\n }\n\n /**\n * @private\n * @return {void}\n */\n @autobind\n handleTouchEnd() {\n this.removeDocumentTouchMoveListener();\n this.removeDocumentTouchEndListener();\n }\n\n /**\n * @private\n * @param {SyntheticEvent} event\n * @return {void}\n */\n @autobind\n handleKeyDown(event) {\n this.props.onSliderKeyDown(event, this.props.type);\n }\n\n /**\n * @override\n * @return {JSX.Element}\n */\n render() {\n const style = this.getStyle();\n\n return (\n { this.node = node; }}\n style={style}>\n \n {this.props.value}\n \n\n \n \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport autobind from 'autobind-decorator';\n\n/**\n * @ignore\n */\nexport default class Track extends React.Component {\n /**\n * @override\n * @return {Object}\n * @property {Function} children\n * @property {Function} classNames\n * @property {Boolean} draggableTrack\n * @property {Function} onTrackDrag\n * @property {Function} onTrackMouseDown\n * @property {Function} percentages\n */\n static get propTypes() {\n return {\n children: PropTypes.node.isRequired,\n classNames: PropTypes.objectOf(PropTypes.string).isRequired,\n draggableTrack: PropTypes.bool,\n onTrackDrag: PropTypes.func,\n onTrackMouseDown: PropTypes.func.isRequired,\n percentages: PropTypes.objectOf(PropTypes.number).isRequired,\n };\n }\n\n /**\n * @param {Object} props\n * @param {InputRangeClassNames} props.classNames\n * @param {Boolean} props.draggableTrack\n * @param {Function} props.onTrackDrag\n * @param {Function} props.onTrackMouseDown\n * @param {number} props.percentages\n */\n constructor(props) {\n super(props);\n\n /**\n * @private\n * @type {?Component}\n */\n this.node = null;\n this.trackDragEvent = null;\n }\n\n /**\n * @private\n * @return {ClientRect}\n */\n getClientRect() {\n return this.node.getBoundingClientRect();\n }\n\n /**\n * @private\n * @return {Object} CSS styles\n */\n getActiveTrackStyle() {\n const width = `${(this.props.percentages.max - this.props.percentages.min) * 100}%`;\n const left = `${this.props.percentages.min * 100}%`;\n\n return { left, width };\n }\n\n /**\n * Listen to mousemove event\n * @private\n * @return {void}\n */\n addDocumentMouseMoveListener() {\n this.removeDocumentMouseMoveListener();\n this.node.ownerDocument.addEventListener('mousemove', this.handleMouseMove);\n }\n\n /**\n * Listen to mouseup event\n * @private\n * @return {void}\n */\n addDocumentMouseUpListener() {\n this.removeDocumentMouseUpListener();\n this.node.ownerDocument.addEventListener('mouseup', this.handleMouseUp);\n }\n\n /**\n * @private\n * @return {void}\n */\n removeDocumentMouseMoveListener() {\n this.node.ownerDocument.removeEventListener('mousemove', this.handleMouseMove);\n }\n\n /**\n * @private\n * @return {void}\n */\n removeDocumentMouseUpListener() {\n this.node.ownerDocument.removeEventListener('mouseup', this.handleMouseUp);\n }\n\n /**\n * @private\n * @param {SyntheticEvent} event\n * @return {void}\n */\n @autobind\n handleMouseMove(event) {\n if (!this.props.draggableTrack) {\n return;\n }\n\n if (this.trackDragEvent !== null) {\n this.props.onTrackDrag(event, this.trackDragEvent);\n }\n\n this.trackDragEvent = event;\n }\n\n /**\n * @private\n * @return {void}\n */\n @autobind\n handleMouseUp() {\n if (!this.props.draggableTrack) {\n return;\n }\n\n this.removeDocumentMouseMoveListener();\n this.removeDocumentMouseUpListener();\n this.trackDragEvent = null;\n }\n\n /**\n * @private\n * @param {SyntheticEvent} event - User event\n */\n @autobind\n handleMouseDown(event) {\n const clientX = event.touches ? event.touches[0].clientX : event.clientX;\n const trackClientRect = this.getClientRect();\n const position = {\n x: clientX - trackClientRect.left,\n y: 0,\n };\n\n this.props.onTrackMouseDown(event, position);\n\n if (this.props.draggableTrack) {\n this.addDocumentMouseMoveListener();\n this.addDocumentMouseUpListener();\n }\n }\n\n /**\n * @private\n * @param {SyntheticEvent} event - User event\n */\n @autobind\n handleTouchStart(event) {\n event.preventDefault();\n\n this.handleMouseDown(event);\n }\n\n /**\n * @override\n * @return {JSX.Element}\n */\n render() {\n const activeTrackStyle = this.getActiveTrackStyle();\n\n return (\n { this.node = node; }}>\n \n {this.props.children}\n \n );\n }\n}\n","import { isNumber, isObject } from '../utils';\n\n/**\n * @ignore\n * @param {Object} props\n * @return {?Error} Return Error if validation fails\n */\nexport default function valuePropType(props, propName) {\n const { maxValue, minValue } = props;\n const value = props[propName];\n\n if (!isNumber(value) && (!isObject(value) || !isNumber(value.min) || !isNumber(value.max))) {\n return new Error(`\"${propName}\" must be a number or a range object`);\n }\n\n if (isNumber(value) && (value < minValue || value > maxValue)) {\n return new Error(`\"${propName}\" must be in between \"minValue\" and \"maxValue\"`);\n }\n\n if (isObject(value) && (value.min < minValue || value.min > maxValue || value.max < minValue || value.max > maxValue)) {\n return new Error(`\"${propName}\" must be in between \"minValue\" and \"maxValue\"`);\n }\n}\n","import { clamp } from '../utils';\n\n/**\n * Convert a point into a percentage value\n * @ignore\n * @param {Point} position\n * @param {ClientRect} clientRect\n * @return {number} Percentage value\n */\nexport function getPercentageFromPosition(position, clientRect) {\n const length = clientRect.width;\n const sizePerc = position.x / length;\n\n return sizePerc || 0;\n}\n\n/**\n * Convert a point into a model value\n * @ignore\n * @param {Point} position\n * @param {number} minValue\n * @param {number} maxValue\n * @param {ClientRect} clientRect\n * @return {number}\n */\nexport function getValueFromPosition(position, minValue, maxValue, clientRect) {\n const sizePerc = getPercentageFromPosition(position, clientRect);\n const valueDiff = maxValue - minValue;\n\n return minValue + (valueDiff * sizePerc);\n}\n\n/**\n * Convert props into a range value\n * @ignore\n * @param {Object} props\n * @param {boolean} isMultiValue\n * @return {Range}\n */\nexport function getValueFromProps(props, isMultiValue) {\n if (isMultiValue) {\n return { ...props.value };\n }\n\n return {\n min: props.minValue,\n max: props.value,\n };\n}\n\n/**\n * Convert a model value into a percentage value\n * @ignore\n * @param {number} value\n * @param {number} minValue\n * @param {number} maxValue\n * @return {number}\n */\nexport function getPercentageFromValue(value, minValue, maxValue) {\n const validValue = clamp(value, minValue, maxValue);\n const valueDiff = maxValue - minValue;\n const valuePerc = (validValue - minValue) / valueDiff;\n\n return valuePerc || 0;\n}\n\n/**\n * Convert model values into percentage values\n * @ignore\n * @param {Range} values\n * @param {number} minValue\n * @param {number} maxValue\n * @return {Range}\n */\nexport function getPercentagesFromValues(values, minValue, maxValue) {\n return {\n min: getPercentageFromValue(values.min, minValue, maxValue),\n max: getPercentageFromValue(values.max, minValue, maxValue),\n };\n}\n\n/**\n * Convert a value into a point\n * @ignore\n * @param {number} value\n * @param {number} minValue\n * @param {number} maxValue\n * @param {ClientRect} clientRect\n * @return {Point} Position\n */\nexport function getPositionFromValue(value, minValue, maxValue, clientRect) {\n const length = clientRect.width;\n const valuePerc = getPercentageFromValue(value, minValue, maxValue);\n const positionValue = valuePerc * length;\n\n return {\n x: positionValue,\n y: 0,\n };\n}\n\n/**\n * Convert a range of values into points\n * @ignore\n * @param {Range} values\n * @param {number} minValue\n * @param {number} maxValue\n * @param {ClientRect} clientRect\n * @return {Range}\n */\nexport function getPositionsFromValues(values, minValue, maxValue, clientRect) {\n return {\n min: getPositionFromValue(values.min, minValue, maxValue, clientRect),\n max: getPositionFromValue(values.max, minValue, maxValue, clientRect),\n };\n}\n\n/**\n * Convert an event into a point\n * @ignore\n * @param {Event} event\n * @param {ClientRect} clientRect\n * @return {Point}\n */\nexport function getPositionFromEvent(event, clientRect) {\n const length = clientRect.width;\n const { clientX } = event.touches ? event.touches[0] : event;\n\n return {\n x: clamp(clientX - clientRect.left, 0, length),\n y: 0,\n };\n}\n\n/**\n * Convert a value into a step value\n * @ignore\n * @param {number} value\n * @param {number} valuePerStep\n * @return {number}\n */\nexport function getStepValueFromValue(value, valuePerStep) {\n return Math.round(value / valuePerStep) * valuePerStep;\n}\n","/**\n * Captialize a string\n * @ignore\n * @param {string} string\n * @return {string}\n */\nexport default function captialize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n","/**\n * Clamp a value between a min and max value\n * @ignore\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @return {number}\n */\nexport default function clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n","/**\n * Calculate the distance between pointA and pointB\n * @ignore\n * @param {Point} pointA\n * @param {Point} pointB\n * @return {number} Distance\n */\nexport default function distanceTo(pointA, pointB) {\n const xDiff = (pointB.x - pointA.x) ** 2;\n const yDiff = (pointB.y - pointA.y) ** 2;\n\n return Math.sqrt(xDiff + yDiff);\n}\n","export { default as captialize } from './captialize';\nexport { default as clamp } from './clamp';\nexport { default as distanceTo } from './distance-to';\nexport { default as isDefined } from './is-defined';\nexport { default as isNumber } from './is-number';\nexport { default as isObject } from './is-object';\nexport { default as length } from './length';\n","/**\n * Check if a value is defined\n * @ignore\n * @param {*} value\n * @return {boolean}\n */\nexport default function isDefined(value) {\n return value !== undefined && value !== null;\n}\n","/**\n * Check if a value is a number\n * @ignore\n * @param {*} value\n * @return {boolean}\n */\nexport default function isNumber(value) {\n return typeof value === 'number';\n}\n","/**\n * Check if a value is an object\n * @ignore\n * @param {*} value\n * @return {boolean}\n */\nexport default function isObject(value) {\n return value !== null && typeof value === 'object';\n}\n","/**\n * Calculate the absolute difference between two numbers\n * @ignore\n * @param {number} numA\n * @param {number} numB\n * @return {number}\n */\nexport default function length(numA, numB) {\n return Math.abs(numA - numB);\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n// const octRegex = /0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\n\n \nconst consider = {\n hex : true,\n leadingZeros: true,\n decimalPoint: \"\\.\",\n eNotation: true\n //skipLike: /regex/\n};\n\nfunction toNumber(str, options = {}){\n // const options = Object.assign({}, consider);\n // if(opt.leadingZeros === false){\n // options.leadingZeros = false;\n // }else if(opt.hex === false){\n // options.hex = false;\n // }\n\n options = Object.assign({}, consider, options );\n if(!str || typeof str !== \"string\" ) return str;\n \n let trimmedStr = str.trim();\n // if(trimmedStr === \"0.0\") return 0;\n // else if(trimmedStr === \"+0.0\") return 0;\n // else if(trimmedStr === \"-0.0\") return -0;\n\n if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n // } else if (options.parseOct && octRegex.test(str)) {\n // return Number.parseInt(val, 8);\n // }else if (options.parseBin && binRegex.test(str)) {\n // return Number.parseInt(val, 2);\n }else{\n //separate negative sign, leading zeros, and rest number\n const match = numRegex.exec(trimmedStr);\n if(match){\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n //trim ending zeros for floating number\n \n const eNotation = match[4] || match[6];\n if(!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str; //-0123\n else if(!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str; //0123\n else{//no leading zeros or leading zeros are allowed\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if(numStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n if(options.eNotation) return num;\n else return str;\n }else if(eNotation){ //given number has enotation\n if(options.eNotation) return num;\n else return str;\n }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n // const decimalPart = match[5].substr(1);\n // const intPart = trimmedStr.substr(0,trimmedStr.indexOf(\".\"));\n\n \n // const p = numStr.indexOf(\".\");\n // const givenIntPart = numStr.substr(0,p);\n // const givenDecPart = numStr.substr(p+1);\n if(numStr === \"0\" && (numTrimmedByZeros === \"\") ) return num; //0.0\n else if(numStr === numTrimmedByZeros) return num; //0.456. 0.79000\n else if( sign && numStr === \"-\"+numTrimmedByZeros) return num;\n else return str;\n }\n \n if(leadingZeros){\n // if(numTrimmedByZeros === numStr){\n // if(options.leadingZeros) return num;\n // else return str;\n // }else return str;\n if(numTrimmedByZeros === numStr) return num;\n else if(sign+numTrimmedByZeros === numStr) return num;\n else return str;\n }\n\n if(trimmedStr === numStr) return num;\n else if(trimmedStr === sign+numStr) return num;\n // else{\n // //number with +/- sign\n // trimmedStr.test(/[-+][0-9]);\n\n // }\n return str;\n }\n // else if(!eNotation && trimmedStr && trimmedStr !== Number(trimmedStr) ) return str;\n \n }else{ //non-numeric string\n return str;\n }\n }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n if(numStr && numStr.indexOf(\".\") !== -1){//float\n numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n if(numStr === \".\") numStr = \"0\";\n else if(numStr[0] === \".\") numStr = \"0\"+numStr;\n else if(numStr[numStr.length-1] === \".\") numStr = numStr.substr(0,numStr.length-1);\n return numStr;\n }\n return numStr;\n}\nmodule.exports = toNumber\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","export default function(url, options) {\n\toptions = options || {};\n\treturn new Promise( (resolve, reject) => {\n\t\tconst request = new XMLHttpRequest();\n\t\tconst keys = [];\n\t\tconst all = [];\n\t\tconst headers = {};\n\n\t\tconst response = () => ({\n\t\t\tok: (request.status/100|0) == 2,\t\t// 200-299\n\t\t\tstatusText: request.statusText,\n\t\t\tstatus: request.status,\n\t\t\turl: request.responseURL,\n\t\t\ttext: () => Promise.resolve(request.responseText),\n\t\t\tjson: () => Promise.resolve(request.responseText).then(JSON.parse),\n\t\t\tblob: () => Promise.resolve(new Blob([request.response])),\n\t\t\tclone: response,\n\t\t\theaders: {\n\t\t\t\tkeys: () => keys,\n\t\t\t\tentries: () => all,\n\t\t\t\tget: n => headers[n.toLowerCase()],\n\t\t\t\thas: n => n.toLowerCase() in headers\n\t\t\t}\n\t\t});\n\n\t\trequest.open(options.method || 'get', url, true);\n\n\t\trequest.onload = () => {\n\t\t\trequest.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm, (m, key, value) => {\n\t\t\t\tkeys.push(key = key.toLowerCase());\n\t\t\t\tall.push([key, value]);\n\t\t\t\theaders[key] = headers[key] ? `${headers[key]},${value}` : value;\n\t\t\t});\n\t\t\tresolve(response());\n\t\t};\n\n\t\trequest.onerror = reject;\n\n\t\trequest.withCredentials = options.credentials=='include';\n\n\t\tfor (const i in options.headers) {\n\t\t\trequest.setRequestHeader(i, options.headers[i]);\n\t\t}\n\n\t\trequest.send(options.body || null);\n\t});\n}\n","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(';')\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var index = pair.indexOf('=')\n\n // skip things that don't look like key=value\n if (index < 0) {\n continue;\n }\n\n var key = pair.substring(0, index).trim()\n\n // only assign once\n if (undefined == obj[key]) {\n var val = pair.substring(index + 1, pair.length).trim()\n\n // quoted values\n if (val[0] === '\"') {\n val = val.slice(1, -1)\n }\n\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar punycode = require('punycode');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a puny coded representation of \"domain\".\n // It only converts the part of the domain name that\n // has non ASCII characters. I.e. it dosent matter if\n // you call it with a domain that already is in ASCII.\n var domainArray = this.hostname.split('.');\n var newOut = [];\n for (var i = 0; i < domainArray.length; ++i) {\n var s = domainArray[i];\n newOut.push(s.match(/[^A-Za-z0-9_-]/) ?\n 'xn--' + punycode.encode(s) : s);\n }\n this.hostname = newOut.join('.');\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n Object.keys(this).forEach(function(k) {\n result[k] = this[k];\n }, this);\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n Object.keys(relative).forEach(function(k) {\n if (k !== 'protocol')\n result[k] = relative[k];\n });\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n Object.keys(relative).forEach(function(k) {\n result[k] = relative[k];\n });\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especialy happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!isNull(result.pathname) || !isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host) && (last === '.' || last === '..') ||\n last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last == '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especialy happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!isNull(result.pathname) || !isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n\nfunction isString(arg) {\n return typeof arg === \"string\";\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isNull(arg) {\n return arg === null;\n}\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n","module.exports = require('./lib/Observable.js').Observable;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Observable = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// === Symbol Support ===\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\n\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\n\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species'); // === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n if (value == null) return undefined;\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n\n if (ctor === null) {\n ctor = undefined;\n }\n }\n\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n\n if (!queue) {\n return;\n }\n\n subscription._queue = undefined;\n subscription._state = 'ready';\n\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({\n type: type,\n value: value\n });\n\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{\n type: type,\n value: value\n }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(observer, subscriber) {\n _classCallCheck(this, Subscription);\n\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n _createClass(Subscription, [{\n key: \"unsubscribe\",\n value: function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n }\n }, {\n key: \"closed\",\n get: function () {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver =\n/*#__PURE__*/\nfunction () {\n function SubscriptionObserver(subscription) {\n _classCallCheck(this, SubscriptionObserver);\n\n this._subscription = subscription;\n }\n\n _createClass(SubscriptionObserver, [{\n key: \"next\",\n value: function next(value) {\n onNotify(this._subscription, 'next', value);\n }\n }, {\n key: \"error\",\n value: function error(value) {\n onNotify(this._subscription, 'error', value);\n }\n }, {\n key: \"complete\",\n value: function complete() {\n onNotify(this._subscription, 'complete');\n }\n }, {\n key: \"closed\",\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable =\n/*#__PURE__*/\nfunction () {\n function Observable(subscriber) {\n _classCallCheck(this, Observable);\n\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n this._subscriber = subscriber;\n }\n\n _createClass(Observable, [{\n key: \"subscribe\",\n value: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n\n return new Subscription(observer, this._subscriber);\n }\n }, {\n key: \"forEach\",\n value: function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function (value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n }\n }, {\n key: \"map\",\n value: function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this2.subscribe({\n next: function (value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: \"filter\",\n value: function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this3.subscribe({\n next: function (value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: \"reduce\",\n value: function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n return new C(function (observer) {\n return _this4.subscribe({\n next: function (value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n observer.next(acc);\n observer.complete();\n }\n });\n });\n }\n }, {\n key: \"concat\",\n value: function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscription;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n }\n }, {\n key: \"flatMap\",\n value: function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function (value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n subscriptions.push(inner);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n }\n }, {\n key: SymbolObservable,\n value: function () {\n return this;\n }\n }], [{\n key: \"from\",\n value: function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n if (x == null) throw new TypeError(x + ' is not an object');\n var method = getMethod(x, SymbolObservable);\n\n if (method) {\n var observable = method.call(x);\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n if (isObservable(observable) && observable.constructor === C) return observable;\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = method.call(x)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _item = _step.value;\n observer.next(_item);\n if (observer.closed) return;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n }\n }, {\n key: \"of\",\n value: function of() {\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n }, {\n key: SymbolSpecies,\n get: function () {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nexports.Observable = Observable;\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"334697fe\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"related_artist_visualizer:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkrelated_artist_visualizer\"] = self[\"webpackChunkrelated_artist_visualizer\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","// MIT License\n// Copyright (c) 2019-present StringEpsilon \n// Copyright (c) 2017-2019 James Kyle \n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nconst MAX_SIGNED_31_BIT_INT = 1073741823;\n\nconst commonjsGlobal =\n typeof globalThis !== \"undefined\" // 'global proper'\n ? // eslint-disable-next-line no-undef\n globalThis\n : typeof window !== \"undefined\"\n ? window // Browser\n : typeof global !== \"undefined\"\n ? global // node.js\n : {};\n\nfunction getUniqueId() {\n let key = \"__global_unique_id__\";\n return (commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1);\n}\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // eslint-disable-next-line no-self-compare\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n let handlers = [];\n return {\n on(handler) {\n handlers.push(handler);\n },\n\n off(handler) {\n handlers = handlers.filter(h => h !== handler);\n },\n\n get() {\n return value;\n },\n\n set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(handler => handler(value, changedBits));\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nexport default function createReactContext(defaultValue, calculateChangedBits) {\n const contextProp = \"__create-react-context-\" + getUniqueId() + \"__\";\n\n class Provider extends React.Component {\n emitter = createEventEmitter(this.props.value);\n\n static childContextTypes = {\n [contextProp]: PropTypes.object.isRequired\n };\n\n getChildContext() {\n return {\n [contextProp]: this.emitter\n };\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n let oldValue = this.props.value;\n let newValue = nextProps.value;\n let changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits =\n typeof calculateChangedBits === \"function\"\n ? calculateChangedBits(oldValue, newValue)\n : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== \"production\") {\n warning(\n (changedBits & MAX_SIGNED_31_BIT_INT) === changedBits,\n \"calculateChangedBits: Expected the return value to be a \" +\n \"31-bit integer. Instead received: \" +\n changedBits\n );\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n }\n\n render() {\n return this.props.children;\n }\n }\n\n class Consumer extends React.Component {\n static contextTypes = {\n [contextProp]: PropTypes.object\n };\n\n observedBits;\n\n state = {\n value: this.getValue()\n };\n\n componentWillReceiveProps(nextProps) {\n let { observedBits } = nextProps;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n let { observedBits } = this.props;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n }\n\n getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n }\n\n onUpdate = (newValue, changedBits) => {\n const observedBits = this.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n this.setState({ value: this.getValue() });\n }\n };\n\n render() {\n return onlyChild(this.props.children)(this.state.value);\n }\n }\n\n return {\n Provider,\n Consumer\n };\n}\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon \n// Copyright (c) 2017-2019 James Kyle \n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport createReactContext from \"./miniCreateReactContext\";\n\nexport default React.createContext || createReactContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"./createContext\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n this._pendingLocation = location;\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this.unlisten) {\n // Any pre-mount location changes have been captured at\n // this point, so unregister the listener.\n this.unlisten();\n }\n if (!this.props.staticContext) {\n this.unlisten = this.props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n }\n });\n }\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n \n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(RouterContext).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(RouterContext).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\", // TODO: deprecate\n activeStyle, // TODO: deprecate\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n let className =\n typeof classNameProp === \"function\"\n ? classNameProp(isActive)\n : classNameProp;\n\n let style =\n typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = { ...style, ...activeStyle };\n }\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\",\n \"false\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n };\n}\n\nexport default NavLink;\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport {\n\tICookieStorageData,\n\tICognitoStorage,\n} from 'amazon-cognito-identity-js';\n\n/**\n * Parameters for user sign up\n */\nexport interface SignUpParams {\n\tusername: string;\n\tpassword: string;\n\tattributes?: object;\n\tvalidationData?: { [key: string]: any };\n\tclientMetadata?: { [key: string]: string };\n\tautoSignIn?: AutoSignInOptions;\n}\n\nexport interface AuthCache {\n\tsetItem();\n\tgetItem();\n\tremoveItem();\n}\n\n/**\n * Auth instance options\n */\nexport interface AuthOptions {\n\tuserPoolId?: string;\n\tuserPoolWebClientId?: string;\n\tidentityPoolId?: string;\n\tregion?: string;\n\tmandatorySignIn?: boolean;\n\tcookieStorage?: ICookieStorageData;\n\toauth?: OAuthOpts;\n\trefreshHandlers?: object;\n\tstorage?: ICognitoStorage;\n\tauthenticationFlowType?: string;\n\tidentityPoolRegion?: string;\n\tclientMetadata?: any;\n\tendpoint?: string;\n\tsignUpVerificationMethod?: 'code' | 'link';\n}\n\nexport enum CognitoHostedUIIdentityProvider {\n\tCognito = 'COGNITO',\n\tGoogle = 'Google',\n\tFacebook = 'Facebook',\n\tAmazon = 'LoginWithAmazon',\n\tApple = 'SignInWithApple',\n}\n\nexport type LegacyProvider =\n\t| 'google'\n\t| 'facebook'\n\t| 'amazon'\n\t| 'developer'\n\t| string;\n\nexport type FederatedSignInOptions = {\n\tprovider: CognitoHostedUIIdentityProvider;\n\tcustomState?: string;\n};\n\nexport type FederatedSignInOptionsCustom = {\n\tcustomProvider: string;\n\tcustomState?: string;\n};\n\nexport function isFederatedSignInOptions(\n\tobj: any\n): obj is FederatedSignInOptions {\n\tconst keys: (keyof FederatedSignInOptions)[] = ['provider'];\n\treturn obj && !!keys.find(k => obj.hasOwnProperty(k));\n}\n\nexport function isFederatedSignInOptionsCustom(\n\tobj: any\n): obj is FederatedSignInOptionsCustom {\n\tconst keys: (keyof FederatedSignInOptionsCustom)[] = ['customProvider'];\n\treturn obj && !!keys.find(k => obj.hasOwnProperty(k));\n}\n\nexport function hasCustomState(obj: any): boolean {\n\tconst keys: (keyof (\n\t\t| FederatedSignInOptions\n\t\t| FederatedSignInOptionsCustom\n\t))[] = ['customState'];\n\treturn obj && !!keys.find(k => obj.hasOwnProperty(k));\n}\n\n/**\n * Details for multi-factor authentication\n */\nexport interface MfaRequiredDetails {\n\tchallengeName: any;\n\tchallengeParameters: any;\n}\n\n/**\n * interface for federatedResponse\n */\nexport interface FederatedResponse {\n\t// access token\n\ttoken: string;\n\t// identity id\n\tidentity_id?: string;\n\t// the universal time when token expired\n\texpires_at: number;\n}\n\n/**\n * interface for federatedUser\n */\nexport interface FederatedUser {\n\tname: string;\n\temail?: string;\n\tpicture?: string;\n}\n\nexport interface AwsCognitoOAuthOpts {\n\tdomain: string;\n\tscope: Array;\n\tredirectSignIn: string;\n\tredirectSignOut: string;\n\tresponseType: string;\n\toptions?: object;\n\turlOpener?: (url: string, redirectUrl: string) => Promise;\n}\n\nexport function isCognitoHostedOpts(\n\toauth: OAuthOpts\n): oauth is AwsCognitoOAuthOpts {\n\treturn (oauth).redirectSignIn !== undefined;\n}\n\nexport interface Auth0OAuthOpts {\n\tdomain: string;\n\tclientID: string;\n\tscope: string;\n\tredirectUri: string;\n\taudience: string;\n\tresponseType: string;\n\treturnTo: string;\n\turlOpener?: (url: string, redirectUrl: string) => Promise;\n}\n\n// Replacing to fix typings\n// export interface OAuth {\n// awsCognito?: awsCognitoOAuthOpts,\n// auth0?: any\n// }\n\nexport type OAuthOpts = AwsCognitoOAuthOpts | Auth0OAuthOpts;\n\nexport interface ConfirmSignUpOptions {\n\tforceAliasCreation?: boolean;\n\tclientMetadata?: ClientMetaData;\n}\n\nexport interface SignOutOpts {\n\tglobal?: boolean;\n}\n\nexport interface CurrentUserOpts {\n\tbypassCache: boolean;\n}\n\nexport interface GetPreferredMFAOpts {\n\tbypassCache: boolean;\n}\n\nexport type UsernamePasswordOpts = {\n\tusername: string;\n\tpassword: string;\n\tvalidationData?: { [key: string]: any };\n};\n\nexport enum AuthErrorTypes {\n\tNoConfig = 'noConfig',\n\tMissingAuthConfig = 'missingAuthConfig',\n\tEmptyUsername = 'emptyUsername',\n\tInvalidUsername = 'invalidUsername',\n\tEmptyPassword = 'emptyPassword',\n\tEmptyCode = 'emptyCode',\n\tSignUpError = 'signUpError',\n\tNoMFA = 'noMFA',\n\tInvalidMFA = 'invalidMFA',\n\tEmptyChallengeResponse = 'emptyChallengeResponse',\n\tNoUserSession = 'noUserSession',\n\tDefault = 'default',\n\tDeviceConfig = 'deviceConfig',\n\tNetworkError = 'networkError',\n\tAutoSignInError = 'autoSignInError',\n}\n\nexport type AuthErrorMessages = { [key in AuthErrorTypes]: AuthErrorMessage };\n\nexport interface AuthErrorMessage {\n\tmessage: string;\n\tlog?: string;\n}\n\n// We can extend this in the future if needed\nexport type SignInOpts = UsernamePasswordOpts;\n\nexport type ClientMetaData =\n\t| {\n\t\t\t[key: string]: string;\n\t }\n\t| undefined;\n\nexport function isUsernamePasswordOpts(obj: any): obj is UsernamePasswordOpts {\n\treturn !!(obj as UsernamePasswordOpts).username;\n}\n\nexport interface IAuthDevice {\n\tid: string;\n\tname: string;\n}\n\nexport interface AutoSignInOptions {\n\tenabled: boolean;\n\tclientMetaData?: ClientMetaData;\n\tvalidationData?: { [key: string]: any };\n}\n\nexport enum GRAPHQL_AUTH_MODE {\n\tAPI_KEY = 'API_KEY',\n\tAWS_IAM = 'AWS_IAM',\n\tOPENID_CONNECT = 'OPENID_CONNECT',\n\tAMAZON_COGNITO_USER_POOLS = 'AMAZON_COGNITO_USER_POOLS',\n\tAWS_LAMBDA = 'AWS_LAMBDA',\n}\n","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\n// Logging constants\nconst AWS_CLOUDWATCH_BASE_BUFFER_SIZE = 26;\nconst AWS_CLOUDWATCH_MAX_BATCH_EVENT_SIZE = 1048576;\nconst AWS_CLOUDWATCH_MAX_EVENT_SIZE = 256000;\nconst AWS_CLOUDWATCH_CATEGORY = 'Logging';\nconst AWS_CLOUDWATCH_PROVIDER_NAME = 'AWSCloudWatch';\nconst NO_CREDS_ERROR_STRING = 'No credentials';\nconst RETRY_ERROR_CODES = [\n\t'ResourceNotFoundException',\n\t'InvalidSequenceTokenException',\n];\n\nexport {\n\tAWS_CLOUDWATCH_BASE_BUFFER_SIZE,\n\tAWS_CLOUDWATCH_CATEGORY,\n\tAWS_CLOUDWATCH_MAX_BATCH_EVENT_SIZE,\n\tAWS_CLOUDWATCH_MAX_EVENT_SIZE,\n\tAWS_CLOUDWATCH_PROVIDER_NAME,\n\tNO_CREDS_ERROR_STRING,\n\tRETRY_ERROR_CODES,\n};\n","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport { InputLogEvent } from '@aws-sdk/client-cloudwatch-logs';\nimport { LoggingProvider } from '../types';\nimport { AWS_CLOUDWATCH_CATEGORY } from '../Util/Constants';\nimport { Logger } from './logger-interface';\n\nconst LOG_LEVELS = {\n\tVERBOSE: 1,\n\tDEBUG: 2,\n\tINFO: 3,\n\tWARN: 4,\n\tERROR: 5,\n};\n\nexport enum LOG_TYPE {\n\tDEBUG = 'DEBUG',\n\tERROR = 'ERROR',\n\tINFO = 'INFO',\n\tWARN = 'WARN',\n\tVERBOSE = 'VERBOSE',\n}\n\n/**\n * Write logs\n * @class Logger\n */\nexport class ConsoleLogger implements Logger {\n\tname: string;\n\tlevel: LOG_TYPE | string;\n\tprivate _pluggables: LoggingProvider[];\n\tprivate _config: object;\n\n\t/**\n\t * @constructor\n\t * @param {string} name - Name of the logger\n\t */\n\tconstructor(name: string, level: LOG_TYPE | string = LOG_TYPE.WARN) {\n\t\tthis.name = name;\n\t\tthis.level = level;\n\t\tthis._pluggables = [];\n\t}\n\n\tstatic LOG_LEVEL = null;\n\n\t_padding(n) {\n\t\treturn n < 10 ? '0' + n : '' + n;\n\t}\n\n\t_ts() {\n\t\tconst dt = new Date();\n\t\treturn (\n\t\t\t[this._padding(dt.getMinutes()), this._padding(dt.getSeconds())].join(\n\t\t\t\t':'\n\t\t\t) +\n\t\t\t'.' +\n\t\t\tdt.getMilliseconds()\n\t\t);\n\t}\n\n\tconfigure(config?: object) {\n\t\tif (!config) return this._config;\n\n\t\tthis._config = config;\n\n\t\treturn this._config;\n\t}\n\n\t/**\n\t * Write log\n\t * @method\n\t * @memeberof Logger\n\t * @param {LOG_TYPE|string} type - log type, default INFO\n\t * @param {string|object} msg - Logging message or object\n\t */\n\t_log(type: LOG_TYPE | string, ...msg) {\n\t\tlet logger_level_name = this.level;\n\t\tif (ConsoleLogger.LOG_LEVEL) {\n\t\t\tlogger_level_name = ConsoleLogger.LOG_LEVEL;\n\t\t}\n\t\tif (typeof (window) !== 'undefined' && (window).LOG_LEVEL) {\n\t\t\tlogger_level_name = (window).LOG_LEVEL;\n\t\t}\n\t\tconst logger_level = LOG_LEVELS[logger_level_name];\n\t\tconst type_level = LOG_LEVELS[type];\n\t\tif (!(type_level >= logger_level)) {\n\t\t\t// Do nothing if type is not greater than or equal to logger level (handle undefined)\n\t\t\treturn;\n\t\t}\n\n\t\tlet log = console.log.bind(console);\n\t\tif (type === LOG_TYPE.ERROR && console.error) {\n\t\t\tlog = console.error.bind(console);\n\t\t}\n\t\tif (type === LOG_TYPE.WARN && console.warn) {\n\t\t\tlog = console.warn.bind(console);\n\t\t}\n\n\t\tconst prefix = `[${type}] ${this._ts()} ${this.name}`;\n\t\tlet message = '';\n\n\t\tif (msg.length === 1 && typeof msg[0] === 'string') {\n\t\t\tmessage = `${prefix} - ${msg[0]}`;\n\t\t\tlog(message);\n\t\t} else if (msg.length === 1) {\n\t\t\tmessage = `${prefix} ${msg[0]}`;\n\t\t\tlog(prefix, msg[0]);\n\t\t} else if (typeof msg[0] === 'string') {\n\t\t\tlet obj = msg.slice(1);\n\t\t\tif (obj.length === 1) {\n\t\t\t\tobj = obj[0];\n\t\t\t}\n\t\t\tmessage = `${prefix} - ${msg[0]} ${obj}`;\n\t\t\tlog(`${prefix} - ${msg[0]}`, obj);\n\t\t} else {\n\t\t\tmessage = `${prefix} ${msg}`;\n\t\t\tlog(prefix, msg);\n\t\t}\n\n\t\tfor (const plugin of this._pluggables) {\n\t\t\tconst logEvent: InputLogEvent = { message, timestamp: Date.now() };\n\t\t\tplugin.pushLogs([logEvent]);\n\t\t}\n\t}\n\n\t/**\n\t * Write General log. Default to INFO\n\t * @method\n\t * @memeberof Logger\n\t * @param {string|object} msg - Logging message or object\n\t */\n\tlog(...msg) {\n\t\tthis._log(LOG_TYPE.INFO, ...msg);\n\t}\n\n\t/**\n\t * Write INFO log\n\t * @method\n\t * @memeberof Logger\n\t * @param {string|object} msg - Logging message or object\n\t */\n\tinfo(...msg) {\n\t\tthis._log(LOG_TYPE.INFO, ...msg);\n\t}\n\n\t/**\n\t * Write WARN log\n\t * @method\n\t * @memeberof Logger\n\t * @param {string|object} msg - Logging message or object\n\t */\n\twarn(...msg) {\n\t\tthis._log(LOG_TYPE.WARN, ...msg);\n\t}\n\n\t/**\n\t * Write ERROR log\n\t * @method\n\t * @memeberof Logger\n\t * @param {string|object} msg - Logging message or object\n\t */\n\terror(...msg) {\n\t\tthis._log(LOG_TYPE.ERROR, ...msg);\n\t}\n\n\t/**\n\t * Write DEBUG log\n\t * @method\n\t * @memeberof Logger\n\t * @param {string|object} msg - Logging message or object\n\t */\n\tdebug(...msg) {\n\t\tthis._log(LOG_TYPE.DEBUG, ...msg);\n\t}\n\n\t/**\n\t * Write VERBOSE log\n\t * @method\n\t * @memeberof Logger\n\t * @param {string|object} msg - Logging message or object\n\t */\n\tverbose(...msg) {\n\t\tthis._log(LOG_TYPE.VERBOSE, ...msg);\n\t}\n\n\taddPluggable(pluggable: LoggingProvider) {\n\t\tif (pluggable && pluggable.getCategoryName() === AWS_CLOUDWATCH_CATEGORY) {\n\t\t\tthis._pluggables.push(pluggable);\n\t\t\tpluggable.configure(this._config);\n\t\t}\n\t}\n\n\tlistPluggables() {\n\t\treturn this._pluggables;\n\t}\n}\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport { ConsoleLogger as Logger } from './Logger';\n\nconst logger = new Logger('Hub');\n\nconst AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' &&\ntypeof Symbol.for === 'function'\n\t? Symbol.for('amplify_default')\n\t: '@@amplify_default') as Symbol;\ninterface IPattern {\n\tpattern: RegExp;\n\tcallback: HubCallback;\n}\n\ninterface IListener {\n\tname: string;\n\tcallback: HubCallback;\n}\n\nexport type HubCapsule = {\n\tchannel: string;\n\tpayload: HubPayload;\n\tsource: string;\n\tpatternInfo?: string[];\n};\n\nexport type HubPayload = {\n\tevent: string;\n\tdata?: any;\n\tmessage?: string;\n};\n\nexport type HubCallback = (capsule: HubCapsule) => void;\n\nexport type LegacyCallback = { onHubCapsule: HubCallback };\n\nfunction isLegacyCallback(callback: any): callback is LegacyCallback {\n\treturn (callback).onHubCapsule !== undefined;\n}\n\nexport class HubClass {\n\tname: string;\n\tprivate listeners: IListener[] = [];\n\tprivate patterns: IPattern[] = [];\n\n\tprotectedChannels = [\n\t\t'core',\n\t\t'auth',\n\t\t'api',\n\t\t'analytics',\n\t\t'interactions',\n\t\t'pubsub',\n\t\t'storage',\n\t\t'ui',\n\t\t'xr',\n\t];\n\n\tconstructor(name: string) {\n\t\tthis.name = name;\n\t}\n\n\t// Note - Need to pass channel as a reference for removal to work and not anonymous function\n\tremove(channel: string | RegExp, listener: HubCallback) {\n\t\tif (channel instanceof RegExp) {\n\t\t\tconst pattern = this.patterns.find(\n\t\t\t\t({ pattern }) => pattern.source === channel.source\n\t\t\t);\n\t\t\tif (!pattern) {\n\t\t\t\tlogger.warn(`No listeners for ${channel}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.patterns = [...this.patterns.filter(x => x !== pattern)];\n\t\t} else {\n\t\t\tconst holder = this.listeners[channel];\n\t\t\tif (!holder) {\n\t\t\t\tlogger.warn(`No listeners for ${channel}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.listeners[channel] = [\n\t\t\t\t...holder.filter(({ callback }) => callback !== listener),\n\t\t\t];\n\t\t}\n\t}\n\n\tdispatch(\n\t\tchannel: string,\n\t\tpayload: HubPayload,\n\t\tsource: string = '',\n\t\tampSymbol?: Symbol\n\t) {\n\t\tif (this.protectedChannels.indexOf(channel) > -1) {\n\t\t\tconst hasAccess = ampSymbol === AMPLIFY_SYMBOL;\n\n\t\t\tif (!hasAccess) {\n\t\t\t\tlogger.warn(\n\t\t\t\t\t`WARNING: ${channel} is protected and dispatching on it can have unintended consequences`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst capsule: HubCapsule = {\n\t\t\tchannel,\n\t\t\tpayload: { ...payload },\n\t\t\tsource,\n\t\t\tpatternInfo: [],\n\t\t};\n\n\t\ttry {\n\t\t\tthis._toListeners(capsule);\n\t\t} catch (e) {\n\t\t\tlogger.error(e);\n\t\t}\n\t}\n\n\tlisten(\n\t\tchannel: string | RegExp,\n\t\tcallback?: HubCallback | LegacyCallback,\n\t\tlistenerName = 'noname'\n\t) {\n\t\tlet cb: HubCallback;\n\t\t// Check for legacy onHubCapsule callback for backwards compatability\n\t\tif (isLegacyCallback(callback)) {\n\t\t\tlogger.warn(\n\t\t\t\t`WARNING onHubCapsule is Deprecated. Please pass in a callback.`\n\t\t\t);\n\t\t\tcb = callback.onHubCapsule.bind(callback);\n\t\t} else if (typeof callback !== 'function') {\n\t\t\tthrow new Error('No callback supplied to Hub');\n\t\t} else {\n\t\t\tcb = callback;\n\t\t}\n\n\t\tif (channel instanceof RegExp) {\n\t\t\tthis.patterns.push({\n\t\t\t\tpattern: channel,\n\t\t\t\tcallback: cb,\n\t\t\t});\n\t\t} else {\n\t\t\tlet holder = this.listeners[channel];\n\n\t\t\tif (!holder) {\n\t\t\t\tholder = [];\n\t\t\t\tthis.listeners[channel] = holder;\n\t\t\t}\n\n\t\t\tholder.push({\n\t\t\t\tname: listenerName,\n\t\t\t\tcallback: cb,\n\t\t\t});\n\t\t}\n\n\t\treturn () => {\n\t\t\tthis.remove(channel, cb);\n\t\t};\n\t}\n\n\tprivate _toListeners(capsule: HubCapsule) {\n\t\tconst { channel, payload } = capsule;\n\t\tconst holder = this.listeners[channel];\n\n\t\tif (holder) {\n\t\t\tholder.forEach(listener => {\n\t\t\t\tlogger.debug(`Dispatching to ${channel} with `, payload);\n\t\t\t\ttry {\n\t\t\t\t\tlistener.callback(capsule);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tlogger.error(e);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (this.patterns.length > 0) {\n\t\t\tif (!payload.message) {\n\t\t\t\tlogger.warn(`Cannot perform pattern matching without a message key`);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst payloadStr = payload.message;\n\n\t\t\tthis.patterns.forEach(pattern => {\n\t\t\t\tconst match = payloadStr.match(pattern.pattern);\n\t\t\t\tif (match) {\n\t\t\t\t\tconst [, ...groups] = match;\n\t\t\t\t\tconst dispatchingCapsule: HubCapsule = {\n\t\t\t\t\t\t...capsule,\n\t\t\t\t\t\tpatternInfo: groups,\n\t\t\t\t\t};\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpattern.callback(dispatchingCapsule);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tlogger.error(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n}\n\n/*We export a __default__ instance of HubClass to use it as a \npseudo Singleton for the main messaging bus, however you can still create\nyour own instance of HubClass() for a separate \"private bus\" of events.*/\nexport const Hub = new HubClass('__default__');\n/**\n * @deprecated use named import\n */\nexport default Hub;\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nlet dataMemory = {};\n\n/** @class */\nexport class MemoryStorage {\n\t/**\n\t * This is used to set a specific item in storage\n\t * @param {string} key - the key for the item\n\t * @param {object} value - the value\n\t * @returns {string} value that was set\n\t */\n\tstatic setItem(key: string, value: any) {\n\t\tdataMemory[key] = value;\n\t\treturn dataMemory[key];\n\t}\n\n\t/**\n\t * This is used to get a specific key from storage\n\t * @param {string} key - the key for the item\n\t * This is used to clear the storage\n\t * @returns {string} the data item\n\t */\n\tstatic getItem(key: string) {\n\t\treturn Object.prototype.hasOwnProperty.call(dataMemory, key)\n\t\t\t? dataMemory[key]\n\t\t\t: undefined;\n\t}\n\n\t/**\n\t * This is used to remove an item from storage\n\t * @param {string} key - the key being set\n\t * @returns {string} value - value that was deleted\n\t */\n\tstatic removeItem(key: string) {\n\t\treturn delete dataMemory[key];\n\t}\n\n\t/**\n\t * This is used to clear the storage\n\t * @returns {string} nothing\n\t */\n\tstatic clear() {\n\t\tdataMemory = {};\n\t\treturn dataMemory;\n\t}\n}\n\nexport class StorageHelper {\n\tprivate storageWindow: any;\n\t/**\n\t * This is used to get a storage object\n\t * @returns {object} the storage\n\t */\n\tconstructor() {\n\t\ttry {\n\t\t\tthis.storageWindow = window.localStorage;\n\t\t\tthis.storageWindow.setItem('aws.amplify.test-ls', 1);\n\t\t\tthis.storageWindow.removeItem('aws.amplify.test-ls');\n\t\t} catch (exception) {\n\t\t\tthis.storageWindow = MemoryStorage;\n\t\t}\n\t}\n\n\t/**\n\t * This is used to return the storage\n\t * @returns {object} the storage\n\t */\n\tgetStorage(): any {\n\t\treturn this.storageWindow;\n\t}\n}\n\n/**\n * @deprecated use named import\n */\nexport default StorageHelper;\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nconst MIME_MAP = [\n\t{ type: 'text/plain', ext: 'txt' },\n\t{ type: 'text/html', ext: 'html' },\n\t{ type: 'text/javascript', ext: 'js' },\n\t{ type: 'text/css', ext: 'css' },\n\t{ type: 'text/csv', ext: 'csv' },\n\t{ type: 'text/yaml', ext: 'yml' },\n\t{ type: 'text/yaml', ext: 'yaml' },\n\t{ type: 'text/calendar', ext: 'ics' },\n\t{ type: 'text/calendar', ext: 'ical' },\n\n\t{ type: 'image/apng', ext: 'apng' },\n\t{ type: 'image/bmp', ext: 'bmp' },\n\t{ type: 'image/gif', ext: 'gif' },\n\t{ type: 'image/x-icon', ext: 'ico' },\n\t{ type: 'image/x-icon', ext: 'cur' },\n\t{ type: 'image/jpeg', ext: 'jpg' },\n\t{ type: 'image/jpeg', ext: 'jpeg' },\n\t{ type: 'image/jpeg', ext: 'jfif' },\n\t{ type: 'image/jpeg', ext: 'pjp' },\n\t{ type: 'image/jpeg', ext: 'pjpeg' },\n\t{ type: 'image/png', ext: 'png' },\n\t{ type: 'image/svg+xml', ext: 'svg' },\n\t{ type: 'image/tiff', ext: 'tif' },\n\t{ type: 'image/tiff', ext: 'tiff' },\n\t{ type: 'image/webp', ext: 'webp' },\n\n\t{ type: 'application/json', ext: 'json' },\n\t{ type: 'application/xml', ext: 'xml' },\n\t{ type: 'application/x-sh', ext: 'sh' },\n\t{ type: 'application/zip', ext: 'zip' },\n\t{ type: 'application/x-rar-compressed', ext: 'rar' },\n\t{ type: 'application/x-tar', ext: 'tar' },\n\t{ type: 'application/x-bzip', ext: 'bz' },\n\t{ type: 'application/x-bzip2', ext: 'bz2' },\n\t{ type: 'application/pdf', ext: 'pdf' },\n\t{ type: 'application/java-archive', ext: 'jar' },\n\t{ type: 'application/msword', ext: 'doc' },\n\t{ type: 'application/vnd.ms-excel', ext: 'xls' },\n\t{ type: 'application/vnd.ms-excel', ext: 'xlsx' },\n\n\t{ type: 'message/rfc822', ext: 'eml' },\n];\n\nexport const isEmpty = (obj = {}) => Object.keys(obj).length === 0;\n\nexport const sortByField = (list, field, dir) => {\n\tif (!list || !list.sort) {\n\t\treturn false;\n\t}\n\n\tconst dirX = dir && dir === 'desc' ? -1 : 1;\n\tlist.sort(function(a, b) {\n\t\tconst a_val = a[field];\n\t\tconst b_val = b[field];\n\n\t\tif (typeof b_val === 'undefined') {\n\t\t\treturn typeof a_val === 'undefined' ? 0 : 1 * dirX;\n\t\t}\n\n\t\tif (typeof a_val === 'undefined') {\n\t\t\treturn -1 * dirX;\n\t\t}\n\n\t\tif (a_val < b_val) {\n\t\t\treturn -1 * dirX;\n\t\t}\n\t\tif (a_val > b_val) {\n\t\t\treturn 1 * dirX;\n\t\t}\n\n\t\treturn 0;\n\t});\n\n\treturn true;\n};\n\nexport const objectLessAttributes = (obj, less) => {\n\tconst ret = Object.assign({}, obj);\n\tif (less) {\n\t\tif (typeof less === 'string') {\n\t\t\tdelete ret[less];\n\t\t} else {\n\t\t\tless.forEach(attr => {\n\t\t\t\tdelete ret[attr];\n\t\t\t});\n\t\t}\n\t}\n\n\treturn ret;\n};\n\nexport const filenameToContentType = (\n\tfilename,\n\tdefVal = 'application/octet-stream'\n) => {\n\tconst name = filename.toLowerCase();\n\n\tconst filtered = MIME_MAP.filter(mime => name.endsWith('.' + mime.ext));\n\treturn filtered.length > 0 ? filtered[0].type : defVal;\n};\n\nexport const isTextFile = contentType => {\n\tconst type = contentType.toLowerCase();\n\tif (type.startsWith('text/')) {\n\t\treturn true;\n\t}\n\treturn (\n\t\t'application/json' === type ||\n\t\t'application/xml' === type ||\n\t\t'application/sh' === type\n\t);\n};\n\nexport const generateRandomString = () => {\n\tlet result = '';\n\tconst chars =\n\t\t'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\tfor (let i = 32; i > 0; i -= 1) {\n\t\tresult += chars[Math.floor(Math.random() * chars.length)];\n\t}\n\treturn result;\n};\n\nexport const makeQuerablePromise = promise => {\n\tif (promise.isResolved) return promise;\n\n\tlet isPending = true;\n\tlet isRejected = false;\n\tlet isFullfilled = false;\n\n\tconst result = promise.then(\n\t\tdata => {\n\t\t\tisFullfilled = true;\n\t\t\tisPending = false;\n\t\t\treturn data;\n\t\t},\n\t\te => {\n\t\t\tisRejected = true;\n\t\t\tisPending = false;\n\t\t\tthrow e;\n\t\t}\n\t);\n\n\tresult.isFullfilled = () => isFullfilled;\n\tresult.isPending = () => isPending;\n\tresult.isRejected = () => isRejected;\n\n\treturn result;\n};\n\nexport const isWebWorker = () => {\n\tif (typeof self === 'undefined') {\n\t\treturn false;\n\t}\n\tconst selfContext = self as { WorkerGlobalScope? };\n\treturn typeof selfContext.WorkerGlobalScope !== 'undefined' &&\n\t\tself instanceof selfContext.WorkerGlobalScope;\n};\n\nexport const browserOrNode = () => {\n\tconst isBrowser =\n\t\ttypeof window !== 'undefined' && typeof window.document !== 'undefined';\n\tconst isNode =\n\t\ttypeof process !== 'undefined' &&\n\t\tprocess.versions != null &&\n\t\tprocess.versions.node != null;\n\n\treturn {\n\t\tisBrowser,\n\t\tisNode,\n\t};\n};\n\n/**\n * transfer the first letter of the keys to lowercase\n * @param {Object} obj - the object need to be transferred\n * @param {Array} whiteListForItself - whitelist itself from being transferred\n * @param {Array} whiteListForChildren - whitelist its children keys from being transferred\n */\nexport const transferKeyToLowerCase = (\n\tobj,\n\twhiteListForItself = [],\n\twhiteListForChildren = []\n) => {\n\tif (!isStrictObject(obj)) return obj;\n\tconst ret = {};\n\n\tfor (const key in obj) {\n\t\tif (obj.hasOwnProperty(key)) {\n\t\t\tconst transferedKey = whiteListForItself.includes(key)\n\t\t\t\t? key\n\t\t\t\t: key[0].toLowerCase() + key.slice(1);\n\n\t\t\tret[transferedKey] = whiteListForChildren.includes(key)\n\t\t\t\t? obj[key]\n\t\t\t\t: transferKeyToLowerCase(\n\t\t\t\t\t\tobj[key],\n\t\t\t\t\t\twhiteListForItself,\n\t\t\t\t\t\twhiteListForChildren\n\t\t\t\t );\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n/**\n * transfer the first letter of the keys to lowercase\n * @param {Object} obj - the object need to be transferred\n * @param {Array} whiteListForItself - whitelist itself from being transferred\n * @param {Array} whiteListForChildren - whitelist its children keys from being transferred\n */\nexport const transferKeyToUpperCase = (\n\tobj,\n\twhiteListForItself = [],\n\twhiteListForChildren = []\n) => {\n\tif (!isStrictObject(obj)) return obj;\n\tconst ret = {};\n\n\tfor (const key in obj) {\n\t\tif (obj.hasOwnProperty(key)) {\n\t\t\tconst transferredKey = whiteListForItself.includes(key)\n\t\t\t\t? key\n\t\t\t\t: key[0].toUpperCase() + key.slice(1);\n\n\t\t\tret[transferredKey] = whiteListForChildren.includes(key)\n\t\t\t\t? obj[key]\n\t\t\t\t: transferKeyToUpperCase(\n\t\t\t\t\t\tobj[key],\n\t\t\t\t\t\twhiteListForItself,\n\t\t\t\t\t\twhiteListForChildren\n\t\t\t\t );\n\t\t}\n\t}\n\treturn ret;\n};\n\n/**\n * Return true if the object is a strict object\n * which means it's not Array, Function, Number, String, Boolean or Null\n * @param obj the Object\n */\nexport const isStrictObject = obj => {\n\treturn (\n\t\tobj instanceof Object &&\n\t\t!(obj instanceof Array) &&\n\t\t!(obj instanceof Function) &&\n\t\t!(obj instanceof Number) &&\n\t\t!(obj instanceof String) &&\n\t\t!(obj instanceof Boolean)\n\t);\n};\n\n/**\n * @deprecated use per-function imports\n */\nexport class JS {\n\tstatic isEmpty = isEmpty;\n\tstatic sortByField = sortByField;\n\tstatic objectLessAttributes = objectLessAttributes;\n\tstatic filenameToContentType = filenameToContentType;\n\tstatic isTextFile = isTextFile;\n\tstatic generateRandomString = generateRandomString;\n\tstatic makeQuerablePromise = makeQuerablePromise;\n\tstatic isWebWorker = isWebWorker;\n\tstatic browserOrNode = browserOrNode;\n\tstatic transferKeyToLowerCase = transferKeyToLowerCase;\n\tstatic transferKeyToUpperCase = transferKeyToUpperCase;\n\tstatic isStrictObject = isStrictObject;\n}\n\n/**\n * @deprecated use per-function imports\n */\nexport default JS;\n","import { DelayFunction } from '../types';\nimport { ConsoleLogger as Logger } from '../Logger/ConsoleLogger';\nconst logger = new Logger('Util');\n\nexport class NonRetryableError extends Error {\n\tpublic readonly nonRetryable = true;\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t}\n}\n\nconst isNonRetryableError = (obj: any): obj is NonRetryableError => {\n\tconst key: keyof NonRetryableError = 'nonRetryable';\n\treturn obj && obj[key];\n};\n\n/**\n * @private\n * Internal use of Amplify only\n */\nexport async function retry(\n\tfunctionToRetry: (...args: any[]) => T,\n\targs: any[],\n\tdelayFn: DelayFunction,\n\tonTerminate?: Promise\n): Promise {\n\tif (typeof functionToRetry !== 'function') {\n\t\tthrow Error('functionToRetry must be a function');\n\t}\n\n\treturn new Promise(async (resolve, reject) => {\n\t\tlet attempt = 0;\n\t\tlet terminated = false;\n\t\tlet timeout: any;\n\t\tlet wakeUp: any = () => {}; // will be replaced with a resolver()\n\n\t\t// used after the loop if terminated while waiting for a timer.\n\t\tlet lastError: Error;\n\n\t\tonTerminate &&\n\t\t\tonTerminate.then(() => {\n\t\t\t\t// signal not to try anymore.\n\t\t\t\tterminated = true;\n\n\t\t\t\t// stop sleeping if we're sleeping.\n\t\t\t\tclearTimeout(timeout);\n\t\t\t\twakeUp();\n\t\t\t});\n\n\t\twhile (!terminated) {\n\t\t\tattempt++;\n\n\t\t\tlogger.debug(\n\t\t\t\t`${\n\t\t\t\t\tfunctionToRetry.name\n\t\t\t\t} attempt #${attempt} with this vars: ${JSON.stringify(args)}`\n\t\t\t);\n\n\t\t\ttry {\n\t\t\t\treturn resolve(await functionToRetry(...args));\n\t\t\t} catch (err) {\n\t\t\t\tlastError = err;\n\t\t\t\tlogger.debug(`error on ${functionToRetry.name}`, err);\n\n\t\t\t\tif (isNonRetryableError(err)) {\n\t\t\t\t\tlogger.debug(`${functionToRetry.name} non retryable error`, err);\n\t\t\t\t\treturn reject(err);\n\t\t\t\t}\n\n\t\t\t\tconst retryIn = delayFn(attempt, args, err);\n\t\t\t\tlogger.debug(`${functionToRetry.name} retrying in ${retryIn} ms`);\n\n\t\t\t\t// we check `terminated` again here because it could have flipped\n\t\t\t\t// in the time it took `functionToRetry` to return.\n\t\t\t\tif (retryIn === false || terminated) {\n\t\t\t\t\treturn reject(err);\n\t\t\t\t} else {\n\t\t\t\t\tawait new Promise(r => {\n\t\t\t\t\t\twakeUp = r; // export wakeUp for onTerminate handling\n\t\t\t\t\t\ttimeout = setTimeout(wakeUp, retryIn);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// reached if terminated while waiting for a timer.\n\t\treject(lastError);\n\t});\n}\n\nconst MAX_DELAY_MS = 5 * 60 * 1000;\n\n/**\n * @private\n * Internal use of Amplify only\n */\nexport function jitteredBackoff(\n\tmaxDelayMs: number = MAX_DELAY_MS\n): DelayFunction {\n\tconst BASE_TIME_MS = 100;\n\tconst JITTER_FACTOR = 100;\n\n\treturn attempt => {\n\t\tconst delay = 2 ** attempt * BASE_TIME_MS + JITTER_FACTOR * Math.random();\n\t\treturn delay > maxDelayMs ? false : delay;\n\t};\n}\n\n/**\n * @private\n * Internal use of Amplify only\n */\nexport const jitteredExponentialRetry = (\n\tfunctionToRetry: (...args: any[]) => T,\n\targs: any[],\n\tmaxDelayMs: number = MAX_DELAY_MS,\n\tonTerminate?: Promise\n): Promise =>\n\tretry(functionToRetry, args, jitteredBackoff(maxDelayMs), onTerminate);\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { ConsoleLogger as Logger } from '../Logger';\nimport { browserOrNode } from '../JS';\nimport { NonRetryableError } from '../Util';\n\nconst logger = new Logger('CognitoCredentials');\n\nconst waitForInit = new Promise((res, rej) => {\n\tif (!browserOrNode().isBrowser) {\n\t\tlogger.debug('not in the browser, directly resolved');\n\t\treturn res();\n\t}\n\tconst ga =\n\t\twindow['gapi'] && window['gapi'].auth2 ? window['gapi'].auth2 : null;\n\tif (ga) {\n\t\tlogger.debug('google api already loaded');\n\t\treturn res();\n\t} else {\n\t\tsetTimeout(() => {\n\t\t\treturn res();\n\t\t}, 2000);\n\t}\n});\n\nexport class GoogleOAuth {\n\tpublic initialized = false;\n\n\tconstructor() {\n\t\tthis.refreshGoogleToken = this.refreshGoogleToken.bind(this);\n\t\tthis._refreshGoogleTokenImpl = this._refreshGoogleTokenImpl.bind(this);\n\t}\n\n\tpublic async refreshGoogleToken() {\n\t\tif (!this.initialized) {\n\t\t\tlogger.debug('need to wait for the Google SDK loaded');\n\t\t\tawait waitForInit;\n\t\t\tthis.initialized = true;\n\t\t\tlogger.debug('finish waiting');\n\t\t}\n\n\t\treturn this._refreshGoogleTokenImpl();\n\t}\n\n\tprivate _refreshGoogleTokenImpl() {\n\t\tlet ga = null;\n\t\tif (browserOrNode().isBrowser)\n\t\t\tga = window['gapi'] && window['gapi'].auth2 ? window['gapi'].auth2 : null;\n\t\tif (!ga) {\n\t\t\tlogger.debug('no gapi auth2 available');\n\t\t\treturn Promise.reject('no gapi auth2 available');\n\t\t}\n\n\t\treturn new Promise((res, rej) => {\n\t\t\tga.getAuthInstance()\n\t\t\t\t.then(googleAuth => {\n\t\t\t\t\tif (!googleAuth) {\n\t\t\t\t\t\tlogger.debug('google Auth undefined');\n\t\t\t\t\t\trej(new NonRetryableError('google Auth undefined'));\n\t\t\t\t\t}\n\n\t\t\t\t\tconst googleUser = googleAuth.currentUser.get();\n\t\t\t\t\t// refresh the token\n\t\t\t\t\tif (googleUser.isSignedIn()) {\n\t\t\t\t\t\tlogger.debug('refreshing the google access token');\n\t\t\t\t\t\tgoogleUser\n\t\t\t\t\t\t\t.reloadAuthResponse()\n\t\t\t\t\t\t\t.then(authResponse => {\n\t\t\t\t\t\t\t\tconst { id_token, expires_at } = authResponse;\n\t\t\t\t\t\t\t\tres({ token: id_token, expires_at });\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\t\t\tif (err && err.error === 'network_error') {\n\t\t\t\t\t\t\t\t\t// Not using NonRetryableError so handler will be retried\n\t\t\t\t\t\t\t\t\trej('Network error reloading google auth response');\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\t\tnew NonRetryableError(\n\t\t\t\t\t\t\t\t\t\t\t'Failed to reload google auth response'\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\trej(new NonRetryableError('User is not signed in with Google'));\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tlogger.debug('Failed to refresh google token', err);\n\t\t\t\t\trej(new NonRetryableError('Failed to refresh google token'));\n\t\t\t\t});\n\t\t});\n\t}\n}\n\n/**\n * @deprecated use named import\n */\nexport default GoogleOAuth;\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { ConsoleLogger as Logger } from '../Logger';\nimport { browserOrNode } from '../JS';\nimport { NonRetryableError } from '../Util';\n\nconst logger = new Logger('CognitoCredentials');\n\nconst waitForInit = new Promise((res, rej) => {\n\tif (!browserOrNode().isBrowser) {\n\t\tlogger.debug('not in the browser, directly resolved');\n\t\treturn res();\n\t}\n\tconst fb = window['FB'];\n\tif (fb) {\n\t\tlogger.debug('FB SDK already loaded');\n\t\treturn res();\n\t} else {\n\t\tsetTimeout(() => {\n\t\t\treturn res();\n\t\t}, 2000);\n\t}\n});\n\nexport class FacebookOAuth {\n\tpublic initialized = false;\n\n\tconstructor() {\n\t\tthis.refreshFacebookToken = this.refreshFacebookToken.bind(this);\n\t\tthis._refreshFacebookTokenImpl = this._refreshFacebookTokenImpl.bind(this);\n\t}\n\n\tpublic async refreshFacebookToken() {\n\t\tif (!this.initialized) {\n\t\t\tlogger.debug('need to wait for the Facebook SDK loaded');\n\t\t\tawait waitForInit;\n\t\t\tthis.initialized = true;\n\t\t\tlogger.debug('finish waiting');\n\t\t}\n\n\t\treturn this._refreshFacebookTokenImpl();\n\t}\n\n\tprivate _refreshFacebookTokenImpl() {\n\t\tlet fb = null;\n\t\tif (browserOrNode().isBrowser) fb = window['FB'];\n\t\tif (!fb) {\n\t\t\tconst errorMessage = 'no fb sdk available';\n\t\t\tlogger.debug(errorMessage);\n\t\t\treturn Promise.reject(new NonRetryableError(errorMessage));\n\t\t}\n\n\t\treturn new Promise((res, rej) => {\n\t\t\tfb.getLoginStatus(\n\t\t\t\tfbResponse => {\n\t\t\t\t\tif (!fbResponse || !fbResponse.authResponse) {\n\t\t\t\t\t\tconst errorMessage =\n\t\t\t\t\t\t\t'no response from facebook when refreshing the jwt token';\n\t\t\t\t\t\tlogger.debug(errorMessage);\n\t\t\t\t\t\t// There is no definitive indication for a network error in\n\t\t\t\t\t\t// fbResponse, so we are treating it as an invalid token.\n\t\t\t\t\t\trej(new NonRetryableError(errorMessage));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst response = fbResponse.authResponse;\n\t\t\t\t\t\tconst { accessToken, expiresIn } = response;\n\t\t\t\t\t\tconst date = new Date();\n\t\t\t\t\t\tconst expires_at = expiresIn * 1000 + date.getTime();\n\t\t\t\t\t\tif (!accessToken) {\n\t\t\t\t\t\t\tconst errorMessage = 'the jwtToken is undefined';\n\t\t\t\t\t\t\tlogger.debug(errorMessage);\n\t\t\t\t\t\t\trej(new NonRetryableError(errorMessage));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tres({\n\t\t\t\t\t\t\ttoken: accessToken,\n\t\t\t\t\t\t\texpires_at,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ scope: 'public_profile,email' }\n\t\t\t);\n\t\t});\n\t}\n}\n\n/**\n * @deprecated use named import\n */\nexport default FacebookOAuth;\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { GoogleOAuth as GoogleOAuthClass } from './GoogleOAuth';\nimport { FacebookOAuth as FacebookOAuthClass } from './FacebookOAuth';\n\nexport const GoogleOAuth = new GoogleOAuthClass();\nexport const FacebookOAuth = new FacebookOAuthClass();\n","import { ConsoleLogger as LoggerClass } from './Logger';\n\nconst logger = new LoggerClass('Amplify');\n\nexport class AmplifyClass {\n\t// Everything that is `register`ed is tracked here\n\tprivate _components = [];\n\tprivate _config = {};\n\n\t// All modules (with `getModuleName()`) are stored here for dependency injection\n\tprivate _modules = {};\n\n\t// for backward compatibility to avoid breaking change\n\t// if someone is using like Amplify.Auth\n\tAuth = null;\n\tAnalytics = null;\n\tAPI = null;\n\tCredentials = null;\n\tStorage = null;\n\tI18n = null;\n\tCache = null;\n\tPubSub = null;\n\tInteractions = null;\n\tPushnotification = null;\n\tUI = null;\n\tXR = null;\n\tPredictions = null;\n\tDataStore = null;\n\tGeo = null;\n\n\tLogger = LoggerClass;\n\tServiceWorker = null;\n\n\tregister(comp) {\n\t\tlogger.debug('component registered in amplify', comp);\n\t\tthis._components.push(comp);\n\t\tif (typeof comp.getModuleName === 'function') {\n\t\t\tthis._modules[comp.getModuleName()] = comp;\n\t\t\tthis[comp.getModuleName()] = comp;\n\t\t} else {\n\t\t\tlogger.debug('no getModuleName method for component', comp);\n\t\t}\n\n\t\t// Finally configure this new component(category) loaded\n\t\t// With the new modularization changes in Amplify V3, all the Amplify\n\t\t// component are not loaded/registered right away but when they are\n\t\t// imported (and hence instantiated) in the client's app. This ensures\n\t\t// that all new components imported get correctly configured with the\n\t\t// configuration that Amplify.configure() was called with.\n\t\tcomp.configure(this._config);\n\t}\n\n\tconfigure(config?) {\n\t\tif (!config) return this._config;\n\n\t\tthis._config = Object.assign(this._config, config);\n\t\tlogger.debug('amplify config', this._config);\n\n\t\t// Dependency Injection via property-setting.\n\t\t// This avoids introducing a public method/interface/setter that's difficult to remove later.\n\t\t// Plus, it reduces `if` statements within the `constructor` and `configure` of each module\n\t\tObject.entries(this._modules).forEach(([Name, comp]) => {\n\t\t\t// e.g. Auth.*\n\t\t\tObject.keys(comp).forEach(property => {\n\t\t\t\t// e.g. Auth[\"Credentials\"] = this._modules[\"Credentials\"] when set\n\t\t\t\tif (this._modules[property]) {\n\t\t\t\t\tcomp[property] = this._modules[property];\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tthis._components.map(comp => {\n\t\t\tcomp.configure(this._config);\n\t\t});\n\n\t\treturn this._config;\n\t}\n\n\taddPluggable(pluggable) {\n\t\tif (\n\t\t\tpluggable &&\n\t\t\tpluggable['getCategory'] &&\n\t\t\ttypeof pluggable['getCategory'] === 'function'\n\t\t) {\n\t\t\tthis._components.map(comp => {\n\t\t\t\tif (\n\t\t\t\t\tcomp['addPluggable'] &&\n\t\t\t\t\ttypeof comp['addPluggable'] === 'function'\n\t\t\t\t) {\n\t\t\t\t\tcomp.addPluggable(pluggable);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n}\n\nexport const Amplify = new AmplifyClass();\n\n/**\n * @deprecated use named import\n */\nexport default Amplify;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { SmithyException as __SmithyException } from \"@aws-sdk/smithy-client\";\nimport { MetadataBearer as $MetadataBearer } from \"@aws-sdk/types\";\n\nexport enum AmbiguousRoleResolutionType {\n AUTHENTICATED_ROLE = \"AuthenticatedRole\",\n DENY = \"Deny\",\n}\n\n/**\n *

A provider representing an Amazon Cognito user pool and its client ID.

\n */\nexport interface CognitoIdentityProvider {\n /**\n *

The provider name for an Amazon Cognito user pool. For example,\n * cognito-idp.us-east-1.amazonaws.com/us-east-1_123456789.

\n */\n ProviderName?: string;\n\n /**\n *

The client ID for the Amazon Cognito user pool.

\n */\n ClientId?: string;\n\n /**\n *

TRUE if server-side token validation is enabled for the identity provider’s\n * token.

\n *

Once you set ServerSideTokenCheck to TRUE for an identity pool, that\n * identity pool will check with the integrated user pools to make sure that the user has not\n * been globally signed out or deleted before the identity pool provides an OIDC token or AWS\n * credentials for the user.

\n *

If the user is signed out or deleted, the identity pool will return a 400 Not\n * Authorized error.

\n */\n ServerSideTokenCheck?: boolean;\n}\n\nexport namespace CognitoIdentityProvider {\n export const filterSensitiveLog = (obj: CognitoIdentityProvider): any => ({\n ...obj,\n });\n}\n\n/**\n *

Input to the CreateIdentityPool action.

\n */\nexport interface CreateIdentityPoolInput {\n /**\n *

A string that you provide.

\n */\n IdentityPoolName: string | undefined;\n\n /**\n *

TRUE if the identity pool supports unauthenticated logins.

\n */\n AllowUnauthenticatedIdentities: boolean | undefined;\n\n /**\n *

Enables or disables the Basic (Classic) authentication flow. For more information, see\n * Identity Pools (Federated Identities) Authentication Flow in the Amazon Cognito Developer Guide.

\n */\n AllowClassicFlow?: boolean;\n\n /**\n *

Optional key:value pairs mapping provider names to provider app IDs.

\n */\n SupportedLoginProviders?: { [key: string]: string };\n\n /**\n *

The \"domain\" by which Cognito will refer to your users. This name acts as a\n * placeholder that allows your backend and the Cognito service to communicate about the\n * developer provider. For the DeveloperProviderName, you can use letters as well\n * as period (.), underscore (_), and dash\n * (-).

\n *

Once you have set a developer provider name, you cannot change it. Please take care\n * in setting this parameter.

\n */\n DeveloperProviderName?: string;\n\n /**\n *

A list of OpendID Connect provider ARNs.

\n */\n OpenIdConnectProviderARNs?: string[];\n\n /**\n *

An array of Amazon Cognito user pools and their client IDs.

\n */\n CognitoIdentityProviders?: CognitoIdentityProvider[];\n\n /**\n *

An array of Amazon Resource Names (ARNs) of the SAML provider for your identity\n * pool.

\n */\n SamlProviderARNs?: string[];\n\n /**\n *

Tags to assign to the identity pool. A tag is a label that you can apply to identity\n * pools to categorize and manage them in different ways, such as by purpose, owner,\n * environment, or other criteria.

\n */\n IdentityPoolTags?: { [key: string]: string };\n}\n\nexport namespace CreateIdentityPoolInput {\n export const filterSensitiveLog = (obj: CreateIdentityPoolInput): any => ({\n ...obj,\n });\n}\n\n/**\n *

An object representing an Amazon Cognito identity pool.

\n */\nexport interface IdentityPool {\n /**\n *

An identity pool ID in the format REGION:GUID.

\n */\n IdentityPoolId: string | undefined;\n\n /**\n *

A string that you provide.

\n */\n IdentityPoolName: string | undefined;\n\n /**\n *

TRUE if the identity pool supports unauthenticated logins.

\n */\n AllowUnauthenticatedIdentities: boolean | undefined;\n\n /**\n *

Enables or disables the Basic (Classic) authentication flow. For more information, see\n * Identity Pools (Federated Identities) Authentication Flow in the Amazon Cognito Developer Guide.

\n */\n AllowClassicFlow?: boolean;\n\n /**\n *

Optional key:value pairs mapping provider names to provider app IDs.

\n */\n SupportedLoginProviders?: { [key: string]: string };\n\n /**\n *

The \"domain\" by which Cognito will refer to your users.

\n */\n DeveloperProviderName?: string;\n\n /**\n *

A list of OpendID Connect provider ARNs.

\n */\n OpenIdConnectProviderARNs?: string[];\n\n /**\n *

A list representing an Amazon Cognito user pool and its client ID.

\n */\n CognitoIdentityProviders?: CognitoIdentityProvider[];\n\n /**\n *

An array of Amazon Resource Names (ARNs) of the SAML provider for your identity\n * pool.

\n */\n SamlProviderARNs?: string[];\n\n /**\n *

The tags that are assigned to the identity pool. A tag is a label that you can apply to\n * identity pools to categorize and manage them in different ways, such as by purpose, owner,\n * environment, or other criteria.

\n */\n IdentityPoolTags?: { [key: string]: string };\n}\n\nexport namespace IdentityPool {\n export const filterSensitiveLog = (obj: IdentityPool): any => ({\n ...obj,\n });\n}\n\n/**\n *

Thrown when the service encounters an error during processing the request.

\n */\nexport interface InternalErrorException extends __SmithyException, $MetadataBearer {\n name: \"InternalErrorException\";\n $fault: \"server\";\n /**\n *

The message returned by an InternalErrorException.

\n */\n message?: string;\n}\n\nexport namespace InternalErrorException {\n export const filterSensitiveLog = (obj: InternalErrorException): any => ({\n ...obj,\n });\n}\n\n/**\n *

Thrown for missing or bad input parameter(s).

\n */\nexport interface InvalidParameterException extends __SmithyException, $MetadataBearer {\n name: \"InvalidParameterException\";\n $fault: \"client\";\n /**\n *

The message returned by an InvalidParameterException.

\n */\n message?: string;\n}\n\nexport namespace InvalidParameterException {\n export const filterSensitiveLog = (obj: InvalidParameterException): any => ({\n ...obj,\n });\n}\n\n/**\n *

Thrown when the total number of user pools has exceeded a preset limit.

\n */\nexport interface LimitExceededException extends __SmithyException, $MetadataBearer {\n name: \"LimitExceededException\";\n $fault: \"client\";\n /**\n *

The message returned by a LimitExceededException.

\n */\n message?: string;\n}\n\nexport namespace LimitExceededException {\n export const filterSensitiveLog = (obj: LimitExceededException): any => ({\n ...obj,\n });\n}\n\n/**\n *

Thrown when a user is not authorized to access the requested resource.

\n */\nexport interface NotAuthorizedException extends __SmithyException, $MetadataBearer {\n name: \"NotAuthorizedException\";\n $fault: \"client\";\n /**\n *

The message returned by a NotAuthorizedException

\n */\n message?: string;\n}\n\nexport namespace NotAuthorizedException {\n export const filterSensitiveLog = (obj: NotAuthorizedException): any => ({\n ...obj,\n });\n}\n\n/**\n *

Thrown when a user tries to use a login which is already linked to another\n * account.

\n */\nexport interface ResourceConflictException extends __SmithyException, $MetadataBearer {\n name: \"ResourceConflictException\";\n $fault: \"client\";\n /**\n *

The message returned by a ResourceConflictException.

\n */\n message?: string;\n}\n\nexport namespace ResourceConflictException {\n export const filterSensitiveLog = (obj: ResourceConflictException): any => ({\n ...obj,\n });\n}\n\n/**\n *

Thrown when a request is throttled.

\n */\nexport interface TooManyRequestsException extends __SmithyException, $MetadataBearer {\n name: \"TooManyRequestsException\";\n $fault: \"client\";\n /**\n *

Message returned by a TooManyRequestsException

\n */\n message?: string;\n}\n\nexport namespace TooManyRequestsException {\n export const filterSensitiveLog = (obj: TooManyRequestsException): any => ({\n ...obj,\n });\n}\n\n/**\n *

Input to the DeleteIdentities action.

\n */\nexport interface DeleteIdentitiesInput {\n /**\n *

A list of 1-60 identities that you want to delete.

\n */\n IdentityIdsToDelete: string[] | undefined;\n}\n\nexport namespace DeleteIdentitiesInput {\n export const filterSensitiveLog = (obj: DeleteIdentitiesInput): any => ({\n ...obj,\n });\n}\n\nexport enum ErrorCode {\n ACCESS_DENIED = \"AccessDenied\",\n INTERNAL_SERVER_ERROR = \"InternalServerError\",\n}\n\n/**\n *

An array of UnprocessedIdentityId objects, each of which contains an ErrorCode and\n * IdentityId.

\n */\nexport interface UnprocessedIdentityId {\n /**\n *

A unique identifier in the format REGION:GUID.

\n */\n IdentityId?: string;\n\n /**\n *

The error code indicating the type of error that occurred.

\n */\n ErrorCode?: ErrorCode | string;\n}\n\nexport namespace UnprocessedIdentityId {\n export const filterSensitiveLog = (obj: UnprocessedIdentityId): any => ({\n ...obj,\n });\n}\n\n/**\n *

Returned in response to a successful DeleteIdentities\n * operation.

\n */\nexport interface DeleteIdentitiesResponse {\n /**\n *

An array of UnprocessedIdentityId objects, each of which contains an ErrorCode and\n * IdentityId.

\n */\n UnprocessedIdentityIds?: UnprocessedIdentityId[];\n}\n\nexport namespace DeleteIdentitiesResponse {\n export const filterSensitiveLog = (obj: DeleteIdentitiesResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Input to the DeleteIdentityPool action.

\n */\nexport interface DeleteIdentityPoolInput {\n /**\n *

An identity pool ID in the format REGION:GUID.

\n */\n IdentityPoolId: string | undefined;\n}\n\nexport namespace DeleteIdentityPoolInput {\n export const filterSensitiveLog = (obj: DeleteIdentityPoolInput): any => ({\n ...obj,\n });\n}\n\n/**\n *

Thrown when the requested resource (for example, a dataset or record) does not\n * exist.

\n */\nexport interface ResourceNotFoundException extends __SmithyException, $MetadataBearer {\n name: \"ResourceNotFoundException\";\n $fault: \"client\";\n /**\n *

The message returned by a ResourceNotFoundException.

\n */\n message?: string;\n}\n\nexport namespace ResourceNotFoundException {\n export const filterSensitiveLog = (obj: ResourceNotFoundException): any => ({\n ...obj,\n });\n}\n\n/**\n *

Input to the DescribeIdentity action.

\n */\nexport interface DescribeIdentityInput {\n /**\n *

A unique identifier in the format REGION:GUID.

\n */\n IdentityId: string | undefined;\n}\n\nexport namespace DescribeIdentityInput {\n export const filterSensitiveLog = (obj: DescribeIdentityInput): any => ({\n ...obj,\n });\n}\n\n/**\n *

A description of the identity.

\n */\nexport interface IdentityDescription {\n /**\n *

A unique identifier in the format REGION:GUID.

\n */\n IdentityId?: string;\n\n /**\n *

The provider names.

\n */\n Logins?: string[];\n\n /**\n *

Date on which the identity was created.

\n */\n CreationDate?: Date;\n\n /**\n *

Date on which the identity was last modified.

\n */\n LastModifiedDate?: Date;\n}\n\nexport namespace IdentityDescription {\n export const filterSensitiveLog = (obj: IdentityDescription): any => ({\n ...obj,\n });\n}\n\n/**\n *

Input to the DescribeIdentityPool action.

\n */\nexport interface DescribeIdentityPoolInput {\n /**\n *

An identity pool ID in the format REGION:GUID.

\n */\n IdentityPoolId: string | undefined;\n}\n\nexport namespace DescribeIdentityPoolInput {\n export const filterSensitiveLog = (obj: DescribeIdentityPoolInput): any => ({\n ...obj,\n });\n}\n\n/**\n *

An exception thrown when a dependent service such as Facebook or Twitter is not\n * responding

\n */\nexport interface ExternalServiceException extends __SmithyException, $MetadataBearer {\n name: \"ExternalServiceException\";\n $fault: \"client\";\n /**\n *

The message returned by an ExternalServiceException

\n */\n message?: string;\n}\n\nexport namespace ExternalServiceException {\n export const filterSensitiveLog = (obj: ExternalServiceException): any => ({\n ...obj,\n });\n}\n\n/**\n *

Input to the GetCredentialsForIdentity action.

\n */\nexport interface GetCredentialsForIdentityInput {\n /**\n *

A unique identifier in the format REGION:GUID.

\n */\n IdentityId: string | undefined;\n\n /**\n *

A set of optional name-value pairs that map provider names to provider tokens. The\n * name-value pair will follow the syntax \"provider_name\":\n * \"provider_user_identifier\".

\n *

Logins should not be specified when trying to get credentials for an unauthenticated\n * identity.

\n *

The Logins parameter is required when using identities associated with external\n * identity providers such as FaceBook. For examples of Logins maps, see the code\n * examples in the External Identity Providers section of the Amazon Cognito Developer\n * Guide.

\n */\n Logins?: { [key: string]: string };\n\n /**\n *

The Amazon Resource Name (ARN) of the role to be assumed when multiple roles were\n * received in the token from the identity provider. For example, a SAML-based identity\n * provider. This parameter is optional for identity providers that do not support role\n * customization.

\n */\n CustomRoleArn?: string;\n}\n\nexport namespace GetCredentialsForIdentityInput {\n export const filterSensitiveLog = (obj: GetCredentialsForIdentityInput): any => ({\n ...obj,\n });\n}\n\n/**\n *

Credentials for the provided identity ID.

\n */\nexport interface Credentials {\n /**\n *

The Access Key portion of the credentials.

\n */\n AccessKeyId?: string;\n\n /**\n *

The Secret Access Key portion of the credentials

\n */\n SecretKey?: string;\n\n /**\n *

The Session Token portion of the credentials

\n */\n SessionToken?: string;\n\n /**\n *

The date at which these credentials will expire.

\n */\n Expiration?: Date;\n}\n\nexport namespace Credentials {\n export const filterSensitiveLog = (obj: Credentials): any => ({\n ...obj,\n });\n}\n\n/**\n *

Returned in response to a successful GetCredentialsForIdentity\n * operation.

\n */\nexport interface GetCredentialsForIdentityResponse {\n /**\n *

A unique identifier in the format REGION:GUID.

\n */\n IdentityId?: string;\n\n /**\n *

Credentials for the provided identity ID.

\n */\n Credentials?: Credentials;\n}\n\nexport namespace GetCredentialsForIdentityResponse {\n export const filterSensitiveLog = (obj: GetCredentialsForIdentityResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Thrown if the identity pool has no role associated for the given auth type\n * (auth/unauth) or if the AssumeRole fails.

\n */\nexport interface InvalidIdentityPoolConfigurationException extends __SmithyException, $MetadataBearer {\n name: \"InvalidIdentityPoolConfigurationException\";\n $fault: \"client\";\n /**\n *

The message returned for an InvalidIdentityPoolConfigurationException\n *

\n */\n message?: string;\n}\n\nexport namespace InvalidIdentityPoolConfigurationException {\n export const filterSensitiveLog = (obj: InvalidIdentityPoolConfigurationException): any => ({\n ...obj,\n });\n}\n\n/**\n *

Input to the GetId action.

\n */\nexport interface GetIdInput {\n /**\n *

A standard AWS account ID (9+ digits).

\n */\n AccountId?: string;\n\n /**\n *

An identity pool ID in the format REGION:GUID.

\n */\n IdentityPoolId: string | undefined;\n\n /**\n *

A set of optional name-value pairs that map provider names to provider tokens. The\n * available provider names for Logins are as follows:

\n *
    \n *
  • \n *

    Facebook: graph.facebook.com\n *

    \n *
  • \n *
  • \n *

    Amazon Cognito user pool:\n * cognito-idp..amazonaws.com/,\n * for example, cognito-idp.us-east-1.amazonaws.com/us-east-1_123456789.\n *

    \n *
  • \n *
  • \n *

    Google: accounts.google.com\n *

    \n *
  • \n *
  • \n *

    Amazon: www.amazon.com\n *

    \n *
  • \n *
  • \n *

    Twitter: api.twitter.com\n *

    \n *
  • \n *
  • \n *

    Digits: www.digits.com\n *

    \n *
  • \n *
\n */\n Logins?: { [key: string]: string };\n}\n\nexport namespace GetIdInput {\n export const filterSensitiveLog = (obj: GetIdInput): any => ({\n ...obj,\n });\n}\n\n/**\n *

Returned in response to a GetId request.

\n */\nexport interface GetIdResponse {\n /**\n *

A unique identifier in the format REGION:GUID.

\n */\n IdentityId?: string;\n}\n\nexport namespace GetIdResponse {\n export const filterSensitiveLog = (obj: GetIdResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Input to the GetIdentityPoolRoles action.

\n */\nexport interface GetIdentityPoolRolesInput {\n /**\n *

An identity pool ID in the format REGION:GUID.

\n */\n IdentityPoolId: string | undefined;\n}\n\nexport namespace GetIdentityPoolRolesInput {\n export const filterSensitiveLog = (obj: GetIdentityPoolRolesInput): any => ({\n ...obj,\n });\n}\n\nexport enum MappingRuleMatchType {\n CONTAINS = \"Contains\",\n EQUALS = \"Equals\",\n NOT_EQUAL = \"NotEqual\",\n STARTS_WITH = \"StartsWith\",\n}\n\n/**\n *

A rule that maps a claim name, a claim value, and a match type to a role\n * ARN.

\n */\nexport interface MappingRule {\n /**\n *

The claim name that must be present in the token, for example, \"isAdmin\" or\n * \"paid\".

\n */\n Claim: string | undefined;\n\n /**\n *

The match condition that specifies how closely the claim value in the IdP token must\n * match Value.

\n */\n MatchType: MappingRuleMatchType | string | undefined;\n\n /**\n *

A brief string that the claim must match, for example, \"paid\" or \"yes\".

\n */\n Value: string | undefined;\n\n /**\n *

The role ARN.

\n */\n RoleARN: string | undefined;\n}\n\nexport namespace MappingRule {\n export const filterSensitiveLog = (obj: MappingRule): any => ({\n ...obj,\n });\n}\n\n/**\n *

A container for rules.

\n */\nexport interface RulesConfigurationType {\n /**\n *

An array of rules. You can specify up to 25 rules per identity provider.

\n *

Rules are evaluated in order. The first one to match specifies the role.

\n */\n Rules: MappingRule[] | undefined;\n}\n\nexport namespace RulesConfigurationType {\n export const filterSensitiveLog = (obj: RulesConfigurationType): any => ({\n ...obj,\n });\n}\n\nexport enum RoleMappingType {\n RULES = \"Rules\",\n TOKEN = \"Token\",\n}\n\n/**\n *

A role mapping.

\n */\nexport interface RoleMapping {\n /**\n *

The role mapping type. Token will use cognito:roles and\n * cognito:preferred_role claims from the Cognito identity provider token to\n * map groups to roles. Rules will attempt to match claims from the token to map to a\n * role.

\n */\n Type: RoleMappingType | string | undefined;\n\n /**\n *

If you specify Token or Rules as the Type,\n * AmbiguousRoleResolution is required.

\n *

Specifies the action to be taken if either no rules match the claim value for the\n * Rules type, or there is no cognito:preferred_role claim and\n * there are multiple cognito:roles matches for the Token\n * type.

\n */\n AmbiguousRoleResolution?: AmbiguousRoleResolutionType | string;\n\n /**\n *

The rules to be used for mapping users to roles.

\n *

If you specify Rules as the role mapping type, RulesConfiguration is\n * required.

\n */\n RulesConfiguration?: RulesConfigurationType;\n}\n\nexport namespace RoleMapping {\n export const filterSensitiveLog = (obj: RoleMapping): any => ({\n ...obj,\n });\n}\n\n/**\n *

Returned in response to a successful GetIdentityPoolRoles\n * operation.

\n */\nexport interface GetIdentityPoolRolesResponse {\n /**\n *

An identity pool ID in the format REGION:GUID.

\n */\n IdentityPoolId?: string;\n\n /**\n *

The map of roles associated with this pool. Currently only authenticated and\n * unauthenticated roles are supported.

\n */\n Roles?: { [key: string]: string };\n\n /**\n *

How users for a specific identity provider are to mapped to roles. This is a\n * String-to-RoleMapping object map. The string identifies the identity\n * provider, for example, \"graph.facebook.com\" or\n * \"cognito-idp.us-east-1.amazonaws.com/us-east-1_abcdefghi:app_client_id\".

\n */\n RoleMappings?: { [key: string]: RoleMapping };\n}\n\nexport namespace GetIdentityPoolRolesResponse {\n export const filterSensitiveLog = (obj: GetIdentityPoolRolesResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Input to the GetOpenIdToken action.

\n */\nexport interface GetOpenIdTokenInput {\n /**\n *

A unique identifier in the format REGION:GUID.

\n */\n IdentityId: string | undefined;\n\n /**\n *

A set of optional name-value pairs that map provider names to provider tokens. When\n * using graph.facebook.com and www.amazon.com, supply the access_token returned from the\n * provider's authflow. For accounts.google.com, an Amazon Cognito user pool provider, or any\n * other OpenId Connect provider, always include the id_token.

\n */\n Logins?: { [key: string]: string };\n}\n\nexport namespace GetOpenIdTokenInput {\n export const filterSensitiveLog = (obj: GetOpenIdTokenInput): any => ({\n ...obj,\n });\n}\n\n/**\n *

Returned in response to a successful GetOpenIdToken request.

\n */\nexport interface GetOpenIdTokenResponse {\n /**\n *

A unique identifier in the format REGION:GUID. Note that the IdentityId returned may\n * not match the one passed on input.

\n */\n IdentityId?: string;\n\n /**\n *

An OpenID token, valid for 10 minutes.

\n */\n Token?: string;\n}\n\nexport namespace GetOpenIdTokenResponse {\n export const filterSensitiveLog = (obj: GetOpenIdTokenResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

The provided developer user identifier is already registered with Cognito under a\n * different identity ID.

\n */\nexport interface DeveloperUserAlreadyRegisteredException extends __SmithyException, $MetadataBearer {\n name: \"DeveloperUserAlreadyRegisteredException\";\n $fault: \"client\";\n /**\n *

This developer user identifier is already registered with Cognito.

\n */\n message?: string;\n}\n\nexport namespace DeveloperUserAlreadyRegisteredException {\n export const filterSensitiveLog = (obj: DeveloperUserAlreadyRegisteredException): any => ({\n ...obj,\n });\n}\n\n/**\n *

Input to the GetOpenIdTokenForDeveloperIdentity action.

\n */\nexport interface GetOpenIdTokenForDeveloperIdentityInput {\n /**\n *

An identity pool ID in the format REGION:GUID.

\n */\n IdentityPoolId: string | undefined;\n\n /**\n *

A unique identifier in the format REGION:GUID.

\n */\n IdentityId?: string;\n\n /**\n *

A set of optional name-value pairs that map provider names to provider tokens. Each\n * name-value pair represents a user from a public provider or developer provider. If the user\n * is from a developer provider, the name-value pair will follow the syntax\n * \"developer_provider_name\": \"developer_user_identifier\". The developer\n * provider is the \"domain\" by which Cognito will refer to your users; you provided this\n * domain while creating/updating the identity pool. The developer user identifier is an\n * identifier from your backend that uniquely identifies a user. When you create an identity\n * pool, you can specify the supported logins.

\n */\n Logins: { [key: string]: string } | undefined;\n\n /**\n *

The expiration time of the token, in seconds. You can specify a custom expiration\n * time for the token so that you can cache it. If you don't provide an expiration time, the\n * token is valid for 15 minutes. You can exchange the token with Amazon STS for temporary AWS\n * credentials, which are valid for a maximum of one hour. The maximum token duration you can\n * set is 24 hours. You should take care in setting the expiration time for a token, as there\n * are significant security implications: an attacker could use a leaked token to access your\n * AWS resources for the token's duration.

\n * \n *

Please provide for a small grace period, usually no more than 5 minutes, to account for clock skew.

\n *
\n */\n TokenDuration?: number;\n}\n\nexport namespace GetOpenIdTokenForDeveloperIdentityInput {\n export const filterSensitiveLog = (obj: GetOpenIdTokenForDeveloperIdentityInput): any => ({\n ...obj,\n });\n}\n\n/**\n *

Returned in response to a successful GetOpenIdTokenForDeveloperIdentity\n * request.

\n */\nexport interface GetOpenIdTokenForDeveloperIdentityResponse {\n /**\n *

A unique identifier in the format REGION:GUID.

\n */\n IdentityId?: string;\n\n /**\n *

An OpenID token.

\n */\n Token?: string;\n}\n\nexport namespace GetOpenIdTokenForDeveloperIdentityResponse {\n export const filterSensitiveLog = (obj: GetOpenIdTokenForDeveloperIdentityResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Input to the ListIdentities action.

\n */\nexport interface ListIdentitiesInput {\n /**\n *

An identity pool ID in the format REGION:GUID.

\n */\n IdentityPoolId: string | undefined;\n\n /**\n *

The maximum number of identities to return.

\n */\n MaxResults: number | undefined;\n\n /**\n *

A pagination token.

\n */\n NextToken?: string;\n\n /**\n *

An optional boolean parameter that allows you to hide disabled identities. If\n * omitted, the ListIdentities API will include disabled identities in the response.

\n */\n HideDisabled?: boolean;\n}\n\nexport namespace ListIdentitiesInput {\n export const filterSensitiveLog = (obj: ListIdentitiesInput): any => ({\n ...obj,\n });\n}\n\n/**\n *

The response to a ListIdentities request.

\n */\nexport interface ListIdentitiesResponse {\n /**\n *

An identity pool ID in the format REGION:GUID.

\n */\n IdentityPoolId?: string;\n\n /**\n *

An object containing a set of identities and associated mappings.

\n */\n Identities?: IdentityDescription[];\n\n /**\n *

A pagination token.

\n */\n NextToken?: string;\n}\n\nexport namespace ListIdentitiesResponse {\n export const filterSensitiveLog = (obj: ListIdentitiesResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Input to the ListIdentityPools action.

\n */\nexport interface ListIdentityPoolsInput {\n /**\n *

The maximum number of identities to return.

\n */\n MaxResults: number | undefined;\n\n /**\n *

A pagination token.

\n */\n NextToken?: string;\n}\n\nexport namespace ListIdentityPoolsInput {\n export const filterSensitiveLog = (obj: ListIdentityPoolsInput): any => ({\n ...obj,\n });\n}\n\n/**\n *

A description of the identity pool.

\n */\nexport interface IdentityPoolShortDescription {\n /**\n *

An identity pool ID in the format REGION:GUID.

\n */\n IdentityPoolId?: string;\n\n /**\n *

A string that you provide.

\n */\n IdentityPoolName?: string;\n}\n\nexport namespace IdentityPoolShortDescription {\n export const filterSensitiveLog = (obj: IdentityPoolShortDescription): any => ({\n ...obj,\n });\n}\n\n/**\n *

The result of a successful ListIdentityPools action.

\n */\nexport interface ListIdentityPoolsResponse {\n /**\n *

The identity pools returned by the ListIdentityPools action.

\n */\n IdentityPools?: IdentityPoolShortDescription[];\n\n /**\n *

A pagination token.

\n */\n NextToken?: string;\n}\n\nexport namespace ListIdentityPoolsResponse {\n export const filterSensitiveLog = (obj: ListIdentityPoolsResponse): any => ({\n ...obj,\n });\n}\n\nexport interface ListTagsForResourceInput {\n /**\n *

The Amazon Resource Name (ARN) of the identity pool that the tags are assigned\n * to.

\n */\n ResourceArn: string | undefined;\n}\n\nexport namespace ListTagsForResourceInput {\n export const filterSensitiveLog = (obj: ListTagsForResourceInput): any => ({\n ...obj,\n });\n}\n\nexport interface ListTagsForResourceResponse {\n /**\n *

The tags that are assigned to the identity pool.

\n */\n Tags?: { [key: string]: string };\n}\n\nexport namespace ListTagsForResourceResponse {\n export const filterSensitiveLog = (obj: ListTagsForResourceResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Input to the LookupDeveloperIdentityInput action.

\n */\nexport interface LookupDeveloperIdentityInput {\n /**\n *

An identity pool ID in the format REGION:GUID.

\n */\n IdentityPoolId: string | undefined;\n\n /**\n *

A unique identifier in the format REGION:GUID.

\n */\n IdentityId?: string;\n\n /**\n *

A unique ID used by your backend authentication process to identify a user.\n * Typically, a developer identity provider would issue many developer user identifiers, in\n * keeping with the number of users.

\n */\n DeveloperUserIdentifier?: string;\n\n /**\n *

The maximum number of identities to return.

\n */\n MaxResults?: number;\n\n /**\n *

A pagination token. The first call you make will have NextToken set to\n * null. After that the service will return NextToken values as needed. For\n * example, let's say you make a request with MaxResults set to 10, and there are\n * 20 matches in the database. The service will return a pagination token as a part of the\n * response. This token can be used to call the API again and get results starting from the\n * 11th match.

\n */\n NextToken?: string;\n}\n\nexport namespace LookupDeveloperIdentityInput {\n export const filterSensitiveLog = (obj: LookupDeveloperIdentityInput): any => ({\n ...obj,\n });\n}\n\n/**\n *

Returned in response to a successful LookupDeveloperIdentity\n * action.

\n */\nexport interface LookupDeveloperIdentityResponse {\n /**\n *

A unique identifier in the format REGION:GUID.

\n */\n IdentityId?: string;\n\n /**\n *

This is the list of developer user identifiers associated with an identity ID.\n * Cognito supports the association of multiple developer user identifiers with an identity\n * ID.

\n */\n DeveloperUserIdentifierList?: string[];\n\n /**\n *

A pagination token. The first call you make will have NextToken set to\n * null. After that the service will return NextToken values as needed. For\n * example, let's say you make a request with MaxResults set to 10, and there are\n * 20 matches in the database. The service will return a pagination token as a part of the\n * response. This token can be used to call the API again and get results starting from the\n * 11th match.

\n */\n NextToken?: string;\n}\n\nexport namespace LookupDeveloperIdentityResponse {\n export const filterSensitiveLog = (obj: LookupDeveloperIdentityResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Input to the MergeDeveloperIdentities action.

\n */\nexport interface MergeDeveloperIdentitiesInput {\n /**\n *

User identifier for the source user. The value should be a\n * DeveloperUserIdentifier.

\n */\n SourceUserIdentifier: string | undefined;\n\n /**\n *

User identifier for the destination user. The value should be a\n * DeveloperUserIdentifier.

\n */\n DestinationUserIdentifier: string | undefined;\n\n /**\n *

The \"domain\" by which Cognito will refer to your users. This is a (pseudo) domain\n * name that you provide while creating an identity pool. This name acts as a placeholder that\n * allows your backend and the Cognito service to communicate about the developer provider.\n * For the DeveloperProviderName, you can use letters as well as period (.),\n * underscore (_), and dash (-).

\n */\n DeveloperProviderName: string | undefined;\n\n /**\n *

An identity pool ID in the format REGION:GUID.

\n */\n IdentityPoolId: string | undefined;\n}\n\nexport namespace MergeDeveloperIdentitiesInput {\n export const filterSensitiveLog = (obj: MergeDeveloperIdentitiesInput): any => ({\n ...obj,\n });\n}\n\n/**\n *

Returned in response to a successful MergeDeveloperIdentities\n * action.

\n */\nexport interface MergeDeveloperIdentitiesResponse {\n /**\n *

A unique identifier in the format REGION:GUID.

\n */\n IdentityId?: string;\n}\n\nexport namespace MergeDeveloperIdentitiesResponse {\n export const filterSensitiveLog = (obj: MergeDeveloperIdentitiesResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Thrown if there are parallel requests to modify a resource.

\n */\nexport interface ConcurrentModificationException extends __SmithyException, $MetadataBearer {\n name: \"ConcurrentModificationException\";\n $fault: \"client\";\n /**\n *

The message returned by a ConcurrentModificationException.

\n */\n message?: string;\n}\n\nexport namespace ConcurrentModificationException {\n export const filterSensitiveLog = (obj: ConcurrentModificationException): any => ({\n ...obj,\n });\n}\n\n/**\n *

Input to the SetIdentityPoolRoles action.

\n */\nexport interface SetIdentityPoolRolesInput {\n /**\n *

An identity pool ID in the format REGION:GUID.

\n */\n IdentityPoolId: string | undefined;\n\n /**\n *

The map of roles associated with this pool. For a given role, the key will be either\n * \"authenticated\" or \"unauthenticated\" and the value will be the Role ARN.

\n */\n Roles: { [key: string]: string } | undefined;\n\n /**\n *

How users for a specific identity provider are to mapped to roles. This is a string\n * to RoleMapping object map. The string identifies the identity provider,\n * for example, \"graph.facebook.com\" or\n * \"cognito-idp-east-1.amazonaws.com/us-east-1_abcdefghi:app_client_id\".

\n *

Up to 25 rules can be specified per identity provider.

\n */\n RoleMappings?: { [key: string]: RoleMapping };\n}\n\nexport namespace SetIdentityPoolRolesInput {\n export const filterSensitiveLog = (obj: SetIdentityPoolRolesInput): any => ({\n ...obj,\n });\n}\n\nexport interface TagResourceInput {\n /**\n *

The Amazon Resource Name (ARN) of the identity pool to assign the tags to.

\n */\n ResourceArn: string | undefined;\n\n /**\n *

The tags to assign to the identity pool.

\n */\n Tags: { [key: string]: string } | undefined;\n}\n\nexport namespace TagResourceInput {\n export const filterSensitiveLog = (obj: TagResourceInput): any => ({\n ...obj,\n });\n}\n\nexport interface TagResourceResponse {}\n\nexport namespace TagResourceResponse {\n export const filterSensitiveLog = (obj: TagResourceResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Input to the UnlinkDeveloperIdentity action.

\n */\nexport interface UnlinkDeveloperIdentityInput {\n /**\n *

A unique identifier in the format REGION:GUID.

\n */\n IdentityId: string | undefined;\n\n /**\n *

An identity pool ID in the format REGION:GUID.

\n */\n IdentityPoolId: string | undefined;\n\n /**\n *

The \"domain\" by which Cognito will refer to your users.

\n */\n DeveloperProviderName: string | undefined;\n\n /**\n *

A unique ID used by your backend authentication process to identify a user.

\n */\n DeveloperUserIdentifier: string | undefined;\n}\n\nexport namespace UnlinkDeveloperIdentityInput {\n export const filterSensitiveLog = (obj: UnlinkDeveloperIdentityInput): any => ({\n ...obj,\n });\n}\n\n/**\n *

Input to the UnlinkIdentity action.

\n */\nexport interface UnlinkIdentityInput {\n /**\n *

A unique identifier in the format REGION:GUID.

\n */\n IdentityId: string | undefined;\n\n /**\n *

A set of optional name-value pairs that map provider names to provider\n * tokens.

\n */\n Logins: { [key: string]: string } | undefined;\n\n /**\n *

Provider names to unlink from this identity.

\n */\n LoginsToRemove: string[] | undefined;\n}\n\nexport namespace UnlinkIdentityInput {\n export const filterSensitiveLog = (obj: UnlinkIdentityInput): any => ({\n ...obj,\n });\n}\n\nexport interface UntagResourceInput {\n /**\n *

The Amazon Resource Name (ARN) of the identity pool that the tags are assigned\n * to.

\n */\n ResourceArn: string | undefined;\n\n /**\n *

The keys of the tags to remove from the user pool.

\n */\n TagKeys: string[] | undefined;\n}\n\nexport namespace UntagResourceInput {\n export const filterSensitiveLog = (obj: UntagResourceInput): any => ({\n ...obj,\n });\n}\n\nexport interface UntagResourceResponse {}\n\nexport namespace UntagResourceResponse {\n export const filterSensitiveLog = (obj: UntagResourceResponse): any => ({\n ...obj,\n });\n}\n","import { HeaderBag, HttpMessage, HttpResponse as IHttpResponse } from \"@aws-sdk/types\";\n\ntype HttpResponseOptions = Partial & {\n statusCode: number;\n};\n\nexport interface HttpResponse extends IHttpResponse {}\n\nexport class HttpResponse {\n public statusCode: number;\n public headers: HeaderBag;\n public body?: any;\n\n constructor(options: HttpResponseOptions) {\n this.statusCode = options.statusCode;\n this.headers = options.headers || {};\n this.body = options.body;\n }\n\n static isInstance(response: unknown): response is HttpResponse {\n //determine if response is a valid HttpResponse\n if (!response) return false;\n const resp = response as any;\n return typeof resp.statusCode === \"number\" && typeof resp.headers === \"object\";\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Endpoint, HeaderBag, HttpMessage, HttpRequest as IHttpRequest, QueryParameterBag } from \"@aws-sdk/types\";\n\ntype HttpRequestOptions = Partial & Partial & { method?: string };\n\nexport interface HttpRequest extends IHttpRequest {}\n\nexport class HttpRequest implements HttpMessage, Endpoint {\n public method: string;\n public protocol: string;\n public hostname: string;\n public port?: number;\n public path: string;\n public query: QueryParameterBag;\n public headers: HeaderBag;\n public body?: any;\n\n constructor(options: HttpRequestOptions) {\n this.method = options.method || \"GET\";\n this.hostname = options.hostname || \"localhost\";\n this.port = options.port;\n this.query = options.query || {};\n this.headers = options.headers || {};\n this.body = options.body;\n this.protocol = options.protocol\n ? options.protocol.substr(-1) !== \":\"\n ? `${options.protocol}:`\n : options.protocol\n : \"https:\";\n this.path = options.path ? (options.path.charAt(0) !== \"/\" ? `/${options.path}` : options.path) : \"/\";\n }\n\n static isInstance(request: unknown): request is HttpRequest {\n //determine if request is a valid httpRequest\n if (!request) return false;\n const req: any = request;\n return (\n \"method\" in req &&\n \"protocol\" in req &&\n \"hostname\" in req &&\n \"path\" in req &&\n typeof req[\"query\"] === \"object\" &&\n typeof req[\"headers\"] === \"object\"\n );\n }\n\n clone(): HttpRequest {\n const cloned = new HttpRequest({\n ...this,\n headers: { ...this.headers },\n });\n if (cloned.query) cloned.query = cloneQuery(cloned.query);\n return cloned;\n }\n}\n\nfunction cloneQuery(query: QueryParameterBag): QueryParameterBag {\n return Object.keys(query).reduce((carry: QueryParameterBag, paramName: string) => {\n const param = query[paramName];\n return {\n ...carry,\n [paramName]: Array.isArray(param) ? [...param] : param,\n };\n }, {});\n}\n","import { CreateIdentityPoolCommandInput, CreateIdentityPoolCommandOutput } from \"../commands/CreateIdentityPoolCommand\";\nimport { DeleteIdentitiesCommandInput, DeleteIdentitiesCommandOutput } from \"../commands/DeleteIdentitiesCommand\";\nimport { DeleteIdentityPoolCommandInput, DeleteIdentityPoolCommandOutput } from \"../commands/DeleteIdentityPoolCommand\";\nimport { DescribeIdentityCommandInput, DescribeIdentityCommandOutput } from \"../commands/DescribeIdentityCommand\";\nimport {\n DescribeIdentityPoolCommandInput,\n DescribeIdentityPoolCommandOutput,\n} from \"../commands/DescribeIdentityPoolCommand\";\nimport {\n GetCredentialsForIdentityCommandInput,\n GetCredentialsForIdentityCommandOutput,\n} from \"../commands/GetCredentialsForIdentityCommand\";\nimport { GetIdCommandInput, GetIdCommandOutput } from \"../commands/GetIdCommand\";\nimport {\n GetIdentityPoolRolesCommandInput,\n GetIdentityPoolRolesCommandOutput,\n} from \"../commands/GetIdentityPoolRolesCommand\";\nimport { GetOpenIdTokenCommandInput, GetOpenIdTokenCommandOutput } from \"../commands/GetOpenIdTokenCommand\";\nimport {\n GetOpenIdTokenForDeveloperIdentityCommandInput,\n GetOpenIdTokenForDeveloperIdentityCommandOutput,\n} from \"../commands/GetOpenIdTokenForDeveloperIdentityCommand\";\nimport { ListIdentitiesCommandInput, ListIdentitiesCommandOutput } from \"../commands/ListIdentitiesCommand\";\nimport { ListIdentityPoolsCommandInput, ListIdentityPoolsCommandOutput } from \"../commands/ListIdentityPoolsCommand\";\nimport {\n ListTagsForResourceCommandInput,\n ListTagsForResourceCommandOutput,\n} from \"../commands/ListTagsForResourceCommand\";\nimport {\n LookupDeveloperIdentityCommandInput,\n LookupDeveloperIdentityCommandOutput,\n} from \"../commands/LookupDeveloperIdentityCommand\";\nimport {\n MergeDeveloperIdentitiesCommandInput,\n MergeDeveloperIdentitiesCommandOutput,\n} from \"../commands/MergeDeveloperIdentitiesCommand\";\nimport {\n SetIdentityPoolRolesCommandInput,\n SetIdentityPoolRolesCommandOutput,\n} from \"../commands/SetIdentityPoolRolesCommand\";\nimport { TagResourceCommandInput, TagResourceCommandOutput } from \"../commands/TagResourceCommand\";\nimport {\n UnlinkDeveloperIdentityCommandInput,\n UnlinkDeveloperIdentityCommandOutput,\n} from \"../commands/UnlinkDeveloperIdentityCommand\";\nimport { UnlinkIdentityCommandInput, UnlinkIdentityCommandOutput } from \"../commands/UnlinkIdentityCommand\";\nimport { UntagResourceCommandInput, UntagResourceCommandOutput } from \"../commands/UntagResourceCommand\";\nimport { UpdateIdentityPoolCommandInput, UpdateIdentityPoolCommandOutput } from \"../commands/UpdateIdentityPoolCommand\";\nimport {\n CognitoIdentityProvider,\n ConcurrentModificationException,\n CreateIdentityPoolInput,\n Credentials,\n DeleteIdentitiesInput,\n DeleteIdentitiesResponse,\n DeleteIdentityPoolInput,\n DescribeIdentityInput,\n DescribeIdentityPoolInput,\n DeveloperUserAlreadyRegisteredException,\n ExternalServiceException,\n GetCredentialsForIdentityInput,\n GetCredentialsForIdentityResponse,\n GetIdInput,\n GetIdResponse,\n GetIdentityPoolRolesInput,\n GetIdentityPoolRolesResponse,\n GetOpenIdTokenForDeveloperIdentityInput,\n GetOpenIdTokenForDeveloperIdentityResponse,\n GetOpenIdTokenInput,\n GetOpenIdTokenResponse,\n IdentityDescription,\n IdentityPool,\n IdentityPoolShortDescription,\n InternalErrorException,\n InvalidIdentityPoolConfigurationException,\n InvalidParameterException,\n LimitExceededException,\n ListIdentitiesInput,\n ListIdentitiesResponse,\n ListIdentityPoolsInput,\n ListIdentityPoolsResponse,\n ListTagsForResourceInput,\n ListTagsForResourceResponse,\n LookupDeveloperIdentityInput,\n LookupDeveloperIdentityResponse,\n MappingRule,\n MergeDeveloperIdentitiesInput,\n MergeDeveloperIdentitiesResponse,\n NotAuthorizedException,\n ResourceConflictException,\n ResourceNotFoundException,\n RoleMapping,\n RulesConfigurationType,\n SetIdentityPoolRolesInput,\n TagResourceInput,\n TagResourceResponse,\n TooManyRequestsException,\n UnlinkDeveloperIdentityInput,\n UnlinkIdentityInput,\n UnprocessedIdentityId,\n UntagResourceInput,\n UntagResourceResponse,\n} from \"../models/models_0\";\nimport { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from \"@aws-sdk/protocol-http\";\nimport { SmithyException as __SmithyException } from \"@aws-sdk/smithy-client\";\nimport {\n Endpoint as __Endpoint,\n HeaderBag as __HeaderBag,\n MetadataBearer as __MetadataBearer,\n ResponseMetadata as __ResponseMetadata,\n SerdeContext as __SerdeContext,\n} from \"@aws-sdk/types\";\n\nexport const serializeAws_json1_1CreateIdentityPoolCommand = async (\n input: CreateIdentityPoolCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.CreateIdentityPool\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1CreateIdentityPoolInput(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const serializeAws_json1_1DeleteIdentitiesCommand = async (\n input: DeleteIdentitiesCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.DeleteIdentities\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1DeleteIdentitiesInput(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const serializeAws_json1_1DeleteIdentityPoolCommand = async (\n input: DeleteIdentityPoolCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.DeleteIdentityPool\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1DeleteIdentityPoolInput(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const serializeAws_json1_1DescribeIdentityCommand = async (\n input: DescribeIdentityCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.DescribeIdentity\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1DescribeIdentityInput(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const serializeAws_json1_1DescribeIdentityPoolCommand = async (\n input: DescribeIdentityPoolCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.DescribeIdentityPool\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1DescribeIdentityPoolInput(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const serializeAws_json1_1GetCredentialsForIdentityCommand = async (\n input: GetCredentialsForIdentityCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.GetCredentialsForIdentity\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1GetCredentialsForIdentityInput(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const serializeAws_json1_1GetIdCommand = async (\n input: GetIdCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.GetId\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1GetIdInput(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const serializeAws_json1_1GetIdentityPoolRolesCommand = async (\n input: GetIdentityPoolRolesCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.GetIdentityPoolRoles\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1GetIdentityPoolRolesInput(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const serializeAws_json1_1GetOpenIdTokenCommand = async (\n input: GetOpenIdTokenCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.GetOpenIdToken\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1GetOpenIdTokenInput(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const serializeAws_json1_1GetOpenIdTokenForDeveloperIdentityCommand = async (\n input: GetOpenIdTokenForDeveloperIdentityCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.GetOpenIdTokenForDeveloperIdentity\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1GetOpenIdTokenForDeveloperIdentityInput(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const serializeAws_json1_1ListIdentitiesCommand = async (\n input: ListIdentitiesCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.ListIdentities\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1ListIdentitiesInput(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const serializeAws_json1_1ListIdentityPoolsCommand = async (\n input: ListIdentityPoolsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.ListIdentityPools\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1ListIdentityPoolsInput(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const serializeAws_json1_1ListTagsForResourceCommand = async (\n input: ListTagsForResourceCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.ListTagsForResource\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1ListTagsForResourceInput(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const serializeAws_json1_1LookupDeveloperIdentityCommand = async (\n input: LookupDeveloperIdentityCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.LookupDeveloperIdentity\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1LookupDeveloperIdentityInput(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const serializeAws_json1_1MergeDeveloperIdentitiesCommand = async (\n input: MergeDeveloperIdentitiesCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.MergeDeveloperIdentities\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1MergeDeveloperIdentitiesInput(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const serializeAws_json1_1SetIdentityPoolRolesCommand = async (\n input: SetIdentityPoolRolesCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.SetIdentityPoolRoles\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1SetIdentityPoolRolesInput(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const serializeAws_json1_1TagResourceCommand = async (\n input: TagResourceCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.TagResource\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1TagResourceInput(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const serializeAws_json1_1UnlinkDeveloperIdentityCommand = async (\n input: UnlinkDeveloperIdentityCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.UnlinkDeveloperIdentity\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1UnlinkDeveloperIdentityInput(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const serializeAws_json1_1UnlinkIdentityCommand = async (\n input: UnlinkIdentityCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.UnlinkIdentity\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1UnlinkIdentityInput(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const serializeAws_json1_1UntagResourceCommand = async (\n input: UntagResourceCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.UntagResource\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1UntagResourceInput(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const serializeAws_json1_1UpdateIdentityPoolCommand = async (\n input: UpdateIdentityPoolCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: __HeaderBag = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AWSCognitoIdentityService.UpdateIdentityPool\",\n };\n let body: any;\n body = JSON.stringify(serializeAws_json1_1IdentityPool(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\n\nexport const deserializeAws_json1_1CreateIdentityPoolCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1CreateIdentityPoolCommandError(output, context);\n }\n const data: any = await parseBody(output.body, context);\n let contents: any = {};\n contents = deserializeAws_json1_1IdentityPool(data, context);\n const response: CreateIdentityPoolCommandOutput = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1CreateIdentityPoolCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"LimitExceededException\":\n case \"com.amazonaws.cognitoidentity#LimitExceededException\":\n response = {\n ...(await deserializeAws_json1_1LimitExceededExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n response = {\n ...(await deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceConflictException\":\n case \"com.amazonaws.cognitoidentity#ResourceConflictException\":\n response = {\n ...(await deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_json1_1DeleteIdentitiesCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1DeleteIdentitiesCommandError(output, context);\n }\n const data: any = await parseBody(output.body, context);\n let contents: any = {};\n contents = deserializeAws_json1_1DeleteIdentitiesResponse(data, context);\n const response: DeleteIdentitiesCommandOutput = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1DeleteIdentitiesCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_json1_1DeleteIdentityPoolCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1DeleteIdentityPoolCommandError(output, context);\n }\n await collectBody(output.body, context);\n const response: DeleteIdentityPoolCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1DeleteIdentityPoolCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n response = {\n ...(await deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n response = {\n ...(await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_json1_1DescribeIdentityCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1DescribeIdentityCommandError(output, context);\n }\n const data: any = await parseBody(output.body, context);\n let contents: any = {};\n contents = deserializeAws_json1_1IdentityDescription(data, context);\n const response: DescribeIdentityCommandOutput = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1DescribeIdentityCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n response = {\n ...(await deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n response = {\n ...(await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_json1_1DescribeIdentityPoolCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1DescribeIdentityPoolCommandError(output, context);\n }\n const data: any = await parseBody(output.body, context);\n let contents: any = {};\n contents = deserializeAws_json1_1IdentityPool(data, context);\n const response: DescribeIdentityPoolCommandOutput = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1DescribeIdentityPoolCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n response = {\n ...(await deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n response = {\n ...(await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_json1_1GetCredentialsForIdentityCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1GetCredentialsForIdentityCommandError(output, context);\n }\n const data: any = await parseBody(output.body, context);\n let contents: any = {};\n contents = deserializeAws_json1_1GetCredentialsForIdentityResponse(data, context);\n const response: GetCredentialsForIdentityCommandOutput = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1GetCredentialsForIdentityCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ExternalServiceException\":\n case \"com.amazonaws.cognitoidentity#ExternalServiceException\":\n response = {\n ...(await deserializeAws_json1_1ExternalServiceExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidIdentityPoolConfigurationException\":\n case \"com.amazonaws.cognitoidentity#InvalidIdentityPoolConfigurationException\":\n response = {\n ...(await deserializeAws_json1_1InvalidIdentityPoolConfigurationExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n response = {\n ...(await deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceConflictException\":\n case \"com.amazonaws.cognitoidentity#ResourceConflictException\":\n response = {\n ...(await deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n response = {\n ...(await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_json1_1GetIdCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1GetIdCommandError(output, context);\n }\n const data: any = await parseBody(output.body, context);\n let contents: any = {};\n contents = deserializeAws_json1_1GetIdResponse(data, context);\n const response: GetIdCommandOutput = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1GetIdCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ExternalServiceException\":\n case \"com.amazonaws.cognitoidentity#ExternalServiceException\":\n response = {\n ...(await deserializeAws_json1_1ExternalServiceExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"LimitExceededException\":\n case \"com.amazonaws.cognitoidentity#LimitExceededException\":\n response = {\n ...(await deserializeAws_json1_1LimitExceededExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n response = {\n ...(await deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceConflictException\":\n case \"com.amazonaws.cognitoidentity#ResourceConflictException\":\n response = {\n ...(await deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n response = {\n ...(await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_json1_1GetIdentityPoolRolesCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1GetIdentityPoolRolesCommandError(output, context);\n }\n const data: any = await parseBody(output.body, context);\n let contents: any = {};\n contents = deserializeAws_json1_1GetIdentityPoolRolesResponse(data, context);\n const response: GetIdentityPoolRolesCommandOutput = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1GetIdentityPoolRolesCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n response = {\n ...(await deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceConflictException\":\n case \"com.amazonaws.cognitoidentity#ResourceConflictException\":\n response = {\n ...(await deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n response = {\n ...(await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_json1_1GetOpenIdTokenCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1GetOpenIdTokenCommandError(output, context);\n }\n const data: any = await parseBody(output.body, context);\n let contents: any = {};\n contents = deserializeAws_json1_1GetOpenIdTokenResponse(data, context);\n const response: GetOpenIdTokenCommandOutput = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1GetOpenIdTokenCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ExternalServiceException\":\n case \"com.amazonaws.cognitoidentity#ExternalServiceException\":\n response = {\n ...(await deserializeAws_json1_1ExternalServiceExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n response = {\n ...(await deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceConflictException\":\n case \"com.amazonaws.cognitoidentity#ResourceConflictException\":\n response = {\n ...(await deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n response = {\n ...(await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_json1_1GetOpenIdTokenForDeveloperIdentityCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1GetOpenIdTokenForDeveloperIdentityCommandError(output, context);\n }\n const data: any = await parseBody(output.body, context);\n let contents: any = {};\n contents = deserializeAws_json1_1GetOpenIdTokenForDeveloperIdentityResponse(data, context);\n const response: GetOpenIdTokenForDeveloperIdentityCommandOutput = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1GetOpenIdTokenForDeveloperIdentityCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"DeveloperUserAlreadyRegisteredException\":\n case \"com.amazonaws.cognitoidentity#DeveloperUserAlreadyRegisteredException\":\n response = {\n ...(await deserializeAws_json1_1DeveloperUserAlreadyRegisteredExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n response = {\n ...(await deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceConflictException\":\n case \"com.amazonaws.cognitoidentity#ResourceConflictException\":\n response = {\n ...(await deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n response = {\n ...(await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_json1_1ListIdentitiesCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1ListIdentitiesCommandError(output, context);\n }\n const data: any = await parseBody(output.body, context);\n let contents: any = {};\n contents = deserializeAws_json1_1ListIdentitiesResponse(data, context);\n const response: ListIdentitiesCommandOutput = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1ListIdentitiesCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n response = {\n ...(await deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n response = {\n ...(await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_json1_1ListIdentityPoolsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1ListIdentityPoolsCommandError(output, context);\n }\n const data: any = await parseBody(output.body, context);\n let contents: any = {};\n contents = deserializeAws_json1_1ListIdentityPoolsResponse(data, context);\n const response: ListIdentityPoolsCommandOutput = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1ListIdentityPoolsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n response = {\n ...(await deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n response = {\n ...(await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_json1_1ListTagsForResourceCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1ListTagsForResourceCommandError(output, context);\n }\n const data: any = await parseBody(output.body, context);\n let contents: any = {};\n contents = deserializeAws_json1_1ListTagsForResourceResponse(data, context);\n const response: ListTagsForResourceCommandOutput = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1ListTagsForResourceCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n response = {\n ...(await deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n response = {\n ...(await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_json1_1LookupDeveloperIdentityCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1LookupDeveloperIdentityCommandError(output, context);\n }\n const data: any = await parseBody(output.body, context);\n let contents: any = {};\n contents = deserializeAws_json1_1LookupDeveloperIdentityResponse(data, context);\n const response: LookupDeveloperIdentityCommandOutput = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1LookupDeveloperIdentityCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n response = {\n ...(await deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceConflictException\":\n case \"com.amazonaws.cognitoidentity#ResourceConflictException\":\n response = {\n ...(await deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n response = {\n ...(await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_json1_1MergeDeveloperIdentitiesCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1MergeDeveloperIdentitiesCommandError(output, context);\n }\n const data: any = await parseBody(output.body, context);\n let contents: any = {};\n contents = deserializeAws_json1_1MergeDeveloperIdentitiesResponse(data, context);\n const response: MergeDeveloperIdentitiesCommandOutput = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1MergeDeveloperIdentitiesCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n response = {\n ...(await deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceConflictException\":\n case \"com.amazonaws.cognitoidentity#ResourceConflictException\":\n response = {\n ...(await deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n response = {\n ...(await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_json1_1SetIdentityPoolRolesCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1SetIdentityPoolRolesCommandError(output, context);\n }\n await collectBody(output.body, context);\n const response: SetIdentityPoolRolesCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1SetIdentityPoolRolesCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ConcurrentModificationException\":\n case \"com.amazonaws.cognitoidentity#ConcurrentModificationException\":\n response = {\n ...(await deserializeAws_json1_1ConcurrentModificationExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n response = {\n ...(await deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceConflictException\":\n case \"com.amazonaws.cognitoidentity#ResourceConflictException\":\n response = {\n ...(await deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n response = {\n ...(await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_json1_1TagResourceCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1TagResourceCommandError(output, context);\n }\n const data: any = await parseBody(output.body, context);\n let contents: any = {};\n contents = deserializeAws_json1_1TagResourceResponse(data, context);\n const response: TagResourceCommandOutput = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1TagResourceCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n response = {\n ...(await deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n response = {\n ...(await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_json1_1UnlinkDeveloperIdentityCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1UnlinkDeveloperIdentityCommandError(output, context);\n }\n await collectBody(output.body, context);\n const response: UnlinkDeveloperIdentityCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1UnlinkDeveloperIdentityCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n response = {\n ...(await deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceConflictException\":\n case \"com.amazonaws.cognitoidentity#ResourceConflictException\":\n response = {\n ...(await deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n response = {\n ...(await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_json1_1UnlinkIdentityCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1UnlinkIdentityCommandError(output, context);\n }\n await collectBody(output.body, context);\n const response: UnlinkIdentityCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1UnlinkIdentityCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ExternalServiceException\":\n case \"com.amazonaws.cognitoidentity#ExternalServiceException\":\n response = {\n ...(await deserializeAws_json1_1ExternalServiceExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n response = {\n ...(await deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceConflictException\":\n case \"com.amazonaws.cognitoidentity#ResourceConflictException\":\n response = {\n ...(await deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n response = {\n ...(await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_json1_1UntagResourceCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1UntagResourceCommandError(output, context);\n }\n const data: any = await parseBody(output.body, context);\n let contents: any = {};\n contents = deserializeAws_json1_1UntagResourceResponse(data, context);\n const response: UntagResourceCommandOutput = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1UntagResourceCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n response = {\n ...(await deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n response = {\n ...(await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_json1_1UpdateIdentityPoolCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1UpdateIdentityPoolCommandError(output, context);\n }\n const data: any = await parseBody(output.body, context);\n let contents: any = {};\n contents = deserializeAws_json1_1IdentityPool(data, context);\n const response: UpdateIdentityPoolCommandOutput = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\n\nconst deserializeAws_json1_1UpdateIdentityPoolCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ConcurrentModificationException\":\n case \"com.amazonaws.cognitoidentity#ConcurrentModificationException\":\n response = {\n ...(await deserializeAws_json1_1ConcurrentModificationExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n response = {\n ...(await deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n response = {\n ...(await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"LimitExceededException\":\n case \"com.amazonaws.cognitoidentity#LimitExceededException\":\n response = {\n ...(await deserializeAws_json1_1LimitExceededExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n response = {\n ...(await deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceConflictException\":\n case \"com.amazonaws.cognitoidentity#ResourceConflictException\":\n response = {\n ...(await deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n response = {\n ...(await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nconst deserializeAws_json1_1ConcurrentModificationExceptionResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const body = parsedOutput.body;\n const deserialized: any = deserializeAws_json1_1ConcurrentModificationException(body, context);\n const contents: ConcurrentModificationException = {\n name: \"ConcurrentModificationException\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n };\n return contents;\n};\n\nconst deserializeAws_json1_1DeveloperUserAlreadyRegisteredExceptionResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const body = parsedOutput.body;\n const deserialized: any = deserializeAws_json1_1DeveloperUserAlreadyRegisteredException(body, context);\n const contents: DeveloperUserAlreadyRegisteredException = {\n name: \"DeveloperUserAlreadyRegisteredException\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n };\n return contents;\n};\n\nconst deserializeAws_json1_1ExternalServiceExceptionResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const body = parsedOutput.body;\n const deserialized: any = deserializeAws_json1_1ExternalServiceException(body, context);\n const contents: ExternalServiceException = {\n name: \"ExternalServiceException\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n };\n return contents;\n};\n\nconst deserializeAws_json1_1InternalErrorExceptionResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const body = parsedOutput.body;\n const deserialized: any = deserializeAws_json1_1InternalErrorException(body, context);\n const contents: InternalErrorException = {\n name: \"InternalErrorException\",\n $fault: \"server\",\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n };\n return contents;\n};\n\nconst deserializeAws_json1_1InvalidIdentityPoolConfigurationExceptionResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const body = parsedOutput.body;\n const deserialized: any = deserializeAws_json1_1InvalidIdentityPoolConfigurationException(body, context);\n const contents: InvalidIdentityPoolConfigurationException = {\n name: \"InvalidIdentityPoolConfigurationException\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n };\n return contents;\n};\n\nconst deserializeAws_json1_1InvalidParameterExceptionResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const body = parsedOutput.body;\n const deserialized: any = deserializeAws_json1_1InvalidParameterException(body, context);\n const contents: InvalidParameterException = {\n name: \"InvalidParameterException\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n };\n return contents;\n};\n\nconst deserializeAws_json1_1LimitExceededExceptionResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const body = parsedOutput.body;\n const deserialized: any = deserializeAws_json1_1LimitExceededException(body, context);\n const contents: LimitExceededException = {\n name: \"LimitExceededException\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n };\n return contents;\n};\n\nconst deserializeAws_json1_1NotAuthorizedExceptionResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const body = parsedOutput.body;\n const deserialized: any = deserializeAws_json1_1NotAuthorizedException(body, context);\n const contents: NotAuthorizedException = {\n name: \"NotAuthorizedException\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n };\n return contents;\n};\n\nconst deserializeAws_json1_1ResourceConflictExceptionResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const body = parsedOutput.body;\n const deserialized: any = deserializeAws_json1_1ResourceConflictException(body, context);\n const contents: ResourceConflictException = {\n name: \"ResourceConflictException\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n };\n return contents;\n};\n\nconst deserializeAws_json1_1ResourceNotFoundExceptionResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const body = parsedOutput.body;\n const deserialized: any = deserializeAws_json1_1ResourceNotFoundException(body, context);\n const contents: ResourceNotFoundException = {\n name: \"ResourceNotFoundException\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n };\n return contents;\n};\n\nconst deserializeAws_json1_1TooManyRequestsExceptionResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const body = parsedOutput.body;\n const deserialized: any = deserializeAws_json1_1TooManyRequestsException(body, context);\n const contents: TooManyRequestsException = {\n name: \"TooManyRequestsException\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n };\n return contents;\n};\n\nconst serializeAws_json1_1CognitoIdentityProvider = (input: CognitoIdentityProvider, context: __SerdeContext): any => {\n return {\n ...(input.ClientId !== undefined && input.ClientId !== null && { ClientId: input.ClientId }),\n ...(input.ProviderName !== undefined && input.ProviderName !== null && { ProviderName: input.ProviderName }),\n ...(input.ServerSideTokenCheck !== undefined &&\n input.ServerSideTokenCheck !== null && { ServerSideTokenCheck: input.ServerSideTokenCheck }),\n };\n};\n\nconst serializeAws_json1_1CognitoIdentityProviderList = (\n input: CognitoIdentityProvider[],\n context: __SerdeContext\n): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n return serializeAws_json1_1CognitoIdentityProvider(entry, context);\n });\n};\n\nconst serializeAws_json1_1CreateIdentityPoolInput = (input: CreateIdentityPoolInput, context: __SerdeContext): any => {\n return {\n ...(input.AllowClassicFlow !== undefined &&\n input.AllowClassicFlow !== null && { AllowClassicFlow: input.AllowClassicFlow }),\n ...(input.AllowUnauthenticatedIdentities !== undefined &&\n input.AllowUnauthenticatedIdentities !== null && {\n AllowUnauthenticatedIdentities: input.AllowUnauthenticatedIdentities,\n }),\n ...(input.CognitoIdentityProviders !== undefined &&\n input.CognitoIdentityProviders !== null && {\n CognitoIdentityProviders: serializeAws_json1_1CognitoIdentityProviderList(\n input.CognitoIdentityProviders,\n context\n ),\n }),\n ...(input.DeveloperProviderName !== undefined &&\n input.DeveloperProviderName !== null && { DeveloperProviderName: input.DeveloperProviderName }),\n ...(input.IdentityPoolName !== undefined &&\n input.IdentityPoolName !== null && { IdentityPoolName: input.IdentityPoolName }),\n ...(input.IdentityPoolTags !== undefined &&\n input.IdentityPoolTags !== null && {\n IdentityPoolTags: serializeAws_json1_1IdentityPoolTagsType(input.IdentityPoolTags, context),\n }),\n ...(input.OpenIdConnectProviderARNs !== undefined &&\n input.OpenIdConnectProviderARNs !== null && {\n OpenIdConnectProviderARNs: serializeAws_json1_1OIDCProviderList(input.OpenIdConnectProviderARNs, context),\n }),\n ...(input.SamlProviderARNs !== undefined &&\n input.SamlProviderARNs !== null && {\n SamlProviderARNs: serializeAws_json1_1SAMLProviderList(input.SamlProviderARNs, context),\n }),\n ...(input.SupportedLoginProviders !== undefined &&\n input.SupportedLoginProviders !== null && {\n SupportedLoginProviders: serializeAws_json1_1IdentityProviders(input.SupportedLoginProviders, context),\n }),\n };\n};\n\nconst serializeAws_json1_1DeleteIdentitiesInput = (input: DeleteIdentitiesInput, context: __SerdeContext): any => {\n return {\n ...(input.IdentityIdsToDelete !== undefined &&\n input.IdentityIdsToDelete !== null && {\n IdentityIdsToDelete: serializeAws_json1_1IdentityIdList(input.IdentityIdsToDelete, context),\n }),\n };\n};\n\nconst serializeAws_json1_1DeleteIdentityPoolInput = (input: DeleteIdentityPoolInput, context: __SerdeContext): any => {\n return {\n ...(input.IdentityPoolId !== undefined &&\n input.IdentityPoolId !== null && { IdentityPoolId: input.IdentityPoolId }),\n };\n};\n\nconst serializeAws_json1_1DescribeIdentityInput = (input: DescribeIdentityInput, context: __SerdeContext): any => {\n return {\n ...(input.IdentityId !== undefined && input.IdentityId !== null && { IdentityId: input.IdentityId }),\n };\n};\n\nconst serializeAws_json1_1DescribeIdentityPoolInput = (\n input: DescribeIdentityPoolInput,\n context: __SerdeContext\n): any => {\n return {\n ...(input.IdentityPoolId !== undefined &&\n input.IdentityPoolId !== null && { IdentityPoolId: input.IdentityPoolId }),\n };\n};\n\nconst serializeAws_json1_1GetCredentialsForIdentityInput = (\n input: GetCredentialsForIdentityInput,\n context: __SerdeContext\n): any => {\n return {\n ...(input.CustomRoleArn !== undefined && input.CustomRoleArn !== null && { CustomRoleArn: input.CustomRoleArn }),\n ...(input.IdentityId !== undefined && input.IdentityId !== null && { IdentityId: input.IdentityId }),\n ...(input.Logins !== undefined &&\n input.Logins !== null && { Logins: serializeAws_json1_1LoginsMap(input.Logins, context) }),\n };\n};\n\nconst serializeAws_json1_1GetIdentityPoolRolesInput = (\n input: GetIdentityPoolRolesInput,\n context: __SerdeContext\n): any => {\n return {\n ...(input.IdentityPoolId !== undefined &&\n input.IdentityPoolId !== null && { IdentityPoolId: input.IdentityPoolId }),\n };\n};\n\nconst serializeAws_json1_1GetIdInput = (input: GetIdInput, context: __SerdeContext): any => {\n return {\n ...(input.AccountId !== undefined && input.AccountId !== null && { AccountId: input.AccountId }),\n ...(input.IdentityPoolId !== undefined &&\n input.IdentityPoolId !== null && { IdentityPoolId: input.IdentityPoolId }),\n ...(input.Logins !== undefined &&\n input.Logins !== null && { Logins: serializeAws_json1_1LoginsMap(input.Logins, context) }),\n };\n};\n\nconst serializeAws_json1_1GetOpenIdTokenForDeveloperIdentityInput = (\n input: GetOpenIdTokenForDeveloperIdentityInput,\n context: __SerdeContext\n): any => {\n return {\n ...(input.IdentityId !== undefined && input.IdentityId !== null && { IdentityId: input.IdentityId }),\n ...(input.IdentityPoolId !== undefined &&\n input.IdentityPoolId !== null && { IdentityPoolId: input.IdentityPoolId }),\n ...(input.Logins !== undefined &&\n input.Logins !== null && { Logins: serializeAws_json1_1LoginsMap(input.Logins, context) }),\n ...(input.TokenDuration !== undefined && input.TokenDuration !== null && { TokenDuration: input.TokenDuration }),\n };\n};\n\nconst serializeAws_json1_1GetOpenIdTokenInput = (input: GetOpenIdTokenInput, context: __SerdeContext): any => {\n return {\n ...(input.IdentityId !== undefined && input.IdentityId !== null && { IdentityId: input.IdentityId }),\n ...(input.Logins !== undefined &&\n input.Logins !== null && { Logins: serializeAws_json1_1LoginsMap(input.Logins, context) }),\n };\n};\n\nconst serializeAws_json1_1IdentityIdList = (input: string[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n return entry;\n });\n};\n\nconst serializeAws_json1_1IdentityPool = (input: IdentityPool, context: __SerdeContext): any => {\n return {\n ...(input.AllowClassicFlow !== undefined &&\n input.AllowClassicFlow !== null && { AllowClassicFlow: input.AllowClassicFlow }),\n ...(input.AllowUnauthenticatedIdentities !== undefined &&\n input.AllowUnauthenticatedIdentities !== null && {\n AllowUnauthenticatedIdentities: input.AllowUnauthenticatedIdentities,\n }),\n ...(input.CognitoIdentityProviders !== undefined &&\n input.CognitoIdentityProviders !== null && {\n CognitoIdentityProviders: serializeAws_json1_1CognitoIdentityProviderList(\n input.CognitoIdentityProviders,\n context\n ),\n }),\n ...(input.DeveloperProviderName !== undefined &&\n input.DeveloperProviderName !== null && { DeveloperProviderName: input.DeveloperProviderName }),\n ...(input.IdentityPoolId !== undefined &&\n input.IdentityPoolId !== null && { IdentityPoolId: input.IdentityPoolId }),\n ...(input.IdentityPoolName !== undefined &&\n input.IdentityPoolName !== null && { IdentityPoolName: input.IdentityPoolName }),\n ...(input.IdentityPoolTags !== undefined &&\n input.IdentityPoolTags !== null && {\n IdentityPoolTags: serializeAws_json1_1IdentityPoolTagsType(input.IdentityPoolTags, context),\n }),\n ...(input.OpenIdConnectProviderARNs !== undefined &&\n input.OpenIdConnectProviderARNs !== null && {\n OpenIdConnectProviderARNs: serializeAws_json1_1OIDCProviderList(input.OpenIdConnectProviderARNs, context),\n }),\n ...(input.SamlProviderARNs !== undefined &&\n input.SamlProviderARNs !== null && {\n SamlProviderARNs: serializeAws_json1_1SAMLProviderList(input.SamlProviderARNs, context),\n }),\n ...(input.SupportedLoginProviders !== undefined &&\n input.SupportedLoginProviders !== null && {\n SupportedLoginProviders: serializeAws_json1_1IdentityProviders(input.SupportedLoginProviders, context),\n }),\n };\n};\n\nconst serializeAws_json1_1IdentityPoolTagsListType = (input: string[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n return entry;\n });\n};\n\nconst serializeAws_json1_1IdentityPoolTagsType = (input: { [key: string]: string }, context: __SerdeContext): any => {\n return Object.entries(input).reduce((acc: { [key: string]: string }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n};\n\nconst serializeAws_json1_1IdentityProviders = (input: { [key: string]: string }, context: __SerdeContext): any => {\n return Object.entries(input).reduce((acc: { [key: string]: string }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n};\n\nconst serializeAws_json1_1ListIdentitiesInput = (input: ListIdentitiesInput, context: __SerdeContext): any => {\n return {\n ...(input.HideDisabled !== undefined && input.HideDisabled !== null && { HideDisabled: input.HideDisabled }),\n ...(input.IdentityPoolId !== undefined &&\n input.IdentityPoolId !== null && { IdentityPoolId: input.IdentityPoolId }),\n ...(input.MaxResults !== undefined && input.MaxResults !== null && { MaxResults: input.MaxResults }),\n ...(input.NextToken !== undefined && input.NextToken !== null && { NextToken: input.NextToken }),\n };\n};\n\nconst serializeAws_json1_1ListIdentityPoolsInput = (input: ListIdentityPoolsInput, context: __SerdeContext): any => {\n return {\n ...(input.MaxResults !== undefined && input.MaxResults !== null && { MaxResults: input.MaxResults }),\n ...(input.NextToken !== undefined && input.NextToken !== null && { NextToken: input.NextToken }),\n };\n};\n\nconst serializeAws_json1_1ListTagsForResourceInput = (\n input: ListTagsForResourceInput,\n context: __SerdeContext\n): any => {\n return {\n ...(input.ResourceArn !== undefined && input.ResourceArn !== null && { ResourceArn: input.ResourceArn }),\n };\n};\n\nconst serializeAws_json1_1LoginsList = (input: string[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n return entry;\n });\n};\n\nconst serializeAws_json1_1LoginsMap = (input: { [key: string]: string }, context: __SerdeContext): any => {\n return Object.entries(input).reduce((acc: { [key: string]: string }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n};\n\nconst serializeAws_json1_1LookupDeveloperIdentityInput = (\n input: LookupDeveloperIdentityInput,\n context: __SerdeContext\n): any => {\n return {\n ...(input.DeveloperUserIdentifier !== undefined &&\n input.DeveloperUserIdentifier !== null && { DeveloperUserIdentifier: input.DeveloperUserIdentifier }),\n ...(input.IdentityId !== undefined && input.IdentityId !== null && { IdentityId: input.IdentityId }),\n ...(input.IdentityPoolId !== undefined &&\n input.IdentityPoolId !== null && { IdentityPoolId: input.IdentityPoolId }),\n ...(input.MaxResults !== undefined && input.MaxResults !== null && { MaxResults: input.MaxResults }),\n ...(input.NextToken !== undefined && input.NextToken !== null && { NextToken: input.NextToken }),\n };\n};\n\nconst serializeAws_json1_1MappingRule = (input: MappingRule, context: __SerdeContext): any => {\n return {\n ...(input.Claim !== undefined && input.Claim !== null && { Claim: input.Claim }),\n ...(input.MatchType !== undefined && input.MatchType !== null && { MatchType: input.MatchType }),\n ...(input.RoleARN !== undefined && input.RoleARN !== null && { RoleARN: input.RoleARN }),\n ...(input.Value !== undefined && input.Value !== null && { Value: input.Value }),\n };\n};\n\nconst serializeAws_json1_1MappingRulesList = (input: MappingRule[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n return serializeAws_json1_1MappingRule(entry, context);\n });\n};\n\nconst serializeAws_json1_1MergeDeveloperIdentitiesInput = (\n input: MergeDeveloperIdentitiesInput,\n context: __SerdeContext\n): any => {\n return {\n ...(input.DestinationUserIdentifier !== undefined &&\n input.DestinationUserIdentifier !== null && { DestinationUserIdentifier: input.DestinationUserIdentifier }),\n ...(input.DeveloperProviderName !== undefined &&\n input.DeveloperProviderName !== null && { DeveloperProviderName: input.DeveloperProviderName }),\n ...(input.IdentityPoolId !== undefined &&\n input.IdentityPoolId !== null && { IdentityPoolId: input.IdentityPoolId }),\n ...(input.SourceUserIdentifier !== undefined &&\n input.SourceUserIdentifier !== null && { SourceUserIdentifier: input.SourceUserIdentifier }),\n };\n};\n\nconst serializeAws_json1_1OIDCProviderList = (input: string[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n return entry;\n });\n};\n\nconst serializeAws_json1_1RoleMapping = (input: RoleMapping, context: __SerdeContext): any => {\n return {\n ...(input.AmbiguousRoleResolution !== undefined &&\n input.AmbiguousRoleResolution !== null && { AmbiguousRoleResolution: input.AmbiguousRoleResolution }),\n ...(input.RulesConfiguration !== undefined &&\n input.RulesConfiguration !== null && {\n RulesConfiguration: serializeAws_json1_1RulesConfigurationType(input.RulesConfiguration, context),\n }),\n ...(input.Type !== undefined && input.Type !== null && { Type: input.Type }),\n };\n};\n\nconst serializeAws_json1_1RoleMappingMap = (input: { [key: string]: RoleMapping }, context: __SerdeContext): any => {\n return Object.entries(input).reduce((acc: { [key: string]: RoleMapping }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: serializeAws_json1_1RoleMapping(value, context),\n };\n }, {});\n};\n\nconst serializeAws_json1_1RolesMap = (input: { [key: string]: string }, context: __SerdeContext): any => {\n return Object.entries(input).reduce((acc: { [key: string]: string }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n};\n\nconst serializeAws_json1_1RulesConfigurationType = (input: RulesConfigurationType, context: __SerdeContext): any => {\n return {\n ...(input.Rules !== undefined &&\n input.Rules !== null && { Rules: serializeAws_json1_1MappingRulesList(input.Rules, context) }),\n };\n};\n\nconst serializeAws_json1_1SAMLProviderList = (input: string[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n return entry;\n });\n};\n\nconst serializeAws_json1_1SetIdentityPoolRolesInput = (\n input: SetIdentityPoolRolesInput,\n context: __SerdeContext\n): any => {\n return {\n ...(input.IdentityPoolId !== undefined &&\n input.IdentityPoolId !== null && { IdentityPoolId: input.IdentityPoolId }),\n ...(input.RoleMappings !== undefined &&\n input.RoleMappings !== null && { RoleMappings: serializeAws_json1_1RoleMappingMap(input.RoleMappings, context) }),\n ...(input.Roles !== undefined &&\n input.Roles !== null && { Roles: serializeAws_json1_1RolesMap(input.Roles, context) }),\n };\n};\n\nconst serializeAws_json1_1TagResourceInput = (input: TagResourceInput, context: __SerdeContext): any => {\n return {\n ...(input.ResourceArn !== undefined && input.ResourceArn !== null && { ResourceArn: input.ResourceArn }),\n ...(input.Tags !== undefined &&\n input.Tags !== null && { Tags: serializeAws_json1_1IdentityPoolTagsType(input.Tags, context) }),\n };\n};\n\nconst serializeAws_json1_1UnlinkDeveloperIdentityInput = (\n input: UnlinkDeveloperIdentityInput,\n context: __SerdeContext\n): any => {\n return {\n ...(input.DeveloperProviderName !== undefined &&\n input.DeveloperProviderName !== null && { DeveloperProviderName: input.DeveloperProviderName }),\n ...(input.DeveloperUserIdentifier !== undefined &&\n input.DeveloperUserIdentifier !== null && { DeveloperUserIdentifier: input.DeveloperUserIdentifier }),\n ...(input.IdentityId !== undefined && input.IdentityId !== null && { IdentityId: input.IdentityId }),\n ...(input.IdentityPoolId !== undefined &&\n input.IdentityPoolId !== null && { IdentityPoolId: input.IdentityPoolId }),\n };\n};\n\nconst serializeAws_json1_1UnlinkIdentityInput = (input: UnlinkIdentityInput, context: __SerdeContext): any => {\n return {\n ...(input.IdentityId !== undefined && input.IdentityId !== null && { IdentityId: input.IdentityId }),\n ...(input.Logins !== undefined &&\n input.Logins !== null && { Logins: serializeAws_json1_1LoginsMap(input.Logins, context) }),\n ...(input.LoginsToRemove !== undefined &&\n input.LoginsToRemove !== null && {\n LoginsToRemove: serializeAws_json1_1LoginsList(input.LoginsToRemove, context),\n }),\n };\n};\n\nconst serializeAws_json1_1UntagResourceInput = (input: UntagResourceInput, context: __SerdeContext): any => {\n return {\n ...(input.ResourceArn !== undefined && input.ResourceArn !== null && { ResourceArn: input.ResourceArn }),\n ...(input.TagKeys !== undefined &&\n input.TagKeys !== null && { TagKeys: serializeAws_json1_1IdentityPoolTagsListType(input.TagKeys, context) }),\n };\n};\n\nconst deserializeAws_json1_1CognitoIdentityProvider = (\n output: any,\n context: __SerdeContext\n): CognitoIdentityProvider => {\n return {\n ClientId: output.ClientId !== undefined && output.ClientId !== null ? output.ClientId : undefined,\n ProviderName: output.ProviderName !== undefined && output.ProviderName !== null ? output.ProviderName : undefined,\n ServerSideTokenCheck:\n output.ServerSideTokenCheck !== undefined && output.ServerSideTokenCheck !== null\n ? output.ServerSideTokenCheck\n : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1CognitoIdentityProviderList = (\n output: any,\n context: __SerdeContext\n): CognitoIdentityProvider[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_json1_1CognitoIdentityProvider(entry, context);\n });\n};\n\nconst deserializeAws_json1_1ConcurrentModificationException = (\n output: any,\n context: __SerdeContext\n): ConcurrentModificationException => {\n return {\n message: output.message !== undefined && output.message !== null ? output.message : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1Credentials = (output: any, context: __SerdeContext): Credentials => {\n return {\n AccessKeyId: output.AccessKeyId !== undefined && output.AccessKeyId !== null ? output.AccessKeyId : undefined,\n Expiration:\n output.Expiration !== undefined && output.Expiration !== null\n ? new Date(Math.round(output.Expiration * 1000))\n : undefined,\n SecretKey: output.SecretKey !== undefined && output.SecretKey !== null ? output.SecretKey : undefined,\n SessionToken: output.SessionToken !== undefined && output.SessionToken !== null ? output.SessionToken : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1DeleteIdentitiesResponse = (\n output: any,\n context: __SerdeContext\n): DeleteIdentitiesResponse => {\n return {\n UnprocessedIdentityIds:\n output.UnprocessedIdentityIds !== undefined && output.UnprocessedIdentityIds !== null\n ? deserializeAws_json1_1UnprocessedIdentityIdList(output.UnprocessedIdentityIds, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1DeveloperUserAlreadyRegisteredException = (\n output: any,\n context: __SerdeContext\n): DeveloperUserAlreadyRegisteredException => {\n return {\n message: output.message !== undefined && output.message !== null ? output.message : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1DeveloperUserIdentifierList = (output: any, context: __SerdeContext): string[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return entry;\n });\n};\n\nconst deserializeAws_json1_1ExternalServiceException = (\n output: any,\n context: __SerdeContext\n): ExternalServiceException => {\n return {\n message: output.message !== undefined && output.message !== null ? output.message : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1GetCredentialsForIdentityResponse = (\n output: any,\n context: __SerdeContext\n): GetCredentialsForIdentityResponse => {\n return {\n Credentials:\n output.Credentials !== undefined && output.Credentials !== null\n ? deserializeAws_json1_1Credentials(output.Credentials, context)\n : undefined,\n IdentityId: output.IdentityId !== undefined && output.IdentityId !== null ? output.IdentityId : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1GetIdentityPoolRolesResponse = (\n output: any,\n context: __SerdeContext\n): GetIdentityPoolRolesResponse => {\n return {\n IdentityPoolId:\n output.IdentityPoolId !== undefined && output.IdentityPoolId !== null ? output.IdentityPoolId : undefined,\n RoleMappings:\n output.RoleMappings !== undefined && output.RoleMappings !== null\n ? deserializeAws_json1_1RoleMappingMap(output.RoleMappings, context)\n : undefined,\n Roles:\n output.Roles !== undefined && output.Roles !== null\n ? deserializeAws_json1_1RolesMap(output.Roles, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1GetIdResponse = (output: any, context: __SerdeContext): GetIdResponse => {\n return {\n IdentityId: output.IdentityId !== undefined && output.IdentityId !== null ? output.IdentityId : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1GetOpenIdTokenForDeveloperIdentityResponse = (\n output: any,\n context: __SerdeContext\n): GetOpenIdTokenForDeveloperIdentityResponse => {\n return {\n IdentityId: output.IdentityId !== undefined && output.IdentityId !== null ? output.IdentityId : undefined,\n Token: output.Token !== undefined && output.Token !== null ? output.Token : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1GetOpenIdTokenResponse = (output: any, context: __SerdeContext): GetOpenIdTokenResponse => {\n return {\n IdentityId: output.IdentityId !== undefined && output.IdentityId !== null ? output.IdentityId : undefined,\n Token: output.Token !== undefined && output.Token !== null ? output.Token : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1IdentitiesList = (output: any, context: __SerdeContext): IdentityDescription[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_json1_1IdentityDescription(entry, context);\n });\n};\n\nconst deserializeAws_json1_1IdentityDescription = (output: any, context: __SerdeContext): IdentityDescription => {\n return {\n CreationDate:\n output.CreationDate !== undefined && output.CreationDate !== null\n ? new Date(Math.round(output.CreationDate * 1000))\n : undefined,\n IdentityId: output.IdentityId !== undefined && output.IdentityId !== null ? output.IdentityId : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null\n ? new Date(Math.round(output.LastModifiedDate * 1000))\n : undefined,\n Logins:\n output.Logins !== undefined && output.Logins !== null\n ? deserializeAws_json1_1LoginsList(output.Logins, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1IdentityPool = (output: any, context: __SerdeContext): IdentityPool => {\n return {\n AllowClassicFlow:\n output.AllowClassicFlow !== undefined && output.AllowClassicFlow !== null ? output.AllowClassicFlow : undefined,\n AllowUnauthenticatedIdentities:\n output.AllowUnauthenticatedIdentities !== undefined && output.AllowUnauthenticatedIdentities !== null\n ? output.AllowUnauthenticatedIdentities\n : undefined,\n CognitoIdentityProviders:\n output.CognitoIdentityProviders !== undefined && output.CognitoIdentityProviders !== null\n ? deserializeAws_json1_1CognitoIdentityProviderList(output.CognitoIdentityProviders, context)\n : undefined,\n DeveloperProviderName:\n output.DeveloperProviderName !== undefined && output.DeveloperProviderName !== null\n ? output.DeveloperProviderName\n : undefined,\n IdentityPoolId:\n output.IdentityPoolId !== undefined && output.IdentityPoolId !== null ? output.IdentityPoolId : undefined,\n IdentityPoolName:\n output.IdentityPoolName !== undefined && output.IdentityPoolName !== null ? output.IdentityPoolName : undefined,\n IdentityPoolTags:\n output.IdentityPoolTags !== undefined && output.IdentityPoolTags !== null\n ? deserializeAws_json1_1IdentityPoolTagsType(output.IdentityPoolTags, context)\n : undefined,\n OpenIdConnectProviderARNs:\n output.OpenIdConnectProviderARNs !== undefined && output.OpenIdConnectProviderARNs !== null\n ? deserializeAws_json1_1OIDCProviderList(output.OpenIdConnectProviderARNs, context)\n : undefined,\n SamlProviderARNs:\n output.SamlProviderARNs !== undefined && output.SamlProviderARNs !== null\n ? deserializeAws_json1_1SAMLProviderList(output.SamlProviderARNs, context)\n : undefined,\n SupportedLoginProviders:\n output.SupportedLoginProviders !== undefined && output.SupportedLoginProviders !== null\n ? deserializeAws_json1_1IdentityProviders(output.SupportedLoginProviders, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1IdentityPoolShortDescription = (\n output: any,\n context: __SerdeContext\n): IdentityPoolShortDescription => {\n return {\n IdentityPoolId:\n output.IdentityPoolId !== undefined && output.IdentityPoolId !== null ? output.IdentityPoolId : undefined,\n IdentityPoolName:\n output.IdentityPoolName !== undefined && output.IdentityPoolName !== null ? output.IdentityPoolName : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1IdentityPoolsList = (\n output: any,\n context: __SerdeContext\n): IdentityPoolShortDescription[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_json1_1IdentityPoolShortDescription(entry, context);\n });\n};\n\nconst deserializeAws_json1_1IdentityPoolTagsType = (\n output: any,\n context: __SerdeContext\n): { [key: string]: string } => {\n return Object.entries(output).reduce((acc: { [key: string]: string }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n};\n\nconst deserializeAws_json1_1IdentityProviders = (output: any, context: __SerdeContext): { [key: string]: string } => {\n return Object.entries(output).reduce((acc: { [key: string]: string }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n};\n\nconst deserializeAws_json1_1InternalErrorException = (output: any, context: __SerdeContext): InternalErrorException => {\n return {\n message: output.message !== undefined && output.message !== null ? output.message : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1InvalidIdentityPoolConfigurationException = (\n output: any,\n context: __SerdeContext\n): InvalidIdentityPoolConfigurationException => {\n return {\n message: output.message !== undefined && output.message !== null ? output.message : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1InvalidParameterException = (\n output: any,\n context: __SerdeContext\n): InvalidParameterException => {\n return {\n message: output.message !== undefined && output.message !== null ? output.message : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1LimitExceededException = (output: any, context: __SerdeContext): LimitExceededException => {\n return {\n message: output.message !== undefined && output.message !== null ? output.message : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1ListIdentitiesResponse = (output: any, context: __SerdeContext): ListIdentitiesResponse => {\n return {\n Identities:\n output.Identities !== undefined && output.Identities !== null\n ? deserializeAws_json1_1IdentitiesList(output.Identities, context)\n : undefined,\n IdentityPoolId:\n output.IdentityPoolId !== undefined && output.IdentityPoolId !== null ? output.IdentityPoolId : undefined,\n NextToken: output.NextToken !== undefined && output.NextToken !== null ? output.NextToken : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1ListIdentityPoolsResponse = (\n output: any,\n context: __SerdeContext\n): ListIdentityPoolsResponse => {\n return {\n IdentityPools:\n output.IdentityPools !== undefined && output.IdentityPools !== null\n ? deserializeAws_json1_1IdentityPoolsList(output.IdentityPools, context)\n : undefined,\n NextToken: output.NextToken !== undefined && output.NextToken !== null ? output.NextToken : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1ListTagsForResourceResponse = (\n output: any,\n context: __SerdeContext\n): ListTagsForResourceResponse => {\n return {\n Tags:\n output.Tags !== undefined && output.Tags !== null\n ? deserializeAws_json1_1IdentityPoolTagsType(output.Tags, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1LoginsList = (output: any, context: __SerdeContext): string[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return entry;\n });\n};\n\nconst deserializeAws_json1_1LookupDeveloperIdentityResponse = (\n output: any,\n context: __SerdeContext\n): LookupDeveloperIdentityResponse => {\n return {\n DeveloperUserIdentifierList:\n output.DeveloperUserIdentifierList !== undefined && output.DeveloperUserIdentifierList !== null\n ? deserializeAws_json1_1DeveloperUserIdentifierList(output.DeveloperUserIdentifierList, context)\n : undefined,\n IdentityId: output.IdentityId !== undefined && output.IdentityId !== null ? output.IdentityId : undefined,\n NextToken: output.NextToken !== undefined && output.NextToken !== null ? output.NextToken : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1MappingRule = (output: any, context: __SerdeContext): MappingRule => {\n return {\n Claim: output.Claim !== undefined && output.Claim !== null ? output.Claim : undefined,\n MatchType: output.MatchType !== undefined && output.MatchType !== null ? output.MatchType : undefined,\n RoleARN: output.RoleARN !== undefined && output.RoleARN !== null ? output.RoleARN : undefined,\n Value: output.Value !== undefined && output.Value !== null ? output.Value : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1MappingRulesList = (output: any, context: __SerdeContext): MappingRule[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_json1_1MappingRule(entry, context);\n });\n};\n\nconst deserializeAws_json1_1MergeDeveloperIdentitiesResponse = (\n output: any,\n context: __SerdeContext\n): MergeDeveloperIdentitiesResponse => {\n return {\n IdentityId: output.IdentityId !== undefined && output.IdentityId !== null ? output.IdentityId : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1NotAuthorizedException = (output: any, context: __SerdeContext): NotAuthorizedException => {\n return {\n message: output.message !== undefined && output.message !== null ? output.message : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1OIDCProviderList = (output: any, context: __SerdeContext): string[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return entry;\n });\n};\n\nconst deserializeAws_json1_1ResourceConflictException = (\n output: any,\n context: __SerdeContext\n): ResourceConflictException => {\n return {\n message: output.message !== undefined && output.message !== null ? output.message : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1ResourceNotFoundException = (\n output: any,\n context: __SerdeContext\n): ResourceNotFoundException => {\n return {\n message: output.message !== undefined && output.message !== null ? output.message : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1RoleMapping = (output: any, context: __SerdeContext): RoleMapping => {\n return {\n AmbiguousRoleResolution:\n output.AmbiguousRoleResolution !== undefined && output.AmbiguousRoleResolution !== null\n ? output.AmbiguousRoleResolution\n : undefined,\n RulesConfiguration:\n output.RulesConfiguration !== undefined && output.RulesConfiguration !== null\n ? deserializeAws_json1_1RulesConfigurationType(output.RulesConfiguration, context)\n : undefined,\n Type: output.Type !== undefined && output.Type !== null ? output.Type : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1RoleMappingMap = (output: any, context: __SerdeContext): { [key: string]: RoleMapping } => {\n return Object.entries(output).reduce((acc: { [key: string]: RoleMapping }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: deserializeAws_json1_1RoleMapping(value, context),\n };\n }, {});\n};\n\nconst deserializeAws_json1_1RolesMap = (output: any, context: __SerdeContext): { [key: string]: string } => {\n return Object.entries(output).reduce((acc: { [key: string]: string }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n};\n\nconst deserializeAws_json1_1RulesConfigurationType = (output: any, context: __SerdeContext): RulesConfigurationType => {\n return {\n Rules:\n output.Rules !== undefined && output.Rules !== null\n ? deserializeAws_json1_1MappingRulesList(output.Rules, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1SAMLProviderList = (output: any, context: __SerdeContext): string[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return entry;\n });\n};\n\nconst deserializeAws_json1_1TagResourceResponse = (output: any, context: __SerdeContext): TagResourceResponse => {\n return {} as any;\n};\n\nconst deserializeAws_json1_1TooManyRequestsException = (\n output: any,\n context: __SerdeContext\n): TooManyRequestsException => {\n return {\n message: output.message !== undefined && output.message !== null ? output.message : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1UnprocessedIdentityId = (output: any, context: __SerdeContext): UnprocessedIdentityId => {\n return {\n ErrorCode: output.ErrorCode !== undefined && output.ErrorCode !== null ? output.ErrorCode : undefined,\n IdentityId: output.IdentityId !== undefined && output.IdentityId !== null ? output.IdentityId : undefined,\n } as any;\n};\n\nconst deserializeAws_json1_1UnprocessedIdentityIdList = (\n output: any,\n context: __SerdeContext\n): UnprocessedIdentityId[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_json1_1UnprocessedIdentityId(entry, context);\n });\n};\n\nconst deserializeAws_json1_1UntagResourceResponse = (output: any, context: __SerdeContext): UntagResourceResponse => {\n return {} as any;\n};\n\nconst deserializeMetadata = (output: __HttpResponse): __ResponseMetadata => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"],\n});\n\n// Collect low-level response body stream to Uint8Array.\nconst collectBody = (streamBody: any = new Uint8Array(), context: __SerdeContext): Promise => {\n if (streamBody instanceof Uint8Array) {\n return Promise.resolve(streamBody);\n }\n return context.streamCollector(streamBody) || Promise.resolve(new Uint8Array());\n};\n\n// Encode Uint8Array data into string with utf-8.\nconst collectBodyString = (streamBody: any, context: __SerdeContext): Promise =>\n collectBody(streamBody, context).then((body) => context.utf8Encoder(body));\n\nconst buildHttpRpcRequest = async (\n context: __SerdeContext,\n headers: __HeaderBag,\n path: string,\n resolvedHostname: string | undefined,\n body: any\n): Promise<__HttpRequest> => {\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n const contents: any = {\n protocol,\n hostname,\n port,\n method: \"POST\",\n path,\n headers,\n };\n if (resolvedHostname !== undefined) {\n contents.hostname = resolvedHostname;\n }\n if (body !== undefined) {\n contents.body = body;\n }\n return new __HttpRequest(contents);\n};\n\nconst parseBody = (streamBody: any, context: __SerdeContext): any =>\n collectBodyString(streamBody, context).then((encoded) => {\n if (encoded.length) {\n return JSON.parse(encoded);\n }\n return {};\n });\n\n/**\n * Load an error code for the aws.rest-json-1.1 protocol.\n */\nconst loadRestJsonErrorCode = (output: __HttpResponse, data: any): string => {\n const findKey = (object: any, key: string) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase());\n\n const sanitizeErrorCode = (rawValue: string): string => {\n let cleanValue = rawValue;\n if (cleanValue.indexOf(\":\") >= 0) {\n cleanValue = cleanValue.split(\":\")[0];\n }\n if (cleanValue.indexOf(\"#\") >= 0) {\n cleanValue = cleanValue.split(\"#\")[1];\n }\n return cleanValue;\n };\n\n const headerKey = findKey(output.headers, \"x-amzn-errortype\");\n if (headerKey !== undefined) {\n return sanitizeErrorCode(output.headers[headerKey]);\n }\n\n if (data.code !== undefined) {\n return sanitizeErrorCode(data.code);\n }\n\n if (data[\"__type\"] !== undefined) {\n return sanitizeErrorCode(data[\"__type\"]);\n }\n\n return \"\";\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import {\n DeserializeHandler,\n DeserializeHandlerArguments,\n DeserializeHandlerOutput,\n DeserializeMiddleware,\n HandlerExecutionContext,\n ResponseDeserializer,\n} from \"@aws-sdk/types\";\n\nexport const deserializerMiddleware = (\n options: RuntimeUtils,\n deserializer: ResponseDeserializer\n): DeserializeMiddleware => (\n next: DeserializeHandler,\n context: HandlerExecutionContext\n): DeserializeHandler => async (\n args: DeserializeHandlerArguments\n): Promise> => {\n const { response } = await next(args);\n const parsed = await deserializer(response, options);\n return {\n response,\n output: parsed as Output,\n };\n};\n","import {\n DeserializeHandlerOptions,\n EndpointBearer,\n MetadataBearer,\n MiddlewareStack,\n Pluggable,\n RequestSerializer,\n ResponseDeserializer,\n SerializeHandlerOptions,\n} from \"@aws-sdk/types\";\n\nimport { deserializerMiddleware } from \"./deserializerMiddleware\";\nimport { serializerMiddleware } from \"./serializerMiddleware\";\n\nexport const deserializerMiddlewareOption: DeserializeHandlerOptions = {\n name: \"deserializerMiddleware\",\n step: \"deserialize\",\n tags: [\"DESERIALIZER\"],\n override: true,\n};\n\nexport const serializerMiddlewareOption: SerializeHandlerOptions = {\n name: \"serializerMiddleware\",\n step: \"serialize\",\n tags: [\"SERIALIZER\"],\n override: true,\n};\n\nexport function getSerdePlugin<\n InputType extends object,\n SerDeContext extends EndpointBearer,\n OutputType extends MetadataBearer\n>(\n config: SerDeContext,\n serializer: RequestSerializer,\n deserializer: ResponseDeserializer\n): Pluggable {\n return {\n applyToStack: (commandStack: MiddlewareStack) => {\n commandStack.add(deserializerMiddleware(config, deserializer), deserializerMiddlewareOption);\n commandStack.add(serializerMiddleware(config, serializer), serializerMiddlewareOption);\n },\n };\n}\n","import {\n EndpointBearer,\n HandlerExecutionContext,\n RequestSerializer,\n SerializeHandler,\n SerializeHandlerArguments,\n SerializeHandlerOutput,\n SerializeMiddleware,\n} from \"@aws-sdk/types\";\n\nexport const serializerMiddleware = (\n options: RuntimeUtils,\n serializer: RequestSerializer\n): SerializeMiddleware => (\n next: SerializeHandler,\n context: HandlerExecutionContext\n): SerializeHandler => async (\n args: SerializeHandlerArguments\n): Promise> => {\n const request = await serializer(args.input, options);\n return next({\n ...args,\n request,\n });\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import {\n AbsoluteLocation,\n DeserializeHandler,\n Handler,\n HandlerExecutionContext,\n HandlerOptions,\n MiddlewareStack,\n MiddlewareType,\n Pluggable,\n Priority,\n RelativeLocation,\n Step,\n} from \"@aws-sdk/types\";\n\nimport { AbsoluteMiddlewareEntry, MiddlewareEntry, Normalized, RelativeMiddlewareEntry } from \"./types\";\n\nexport const constructStack = (): MiddlewareStack => {\n let absoluteEntries: AbsoluteMiddlewareEntry[] = [];\n let relativeEntries: RelativeMiddlewareEntry[] = [];\n const entriesNameSet: Set = new Set();\n\n const sort = >(entries: T[]): T[] =>\n entries.sort(\n (a, b) =>\n stepWeights[b.step] - stepWeights[a.step] ||\n priorityWeights[b.priority || \"normal\"] - priorityWeights[a.priority || \"normal\"]\n );\n\n const removeByName = (toRemove: string): boolean => {\n let isRemoved = false;\n const filterCb = (entry: MiddlewareEntry): boolean => {\n if (entry.name && entry.name === toRemove) {\n isRemoved = true;\n entriesNameSet.delete(toRemove);\n return false;\n }\n return true;\n };\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n };\n\n const removeByReference = (toRemove: MiddlewareType): boolean => {\n let isRemoved = false;\n const filterCb = (entry: MiddlewareEntry): boolean => {\n if (entry.middleware === toRemove) {\n isRemoved = true;\n if (entry.name) entriesNameSet.delete(entry.name);\n return false;\n }\n return true;\n };\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n };\n\n const cloneTo = (\n toStack: MiddlewareStack\n ): MiddlewareStack => {\n absoluteEntries.forEach((entry) => {\n //@ts-ignore\n toStack.add(entry.middleware, { ...entry });\n });\n relativeEntries.forEach((entry) => {\n //@ts-ignore\n toStack.addRelativeTo(entry.middleware, { ...entry });\n });\n return toStack;\n };\n\n const expandRelativeMiddlewareList = (\n from: Normalized, Input, Output>\n ): MiddlewareEntry[] => {\n const expandedMiddlewareList: MiddlewareEntry[] = [];\n from.before.forEach((entry) => {\n if (entry.before.length === 0 && entry.after.length === 0) {\n expandedMiddlewareList.push(entry);\n } else {\n expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry));\n }\n });\n expandedMiddlewareList.push(from);\n from.after.reverse().forEach((entry) => {\n if (entry.before.length === 0 && entry.after.length === 0) {\n expandedMiddlewareList.push(entry);\n } else {\n expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry));\n }\n });\n return expandedMiddlewareList;\n };\n\n /**\n * Get a final list of middleware in the order of being executed in the resolved handler.\n */\n const getMiddlewareList = (): Array> => {\n const normalizedAbsoluteEntries: Normalized, Input, Output>[] = [];\n const normalizedRelativeEntries: Normalized, Input, Output>[] = [];\n const normalizedEntriesNameMap: {\n [middlewareName: string]: Normalized, Input, Output>;\n } = {};\n\n absoluteEntries.forEach((entry) => {\n const normalizedEntry = {\n ...entry,\n before: [],\n after: [],\n };\n if (normalizedEntry.name) normalizedEntriesNameMap[normalizedEntry.name] = normalizedEntry;\n normalizedAbsoluteEntries.push(normalizedEntry);\n });\n\n relativeEntries.forEach((entry) => {\n const normalizedEntry = {\n ...entry,\n before: [],\n after: [],\n };\n if (normalizedEntry.name) normalizedEntriesNameMap[normalizedEntry.name] = normalizedEntry;\n normalizedRelativeEntries.push(normalizedEntry);\n });\n\n normalizedRelativeEntries.forEach((entry) => {\n if (entry.toMiddleware) {\n const toMiddleware = normalizedEntriesNameMap[entry.toMiddleware];\n if (toMiddleware === undefined) {\n throw new Error(\n `${entry.toMiddleware} is not found when adding ${entry.name || \"anonymous\"} middleware ${entry.relation} ${\n entry.toMiddleware\n }`\n );\n }\n if (entry.relation === \"after\") {\n toMiddleware.after.push(entry);\n }\n if (entry.relation === \"before\") {\n toMiddleware.before.push(entry);\n }\n }\n });\n\n const mainChain = sort(normalizedAbsoluteEntries)\n .map(expandRelativeMiddlewareList)\n .reduce((wholeList, expendedMiddlewareList) => {\n // TODO: Replace it with Array.flat();\n wholeList.push(...expendedMiddlewareList);\n return wholeList;\n }, [] as MiddlewareEntry[]);\n return mainChain.map((entry) => entry.middleware);\n };\n\n const stack = {\n add: (middleware: MiddlewareType, options: HandlerOptions & AbsoluteLocation = {}) => {\n const { name, override } = options;\n const entry: AbsoluteMiddlewareEntry = {\n step: \"initialize\",\n priority: \"normal\",\n middleware,\n ...options,\n };\n if (name) {\n if (entriesNameSet.has(name)) {\n if (!override) throw new Error(`Duplicate middleware name '${name}'`);\n const toOverrideIndex = absoluteEntries.findIndex((entry) => entry.name === name);\n const toOverride = absoluteEntries[toOverrideIndex];\n if (toOverride.step !== entry.step || toOverride.priority !== entry.priority) {\n throw new Error(\n `\"${name}\" middleware with ${toOverride.priority} priority in ${toOverride.step} step cannot be ` +\n `overridden by same-name middleware with ${entry.priority} priority in ${entry.step} step.`\n );\n }\n absoluteEntries.splice(toOverrideIndex, 1);\n }\n entriesNameSet.add(name);\n }\n absoluteEntries.push(entry);\n },\n\n addRelativeTo: (middleware: MiddlewareType, options: HandlerOptions & RelativeLocation) => {\n const { name, override } = options;\n const entry: RelativeMiddlewareEntry = {\n middleware,\n ...options,\n };\n if (name) {\n if (entriesNameSet.has(name)) {\n if (!override) throw new Error(`Duplicate middleware name '${name}'`);\n const toOverrideIndex = relativeEntries.findIndex((entry) => entry.name === name);\n const toOverride = relativeEntries[toOverrideIndex];\n if (toOverride.toMiddleware !== entry.toMiddleware || toOverride.relation !== entry.relation) {\n throw new Error(\n `\"${name}\" middleware ${toOverride.relation} \"${toOverride.toMiddleware}\" middleware cannot be overridden ` +\n `by same-name middleware ${entry.relation} \"${entry.toMiddleware}\" middleware.`\n );\n }\n relativeEntries.splice(toOverrideIndex, 1);\n }\n entriesNameSet.add(name);\n }\n relativeEntries.push(entry);\n },\n\n clone: () => cloneTo(constructStack()),\n\n use: (plugin: Pluggable) => {\n plugin.applyToStack(stack);\n },\n\n remove: (toRemove: MiddlewareType | string): boolean => {\n if (typeof toRemove === \"string\") return removeByName(toRemove);\n else return removeByReference(toRemove);\n },\n\n removeByTag: (toRemove: string): boolean => {\n let isRemoved = false;\n const filterCb = (entry: MiddlewareEntry): boolean => {\n const { tags, name } = entry;\n if (tags && tags.includes(toRemove)) {\n if (name) entriesNameSet.delete(name);\n isRemoved = true;\n return false;\n }\n return true;\n };\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n },\n\n concat: (\n from: MiddlewareStack\n ): MiddlewareStack => {\n const cloned = cloneTo(constructStack());\n cloned.use(from);\n return cloned;\n },\n\n applyToStack: cloneTo,\n\n resolve: (\n handler: DeserializeHandler,\n context: HandlerExecutionContext\n ): Handler => {\n for (const middleware of getMiddlewareList().reverse()) {\n handler = middleware(handler as Handler, context) as any;\n }\n return handler as Handler;\n },\n };\n return stack;\n};\n\nconst stepWeights: { [key in Step]: number } = {\n initialize: 5,\n serialize: 4,\n build: 3,\n finalizeRequest: 2,\n deserialize: 1,\n};\n\nconst priorityWeights: { [key in Priority]: number } = {\n high: 3,\n normal: 2,\n low: 1,\n};\n","import { constructStack } from \"@aws-sdk/middleware-stack\";\nimport { Client as IClient, Command, MetadataBearer, RequestHandler } from \"@aws-sdk/types\";\n\nexport interface SmithyConfiguration {\n requestHandler: RequestHandler;\n /**\n * The API version set internally by the SDK, and is\n * not planned to be used by customer code.\n * @internal\n */\n readonly apiVersion: string;\n}\n\nexport type SmithyResolvedConfiguration = SmithyConfiguration;\n\nexport class Client<\n HandlerOptions,\n ClientInput extends object,\n ClientOutput extends MetadataBearer,\n ResolvedClientConfiguration extends SmithyResolvedConfiguration\n> implements IClient {\n public middlewareStack = constructStack();\n readonly config: ResolvedClientConfiguration;\n constructor(config: ResolvedClientConfiguration) {\n this.config = config;\n }\n send(\n command: Command>,\n options?: HandlerOptions\n ): Promise;\n send(\n command: Command>,\n cb: (err: any, data?: OutputType) => void\n ): void;\n send(\n command: Command>,\n options: HandlerOptions,\n cb: (err: any, data?: OutputType) => void\n ): void;\n send(\n command: Command>,\n optionsOrCb?: HandlerOptions | ((err: any, data?: OutputType) => void),\n cb?: (err: any, data?: OutputType) => void\n ): Promise | void {\n const options = typeof optionsOrCb !== \"function\" ? optionsOrCb : undefined;\n const callback = typeof optionsOrCb === \"function\" ? (optionsOrCb as (err: any, data?: OutputType) => void) : cb;\n const handler = command.resolveMiddleware(this.middlewareStack as any, this.config, options);\n if (callback) {\n handler(command)\n .then(\n (result) => callback(null, result.output),\n (err: any) => callback(err)\n )\n .catch(\n // prevent any errors thrown in the callback from triggering an\n // unhandled promise rejection\n () => {}\n );\n } else {\n return handler(command).then((result) => result.output);\n }\n }\n\n destroy() {\n if (this.config.requestHandler.destroy) this.config.requestHandler.destroy();\n }\n}\n","import { constructStack } from \"@aws-sdk/middleware-stack\";\nimport { Command as ICommand, Handler, MetadataBearer, MiddlewareStack as IMiddlewareStack } from \"@aws-sdk/types\";\n\nexport abstract class Command<\n Input extends ClientInput,\n Output extends ClientOutput,\n ResolvedClientConfiguration,\n ClientInput extends object = any,\n ClientOutput extends MetadataBearer = any\n> implements ICommand {\n abstract input: Input;\n readonly middlewareStack: IMiddlewareStack = constructStack();\n abstract resolveMiddleware(\n stack: IMiddlewareStack,\n configuration: ResolvedClientConfiguration,\n options: any\n ): Handler;\n}\n","/**\n * Function that wraps encodeURIComponent to encode additional characters\n * to fully adhere to RFC 3986.\n */\nexport function extendedEncodeURIComponent(str: string): string {\n return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n return \"%\" + c.charCodeAt(0).toString(16);\n });\n}\n","/**\n * The XML parser will set one K:V for a member that could\n * return multiple entries but only has one.\n */\nexport const getArrayIfSingleItem = (mayBeArray: T): T | T[] =>\n Array.isArray(mayBeArray) ? mayBeArray : [mayBeArray];\n","/**\n * Recursively parses object and populates value is node from\n * \"#text\" key if it's available\n */\nexport const getValueFromTextNode = (obj: any) => {\n const textNodeName = \"#text\";\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj[key][textNodeName] !== undefined) {\n obj[key] = obj[key][textNodeName];\n } else if (typeof obj[key] === \"object\" && obj[key] !== null) {\n obj[key] = getValueFromTextNode(obj[key]);\n }\n }\n return obj;\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**\n * Lazy String holder for JSON typed contents.\n */\n\ninterface StringWrapper {\n new (arg: any): String;\n}\n\n/**\n * Because of https://github.com/microsoft/tslib/issues/95,\n * TS 'extends' shim doesn't support extending native types like String.\n * So here we create StringWrapper that duplicate everything from String\n * class including its prototype chain. So we can extend from here.\n */\n// @ts-ignore StringWrapper implementation is not a simple constructor\nexport const StringWrapper: StringWrapper = function () {\n //@ts-ignore 'this' cannot be assigned to any, but Object.getPrototypeOf accepts any\n const Class = Object.getPrototypeOf(this).constructor;\n const Constructor = Function.bind.apply(String, [null as any, ...arguments]);\n //@ts-ignore Call wrapped String constructor directly, don't bother typing it.\n const instance = new Constructor();\n Object.setPrototypeOf(instance, Class.prototype);\n return instance as String;\n};\nStringWrapper.prototype = Object.create(String.prototype, {\n constructor: {\n value: StringWrapper,\n enumerable: false,\n writable: true,\n configurable: true,\n },\n});\nObject.setPrototypeOf(StringWrapper, String);\n\nexport class LazyJsonString extends StringWrapper {\n deserializeJSON(): any {\n return JSON.parse(super.toString());\n }\n\n toJSON(): string {\n return super.toString();\n }\n\n static fromObject(object: any): LazyJsonString {\n if (object instanceof LazyJsonString) {\n return object;\n } else if (object instanceof String || typeof object === \"string\") {\n return new LazyJsonString(object);\n }\n return new LazyJsonString(JSON.stringify(object));\n }\n}\n","/**\n * Builds a proper UTC HttpDate timestamp from a Date object\n * since not all environments will have this as the expected\n * format.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toUTCString\n * > Prior to ECMAScript 2018, the format of the return value\n * > varied according to the platform. The most common return\n * > value was an RFC-1123 formatted date stamp, which is a\n * > slightly updated version of RFC-822 date stamps.\n */\n\n// Build indexes outside so we allocate them once.\nconst days: Array = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n// prettier-ignore\nconst months: Array = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\nexport function dateToUtcString(date: Date): string {\n const year = date.getUTCFullYear();\n const month = date.getUTCMonth();\n const dayOfWeek = date.getUTCDay();\n const dayOfMonthInt = date.getUTCDate();\n const hoursInt = date.getUTCHours();\n const minutesInt = date.getUTCMinutes();\n const secondsInt = date.getUTCSeconds();\n\n // Build 0 prefixed strings for contents that need to be\n // two digits and where we get an integer back.\n const dayOfMonthString = dayOfMonthInt < 10 ? `0${dayOfMonthInt}` : `${dayOfMonthInt}`;\n const hoursString = hoursInt < 10 ? `0${hoursInt}` : `${hoursInt}`;\n const minutesString = minutesInt < 10 ? `0${minutesInt}` : `${minutesInt}`;\n const secondsString = secondsInt < 10 ? `0${secondsInt}` : `${secondsInt}`;\n\n return `${days[dayOfWeek]}, ${dayOfMonthString} ${months[month]} ${year} ${hoursString}:${minutesString}:${secondsString} GMT`;\n}\n","export const SENSITIVE_STRING = \"***SensitiveInformation***\";\n","import { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from \"../CognitoIdentityClient\";\nimport { GetCredentialsForIdentityInput, GetCredentialsForIdentityResponse } from \"../models/models_0\";\nimport {\n deserializeAws_json1_1GetCredentialsForIdentityCommand,\n serializeAws_json1_1GetCredentialsForIdentityCommand,\n} from \"../protocols/Aws_json1_1\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from \"@aws-sdk/protocol-http\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nimport {\n FinalizeHandlerArguments,\n Handler,\n HandlerExecutionContext,\n MiddlewareStack,\n HttpHandlerOptions as __HttpHandlerOptions,\n MetadataBearer as __MetadataBearer,\n SerdeContext as __SerdeContext,\n} from \"@aws-sdk/types\";\n\nexport type GetCredentialsForIdentityCommandInput = GetCredentialsForIdentityInput;\nexport type GetCredentialsForIdentityCommandOutput = GetCredentialsForIdentityResponse & __MetadataBearer;\n\n/**\n *

Returns credentials for the provided identity ID. Any provided logins will be\n * validated against supported login providers. If the token is for\n * cognito-identity.amazonaws.com, it will be passed through to AWS Security Token Service\n * with the appropriate role for the token.

\n *

This is a public API. You do not need any credentials to call this API.

\n */\nexport class GetCredentialsForIdentityCommand extends $Command<\n GetCredentialsForIdentityCommandInput,\n GetCredentialsForIdentityCommandOutput,\n CognitoIdentityClientResolvedConfig\n> {\n // Start section: command_properties\n // End section: command_properties\n\n constructor(readonly input: GetCredentialsForIdentityCommandInput) {\n // Start section: command_constructor\n super();\n // End section: command_constructor\n }\n\n /**\n * @internal\n */\n resolveMiddleware(\n clientStack: MiddlewareStack,\n configuration: CognitoIdentityClientResolvedConfig,\n options?: __HttpHandlerOptions\n ): Handler {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n\n const stack = clientStack.concat(this.middlewareStack);\n\n const { logger } = configuration;\n const clientName = \"CognitoIdentityClient\";\n const commandName = \"GetCredentialsForIdentityCommand\";\n const handlerExecutionContext: HandlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: GetCredentialsForIdentityInput.filterSensitiveLog,\n outputFilterSensitiveLog: GetCredentialsForIdentityResponse.filterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve(\n (request: FinalizeHandlerArguments) =>\n requestHandler.handle(request.request as __HttpRequest, options || {}),\n handlerExecutionContext\n );\n }\n\n private serialize(input: GetCredentialsForIdentityCommandInput, context: __SerdeContext): Promise<__HttpRequest> {\n return serializeAws_json1_1GetCredentialsForIdentityCommand(input, context);\n }\n\n private deserialize(\n output: __HttpResponse,\n context: __SerdeContext\n ): Promise {\n return deserializeAws_json1_1GetCredentialsForIdentityCommand(output, context);\n }\n\n // Start section: command_body_extra\n // End section: command_body_extra\n}\n","/**\n * An error representing a failure of an individual credential provider.\n *\n * This error class has special meaning to the {@link chain} method. If a\n * provider in the chain is rejected with an error, the chain will only proceed\n * to the next provider if the value of the `tryNextLink` property on the error\n * is truthy. This allows individual providers to halt the chain and also\n * ensures the chain will stop if an entirely unexpected error is encountered.\n */\nexport class ProviderError extends Error {\n constructor(message: string, public readonly tryNextLink: boolean = true) {\n super(message);\n }\n}\n","import { Logins, ResolvedLogins } from \"./Logins\";\n\n/**\n * @internal\n */\nexport function resolveLogins(logins: Logins): Promise {\n return Promise.all(\n Object.keys(logins).reduce((arr: Array<[string, string] | Promise<[string, string]>>, name: string) => {\n const tokenOrProvider = logins[name];\n if (typeof tokenOrProvider === \"string\") {\n arr.push([name, tokenOrProvider] as [string, string]);\n } else {\n arr.push(tokenOrProvider().then((token) => [name, token] as [string, string]));\n }\n return arr;\n }, [] as Array>)\n ).then((resolvedPairs) =>\n resolvedPairs.reduce((logins: ResolvedLogins, [key, value]) => {\n logins[key] = value;\n return logins;\n }, {} as ResolvedLogins)\n );\n}\n","import { GetCredentialsForIdentityCommand } from \"@aws-sdk/client-cognito-identity\";\nimport { ProviderError } from \"@aws-sdk/property-provider\";\nimport { CredentialProvider, Credentials } from \"@aws-sdk/types\";\n\nimport { CognitoProviderParameters } from \"./CognitoProviderParameters\";\nimport { resolveLogins } from \"./resolveLogins\";\n\nexport interface CognitoIdentityCredentials extends Credentials {\n /**\n * The Cognito ID returned by the last call to AWS.CognitoIdentity.getOpenIdToken().\n */\n identityId: string;\n}\n\n/**\n * Retrieves temporary AWS credentials using Amazon Cognito's\n * `GetCredentialsForIdentity` operation.\n *\n * Results from this function call are not cached internally.\n */\nexport function fromCognitoIdentity(parameters: FromCognitoIdentityParameters): CredentialProvider {\n return async (): Promise => {\n const {\n Credentials: {\n AccessKeyId = throwOnMissingAccessKeyId(),\n Expiration,\n SecretKey = throwOnMissingSecretKey(),\n SessionToken,\n } = throwOnMissingCredentials(),\n } = await parameters.client.send(\n new GetCredentialsForIdentityCommand({\n CustomRoleArn: parameters.customRoleArn,\n IdentityId: parameters.identityId,\n Logins: parameters.logins ? await resolveLogins(parameters.logins) : undefined,\n })\n );\n\n return {\n identityId: parameters.identityId,\n accessKeyId: AccessKeyId,\n secretAccessKey: SecretKey,\n sessionToken: SessionToken,\n expiration: Expiration,\n };\n };\n}\n\nexport interface FromCognitoIdentityParameters extends CognitoProviderParameters {\n /**\n * The unique identifier for the identity against which credentials will be\n * issued.\n */\n identityId: string;\n}\n\nfunction throwOnMissingAccessKeyId(): never {\n throw new ProviderError(\"Response from Amazon Cognito contained no access key ID\");\n}\n\nfunction throwOnMissingCredentials(): never {\n throw new ProviderError(\"Response from Amazon Cognito contained no credentials\");\n}\n\nfunction throwOnMissingSecretKey(): never {\n throw new ProviderError(\"Response from Amazon Cognito contained no secret key\");\n}\n","import { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from \"../CognitoIdentityClient\";\nimport { GetIdInput, GetIdResponse } from \"../models/models_0\";\nimport { deserializeAws_json1_1GetIdCommand, serializeAws_json1_1GetIdCommand } from \"../protocols/Aws_json1_1\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from \"@aws-sdk/protocol-http\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nimport {\n FinalizeHandlerArguments,\n Handler,\n HandlerExecutionContext,\n MiddlewareStack,\n HttpHandlerOptions as __HttpHandlerOptions,\n MetadataBearer as __MetadataBearer,\n SerdeContext as __SerdeContext,\n} from \"@aws-sdk/types\";\n\nexport type GetIdCommandInput = GetIdInput;\nexport type GetIdCommandOutput = GetIdResponse & __MetadataBearer;\n\n/**\n *

Generates (or retrieves) a Cognito ID. Supplying multiple logins will create an\n * implicit linked account.

\n *

This is a public API. You do not need any credentials to call this API.

\n */\nexport class GetIdCommand extends $Command {\n // Start section: command_properties\n // End section: command_properties\n\n constructor(readonly input: GetIdCommandInput) {\n // Start section: command_constructor\n super();\n // End section: command_constructor\n }\n\n /**\n * @internal\n */\n resolveMiddleware(\n clientStack: MiddlewareStack,\n configuration: CognitoIdentityClientResolvedConfig,\n options?: __HttpHandlerOptions\n ): Handler {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n\n const stack = clientStack.concat(this.middlewareStack);\n\n const { logger } = configuration;\n const clientName = \"CognitoIdentityClient\";\n const commandName = \"GetIdCommand\";\n const handlerExecutionContext: HandlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: GetIdInput.filterSensitiveLog,\n outputFilterSensitiveLog: GetIdResponse.filterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve(\n (request: FinalizeHandlerArguments) =>\n requestHandler.handle(request.request as __HttpRequest, options || {}),\n handlerExecutionContext\n );\n }\n\n private serialize(input: GetIdCommandInput, context: __SerdeContext): Promise<__HttpRequest> {\n return serializeAws_json1_1GetIdCommand(input, context);\n }\n\n private deserialize(output: __HttpResponse, context: __SerdeContext): Promise {\n return deserializeAws_json1_1GetIdCommand(output, context);\n }\n\n // Start section: command_body_extra\n // End section: command_body_extra\n}\n","import { Storage } from \"./Storage\";\n\nconst STORE_NAME = \"IdentityIds\";\n\nexport class IndexedDbStorage implements Storage {\n constructor(private readonly dbName: string = \"aws:cognito-identity-ids\") {}\n\n getItem(key: string): Promise {\n return this.withObjectStore(\"readonly\", (store) => {\n const req = store.get(key);\n\n return new Promise((resolve) => {\n req.onerror = () => resolve(null);\n\n req.onsuccess = () => resolve(req.result ? req.result.value : null);\n });\n }).catch(() => null);\n }\n\n removeItem(key: string): Promise {\n return this.withObjectStore(\"readwrite\", (store) => {\n const req = store.delete(key);\n\n return new Promise((resolve, reject) => {\n req.onerror = () => reject(req.error);\n\n req.onsuccess = () => resolve();\n });\n });\n }\n\n setItem(id: string, value: string): Promise {\n return this.withObjectStore(\"readwrite\", (store) => {\n const req = store.put({ id, value });\n\n return new Promise((resolve, reject) => {\n req.onerror = () => reject(req.error);\n\n req.onsuccess = () => resolve();\n });\n });\n }\n\n private getDb(): Promise {\n const openDbRequest = self.indexedDB.open(this.dbName, 1);\n return new Promise((resolve, reject) => {\n openDbRequest.onsuccess = () => {\n resolve(openDbRequest.result);\n };\n\n openDbRequest.onerror = () => {\n reject(openDbRequest.error);\n };\n\n openDbRequest.onblocked = () => {\n reject(new Error(\"Unable to access DB\"));\n };\n\n openDbRequest.onupgradeneeded = () => {\n const db = openDbRequest.result;\n db.onerror = () => {\n reject(new Error(\"Failed to create object store\"));\n };\n\n db.createObjectStore(STORE_NAME, { keyPath: \"id\" });\n };\n });\n }\n\n private withObjectStore(mode: IDBTransactionMode, action: (store: IDBObjectStore) => Promise): Promise {\n return this.getDb().then((db) => {\n const tx = db.transaction(STORE_NAME, mode);\n tx.oncomplete = () => db.close();\n\n return new Promise((resolve, reject) => {\n tx.onerror = () => reject(tx.error);\n\n resolve(action(tx.objectStore(STORE_NAME)));\n }).catch((err) => {\n db.close();\n throw err;\n });\n });\n }\n}\n","import { Storage } from \"./Storage\";\n\nexport class InMemoryStorage implements Storage {\n constructor(private store: { [key: string]: string } = {}) {}\n\n getItem(key: string): string | null {\n if (key in this.store) {\n return this.store[key];\n }\n\n return null;\n }\n\n removeItem(key: string): void {\n delete this.store[key];\n }\n\n setItem(key: string, value: string): void {\n this.store[key] = value;\n }\n}\n","import { IndexedDbStorage } from \"./IndexedDbStorage\";\nimport { InMemoryStorage } from \"./InMemoryStorage\";\nimport { Storage } from \"./Storage\";\n\nconst inMemoryStorage = new InMemoryStorage();\n\nexport function localStorage(): Storage {\n if (typeof self === \"object\" && self.indexedDB) {\n return new IndexedDbStorage();\n }\n\n if (typeof window === \"object\" && window.localStorage) {\n return window.localStorage;\n }\n\n return inMemoryStorage;\n}\n","import { GetIdCommand } from \"@aws-sdk/client-cognito-identity\";\nimport { ProviderError } from \"@aws-sdk/property-provider\";\nimport { CredentialProvider } from \"@aws-sdk/types\";\n\nimport { CognitoProviderParameters } from \"./CognitoProviderParameters\";\nimport { fromCognitoIdentity } from \"./fromCognitoIdentity\";\nimport { localStorage } from \"./localStorage\";\nimport { resolveLogins } from \"./resolveLogins\";\nimport { Storage } from \"./Storage\";\n\n/**\n * Retrieves or generates a unique identifier using Amazon Cognito's `GetId`\n * operation, then generates temporary AWS credentials using Amazon Cognito's\n * `GetCredentialsForIdentity` operation.\n *\n * Results from `GetId` are cached internally, but results from\n * `GetCredentialsForIdentity` are not.\n */\nexport function fromCognitoIdentityPool({\n accountId,\n cache = localStorage(),\n client,\n customRoleArn,\n identityPoolId,\n logins,\n userIdentifier = !logins || Object.keys(logins).length === 0 ? \"ANONYMOUS\" : undefined,\n}: FromCognitoIdentityPoolParameters): CredentialProvider {\n const cacheKey = userIdentifier ? `aws:cognito-identity-credentials:${identityPoolId}:${userIdentifier}` : undefined;\n\n let provider: CredentialProvider = async () => {\n let identityId = cacheKey && (await cache.getItem(cacheKey));\n if (!identityId) {\n const { IdentityId = throwOnMissingId() } = await client.send(\n new GetIdCommand({\n AccountId: accountId,\n IdentityPoolId: identityPoolId,\n Logins: logins ? await resolveLogins(logins) : undefined,\n })\n );\n identityId = IdentityId;\n if (cacheKey) {\n Promise.resolve(cache.setItem(cacheKey, identityId)).catch(() => {});\n }\n }\n\n provider = fromCognitoIdentity({\n client,\n customRoleArn,\n logins,\n identityId,\n });\n\n return provider();\n };\n\n return () =>\n provider().catch(async (err) => {\n if (cacheKey) {\n Promise.resolve(cache.removeItem(cacheKey)).catch(() => {});\n }\n\n throw err;\n });\n}\n\nexport interface FromCognitoIdentityPoolParameters extends CognitoProviderParameters {\n /**\n * A standard AWS account ID (9+ digits).\n */\n accountId?: string;\n\n /**\n * A cache in which to store resolved Cognito IdentityIds. If not supplied,\n * the credential provider will attempt to store IdentityIds in one of the\n * following (in order of preference):\n * 1. IndexedDB\n * 2. LocalStorage\n * 3. An in-memory cache object that will not persist between pages.\n *\n * IndexedDB is preferred to maximize data sharing between top-level\n * browsing contexts and web workers.\n *\n * The provider will not cache IdentityIds of authenticated users unless a\n * separate `userIdentitifer` parameter is supplied.\n */\n cache?: Storage;\n\n /**\n * The unique identifier for the identity pool from which an identity should\n * be retrieved or generated.\n */\n identityPoolId: string;\n\n /**\n * A unique identifier for the user. This is distinct from a Cognito\n * IdentityId and should instead be an identifier meaningful to your\n * application. Used to cache Cognito IdentityIds on a per-user basis.\n */\n userIdentifier?: string;\n}\n\nfunction throwOnMissingId(): never {\n throw new ProviderError(\"Response from Amazon Cognito contained no identity ID\");\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export const escapeUri = (uri: string): string =>\n // AWS percent-encodes some extra non-standard characters in a URI\n encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode);\n\nconst hexEncode = (c: string) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`;\n","import { QueryParameterBag } from \"@aws-sdk/types\";\nimport { escapeUri } from \"@aws-sdk/util-uri-escape\";\n\nexport function buildQueryString(query: QueryParameterBag): string {\n const parts: string[] = [];\n for (let key of Object.keys(query).sort()) {\n const value = query[key];\n key = escapeUri(key);\n if (Array.isArray(value)) {\n for (let i = 0, iLen = value.length; i < iLen; i++) {\n parts.push(`${key}=${escapeUri(value[i])}`);\n }\n } else {\n let qsEntry = key;\n if (value || typeof value === \"string\") {\n qsEntry += `=${escapeUri(value)}`;\n }\n parts.push(qsEntry);\n }\n }\n\n return parts.join(\"&\");\n}\n","const alphabetByEncoding: { [key: string]: number } = {};\nconst alphabetByValue: Array = new Array(64);\n\nfor (let i = 0, start = \"A\".charCodeAt(0), limit = \"Z\".charCodeAt(0); i + start <= limit; i++) {\n const char = String.fromCharCode(i + start);\n alphabetByEncoding[char] = i;\n alphabetByValue[i] = char;\n}\n\nfor (let i = 0, start = \"a\".charCodeAt(0), limit = \"z\".charCodeAt(0); i + start <= limit; i++) {\n const char = String.fromCharCode(i + start);\n const index = i + 26;\n alphabetByEncoding[char] = index;\n alphabetByValue[index] = char;\n}\n\nfor (let i = 0; i < 10; i++) {\n alphabetByEncoding[i.toString(10)] = i + 52;\n const char = i.toString(10);\n const index = i + 52;\n alphabetByEncoding[char] = index;\n alphabetByValue[index] = char;\n}\n\nalphabetByEncoding[\"+\"] = 62;\nalphabetByValue[62] = \"+\";\nalphabetByEncoding[\"/\"] = 63;\nalphabetByValue[63] = \"/\";\n\nconst bitsPerLetter = 6;\nconst bitsPerByte = 8;\nconst maxLetterValue = 0b111111;\n\n/**\n * Converts a base-64 encoded string to a Uint8Array of bytes.\n *\n * @param input The base-64 encoded string\n *\n * @see https://tools.ietf.org/html/rfc4648#section-4\n */\nexport function fromBase64(input: string): Uint8Array {\n let totalByteLength = (input.length / 4) * 3;\n if (input.substr(-2) === \"==\") {\n totalByteLength -= 2;\n } else if (input.substr(-1) === \"=\") {\n totalByteLength--;\n }\n const out = new ArrayBuffer(totalByteLength);\n const dataView = new DataView(out);\n for (let i = 0; i < input.length; i += 4) {\n let bits = 0;\n let bitLength = 0;\n for (let j = i, limit = i + 3; j <= limit; j++) {\n if (input[j] !== \"=\") {\n bits |= alphabetByEncoding[input[j]] << ((limit - j) * bitsPerLetter);\n bitLength += bitsPerLetter;\n } else {\n bits >>= bitsPerLetter;\n }\n }\n\n const chunkOffset = (i / 4) * 3;\n bits >>= bitLength % bitsPerByte;\n const byteLength = Math.floor(bitLength / bitsPerByte);\n for (let k = 0; k < byteLength; k++) {\n const offset = (byteLength - k - 1) * bitsPerByte;\n dataView.setUint8(chunkOffset + k, (bits & (255 << offset)) >> offset);\n }\n }\n\n return new Uint8Array(out);\n}\n\n/**\n * Converts a Uint8Array of binary data to a base-64 encoded string.\n *\n * @param input The binary data to encode\n *\n * @see https://tools.ietf.org/html/rfc4648#section-4\n */\nexport function toBase64(input: Uint8Array): string {\n let str = \"\";\n for (let i = 0; i < input.length; i += 3) {\n let bits = 0;\n let bitLength = 0;\n for (let j = i, limit = Math.min(i + 3, input.length); j < limit; j++) {\n bits |= input[j] << ((limit - j - 1) * bitsPerByte);\n bitLength += bitsPerByte;\n }\n\n const bitClusterCount = Math.ceil(bitLength / bitsPerLetter);\n bits <<= bitClusterCount * bitsPerLetter - bitLength;\n for (let k = 1; k <= bitClusterCount; k++) {\n const offset = (bitClusterCount - k) * bitsPerLetter;\n str += alphabetByValue[(bits & (maxLetterValue << offset)) >> offset];\n }\n\n str += \"==\".slice(0, 4 - bitClusterCount);\n }\n\n return str;\n}\n","import { HttpHandler, HttpRequest, HttpResponse } from \"@aws-sdk/protocol-http\";\nimport { buildQueryString } from \"@aws-sdk/querystring-builder\";\nimport { HeaderBag, HttpHandlerOptions } from \"@aws-sdk/types\";\n\nimport { requestTimeout } from \"./request-timeout\";\n\ndeclare let AbortController: any;\n\n/**\n * Represents the http options that can be passed to a browser http client.\n */\nexport interface FetchHttpHandlerOptions {\n /**\n * The number of milliseconds a request can take before being automatically\n * terminated.\n */\n requestTimeout?: number;\n}\n\nexport class FetchHttpHandler implements HttpHandler {\n private readonly requestTimeout?: number;\n\n constructor({ requestTimeout }: FetchHttpHandlerOptions = {}) {\n this.requestTimeout = requestTimeout;\n }\n\n destroy(): void {\n // Do nothing. TLS and HTTP/2 connection pooling is handled by the browser.\n }\n\n handle(request: HttpRequest, { abortSignal }: HttpHandlerOptions = {}): Promise<{ response: HttpResponse }> {\n const requestTimeoutInMs = this.requestTimeout;\n\n // if the request was already aborted, prevent doing extra work\n if (abortSignal?.aborted) {\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n return Promise.reject(abortError);\n }\n\n let path = request.path;\n if (request.query) {\n const queryString = buildQueryString(request.query);\n if (queryString) {\n path += `?${queryString}`;\n }\n }\n\n const { port, method } = request;\n const url = `${request.protocol}//${request.hostname}${port ? `:${port}` : \"\"}${path}`;\n // Request constructor doesn't allow GET/HEAD request with body\n // ref: https://github.com/whatwg/fetch/issues/551\n const body = method === \"GET\" || method === \"HEAD\" ? undefined : request.body;\n const requestOptions: RequestInit = {\n body,\n headers: new Headers(request.headers),\n method: method,\n };\n\n // some browsers support abort signal\n if (typeof AbortController !== \"undefined\") {\n (requestOptions as any)[\"signal\"] = abortSignal;\n }\n\n const fetchRequest = new Request(url, requestOptions);\n const raceOfPromises = [\n fetch(fetchRequest).then((response) => {\n const fetchHeaders: any = response.headers;\n const transformedHeaders: HeaderBag = {};\n\n for (const pair of >fetchHeaders.entries()) {\n transformedHeaders[pair[0]] = pair[1];\n }\n\n const hasReadableStream = response.body !== undefined;\n\n // Return the response with buffered body\n if (!hasReadableStream) {\n return response.blob().then((body) => ({\n response: new HttpResponse({\n headers: transformedHeaders,\n statusCode: response.status,\n body,\n }),\n }));\n }\n // Return the response with streaming body\n return {\n response: new HttpResponse({\n headers: transformedHeaders,\n statusCode: response.status,\n body: response.body,\n }),\n };\n }),\n requestTimeout(requestTimeoutInMs),\n ];\n if (abortSignal) {\n raceOfPromises.push(\n new Promise((resolve, reject) => {\n abortSignal.onabort = () => {\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n };\n })\n );\n }\n return Promise.race(raceOfPromises);\n }\n}\n","export function requestTimeout(timeoutInMs = 0): Promise {\n return new Promise((resolve, reject) => {\n if (timeoutInMs) {\n setTimeout(() => {\n const timeoutError = new Error(`Request did not complete within ${timeoutInMs} ms`);\n timeoutError.name = \"TimeoutError\";\n reject(timeoutError);\n }, timeoutInMs);\n }\n });\n}\n","import { StreamCollector } from \"@aws-sdk/types\";\nimport { fromBase64 } from \"@aws-sdk/util-base64-browser\";\n\n//reference: https://snack.expo.io/r1JCSWRGU\nexport const streamCollector: StreamCollector = (stream: Blob | ReadableStream): Promise => {\n if (typeof Blob === \"function\" && stream instanceof Blob) {\n return collectBlob(stream);\n }\n\n return collectStream(stream as ReadableStream);\n};\n\nasync function collectBlob(blob: Blob): Promise {\n const base64 = await readToBase64(blob);\n const arrayBuffer = fromBase64(base64);\n return new Uint8Array(arrayBuffer);\n}\n\nasync function collectStream(stream: ReadableStream): Promise {\n let res = new Uint8Array(0);\n const reader = stream.getReader();\n let isDone = false;\n while (!isDone) {\n const { done, value } = await reader.read();\n if (value) {\n const prior = res;\n res = new Uint8Array(prior.length + value.length);\n res.set(prior);\n res.set(value, prior.length);\n }\n isDone = done;\n }\n return res;\n}\n\nfunction readToBase64(blob: Blob): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n // reference: https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL\n // response from readAsDataURL is always prepended with \"data:*/*;base64,\"\n if (reader.readyState !== 2) {\n return reject(new Error(\"Reader aborted too early\"));\n }\n const result = (reader.result ?? \"\") as string;\n // Response can include only 'data:' for empty blob, return empty string in this case.\n // Otherwise, return the string after ','\n const commaIndex = result.indexOf(\",\");\n const dataOffset = commaIndex > -1 ? commaIndex + 1 : result.length;\n resolve(result.substring(dataOffset));\n };\n reader.onabort = () => reject(new Error(\"Read aborted\"));\n reader.onerror = () => reject(reader.error);\n // reader.readAsArrayBuffer is not always available\n reader.readAsDataURL(blob);\n });\n}\n","import { Provider } from \"@aws-sdk/types\";\nexport const invalidProvider: (message: string) => Provider = (message: string) => () => Promise.reject(message);\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import {\n AbsoluteLocation,\n FinalizeHandler,\n FinalizeHandlerArguments,\n FinalizeHandlerOutput,\n FinalizeRequestHandlerOptions,\n HandlerExecutionContext,\n MetadataBearer,\n Pluggable,\n} from \"@aws-sdk/types\";\n\nimport { RetryResolvedConfig } from \"./configurations\";\n\nexport const retryMiddleware = (options: RetryResolvedConfig) => (\n next: FinalizeHandler,\n context: HandlerExecutionContext\n): FinalizeHandler => async (\n args: FinalizeHandlerArguments\n): Promise> => {\n if (options?.retryStrategy?.mode)\n context.userAgent = [...(context.userAgent || []), [\"cfg/retry-mode\", options.retryStrategy.mode]];\n return options.retryStrategy.retry(next, args);\n};\n\nexport const retryMiddlewareOptions: FinalizeRequestHandlerOptions & AbsoluteLocation = {\n name: \"retryMiddleware\",\n tags: [\"RETRY\"],\n step: \"finalizeRequest\",\n priority: \"high\",\n override: true,\n};\n\nexport const getRetryPlugin = (options: RetryResolvedConfig): Pluggable => ({\n applyToStack: (clientStack) => {\n clientStack.add(retryMiddleware(options), retryMiddlewareOptions);\n },\n});\n","/**\n * Errors encountered when the client clock and server clock cannot agree on the\n * current time.\n *\n * These errors are retryable, assuming the SDK has enabled clock skew\n * correction.\n */\nexport const CLOCK_SKEW_ERROR_CODES = [\n \"AuthFailure\",\n \"InvalidSignatureException\",\n \"RequestExpired\",\n \"RequestInTheFuture\",\n \"RequestTimeTooSkewed\",\n \"SignatureDoesNotMatch\",\n];\n\n/**\n * Errors that indicate the SDK is being throttled.\n *\n * These errors are always retryable.\n */\nexport const THROTTLING_ERROR_CODES = [\n \"BandwidthLimitExceeded\",\n \"EC2ThrottledException\",\n \"LimitExceededException\",\n \"PriorRequestNotComplete\",\n \"ProvisionedThroughputExceededException\",\n \"RequestLimitExceeded\",\n \"RequestThrottled\",\n \"RequestThrottledException\",\n \"SlowDown\",\n \"ThrottledException\",\n \"Throttling\",\n \"ThrottlingException\",\n \"TooManyRequestsException\",\n \"TransactionInProgressException\", // DynamoDB\n];\n\n/**\n * Error codes that indicate transient issues\n */\nexport const TRANSIENT_ERROR_CODES = [\"AbortError\", \"TimeoutError\", \"RequestTimeout\", \"RequestTimeoutException\"];\n\n/**\n * Error codes that indicate transient issues\n */\nexport const TRANSIENT_ERROR_STATUS_CODES = [500, 502, 503, 504];\n","import { SdkError } from \"@aws-sdk/smithy-client\";\n\nimport {\n CLOCK_SKEW_ERROR_CODES,\n THROTTLING_ERROR_CODES,\n TRANSIENT_ERROR_CODES,\n TRANSIENT_ERROR_STATUS_CODES,\n} from \"./constants\";\n\nexport const isRetryableByTrait = (error: SdkError) => error.$retryable !== undefined;\n\nexport const isClockSkewError = (error: SdkError) => CLOCK_SKEW_ERROR_CODES.includes(error.name);\n\nexport const isThrottlingError = (error: SdkError) =>\n error.$metadata?.httpStatusCode === 429 ||\n THROTTLING_ERROR_CODES.includes(error.name) ||\n error.$retryable?.throttling == true;\n\nexport const isTransientError = (error: SdkError) =>\n TRANSIENT_ERROR_CODES.includes(error.name) ||\n TRANSIENT_ERROR_STATUS_CODES.includes(error.$metadata?.httpStatusCode || 0);\n","import { MAXIMUM_RETRY_DELAY } from \"./constants\";\n\n/**\n * Calculate a capped, fully-jittered exponential backoff time.\n */\nexport const defaultDelayDecider = (delayBase: number, attempts: number) =>\n Math.floor(Math.min(MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase));\n","/**\n * The base number of milliseconds to use in calculating a suitable cool-down\n * time when a retryable error is encountered.\n */\nexport const DEFAULT_RETRY_DELAY_BASE = 100;\n\n/**\n * The maximum amount of time (in milliseconds) that will be used as a delay\n * between retry attempts.\n */\nexport const MAXIMUM_RETRY_DELAY = 20 * 1000;\n\n/**\n * The retry delay base (in milliseconds) to use when a throttling error is\n * encountered.\n */\nexport const THROTTLING_RETRY_DELAY_BASE = 500;\n\n/**\n * Initial number of retry tokens in Retry Quota\n */\nexport const INITIAL_RETRY_TOKENS = 500;\n\n/**\n * The total amount of retry tokens to be decremented from retry token balance.\n */\nexport const RETRY_COST = 5;\n\n/**\n * The total amount of retry tokens to be decremented from retry token balance\n * when a throttling error is encountered.\n */\nexport const TIMEOUT_RETRY_COST = 10;\n\n/**\n * The total amount of retry token to be incremented from retry token balance\n * if an SDK operation invocation succeeds without requiring a retry request.\n */\nexport const NO_RETRY_INCREMENT = 1;\n\n/**\n * Header name for SDK invocation ID\n */\nexport const INVOCATION_ID_HEADER = \"amz-sdk-invocation-id\";\n\n/**\n * Header name for request retry information.\n */\nexport const REQUEST_HEADER = \"amz-sdk-request\";\n","import {\n isClockSkewError,\n isRetryableByTrait,\n isThrottlingError,\n isTransientError,\n} from \"@aws-sdk/service-error-classification\";\nimport { SdkError } from \"@aws-sdk/smithy-client\";\n\nexport const defaultRetryDecider = (error: SdkError) => {\n if (!error) {\n return false;\n }\n\n return isRetryableByTrait(error) || isClockSkewError(error) || isThrottlingError(error) || isTransientError(error);\n};\n","import { HttpRequest } from \"@aws-sdk/protocol-http\";\nimport { isThrottlingError } from \"@aws-sdk/service-error-classification\";\nimport { SdkError } from \"@aws-sdk/smithy-client\";\nimport { FinalizeHandler, FinalizeHandlerArguments, MetadataBearer, Provider, RetryStrategy } from \"@aws-sdk/types\";\nimport { v4 } from \"uuid\";\n\nimport {\n DEFAULT_RETRY_DELAY_BASE,\n INITIAL_RETRY_TOKENS,\n INVOCATION_ID_HEADER,\n REQUEST_HEADER,\n THROTTLING_RETRY_DELAY_BASE,\n} from \"./constants\";\nimport { getDefaultRetryQuota } from \"./defaultRetryQuota\";\nimport { defaultDelayDecider } from \"./delayDecider\";\nimport { defaultRetryDecider } from \"./retryDecider\";\n\n/**\n * The default value for how many HTTP requests an SDK should make for a\n * single SDK operation invocation before giving up\n */\nexport const DEFAULT_MAX_ATTEMPTS = 3;\n\n/**\n * The default retry algorithm to use.\n */\nexport const DEFAULT_RETRY_MODE = \"standard\";\n\n/**\n * Determines whether an error is retryable based on the number of retries\n * already attempted, the HTTP status code, and the error received (if any).\n *\n * @param error The error encountered.\n */\nexport interface RetryDecider {\n (error: SdkError): boolean;\n}\n\n/**\n * Determines the number of milliseconds to wait before retrying an action.\n *\n * @param delayBase The base delay (in milliseconds).\n * @param attempts The number of times the action has already been tried.\n */\nexport interface DelayDecider {\n (delayBase: number, attempts: number): number;\n}\n\n/**\n * Interface that specifies the retry quota behavior.\n */\nexport interface RetryQuota {\n /**\n * returns true if retry tokens are available from the retry quota bucket.\n */\n hasRetryTokens: (error: SdkError) => boolean;\n\n /**\n * returns token amount from the retry quota bucket.\n * throws error is retry tokens are not available.\n */\n retrieveRetryTokens: (error: SdkError) => number;\n\n /**\n * releases tokens back to the retry quota.\n */\n releaseRetryTokens: (releaseCapacityAmount?: number) => void;\n}\n\n/**\n * Strategy options to be passed to StandardRetryStrategy\n */\nexport interface StandardRetryStrategyOptions {\n retryDecider?: RetryDecider;\n delayDecider?: DelayDecider;\n retryQuota?: RetryQuota;\n}\n\nexport class StandardRetryStrategy implements RetryStrategy {\n private retryDecider: RetryDecider;\n private delayDecider: DelayDecider;\n private retryQuota: RetryQuota;\n public readonly mode = DEFAULT_RETRY_MODE;\n\n constructor(private readonly maxAttemptsProvider: Provider, options?: StandardRetryStrategyOptions) {\n this.retryDecider = options?.retryDecider ?? defaultRetryDecider;\n this.delayDecider = options?.delayDecider ?? defaultDelayDecider;\n this.retryQuota = options?.retryQuota ?? getDefaultRetryQuota(INITIAL_RETRY_TOKENS);\n }\n\n private shouldRetry(error: SdkError, attempts: number, maxAttempts: number) {\n return attempts < maxAttempts && this.retryDecider(error) && this.retryQuota.hasRetryTokens(error);\n }\n\n private async getMaxAttempts() {\n let maxAttempts: number;\n try {\n maxAttempts = await this.maxAttemptsProvider();\n } catch (error) {\n maxAttempts = DEFAULT_MAX_ATTEMPTS;\n }\n return maxAttempts;\n }\n\n async retry(\n next: FinalizeHandler,\n args: FinalizeHandlerArguments\n ) {\n let retryTokenAmount;\n let attempts = 0;\n let totalDelay = 0;\n\n const maxAttempts = await this.getMaxAttempts();\n\n const { request } = args;\n if (HttpRequest.isInstance(request)) {\n request.headers[INVOCATION_ID_HEADER] = v4();\n }\n\n while (true) {\n try {\n if (HttpRequest.isInstance(request)) {\n request.headers[REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`;\n }\n const { response, output } = await next(args);\n\n this.retryQuota.releaseRetryTokens(retryTokenAmount);\n output.$metadata.attempts = attempts + 1;\n output.$metadata.totalRetryDelay = totalDelay;\n\n return { response, output };\n } catch (err) {\n attempts++;\n if (this.shouldRetry(err as SdkError, attempts, maxAttempts)) {\n retryTokenAmount = this.retryQuota.retrieveRetryTokens(err);\n const delay = this.delayDecider(\n isThrottlingError(err) ? THROTTLING_RETRY_DELAY_BASE : DEFAULT_RETRY_DELAY_BASE,\n attempts\n );\n totalDelay += delay;\n\n await new Promise((resolve) => setTimeout(resolve, delay));\n continue;\n }\n\n if (!err.$metadata) {\n err.$metadata = {};\n }\n\n err.$metadata.attempts = attempts;\n err.$metadata.totalRetryDelay = totalDelay;\n throw err;\n }\n }\n }\n}\n","import { SdkError } from \"@aws-sdk/smithy-client\";\n\nimport { NO_RETRY_INCREMENT, RETRY_COST, TIMEOUT_RETRY_COST } from \"./constants\";\nimport { RetryQuota } from \"./defaultStrategy\";\n\nexport const getDefaultRetryQuota = (initialRetryTokens: number): RetryQuota => {\n const MAX_CAPACITY = initialRetryTokens;\n let availableCapacity = initialRetryTokens;\n\n const getCapacityAmount = (error: SdkError) => (error.name === \"TimeoutError\" ? TIMEOUT_RETRY_COST : RETRY_COST);\n\n const hasRetryTokens = (error: SdkError) => getCapacityAmount(error) <= availableCapacity;\n\n const retrieveRetryTokens = (error: SdkError) => {\n if (!hasRetryTokens(error)) {\n // retryStrategy should stop retrying, and return last error\n throw new Error(\"No retry token available\");\n }\n const capacityAmount = getCapacityAmount(error);\n availableCapacity -= capacityAmount;\n return capacityAmount;\n };\n\n const releaseRetryTokens = (capacityReleaseAmount?: number) => {\n availableCapacity += capacityReleaseAmount ?? NO_RETRY_INCREMENT;\n availableCapacity = Math.min(availableCapacity, MAX_CAPACITY);\n };\n\n return Object.freeze({\n hasRetryTokens,\n retrieveRetryTokens,\n releaseRetryTokens,\n });\n};\n","import { LoadedConfigSelectors } from \"@aws-sdk/node-config-provider\";\nimport { Provider, RetryStrategy } from \"@aws-sdk/types\";\n\nimport { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE, StandardRetryStrategy } from \"./defaultStrategy\";\n\nexport const ENV_MAX_ATTEMPTS = \"AWS_MAX_ATTEMPTS\";\nexport const CONFIG_MAX_ATTEMPTS = \"max_attempts\";\n\nexport const NODE_MAX_ATTEMPT_CONFIG_OPTIONS: LoadedConfigSelectors = {\n environmentVariableSelector: (env) => {\n const value = env[ENV_MAX_ATTEMPTS];\n if (!value) return undefined;\n const maxAttempt = parseInt(value);\n if (Number.isNaN(maxAttempt)) {\n throw new Error(`Environment variable ${ENV_MAX_ATTEMPTS} mast be a number, got \"${value}\"`);\n }\n return maxAttempt;\n },\n configFileSelector: (profile) => {\n const value = profile[CONFIG_MAX_ATTEMPTS];\n if (!value) return undefined;\n const maxAttempt = parseInt(value);\n if (Number.isNaN(maxAttempt)) {\n throw new Error(`Shared config file entry ${CONFIG_MAX_ATTEMPTS} mast be a number, got \"${value}\"`);\n }\n return maxAttempt;\n },\n default: DEFAULT_MAX_ATTEMPTS,\n};\n\nexport interface RetryInputConfig {\n /**\n * The maximum number of times requests that encounter retryable failures should be attempted.\n */\n maxAttempts?: number | Provider;\n /**\n * The strategy to retry the request. Using built-in exponential backoff strategy by default.\n */\n retryStrategy?: RetryStrategy;\n}\n\ninterface PreviouslyResolved {}\nexport interface RetryResolvedConfig {\n maxAttempts: Provider;\n retryStrategy: RetryStrategy;\n}\n\nexport const resolveRetryConfig = (input: T & PreviouslyResolved & RetryInputConfig): T & RetryResolvedConfig => {\n const maxAttempts = normalizeMaxAttempts(input.maxAttempts);\n return {\n ...input,\n maxAttempts,\n retryStrategy: input.retryStrategy || new StandardRetryStrategy(maxAttempts),\n };\n};\n\nconst normalizeMaxAttempts = (maxAttempts: number | Provider = DEFAULT_MAX_ATTEMPTS): Provider => {\n if (typeof maxAttempts === \"number\") {\n const promisified = Promise.resolve(maxAttempts);\n return () => promisified;\n }\n return maxAttempts;\n};\n\nexport const ENV_RETRY_MODE = \"AWS_RETRY_MODE\";\nexport const CONFIG_RETRY_MODE = \"retry_mode\";\n\nexport const NODE_RETRY_MODE_CONFIG_OPTIONS: LoadedConfigSelectors = {\n environmentVariableSelector: (env) => env[ENV_RETRY_MODE],\n configFileSelector: (profile) => profile[CONFIG_RETRY_MODE],\n default: DEFAULT_RETRY_MODE,\n};\n","export function calculateBodyLength(body: any): number | undefined {\n if (typeof body === \"string\") {\n let len = body.length;\n\n for (let i = len - 1; i >= 0; i--) {\n const code = body.charCodeAt(i);\n if (code > 0x7f && code <= 0x7ff) len++;\n else if (code > 0x7ff && code <= 0xffff) len += 2;\n }\n\n return len;\n } else if (typeof body.byteLength === \"number\") {\n // handles Uint8Array, ArrayBuffer, Buffer, and ArrayBufferView\n return body.byteLength;\n } else if (typeof body.size === \"number\") {\n // handles browser File object\n return body.size;\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Provider, UserAgent } from \"@aws-sdk/types\";\nimport bowser from \"bowser\";\n\nimport { DefaultUserAgentOptions } from \"./configurations\";\n\n/**\n * Default provider to the user agent in browsers. It's a best effort to infer\n * the device information. It uses bowser library to detect the browser and virsion\n */\nexport const defaultUserAgent = ({\n serviceId,\n clientVersion,\n}: DefaultUserAgentOptions): Provider => async () => {\n const parsedUA = window?.navigator?.userAgent ? bowser.parse(window.navigator.userAgent) : undefined;\n const sections: UserAgent = [\n // sdk-metadata\n [\"aws-sdk-js\", clientVersion],\n // os-metadata\n [`os/${parsedUA?.os?.name || \"other\"}`, parsedUA?.os?.version],\n // language-metadata\n // ECMAScript edition doesn't matter in JS.\n [\"lang/js\"],\n // browser vendor and version.\n [\"md/browser\", `${parsedUA?.browser?.name ?? \"unknown\"}_${parsedUA?.browser?.version ?? \"unknown\"}`],\n ];\n\n if (serviceId) {\n // api-metadata\n // service Id may not appear in non-AWS clients\n sections.push([`api/${serviceId}`, clientVersion]);\n }\n\n return sections;\n};\n","import { RegionInfo, RegionInfoProvider } from \"@aws-sdk/types\";\n\n// Partition default templates\nconst AWS_TEMPLATE = \"cognito-identity.{region}.amazonaws.com\";\nconst AWS_CN_TEMPLATE = \"cognito-identity.{region}.amazonaws.com.cn\";\nconst AWS_ISO_TEMPLATE = \"cognito-identity.{region}.c2s.ic.gov\";\nconst AWS_ISO_B_TEMPLATE = \"cognito-identity.{region}.sc2s.sgov.gov\";\nconst AWS_US_GOV_TEMPLATE = \"cognito-identity.{region}.amazonaws.com\";\n\n// Partition regions\nconst AWS_REGIONS = new Set([\n \"af-south-1\",\n \"ap-east-1\",\n \"ap-northeast-1\",\n \"ap-northeast-2\",\n \"ap-south-1\",\n \"ap-southeast-1\",\n \"ap-southeast-2\",\n \"ca-central-1\",\n \"eu-central-1\",\n \"eu-north-1\",\n \"eu-south-1\",\n \"eu-west-1\",\n \"eu-west-2\",\n \"eu-west-3\",\n \"me-south-1\",\n \"sa-east-1\",\n \"us-east-1\",\n \"us-east-2\",\n \"us-west-1\",\n \"us-west-2\",\n]);\nconst AWS_CN_REGIONS = new Set([\"cn-north-1\", \"cn-northwest-1\"]);\nconst AWS_ISO_REGIONS = new Set([\"us-iso-east-1\"]);\nconst AWS_ISO_B_REGIONS = new Set([\"us-isob-east-1\"]);\nconst AWS_US_GOV_REGIONS = new Set([\"us-gov-east-1\", \"us-gov-west-1\"]);\n\nexport const defaultRegionInfoProvider: RegionInfoProvider = (region: string, options?: any) => {\n let regionInfo: RegionInfo | undefined = undefined;\n switch (region) {\n // First, try to match exact region names.\n case \"ap-northeast-1\":\n regionInfo = {\n hostname: \"cognito-identity.ap-northeast-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"ap-northeast-2\":\n regionInfo = {\n hostname: \"cognito-identity.ap-northeast-2.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"ap-south-1\":\n regionInfo = {\n hostname: \"cognito-identity.ap-south-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"ap-southeast-1\":\n regionInfo = {\n hostname: \"cognito-identity.ap-southeast-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"ap-southeast-2\":\n regionInfo = {\n hostname: \"cognito-identity.ap-southeast-2.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"ca-central-1\":\n regionInfo = {\n hostname: \"cognito-identity.ca-central-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"cn-north-1\":\n regionInfo = {\n hostname: \"cognito-identity.cn-north-1.amazonaws.com.cn\",\n partition: \"aws-cn\",\n };\n break;\n case \"eu-central-1\":\n regionInfo = {\n hostname: \"cognito-identity.eu-central-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"eu-north-1\":\n regionInfo = {\n hostname: \"cognito-identity.eu-north-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"eu-west-1\":\n regionInfo = {\n hostname: \"cognito-identity.eu-west-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"eu-west-2\":\n regionInfo = {\n hostname: \"cognito-identity.eu-west-2.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"eu-west-3\":\n regionInfo = {\n hostname: \"cognito-identity.eu-west-3.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"fips-us-east-1\":\n regionInfo = {\n hostname: \"cognito-identity-fips.us-east-1.amazonaws.com\",\n partition: \"aws\",\n signingRegion: \"us-east-1\",\n };\n break;\n case \"fips-us-east-2\":\n regionInfo = {\n hostname: \"cognito-identity-fips.us-east-2.amazonaws.com\",\n partition: \"aws\",\n signingRegion: \"us-east-2\",\n };\n break;\n case \"fips-us-gov-west-1\":\n regionInfo = {\n hostname: \"cognito-identity-fips.us-gov-west-1.amazonaws.com\",\n partition: \"aws-us-gov\",\n signingRegion: \"us-gov-west-1\",\n };\n break;\n case \"fips-us-west-2\":\n regionInfo = {\n hostname: \"cognito-identity-fips.us-west-2.amazonaws.com\",\n partition: \"aws\",\n signingRegion: \"us-west-2\",\n };\n break;\n case \"sa-east-1\":\n regionInfo = {\n hostname: \"cognito-identity.sa-east-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"us-east-1\":\n regionInfo = {\n hostname: \"cognito-identity.us-east-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"us-east-2\":\n regionInfo = {\n hostname: \"cognito-identity.us-east-2.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"us-gov-west-1\":\n regionInfo = {\n hostname: \"cognito-identity.us-gov-west-1.amazonaws.com\",\n partition: \"aws-us-gov\",\n };\n break;\n case \"us-west-1\":\n regionInfo = {\n hostname: \"cognito-identity.us-west-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"us-west-2\":\n regionInfo = {\n hostname: \"cognito-identity.us-west-2.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n // Next, try to match partition endpoints.\n default:\n if (AWS_REGIONS.has(region)) {\n regionInfo = {\n hostname: AWS_TEMPLATE.replace(\"{region}\", region),\n partition: \"aws\",\n };\n }\n if (AWS_CN_REGIONS.has(region)) {\n regionInfo = {\n hostname: AWS_CN_TEMPLATE.replace(\"{region}\", region),\n partition: \"aws-cn\",\n };\n }\n if (AWS_ISO_REGIONS.has(region)) {\n regionInfo = {\n hostname: AWS_ISO_TEMPLATE.replace(\"{region}\", region),\n partition: \"aws-iso\",\n };\n }\n if (AWS_ISO_B_REGIONS.has(region)) {\n regionInfo = {\n hostname: AWS_ISO_B_TEMPLATE.replace(\"{region}\", region),\n partition: \"aws-iso-b\",\n };\n }\n if (AWS_US_GOV_REGIONS.has(region)) {\n regionInfo = {\n hostname: AWS_US_GOV_TEMPLATE.replace(\"{region}\", region),\n partition: \"aws-us-gov\",\n };\n }\n // Finally, assume it's an AWS partition endpoint.\n if (regionInfo === undefined) {\n regionInfo = {\n hostname: AWS_TEMPLATE.replace(\"{region}\", region),\n partition: \"aws\",\n };\n }\n }\n return Promise.resolve({ signingService: \"cognito-identity\", ...regionInfo });\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { parseQueryString } from \"@aws-sdk/querystring-parser\";\nimport { Endpoint, QueryParameterBag, UrlParser } from \"@aws-sdk/types\";\n\nexport const parseUrl: UrlParser = (url: string): Endpoint => {\n const { hostname, pathname, port, protocol, search } = new URL(url);\n\n let query: QueryParameterBag | undefined;\n if (search) {\n query = parseQueryString(search);\n }\n\n return {\n hostname,\n port: port ? parseInt(port) : undefined,\n protocol,\n path: pathname,\n query,\n };\n};\n","import { QueryParameterBag } from \"@aws-sdk/types\";\n\nexport function parseQueryString(querystring: string): QueryParameterBag {\n const query: QueryParameterBag = {};\n querystring = querystring.replace(/^\\?/, \"\");\n\n if (querystring) {\n for (const pair of querystring.split(\"&\")) {\n let [key, value = null] = pair.split(\"=\");\n key = decodeURIComponent(key);\n if (value) {\n value = decodeURIComponent(value);\n }\n if (!(key in query)) {\n query[key] = value;\n } else if (Array.isArray(query[key])) {\n (query[key] as Array).push(value as string);\n } else {\n query[key] = [query[key] as string, value as string];\n }\n }\n }\n\n return query;\n}\n","import { defaultRegionInfoProvider } from \"./endpoints\";\nimport { Logger as __Logger } from \"@aws-sdk/types\";\nimport { parseUrl } from \"@aws-sdk/url-parser\";\n\n/**\n * @internal\n */\nexport const ClientSharedValues = {\n apiVersion: \"2014-06-30\",\n disableHostPrefix: false,\n logger: {} as __Logger,\n regionInfoProvider: defaultRegionInfoProvider,\n serviceId: \"Cognito Identity\",\n urlParser: parseUrl,\n};\n","import packageInfo from \"./package.json\";\n\nimport { Sha256 } from \"@aws-crypto/sha256-browser\";\nimport { FetchHttpHandler, streamCollector } from \"@aws-sdk/fetch-http-handler\";\nimport { invalidProvider } from \"@aws-sdk/invalid-dependency\";\nimport { DEFAULT_MAX_ATTEMPTS } from \"@aws-sdk/middleware-retry\";\nimport { fromBase64, toBase64 } from \"@aws-sdk/util-base64-browser\";\nimport { calculateBodyLength } from \"@aws-sdk/util-body-length-browser\";\nimport { defaultUserAgent } from \"@aws-sdk/util-user-agent-browser\";\nimport { fromUtf8, toUtf8 } from \"@aws-sdk/util-utf8-browser\";\nimport { ClientDefaults } from \"./CognitoIdentityClient\";\nimport { ClientSharedValues } from \"./runtimeConfig.shared\";\n\n/**\n * @internal\n */\nexport const ClientDefaultValues: Required = {\n ...ClientSharedValues,\n runtime: \"browser\",\n base64Decoder: fromBase64,\n base64Encoder: toBase64,\n bodyLengthChecker: calculateBodyLength,\n credentialDefaultProvider: (_: unknown) => () => Promise.reject(new Error(\"Credential is missing\")),\n defaultUserAgentProvider: defaultUserAgent({\n serviceId: ClientSharedValues.serviceId,\n clientVersion: packageInfo.version,\n }),\n maxAttempts: DEFAULT_MAX_ATTEMPTS,\n region: invalidProvider(\"Region is missing\"),\n requestHandler: new FetchHttpHandler(),\n sha256: Sha256,\n streamCollector,\n utf8Decoder: fromUtf8,\n utf8Encoder: toUtf8,\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Endpoint, Provider, RegionInfoProvider, UrlParser } from \"@aws-sdk/types\";\n\nexport interface EndpointsInputConfig {\n /**\n * The fully qualified endpoint of the webservice. This is only required when using a custom endpoint (for example, when using a local version of S3).\n */\n endpoint?: string | Endpoint | Provider;\n\n /**\n * Whether TLS is enabled for requests.\n */\n tls?: boolean;\n}\n\ninterface PreviouslyResolved {\n regionInfoProvider: RegionInfoProvider;\n urlParser: UrlParser;\n region: Provider;\n}\n\nexport interface EndpointsResolvedConfig extends Required {\n endpoint: Provider;\n isCustomEndpoint: boolean;\n}\n\nexport const resolveEndpointsConfig = (\n input: T & EndpointsInputConfig & PreviouslyResolved\n): T & EndpointsResolvedConfig => ({\n ...input,\n tls: input.tls ?? true,\n endpoint: input.endpoint ? normalizeEndpoint(input) : () => getEndPointFromRegion(input),\n isCustomEndpoint: input.endpoint ? true : false,\n});\n\nconst normalizeEndpoint = (input: EndpointsInputConfig & PreviouslyResolved): Provider => {\n const { endpoint, urlParser } = input;\n if (typeof endpoint === \"string\") {\n const promisified = Promise.resolve(urlParser(endpoint));\n return () => promisified;\n } else if (typeof endpoint === \"object\") {\n const promisified = Promise.resolve(endpoint);\n return () => promisified;\n }\n return endpoint!;\n};\n\nconst getEndPointFromRegion = async (input: EndpointsInputConfig & PreviouslyResolved) => {\n const { tls = true } = input;\n const region = await input.region();\n\n const dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/);\n if (!dnsHostRegex.test(region)) {\n throw new Error(\"Invalid region in client config\");\n }\n\n const { hostname } = (await input.regionInfoProvider(region)) ?? {};\n if (!hostname) {\n throw new Error(\"Cannot resolve hostname from client config\");\n }\n\n return input.urlParser(`${tls ? \"https:\" : \"http:\"}//${hostname}`);\n};\n","import { LoadedConfigSelectors, LocalConfigOptions } from \"@aws-sdk/node-config-provider\";\nimport { Provider } from \"@aws-sdk/types\";\n\nexport const REGION_ENV_NAME = \"AWS_REGION\";\nexport const REGION_INI_NAME = \"region\";\n\nexport const NODE_REGION_CONFIG_OPTIONS: LoadedConfigSelectors = {\n environmentVariableSelector: (env) => env[REGION_ENV_NAME],\n configFileSelector: (profile) => profile[REGION_INI_NAME],\n default: () => {\n throw new Error(\"Region is missing\");\n },\n};\n\nexport const NODE_REGION_CONFIG_FILE_OPTIONS: LocalConfigOptions = {\n preferredFile: \"credentials\",\n};\n\nexport interface RegionInputConfig {\n /**\n * The AWS region to which this client will send requests\n */\n region?: string | Provider;\n}\n\ninterface PreviouslyResolved {}\n\nexport interface RegionResolvedConfig {\n region: Provider;\n}\n\nexport const resolveRegionConfig = (input: T & RegionInputConfig & PreviouslyResolved): T & RegionResolvedConfig => {\n if (!input.region) {\n throw new Error(\"Region is missing\");\n }\n return {\n ...input,\n region: normalizeRegion(input.region!),\n };\n};\n\nconst normalizeRegion = (region: string | Provider): Provider => {\n if (typeof region === \"string\") {\n const promisified = Promise.resolve(region);\n return () => promisified;\n }\n return region as Provider;\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { HttpRequest } from \"@aws-sdk/protocol-http\";\nimport {\n BodyLengthCalculator,\n BuildHandler,\n BuildHandlerArguments,\n BuildHandlerOptions,\n BuildHandlerOutput,\n BuildMiddleware,\n MetadataBearer,\n Pluggable,\n} from \"@aws-sdk/types\";\n\nconst CONTENT_LENGTH_HEADER = \"content-length\";\n\nexport function contentLengthMiddleware(bodyLengthChecker: BodyLengthCalculator): BuildMiddleware {\n return (next: BuildHandler): BuildHandler => async (\n args: BuildHandlerArguments\n ): Promise> => {\n const request = args.request;\n if (HttpRequest.isInstance(request)) {\n const { body, headers } = request;\n if (\n body &&\n Object.keys(headers)\n .map((str) => str.toLowerCase())\n .indexOf(CONTENT_LENGTH_HEADER) === -1\n ) {\n const length = bodyLengthChecker(body);\n if (length !== undefined) {\n request.headers = {\n ...request.headers,\n [CONTENT_LENGTH_HEADER]: String(length),\n };\n }\n }\n }\n\n return next({\n ...args,\n request,\n });\n };\n}\n\nexport const contentLengthMiddlewareOptions: BuildHandlerOptions = {\n step: \"build\",\n tags: [\"SET_CONTENT_LENGTH\", \"CONTENT_LENGTH\"],\n name: \"contentLengthMiddleware\",\n override: true,\n};\n\nexport const getContentLengthPlugin = (options: { bodyLengthChecker: BodyLengthCalculator }): Pluggable => ({\n applyToStack: (clientStack) => {\n clientStack.add(contentLengthMiddleware(options.bodyLengthChecker), contentLengthMiddlewareOptions);\n },\n});\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { HttpRequest } from \"@aws-sdk/protocol-http\";\nimport { AbsoluteLocation, BuildHandlerOptions, BuildMiddleware, Pluggable, RequestHandler } from \"@aws-sdk/types\";\n\nexport interface HostHeaderInputConfig {}\ninterface PreviouslyResolved {\n requestHandler: RequestHandler;\n}\nexport interface HostHeaderResolvedConfig {\n requestHandler: RequestHandler;\n}\nexport function resolveHostHeaderConfig(\n input: T & PreviouslyResolved & HostHeaderInputConfig\n): T & HostHeaderResolvedConfig {\n return input;\n}\n\nexport const hostHeaderMiddleware = (\n options: HostHeaderResolvedConfig\n): BuildMiddleware => (next) => async (args) => {\n if (!HttpRequest.isInstance(args.request)) return next(args);\n const { request } = args;\n const { handlerProtocol = \"\" } = options.requestHandler.metadata || {};\n //For H2 request, remove 'host' header and use ':authority' header instead\n //reference: https://nodejs.org/dist/latest-v13.x/docs/api/errors.html#ERR_HTTP2_INVALID_CONNECTION_HEADERS\n if (handlerProtocol.indexOf(\"h2\") >= 0 && !request.headers[\":authority\"]) {\n delete request.headers[\"host\"];\n request.headers[\":authority\"] = \"\";\n //non-H2 request and 'host' header is not set, set the 'host' header to request's hostname.\n } else if (!request.headers[\"host\"]) {\n request.headers[\"host\"] = request.hostname;\n }\n return next(args);\n};\n\nexport const hostHeaderMiddlewareOptions: BuildHandlerOptions & AbsoluteLocation = {\n name: \"hostHeaderMiddleware\",\n step: \"build\",\n priority: \"low\",\n tags: [\"HOST\"],\n override: true,\n};\n\nexport const getHostHeaderPlugin = (options: HostHeaderResolvedConfig): Pluggable => ({\n applyToStack: (clientStack) => {\n clientStack.add(hostHeaderMiddleware(options), hostHeaderMiddlewareOptions);\n },\n});\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { HttpResponse } from \"@aws-sdk/protocol-http\";\nimport {\n AbsoluteLocation,\n HandlerExecutionContext,\n InitializeHandler,\n InitializeHandlerArguments,\n InitializeHandlerOptions,\n InitializeHandlerOutput,\n MetadataBearer,\n Pluggable,\n} from \"@aws-sdk/types\";\n\nexport const loggerMiddleware = () => (\n next: InitializeHandler,\n context: HandlerExecutionContext\n): InitializeHandler => async (\n args: InitializeHandlerArguments\n): Promise> => {\n const { clientName, commandName, inputFilterSensitiveLog, logger, outputFilterSensitiveLog } = context;\n\n const response = await next(args);\n\n if (!logger) {\n return response;\n }\n\n if (typeof logger.info === \"function\") {\n const { $metadata, ...outputWithoutMetadata } = response.output;\n logger.info({\n clientName,\n commandName,\n input: inputFilterSensitiveLog(args.input),\n output: outputFilterSensitiveLog(outputWithoutMetadata),\n metadata: $metadata,\n });\n }\n\n return response;\n};\n\nexport const loggerMiddlewareOptions: InitializeHandlerOptions & AbsoluteLocation = {\n name: \"loggerMiddleware\",\n tags: [\"LOGGER\"],\n step: \"initialize\",\n override: true,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport const getLoggerPlugin = (options: any): Pluggable => ({\n applyToStack: (clientStack) => {\n clientStack.add(loggerMiddleware(), loggerMiddlewareOptions);\n },\n});\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","const SHORT_TO_HEX: { [key: number]: string } = {};\nconst HEX_TO_SHORT: { [key: string]: number } = {};\n\nfor (let i = 0; i < 256; i++) {\n let encodedByte = i.toString(16).toLowerCase();\n if (encodedByte.length === 1) {\n encodedByte = `0${encodedByte}`;\n }\n\n SHORT_TO_HEX[i] = encodedByte;\n HEX_TO_SHORT[encodedByte] = i;\n}\n\n/**\n * Converts a hexadecimal encoded string to a Uint8Array of bytes.\n *\n * @param encoded The hexadecimal encoded string\n */\nexport function fromHex(encoded: string): Uint8Array {\n if (encoded.length % 2 !== 0) {\n throw new Error(\"Hex encoded strings must have an even number length\");\n }\n\n const out = new Uint8Array(encoded.length / 2);\n for (let i = 0; i < encoded.length; i += 2) {\n const encodedByte = encoded.substr(i, 2).toLowerCase();\n if (encodedByte in HEX_TO_SHORT) {\n out[i / 2] = HEX_TO_SHORT[encodedByte];\n } else {\n throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`);\n }\n }\n\n return out;\n}\n\n/**\n * Converts a Uint8Array of binary data to a hexadecimal encoded string.\n *\n * @param bytes The binary data to encode\n */\nexport function toHex(bytes: Uint8Array): string {\n let out = \"\";\n for (let i = 0; i < bytes.byteLength; i++) {\n out += SHORT_TO_HEX[bytes[i]];\n }\n\n return out;\n}\n","export const ALGORITHM_QUERY_PARAM = \"X-Amz-Algorithm\";\nexport const CREDENTIAL_QUERY_PARAM = \"X-Amz-Credential\";\nexport const AMZ_DATE_QUERY_PARAM = \"X-Amz-Date\";\nexport const SIGNED_HEADERS_QUERY_PARAM = \"X-Amz-SignedHeaders\";\nexport const EXPIRES_QUERY_PARAM = \"X-Amz-Expires\";\nexport const SIGNATURE_QUERY_PARAM = \"X-Amz-Signature\";\nexport const TOKEN_QUERY_PARAM = \"X-Amz-Security-Token\";\n\nexport const AUTH_HEADER = \"authorization\";\nexport const AMZ_DATE_HEADER = AMZ_DATE_QUERY_PARAM.toLowerCase();\nexport const DATE_HEADER = \"date\";\nexport const GENERATED_HEADERS = [AUTH_HEADER, AMZ_DATE_HEADER, DATE_HEADER];\nexport const SIGNATURE_HEADER = SIGNATURE_QUERY_PARAM.toLowerCase();\nexport const SHA256_HEADER = \"x-amz-content-sha256\";\nexport const TOKEN_HEADER = TOKEN_QUERY_PARAM.toLowerCase();\nexport const HOST_HEADER = \"host\";\n\nexport const ALWAYS_UNSIGNABLE_HEADERS = {\n authorization: true,\n \"cache-control\": true,\n connection: true,\n expect: true,\n from: true,\n \"keep-alive\": true,\n \"max-forwards\": true,\n pragma: true,\n referer: true,\n te: true,\n trailer: true,\n \"transfer-encoding\": true,\n upgrade: true,\n \"user-agent\": true,\n \"x-amzn-trace-id\": true,\n};\n\nexport const PROXY_HEADER_PATTERN = /^proxy-/;\n\nexport const SEC_HEADER_PATTERN = /^sec-/;\n\nexport const UNSIGNABLE_PATTERNS = [/^proxy-/i, /^sec-/i];\n\nexport const ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256\";\n\nexport const EVENT_ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256-PAYLOAD\";\n\nexport const UNSIGNED_PAYLOAD = \"UNSIGNED-PAYLOAD\";\n\nexport const MAX_CACHE_SIZE = 50;\nexport const KEY_TYPE_IDENTIFIER = \"aws4_request\";\n\nexport const MAX_PRESIGNED_TTL = 60 * 60 * 24 * 7;\n","import { Credentials, HashConstructor, SourceData } from \"@aws-sdk/types\";\nimport { toHex } from \"@aws-sdk/util-hex-encoding\";\n\nimport { KEY_TYPE_IDENTIFIER, MAX_CACHE_SIZE } from \"./constants\";\n\nconst signingKeyCache: { [key: string]: Uint8Array } = {};\nconst cacheQueue: Array = [];\n\n/**\n * Create a string describing the scope of credentials used to sign a request.\n *\n * @param shortDate The current calendar date in the form YYYYMMDD.\n * @param region The AWS region in which the service resides.\n * @param service The service to which the signed request is being sent.\n */\nexport function createScope(shortDate: string, region: string, service: string): string {\n return `${shortDate}/${region}/${service}/${KEY_TYPE_IDENTIFIER}`;\n}\n\n/**\n * Derive a signing key from its composite parts\n *\n * @param sha256Constructor A constructor function that can instantiate SHA-256\n * hash objects.\n * @param credentials The credentials with which the request will be\n * signed.\n * @param shortDate The current calendar date in the form YYYYMMDD.\n * @param region The AWS region in which the service resides.\n * @param service The service to which the signed request is being\n * sent.\n */\nexport const getSigningKey = async (\n sha256Constructor: HashConstructor,\n credentials: Credentials,\n shortDate: string,\n region: string,\n service: string\n): Promise => {\n const credsHash = await hmac(sha256Constructor, credentials.secretAccessKey, credentials.accessKeyId);\n const cacheKey = `${shortDate}:${region}:${service}:${toHex(credsHash)}:${credentials.sessionToken}`;\n if (cacheKey in signingKeyCache) {\n return signingKeyCache[cacheKey];\n }\n\n cacheQueue.push(cacheKey);\n while (cacheQueue.length > MAX_CACHE_SIZE) {\n delete signingKeyCache[cacheQueue.shift() as string];\n }\n\n let key: SourceData = `AWS4${credentials.secretAccessKey}`;\n for (const signable of [shortDate, region, service, KEY_TYPE_IDENTIFIER]) {\n key = await hmac(sha256Constructor, key, signable);\n }\n return (signingKeyCache[cacheKey] = key as Uint8Array);\n};\n\n/**\n * @internal\n */\nexport function clearCredentialCache(): void {\n cacheQueue.length = 0;\n Object.keys(signingKeyCache).forEach((cacheKey) => {\n delete signingKeyCache[cacheKey];\n });\n}\n\nfunction hmac(ctor: HashConstructor, secret: SourceData, data: SourceData): Promise {\n const hash = new ctor(secret);\n hash.update(data);\n return hash.digest();\n}\n","import { HeaderBag, HttpRequest } from \"@aws-sdk/types\";\n\nimport { ALWAYS_UNSIGNABLE_HEADERS, PROXY_HEADER_PATTERN, SEC_HEADER_PATTERN } from \"./constants\";\n\n/**\n * @internal\n */\nexport function getCanonicalHeaders(\n { headers }: HttpRequest,\n unsignableHeaders?: Set,\n signableHeaders?: Set\n): HeaderBag {\n const canonical: HeaderBag = {};\n for (const headerName of Object.keys(headers).sort()) {\n const canonicalHeaderName = headerName.toLowerCase();\n if (\n canonicalHeaderName in ALWAYS_UNSIGNABLE_HEADERS ||\n unsignableHeaders?.has(canonicalHeaderName) ||\n PROXY_HEADER_PATTERN.test(canonicalHeaderName) ||\n SEC_HEADER_PATTERN.test(canonicalHeaderName)\n ) {\n if (!signableHeaders || (signableHeaders && !signableHeaders.has(canonicalHeaderName))) {\n continue;\n }\n }\n\n canonical[canonicalHeaderName] = headers[headerName].trim().replace(/\\s+/g, \" \");\n }\n\n return canonical;\n}\n","export const escapeUri = (uri: string): string =>\n // AWS percent-encodes some extra non-standard characters in a URI\n encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode);\n\nconst hexEncode = (c: string) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`;\n","export const isArrayBuffer = (arg: any): arg is ArrayBuffer =>\n (typeof ArrayBuffer === \"function\" && arg instanceof ArrayBuffer) ||\n Object.prototype.toString.call(arg) === \"[object ArrayBuffer]\";\n","import { isArrayBuffer } from \"@aws-sdk/is-array-buffer\";\nimport { HashConstructor, HttpRequest } from \"@aws-sdk/types\";\nimport { toHex } from \"@aws-sdk/util-hex-encoding\";\n\nimport { SHA256_HEADER, UNSIGNED_PAYLOAD } from \"./constants\";\n\n/**\n * @internal\n */\nexport async function getPayloadHash(\n { headers, body }: HttpRequest,\n hashConstructor: HashConstructor\n): Promise {\n for (const headerName of Object.keys(headers)) {\n if (headerName.toLowerCase() === SHA256_HEADER) {\n return headers[headerName];\n }\n }\n\n if (body == undefined) {\n return \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\";\n } else if (typeof body === \"string\" || ArrayBuffer.isView(body) || isArrayBuffer(body)) {\n const hashCtor = new hashConstructor();\n hashCtor.update(body);\n return toHex(await hashCtor.digest());\n }\n\n // As any defined body that is not a string or binary data is a stream, this\n // body is unsignable. Attempt to send the request with an unsigned payload,\n // which may or may not be accepted by the service.\n return UNSIGNED_PAYLOAD;\n}\n","import { HttpRequest, QueryParameterBag } from \"@aws-sdk/types\";\n\n/**\n * @internal\n */\nexport function cloneRequest({ headers, query, ...rest }: HttpRequest): HttpRequest {\n return {\n ...rest,\n headers: { ...headers },\n query: query ? cloneQuery(query) : undefined,\n };\n}\n\nfunction cloneQuery(query: QueryParameterBag): QueryParameterBag {\n return Object.keys(query).reduce((carry: QueryParameterBag, paramName: string) => {\n const param = query[paramName];\n return {\n ...carry,\n [paramName]: Array.isArray(param) ? [...param] : param,\n };\n }, {});\n}\n","import { HttpRequest } from \"@aws-sdk/types\";\n\nimport { cloneRequest } from \"./cloneRequest\";\nimport { GENERATED_HEADERS } from \"./constants\";\n\n/**\n * @internal\n */\nexport function prepareRequest(request: HttpRequest): HttpRequest {\n // Create a clone of the request object that does not clone the body\n request = typeof (request as any).clone === \"function\" ? (request as any).clone() : cloneRequest(request);\n\n for (const headerName of Object.keys(request.headers)) {\n if (GENERATED_HEADERS.indexOf(headerName.toLowerCase()) > -1) {\n delete request.headers[headerName];\n }\n }\n\n return request;\n}\n","export function iso8601(time: number | string | Date): string {\n return toDate(time)\n .toISOString()\n .replace(/\\.\\d{3}Z$/, \"Z\");\n}\n\nexport function toDate(time: number | string | Date): Date {\n if (typeof time === \"number\") {\n return new Date(time * 1000);\n }\n\n if (typeof time === \"string\") {\n if (Number(time)) {\n return new Date(Number(time) * 1000);\n }\n return new Date(time);\n }\n\n return time;\n}\n","import {\n Credentials,\n DateInput,\n EventSigner,\n EventSigningArguments,\n FormattedEvent,\n HashConstructor,\n HeaderBag,\n HttpRequest,\n Provider,\n RequestPresigner,\n RequestPresigningArguments,\n RequestSigner,\n RequestSigningArguments,\n SigningArguments,\n StringSigner,\n} from \"@aws-sdk/types\";\nimport { toHex } from \"@aws-sdk/util-hex-encoding\";\n\nimport {\n ALGORITHM_IDENTIFIER,\n ALGORITHM_QUERY_PARAM,\n AMZ_DATE_HEADER,\n AMZ_DATE_QUERY_PARAM,\n AUTH_HEADER,\n CREDENTIAL_QUERY_PARAM,\n EVENT_ALGORITHM_IDENTIFIER,\n EXPIRES_QUERY_PARAM,\n MAX_PRESIGNED_TTL,\n SHA256_HEADER,\n SIGNATURE_QUERY_PARAM,\n SIGNED_HEADERS_QUERY_PARAM,\n TOKEN_HEADER,\n TOKEN_QUERY_PARAM,\n} from \"./constants\";\nimport { createScope, getSigningKey } from \"./credentialDerivation\";\nimport { getCanonicalHeaders } from \"./getCanonicalHeaders\";\nimport { getCanonicalQuery } from \"./getCanonicalQuery\";\nimport { getPayloadHash } from \"./getPayloadHash\";\nimport { hasHeader } from \"./hasHeader\";\nimport { moveHeadersToQuery } from \"./moveHeadersToQuery\";\nimport { prepareRequest } from \"./prepareRequest\";\nimport { iso8601 } from \"./utilDate\";\n\nexport interface SignatureV4Init {\n /**\n * The service signing name.\n */\n service: string;\n\n /**\n * The region name or a function that returns a promise that will be\n * resolved with the region name.\n */\n region: string | Provider;\n\n /**\n * The credentials with which the request should be signed or a function\n * that returns a promise that will be resolved with credentials.\n */\n credentials: Credentials | Provider;\n\n /**\n * A constructor function for a hash object that will calculate SHA-256 HMAC\n * checksums.\n */\n sha256?: HashConstructor;\n\n /**\n * Whether to uri-escape the request URI path as part of computing the\n * canonical request string. This is required for every AWS service, except\n * Amazon S3, as of late 2017.\n *\n * @default [true]\n */\n uriEscapePath?: boolean;\n\n /**\n * Whether to calculate a checksum of the request body and include it as\n * either a request header (when signing) or as a query string parameter\n * (when presigning). This is required for AWS Glacier and Amazon S3 and optional for\n * every other AWS service as of late 2017.\n *\n * @default [true]\n */\n applyChecksum?: boolean;\n}\n\nexport interface SignatureV4CryptoInit {\n sha256: HashConstructor;\n}\n\nexport class SignatureV4 implements RequestPresigner, RequestSigner, StringSigner, EventSigner {\n private readonly service: string;\n private readonly regionProvider: Provider;\n private readonly credentialProvider: Provider;\n private readonly sha256: HashConstructor;\n private readonly uriEscapePath: boolean;\n private readonly applyChecksum: boolean;\n\n constructor({\n applyChecksum,\n credentials,\n region,\n service,\n sha256,\n uriEscapePath = true,\n }: SignatureV4Init & SignatureV4CryptoInit) {\n this.service = service;\n this.sha256 = sha256;\n this.uriEscapePath = uriEscapePath;\n // default to true if applyChecksum isn't set\n this.applyChecksum = typeof applyChecksum === \"boolean\" ? applyChecksum : true;\n this.regionProvider = normalizeRegionProvider(region);\n this.credentialProvider = normalizeCredentialsProvider(credentials);\n }\n\n public async presign(originalRequest: HttpRequest, options: RequestPresigningArguments = {}): Promise {\n const {\n signingDate = new Date(),\n expiresIn = 3600,\n unsignableHeaders,\n unhoistableHeaders,\n signableHeaders,\n signingRegion,\n signingService,\n } = options;\n const credentials = await this.credentialProvider();\n const region = signingRegion ?? (await this.regionProvider());\n\n const { longDate, shortDate } = formatDate(signingDate);\n if (expiresIn > MAX_PRESIGNED_TTL) {\n return Promise.reject(\n \"Signature version 4 presigned URLs\" + \" must have an expiration date less than one week in\" + \" the future\"\n );\n }\n\n const scope = createScope(shortDate, region, signingService ?? this.service);\n const request = moveHeadersToQuery(prepareRequest(originalRequest), { unhoistableHeaders });\n\n if (credentials.sessionToken) {\n request.query[TOKEN_QUERY_PARAM] = credentials.sessionToken;\n }\n request.query[ALGORITHM_QUERY_PARAM] = ALGORITHM_IDENTIFIER;\n request.query[CREDENTIAL_QUERY_PARAM] = `${credentials.accessKeyId}/${scope}`;\n request.query[AMZ_DATE_QUERY_PARAM] = longDate;\n request.query[EXPIRES_QUERY_PARAM] = expiresIn.toString(10);\n\n const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders);\n request.query[SIGNED_HEADERS_QUERY_PARAM] = getCanonicalHeaderList(canonicalHeaders);\n\n request.query[SIGNATURE_QUERY_PARAM] = await this.getSignature(\n longDate,\n scope,\n this.getSigningKey(credentials, region, shortDate, signingService),\n this.createCanonicalRequest(request, canonicalHeaders, await getPayloadHash(originalRequest, this.sha256))\n );\n\n return request;\n }\n\n public async sign(stringToSign: string, options?: SigningArguments): Promise;\n public async sign(event: FormattedEvent, options: EventSigningArguments): Promise;\n public async sign(requestToSign: HttpRequest, options?: RequestSigningArguments): Promise;\n public async sign(toSign: any, options: any): Promise {\n if (typeof toSign === \"string\") {\n return this.signString(toSign, options);\n } else if (toSign.headers && toSign.payload) {\n return this.signEvent(toSign, options);\n } else {\n return this.signRequest(toSign, options);\n }\n }\n\n private async signEvent(\n { headers, payload }: FormattedEvent,\n { signingDate = new Date(), priorSignature, signingRegion, signingService }: EventSigningArguments\n ): Promise {\n const region = signingRegion ?? (await this.regionProvider());\n const { shortDate, longDate } = formatDate(signingDate);\n const scope = createScope(shortDate, region, signingService ?? this.service);\n const hashedPayload = await getPayloadHash({ headers: {}, body: payload } as any, this.sha256);\n const hash = new this.sha256();\n hash.update(headers);\n const hashedHeaders = toHex(await hash.digest());\n const stringToSign = [\n EVENT_ALGORITHM_IDENTIFIER,\n longDate,\n scope,\n priorSignature,\n hashedHeaders,\n hashedPayload,\n ].join(\"\\n\");\n return this.signString(stringToSign, { signingDate, signingRegion: region, signingService });\n }\n\n private async signString(\n stringToSign: string,\n { signingDate = new Date(), signingRegion, signingService }: SigningArguments = {}\n ): Promise {\n const credentials = await this.credentialProvider();\n const region = signingRegion ?? (await this.regionProvider());\n const { shortDate } = formatDate(signingDate);\n\n const hash = new this.sha256(await this.getSigningKey(credentials, region, shortDate, signingService));\n hash.update(stringToSign);\n return toHex(await hash.digest());\n }\n\n private async signRequest(\n requestToSign: HttpRequest,\n {\n signingDate = new Date(),\n signableHeaders,\n unsignableHeaders,\n signingRegion,\n signingService,\n }: RequestSigningArguments = {}\n ): Promise {\n const credentials = await this.credentialProvider();\n const region = signingRegion ?? (await this.regionProvider());\n const request = prepareRequest(requestToSign);\n const { longDate, shortDate } = formatDate(signingDate);\n const scope = createScope(shortDate, region, signingService ?? this.service);\n\n request.headers[AMZ_DATE_HEADER] = longDate;\n if (credentials.sessionToken) {\n request.headers[TOKEN_HEADER] = credentials.sessionToken;\n }\n\n const payloadHash = await getPayloadHash(request, this.sha256);\n if (!hasHeader(SHA256_HEADER, request.headers) && this.applyChecksum) {\n request.headers[SHA256_HEADER] = payloadHash;\n }\n\n const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders);\n const signature = await this.getSignature(\n longDate,\n scope,\n this.getSigningKey(credentials, region, shortDate, signingService),\n this.createCanonicalRequest(request, canonicalHeaders, payloadHash)\n );\n\n request.headers[AUTH_HEADER] =\n `${ALGORITHM_IDENTIFIER} ` +\n `Credential=${credentials.accessKeyId}/${scope}, ` +\n `SignedHeaders=${getCanonicalHeaderList(canonicalHeaders)}, ` +\n `Signature=${signature}`;\n\n return request;\n }\n\n private createCanonicalRequest(request: HttpRequest, canonicalHeaders: HeaderBag, payloadHash: string): string {\n const sortedHeaders = Object.keys(canonicalHeaders).sort();\n return `${request.method}\n${this.getCanonicalPath(request)}\n${getCanonicalQuery(request)}\n${sortedHeaders.map((name) => `${name}:${canonicalHeaders[name]}`).join(\"\\n\")}\n\n${sortedHeaders.join(\";\")}\n${payloadHash}`;\n }\n\n private async createStringToSign(\n longDate: string,\n credentialScope: string,\n canonicalRequest: string\n ): Promise {\n const hash = new this.sha256();\n hash.update(canonicalRequest);\n const hashedRequest = await hash.digest();\n\n return `${ALGORITHM_IDENTIFIER}\n${longDate}\n${credentialScope}\n${toHex(hashedRequest)}`;\n }\n\n private getCanonicalPath({ path }: HttpRequest): string {\n if (this.uriEscapePath) {\n const doubleEncoded = encodeURIComponent(path.replace(/^\\//, \"\"));\n return `/${doubleEncoded.replace(/%2F/g, \"/\")}`;\n }\n\n return path;\n }\n\n private async getSignature(\n longDate: string,\n credentialScope: string,\n keyPromise: Promise,\n canonicalRequest: string\n ): Promise {\n const stringToSign = await this.createStringToSign(longDate, credentialScope, canonicalRequest);\n\n const hash = new this.sha256(await keyPromise);\n hash.update(stringToSign);\n return toHex(await hash.digest());\n }\n\n private getSigningKey(\n credentials: Credentials,\n region: string,\n shortDate: string,\n service?: string\n ): Promise {\n return getSigningKey(this.sha256, credentials, shortDate, region, service || this.service);\n }\n}\n\nconst formatDate = (now: DateInput): { longDate: string; shortDate: string } => {\n const longDate = iso8601(now).replace(/[\\-:]/g, \"\");\n return {\n longDate,\n shortDate: longDate.substr(0, 8),\n };\n};\n\nconst getCanonicalHeaderList = (headers: object): string => Object.keys(headers).sort().join(\";\");\n\nconst normalizeRegionProvider = (region: string | Provider): Provider => {\n if (typeof region === \"string\") {\n const promisified = Promise.resolve(region);\n return () => promisified;\n } else {\n return region;\n }\n};\n\nconst normalizeCredentialsProvider = (credentials: Credentials | Provider): Provider => {\n if (typeof credentials === \"object\") {\n const promisified = Promise.resolve(credentials);\n return () => promisified;\n } else {\n return credentials;\n }\n};\n","import { HttpRequest, QueryParameterBag } from \"@aws-sdk/types\";\n\nimport { cloneRequest } from \"./cloneRequest\";\n\n/**\n * @internal\n */\nexport function moveHeadersToQuery(\n request: HttpRequest,\n options: { unhoistableHeaders?: Set } = {}\n): HttpRequest & { query: QueryParameterBag } {\n const { headers, query = {} as QueryParameterBag } =\n typeof (request as any).clone === \"function\" ? (request as any).clone() : cloneRequest(request);\n for (const name of Object.keys(headers)) {\n const lname = name.toLowerCase();\n if (lname.substr(0, 6) === \"x-amz-\" && !options.unhoistableHeaders?.has(lname)) {\n query[name] = headers[name];\n delete headers[name];\n }\n }\n\n return {\n ...request,\n headers,\n query,\n };\n}\n","import { HeaderBag } from \"@aws-sdk/types\";\n\nexport function hasHeader(soughtHeader: string, headers: HeaderBag): boolean {\n soughtHeader = soughtHeader.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (soughtHeader === headerName.toLowerCase()) {\n return true;\n }\n }\n\n return false;\n}\n","import { HttpRequest } from \"@aws-sdk/types\";\nimport { escapeUri } from \"@aws-sdk/util-uri-escape\";\n\nimport { SIGNATURE_HEADER } from \"./constants\";\n\n/**\n * @internal\n */\nexport function getCanonicalQuery({ query = {} }: HttpRequest): string {\n const keys: Array = [];\n const serialized: { [key: string]: string } = {};\n for (const key of Object.keys(query).sort()) {\n if (key.toLowerCase() === SIGNATURE_HEADER) {\n continue;\n }\n\n keys.push(key);\n const value = query[key];\n if (typeof value === \"string\") {\n serialized[key] = `${escapeUri(key)}=${escapeUri(value)}`;\n } else if (Array.isArray(value)) {\n serialized[key] = value\n .slice(0)\n .sort()\n .reduce(\n (encoded: Array, value: string) => encoded.concat([`${escapeUri(key)}=${escapeUri(value)}`]),\n []\n )\n .join(\"&\");\n }\n }\n\n return keys\n .map((key) => serialized[key])\n .filter((serialized) => serialized) // omit any falsy values\n .join(\"&\");\n}\n","import { SignatureV4 } from \"@aws-sdk/signature-v4\";\nimport { Credentials, HashConstructor, Provider, RegionInfo, RegionInfoProvider, RequestSigner } from \"@aws-sdk/types\";\n\nexport interface AwsAuthInputConfig {\n /**\n * The credentials used to sign requests.\n */\n credentials?: Credentials | Provider;\n\n /**\n * The signer to use when signing requests.\n */\n signer?: RequestSigner | Provider;\n\n /**\n * Whether to escape request path when signing the request.\n */\n signingEscapePath?: boolean;\n\n /**\n * An offset value in milliseconds to apply to all signing times.\n */\n systemClockOffset?: number;\n\n /**\n * The region where you want to sign your request against. This\n * can be different to the region in the endpoint.\n */\n signingRegion?: string;\n}\ninterface PreviouslyResolved {\n credentialDefaultProvider: (input: any) => Provider;\n region: string | Provider;\n regionInfoProvider: RegionInfoProvider;\n signingName?: string;\n serviceId: string;\n sha256: HashConstructor;\n}\nexport interface AwsAuthResolvedConfig {\n credentials: Provider;\n signer: Provider;\n signingEscapePath: boolean;\n systemClockOffset: number;\n}\nexport function resolveAwsAuthConfig(input: T & AwsAuthInputConfig & PreviouslyResolved): T & AwsAuthResolvedConfig {\n const credentials = input.credentials || input.credentialDefaultProvider(input as any);\n const normalizedCreds = normalizeProvider(credentials);\n const { signingEscapePath = true, systemClockOffset = input.systemClockOffset || 0, sha256 } = input;\n let signer: Provider;\n if (input.signer) {\n //if signer is supplied by user, normalize it to a function returning a promise for signer.\n signer = normalizeProvider(input.signer);\n } else {\n //construct a provider inferring signing from region.\n signer = () =>\n normalizeProvider(input.region)()\n .then(async (region) => [(await input.regionInfoProvider(region)) || {}, region] as [RegionInfo, string])\n .then(([regionInfo, region]) => {\n const { signingRegion, signingService } = regionInfo;\n //update client's singing region and signing service config if they are resolved.\n //signing region resolving order: user supplied signingRegion -> endpoints.json inferred region -> client region\n input.signingRegion = input.signingRegion || signingRegion || region;\n //signing name resolving order:\n //user supplied signingName -> endpoints.json inferred (credential scope -> model arnNamespace) -> model service id\n input.signingName = input.signingName || signingService || input.serviceId;\n\n return new SignatureV4({\n credentials: normalizedCreds,\n region: input.signingRegion,\n service: input.signingName,\n sha256,\n uriEscapePath: signingEscapePath,\n });\n });\n }\n\n return {\n ...input,\n systemClockOffset,\n signingEscapePath,\n credentials: normalizedCreds,\n signer,\n };\n}\n\nfunction normalizeProvider(input: T | Provider): Provider {\n if (typeof input === \"object\") {\n const promisified = Promise.resolve(input);\n return () => promisified;\n }\n return input as Provider;\n}\n","import { HttpRequest } from \"@aws-sdk/protocol-http\";\nimport {\n FinalizeHandler,\n FinalizeHandlerArguments,\n FinalizeHandlerOutput,\n FinalizeRequestMiddleware,\n HandlerExecutionContext,\n Pluggable,\n RelativeMiddlewareOptions,\n} from \"@aws-sdk/types\";\n\nimport { AwsAuthResolvedConfig } from \"./configurations\";\n\nconst isClockSkewed = (newServerTime: number, systemClockOffset: number) =>\n Math.abs(getSkewCorrectedDate(systemClockOffset).getTime() - newServerTime) >= 300000;\n\nconst getSkewCorrectedDate = (systemClockOffset: number) => new Date(Date.now() + systemClockOffset);\n\nexport function awsAuthMiddleware(\n options: AwsAuthResolvedConfig\n): FinalizeRequestMiddleware {\n return (next: FinalizeHandler, context: HandlerExecutionContext): FinalizeHandler =>\n async function (args: FinalizeHandlerArguments): Promise> {\n if (!HttpRequest.isInstance(args.request)) return next(args);\n const signer = typeof options.signer === \"function\" ? await options.signer() : options.signer;\n const output = await next({\n ...args,\n request: await signer.sign(args.request, {\n signingDate: new Date(Date.now() + options.systemClockOffset),\n signingRegion: context[\"signing_region\"],\n signingService: context[\"signing_service\"],\n }),\n });\n\n const { headers } = output.response as any;\n const dateHeader = headers && (headers.date || headers.Date);\n if (dateHeader) {\n const serverTime = Date.parse(dateHeader);\n if (isClockSkewed(serverTime, options.systemClockOffset)) {\n options.systemClockOffset = serverTime - Date.now();\n }\n }\n\n return output;\n };\n}\n\nexport const awsAuthMiddlewareOptions: RelativeMiddlewareOptions = {\n name: \"awsAuthMiddleware\",\n tags: [\"SIGNATURE\", \"AWSAUTH\"],\n relation: \"after\",\n toMiddleware: \"retryMiddleware\",\n override: true,\n};\n\nexport const getAwsAuthPlugin = (options: AwsAuthResolvedConfig): Pluggable => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(awsAuthMiddleware(options), awsAuthMiddlewareOptions);\n },\n});\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Provider, UserAgent } from \"@aws-sdk/types\";\nexport interface UserAgentInputConfig {\n /**\n * The custom user agent header that would be appended to default one\n */\n customUserAgent?: string | UserAgent;\n}\ninterface PreviouslyResolved {\n defaultUserAgentProvider: Provider;\n runtime: string;\n}\nexport interface UserAgentResolvedConfig {\n defaultUserAgentProvider: Provider;\n customUserAgent?: UserAgent;\n runtime: string;\n}\nexport function resolveUserAgentConfig(\n input: T & PreviouslyResolved & UserAgentInputConfig\n): T & UserAgentResolvedConfig {\n return {\n ...input,\n customUserAgent: typeof input.customUserAgent === \"string\" ? [[input.customUserAgent]] : input.customUserAgent,\n };\n}\n","export const USER_AGENT = \"user-agent\";\n\nexport const X_AMZ_USER_AGENT = \"x-amz-user-agent\";\n\nexport const SPACE = \" \";\n\nexport const UA_ESCAPE_REGEX = /[^\\!\\#\\$\\%\\&\\'\\*\\+\\-\\.\\^\\_\\`\\|\\~\\d\\w]/g;\n","import { HttpRequest } from \"@aws-sdk/protocol-http\";\nimport {\n AbsoluteLocation,\n BuildHandler,\n BuildHandlerArguments,\n BuildHandlerOptions,\n BuildHandlerOutput,\n HandlerExecutionContext,\n MetadataBearer,\n Pluggable,\n UserAgentPair,\n} from \"@aws-sdk/types\";\n\nimport { UserAgentResolvedConfig } from \"./configurations\";\nimport { SPACE, UA_ESCAPE_REGEX, USER_AGENT, X_AMZ_USER_AGENT } from \"./constants\";\n\n/**\n * Build user agent header sections from:\n * 1. runtime-specific default user agent provider;\n * 2. custom user agent from `customUserAgent` client config;\n * 3. handler execution context set by internal SDK components;\n * The built user agent will be set to `x-amz-user-agent` header for ALL the\n * runtimes.\n * Please note that any override to the `user-agent` or `x-amz-user-agent` header\n * in the HTTP request is discouraged. Please use `customUserAgent` client\n * config or middleware setting the `userAgent` context to generate desired user\n * agent.\n */\nexport const userAgentMiddleware = (options: UserAgentResolvedConfig) => (\n next: BuildHandler,\n context: HandlerExecutionContext\n): BuildHandler => async (args: BuildHandlerArguments): Promise> => {\n const { request } = args;\n if (!HttpRequest.isInstance(request)) return next(args);\n const { headers } = request;\n const userAgent = context?.userAgent?.map(escapeUserAgent) || [];\n const defaultUserAgent = (await options.defaultUserAgentProvider()).map(escapeUserAgent);\n const customUserAgent = options?.customUserAgent?.map(escapeUserAgent) || [];\n // Set value to AWS-specific user agent header\n headers[X_AMZ_USER_AGENT] = [...defaultUserAgent, ...userAgent, ...customUserAgent].join(SPACE);\n // Get value to be sent with non-AWS-specific user agent header.\n const normalUAValue = [\n ...defaultUserAgent.filter((section) => section.startsWith(\"aws-sdk-\")),\n ...customUserAgent,\n ].join(SPACE);\n if (options.runtime !== \"browser\" && normalUAValue) {\n headers[USER_AGENT] = headers[USER_AGENT] ? `${headers[USER_AGENT]} ${normalUAValue}` : normalUAValue;\n }\n\n return next({\n ...args,\n request,\n });\n};\n\n/**\n * Escape the each pair according to https://tools.ietf.org/html/rfc5234 and join the pair with pattern `name/version`.\n * User agent name may include prefix like `md/`, `api/`, `os/` etc., we should not escape the `/` after the prefix.\n * @private\n */\nconst escapeUserAgent = ([name, version]: UserAgentPair): string => {\n const prefixSeparatorIndex = name.indexOf(\"/\");\n const prefix = name.substring(0, prefixSeparatorIndex); // If no prefix, prefix is just \"\"\n let uaName = name.substring(prefixSeparatorIndex + 1);\n if (prefix === \"api\") {\n uaName = uaName.toLowerCase();\n }\n return [prefix, uaName, version]\n .filter((item) => item && item.length > 0)\n .map((item) => item?.replace(UA_ESCAPE_REGEX, \"_\"))\n .join(\"/\");\n};\n\nexport const getUserAgentMiddlewareOptions: BuildHandlerOptions & AbsoluteLocation = {\n name: \"getUserAgentMiddleware\",\n step: \"build\",\n priority: \"low\",\n tags: [\"SET_USER_AGENT\", \"USER_AGENT\"],\n override: true,\n};\n\nexport const getUserAgentPlugin = (config: UserAgentResolvedConfig): Pluggable => ({\n applyToStack: (clientStack) => {\n clientStack.add(userAgentMiddleware(config), getUserAgentMiddlewareOptions);\n },\n});\n","import { CreateIdentityPoolCommandInput, CreateIdentityPoolCommandOutput } from \"./commands/CreateIdentityPoolCommand\";\nimport { DeleteIdentitiesCommandInput, DeleteIdentitiesCommandOutput } from \"./commands/DeleteIdentitiesCommand\";\nimport { DeleteIdentityPoolCommandInput, DeleteIdentityPoolCommandOutput } from \"./commands/DeleteIdentityPoolCommand\";\nimport { DescribeIdentityCommandInput, DescribeIdentityCommandOutput } from \"./commands/DescribeIdentityCommand\";\nimport {\n DescribeIdentityPoolCommandInput,\n DescribeIdentityPoolCommandOutput,\n} from \"./commands/DescribeIdentityPoolCommand\";\nimport {\n GetCredentialsForIdentityCommandInput,\n GetCredentialsForIdentityCommandOutput,\n} from \"./commands/GetCredentialsForIdentityCommand\";\nimport { GetIdCommandInput, GetIdCommandOutput } from \"./commands/GetIdCommand\";\nimport {\n GetIdentityPoolRolesCommandInput,\n GetIdentityPoolRolesCommandOutput,\n} from \"./commands/GetIdentityPoolRolesCommand\";\nimport { GetOpenIdTokenCommandInput, GetOpenIdTokenCommandOutput } from \"./commands/GetOpenIdTokenCommand\";\nimport {\n GetOpenIdTokenForDeveloperIdentityCommandInput,\n GetOpenIdTokenForDeveloperIdentityCommandOutput,\n} from \"./commands/GetOpenIdTokenForDeveloperIdentityCommand\";\nimport { ListIdentitiesCommandInput, ListIdentitiesCommandOutput } from \"./commands/ListIdentitiesCommand\";\nimport { ListIdentityPoolsCommandInput, ListIdentityPoolsCommandOutput } from \"./commands/ListIdentityPoolsCommand\";\nimport {\n ListTagsForResourceCommandInput,\n ListTagsForResourceCommandOutput,\n} from \"./commands/ListTagsForResourceCommand\";\nimport {\n LookupDeveloperIdentityCommandInput,\n LookupDeveloperIdentityCommandOutput,\n} from \"./commands/LookupDeveloperIdentityCommand\";\nimport {\n MergeDeveloperIdentitiesCommandInput,\n MergeDeveloperIdentitiesCommandOutput,\n} from \"./commands/MergeDeveloperIdentitiesCommand\";\nimport {\n SetIdentityPoolRolesCommandInput,\n SetIdentityPoolRolesCommandOutput,\n} from \"./commands/SetIdentityPoolRolesCommand\";\nimport { TagResourceCommandInput, TagResourceCommandOutput } from \"./commands/TagResourceCommand\";\nimport {\n UnlinkDeveloperIdentityCommandInput,\n UnlinkDeveloperIdentityCommandOutput,\n} from \"./commands/UnlinkDeveloperIdentityCommand\";\nimport { UnlinkIdentityCommandInput, UnlinkIdentityCommandOutput } from \"./commands/UnlinkIdentityCommand\";\nimport { UntagResourceCommandInput, UntagResourceCommandOutput } from \"./commands/UntagResourceCommand\";\nimport { UpdateIdentityPoolCommandInput, UpdateIdentityPoolCommandOutput } from \"./commands/UpdateIdentityPoolCommand\";\nimport { ClientDefaultValues as __ClientDefaultValues } from \"./runtimeConfig\";\nimport {\n EndpointsInputConfig,\n EndpointsResolvedConfig,\n RegionInputConfig,\n RegionResolvedConfig,\n resolveEndpointsConfig,\n resolveRegionConfig,\n} from \"@aws-sdk/config-resolver\";\nimport { getContentLengthPlugin } from \"@aws-sdk/middleware-content-length\";\nimport {\n HostHeaderInputConfig,\n HostHeaderResolvedConfig,\n getHostHeaderPlugin,\n resolveHostHeaderConfig,\n} from \"@aws-sdk/middleware-host-header\";\nimport { getLoggerPlugin } from \"@aws-sdk/middleware-logger\";\nimport { RetryInputConfig, RetryResolvedConfig, getRetryPlugin, resolveRetryConfig } from \"@aws-sdk/middleware-retry\";\nimport { AwsAuthInputConfig, AwsAuthResolvedConfig, resolveAwsAuthConfig } from \"@aws-sdk/middleware-signing\";\nimport {\n UserAgentInputConfig,\n UserAgentResolvedConfig,\n getUserAgentPlugin,\n resolveUserAgentConfig,\n} from \"@aws-sdk/middleware-user-agent\";\nimport { HttpHandler as __HttpHandler } from \"@aws-sdk/protocol-http\";\nimport {\n Client as __Client,\n SmithyConfiguration as __SmithyConfiguration,\n SmithyResolvedConfiguration as __SmithyResolvedConfiguration,\n} from \"@aws-sdk/smithy-client\";\nimport {\n Provider,\n RegionInfoProvider,\n Credentials as __Credentials,\n Decoder as __Decoder,\n Encoder as __Encoder,\n HashConstructor as __HashConstructor,\n HttpHandlerOptions as __HttpHandlerOptions,\n Logger as __Logger,\n Provider as __Provider,\n StreamCollector as __StreamCollector,\n UrlParser as __UrlParser,\n UserAgent as __UserAgent,\n} from \"@aws-sdk/types\";\n\nexport type ServiceInputTypes =\n | CreateIdentityPoolCommandInput\n | DeleteIdentitiesCommandInput\n | DeleteIdentityPoolCommandInput\n | DescribeIdentityCommandInput\n | DescribeIdentityPoolCommandInput\n | GetCredentialsForIdentityCommandInput\n | GetIdCommandInput\n | GetIdentityPoolRolesCommandInput\n | GetOpenIdTokenCommandInput\n | GetOpenIdTokenForDeveloperIdentityCommandInput\n | ListIdentitiesCommandInput\n | ListIdentityPoolsCommandInput\n | ListTagsForResourceCommandInput\n | LookupDeveloperIdentityCommandInput\n | MergeDeveloperIdentitiesCommandInput\n | SetIdentityPoolRolesCommandInput\n | TagResourceCommandInput\n | UnlinkDeveloperIdentityCommandInput\n | UnlinkIdentityCommandInput\n | UntagResourceCommandInput\n | UpdateIdentityPoolCommandInput;\n\nexport type ServiceOutputTypes =\n | CreateIdentityPoolCommandOutput\n | DeleteIdentitiesCommandOutput\n | DeleteIdentityPoolCommandOutput\n | DescribeIdentityCommandOutput\n | DescribeIdentityPoolCommandOutput\n | GetCredentialsForIdentityCommandOutput\n | GetIdCommandOutput\n | GetIdentityPoolRolesCommandOutput\n | GetOpenIdTokenCommandOutput\n | GetOpenIdTokenForDeveloperIdentityCommandOutput\n | ListIdentitiesCommandOutput\n | ListIdentityPoolsCommandOutput\n | ListTagsForResourceCommandOutput\n | LookupDeveloperIdentityCommandOutput\n | MergeDeveloperIdentitiesCommandOutput\n | SetIdentityPoolRolesCommandOutput\n | TagResourceCommandOutput\n | UnlinkDeveloperIdentityCommandOutput\n | UnlinkIdentityCommandOutput\n | UntagResourceCommandOutput\n | UpdateIdentityPoolCommandOutput;\n\nexport interface ClientDefaults extends Partial<__SmithyResolvedConfiguration<__HttpHandlerOptions>> {\n /**\n * The HTTP handler to use. Fetch in browser and Https in Nodejs.\n */\n requestHandler?: __HttpHandler;\n\n /**\n * A constructor for a class implementing the @aws-sdk/types.Hash interface\n * that computes the SHA-256 HMAC or checksum of a string or binary buffer.\n */\n sha256?: __HashConstructor;\n\n /**\n * The function that will be used to convert strings into HTTP endpoints.\n */\n urlParser?: __UrlParser;\n\n /**\n * A function that can calculate the length of a request body.\n */\n bodyLengthChecker?: (body: any) => number | undefined;\n\n /**\n * A function that converts a stream into an array of bytes.\n */\n streamCollector?: __StreamCollector;\n\n /**\n * The function that will be used to convert a base64-encoded string to a byte array\n */\n base64Decoder?: __Decoder;\n\n /**\n * The function that will be used to convert binary data to a base64-encoded string\n */\n base64Encoder?: __Encoder;\n\n /**\n * The function that will be used to convert a UTF8-encoded string to a byte array\n */\n utf8Decoder?: __Decoder;\n\n /**\n * The function that will be used to convert binary data to a UTF-8 encoded string\n */\n utf8Encoder?: __Encoder;\n\n /**\n * The runtime environment\n */\n runtime?: string;\n\n /**\n * Disable dyanamically changing the endpoint of the client based on the hostPrefix\n * trait of an operation.\n */\n disableHostPrefix?: boolean;\n\n /**\n * Unique service identifier.\n * @internal\n */\n serviceId?: string;\n\n /**\n * Default credentials provider; Not available in browser runtime\n */\n credentialDefaultProvider?: (input: any) => __Provider<__Credentials>;\n\n /**\n * The AWS region to which this client will send requests\n */\n region?: string | __Provider;\n\n /**\n * Value for how many times a request will be made at most in case of retry.\n */\n maxAttempts?: number | __Provider;\n\n /**\n * Optional logger for logging debug/info/warn/error.\n */\n logger?: __Logger;\n\n /**\n * Fetch related hostname, signing name or signing region with given region.\n */\n regionInfoProvider?: RegionInfoProvider;\n\n /**\n * The provider populating default tracking information to be sent with `user-agent`, `x-amz-user-agent` header\n * @internal\n */\n defaultUserAgentProvider?: Provider<__UserAgent>;\n}\n\nexport type CognitoIdentityClientConfig = Partial<__SmithyConfiguration<__HttpHandlerOptions>> &\n ClientDefaults &\n RegionInputConfig &\n EndpointsInputConfig &\n AwsAuthInputConfig &\n RetryInputConfig &\n HostHeaderInputConfig &\n UserAgentInputConfig;\n\nexport type CognitoIdentityClientResolvedConfig = __SmithyResolvedConfiguration<__HttpHandlerOptions> &\n Required &\n RegionResolvedConfig &\n EndpointsResolvedConfig &\n AwsAuthResolvedConfig &\n RetryResolvedConfig &\n HostHeaderResolvedConfig &\n UserAgentResolvedConfig;\n\n/**\n * Amazon Cognito Federated Identities\n *

Amazon Cognito Federated Identities is a web service that delivers scoped temporary\n * credentials to mobile devices and other untrusted environments. It uniquely identifies a\n * device and supplies the user with a consistent identity over the lifetime of an\n * application.

\n *

Using Amazon Cognito Federated Identities, you can enable authentication with one or\n * more third-party identity providers (Facebook, Google, or Login with Amazon) or an Amazon\n * Cognito user pool, and you can also choose to support unauthenticated access from your app.\n * Cognito delivers a unique identifier for each user and acts as an OpenID token provider\n * trusted by AWS Security Token Service (STS) to access temporary, limited-privilege AWS\n * credentials.

\n *

For a description of the authentication flow from the Amazon Cognito Developer Guide\n * see Authentication Flow.

\n *

For more information see Amazon Cognito Federated Identities.

\n */\nexport class CognitoIdentityClient extends __Client<\n __HttpHandlerOptions,\n ServiceInputTypes,\n ServiceOutputTypes,\n CognitoIdentityClientResolvedConfig\n> {\n readonly config: CognitoIdentityClientResolvedConfig;\n\n constructor(configuration: CognitoIdentityClientConfig) {\n let _config_0 = {\n ...__ClientDefaultValues,\n ...configuration,\n };\n let _config_1 = resolveRegionConfig(_config_0);\n let _config_2 = resolveEndpointsConfig(_config_1);\n let _config_3 = resolveAwsAuthConfig(_config_2);\n let _config_4 = resolveRetryConfig(_config_3);\n let _config_5 = resolveHostHeaderConfig(_config_4);\n let _config_6 = resolveUserAgentConfig(_config_5);\n super(_config_6);\n this.config = _config_6;\n this.middlewareStack.use(getRetryPlugin(this.config));\n this.middlewareStack.use(getContentLengthPlugin(this.config));\n this.middlewareStack.use(getHostHeaderPlugin(this.config));\n this.middlewareStack.use(getLoggerPlugin(this.config));\n this.middlewareStack.use(getUserAgentPlugin(this.config));\n }\n\n destroy(): void {\n super.destroy();\n }\n}\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { version } from './version';\n\nconst BASE_USER_AGENT = `aws-amplify/${version}`;\n\nexport const Platform = {\n\tuserAgent: `${BASE_USER_AGENT} js`,\n\tproduct: '',\n\tnavigator: null,\n\tisReactNative: false,\n};\nif (typeof navigator !== 'undefined' && navigator.product) {\n\tPlatform.product = navigator.product || '';\n\tPlatform.navigator = navigator || null;\n\tswitch (navigator.product) {\n\t\tcase 'ReactNative':\n\t\t\tPlatform.userAgent = `${BASE_USER_AGENT} react-native`;\n\t\t\tPlatform.isReactNative = true;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tPlatform.userAgent = `${BASE_USER_AGENT} js`;\n\t\t\tPlatform.isReactNative = false;\n\t\t\tbreak;\n\t}\n}\n\nexport const getAmplifyUserAgent = (content?: string) => {\n\treturn `${Platform.userAgent}${content ? content : ''}`;\n};\n\n/**\n * @deprecated use named import\n */\nexport default Platform;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n\tCognitoIdentityClient,\n\tCognitoIdentityClientConfig,\n} from '@aws-sdk/client-cognito-identity';\nimport { Provider } from '@aws-sdk/types';\nimport { getAmplifyUserAgent } from '../Platform';\n\n/**\n * Returns a CognitoIdentityClient with middleware\n * @param {CognitoIdentityClientConfig} config\n * @return {CognitoIdentityClient}\n */\nexport function createCognitoIdentityClient(\n\tconfig: CognitoIdentityClientConfig\n): CognitoIdentityClient {\n\tconst client = new CognitoIdentityClient({\n\t\tregion: config.region,\n\t\tcustomUserAgent: getAmplifyUserAgent(),\n\t});\n\n\tclient.middlewareStack.add(\n\t\t(next, _) => (args: any) => {\n\t\t\treturn next(middlewareArgs(args));\n\t\t},\n\t\t{\n\t\t\tstep: 'build',\n\t\t\tname: 'cacheControlMiddleWare',\n\t\t}\n\t);\n\n\treturn client;\n}\n\nexport function middlewareArgs(args: { request: any; input: any }) {\n\treturn {\n\t\t...args,\n\t\trequest: {\n\t\t\t...args.request,\n\t\t\theaders: {\n\t\t\t\t...args.request.headers,\n\t\t\t\t'cache-control': 'no-store',\n\t\t\t},\n\t\t},\n\t};\n}\n","import { ConsoleLogger as Logger } from './Logger';\nimport { StorageHelper } from './StorageHelper';\nimport { makeQuerablePromise } from './JS';\nimport { FacebookOAuth, GoogleOAuth } from './OAuthHelper';\nimport { jitteredExponentialRetry } from './Util';\nimport { ICredentials } from './types';\nimport { Amplify } from './Amplify';\nimport {\n\tfromCognitoIdentity,\n\tFromCognitoIdentityParameters,\n\tfromCognitoIdentityPool,\n\tFromCognitoIdentityPoolParameters,\n} from '@aws-sdk/credential-provider-cognito-identity';\nimport {\n\tGetIdCommand,\n\tGetCredentialsForIdentityCommand,\n} from '@aws-sdk/client-cognito-identity';\nimport { CredentialProvider } from '@aws-sdk/types';\nimport { createCognitoIdentityClient } from './Util/CognitoIdentityClient';\n\nconst logger = new Logger('Credentials');\n\nconst CREDENTIALS_TTL = 50 * 60 * 1000; // 50 min, can be modified on config if required in the future\n\nconst COGNITO_IDENTITY_KEY_PREFIX = 'CognitoIdentityId-';\n\nexport class CredentialsClass {\n\tprivate _config;\n\tprivate _credentials;\n\tprivate _credentials_source;\n\tprivate _gettingCredPromise = null;\n\tprivate _refreshHandlers = {};\n\tprivate _storage;\n\tprivate _storageSync;\n\tprivate _identityId;\n\tprivate _nextCredentialsRefresh: Number;\n\n\t// Allow `Auth` to be injected for SSR, but Auth isn't a required dependency for Credentials\n\tAuth = undefined;\n\n\tconstructor(config) {\n\t\tthis.configure(config);\n\t\tthis._refreshHandlers['google'] = GoogleOAuth.refreshGoogleToken;\n\t\tthis._refreshHandlers['facebook'] = FacebookOAuth.refreshFacebookToken;\n\t}\n\n\tpublic getModuleName() {\n\t\treturn 'Credentials';\n\t}\n\n\tpublic getCredSource() {\n\t\treturn this._credentials_source;\n\t}\n\n\tpublic configure(config) {\n\t\tif (!config) return this._config || {};\n\n\t\tthis._config = Object.assign({}, this._config, config);\n\t\tconst { refreshHandlers } = this._config;\n\t\t// If the developer has provided an object of refresh handlers,\n\t\t// then we can merge the provided handlers with the current handlers.\n\t\tif (refreshHandlers) {\n\t\t\tthis._refreshHandlers = {\n\t\t\t\t...this._refreshHandlers,\n\t\t\t\t...refreshHandlers,\n\t\t\t};\n\t\t}\n\n\t\tthis._storage = this._config.storage;\n\n\t\tif (!this._storage) {\n\t\t\tthis._storage = new StorageHelper().getStorage();\n\t\t}\n\n\t\tthis._storageSync = Promise.resolve();\n\t\tif (typeof this._storage['sync'] === 'function') {\n\t\t\tthis._storageSync = this._storage['sync']();\n\t\t}\n\n\t\treturn this._config;\n\t}\n\n\tpublic get() {\n\t\tlogger.debug('getting credentials');\n\t\treturn this._pickupCredentials();\n\t}\n\n\t// currently we only store the guest identity in local storage\n\tprivate _getCognitoIdentityIdStorageKey(identityPoolId: string) {\n\t\treturn `${COGNITO_IDENTITY_KEY_PREFIX}${identityPoolId}`;\n\t}\n\n\tprivate _pickupCredentials() {\n\t\tlogger.debug('picking up credentials');\n\t\tif (!this._gettingCredPromise || !this._gettingCredPromise.isPending()) {\n\t\t\tlogger.debug('getting new cred promise');\n\t\t\tthis._gettingCredPromise = makeQuerablePromise(this._keepAlive());\n\t\t} else {\n\t\t\tlogger.debug('getting old cred promise');\n\t\t}\n\t\treturn this._gettingCredPromise;\n\t}\n\n\tprivate async _keepAlive() {\n\t\tlogger.debug('checking if credentials exists and not expired');\n\t\tconst cred = this._credentials;\n\t\tif (cred && !this._isExpired(cred) && !this._isPastTTL()) {\n\t\t\tlogger.debug('credentials not changed and not expired, directly return');\n\t\t\treturn Promise.resolve(cred);\n\t\t}\n\n\t\tlogger.debug('need to get a new credential or refresh the existing one');\n\n\t\t// Some use-cases don't require Auth for signing in, but use Credentials for guest users (e.g. Analytics)\n\t\t// Prefer locally scoped `Auth`, but fallback to registered `Amplify.Auth` global otherwise.\n\t\tconst { Auth = Amplify.Auth } = this;\n\n\t\tif (!Auth || typeof Auth.currentUserCredentials !== 'function') {\n\t\t\treturn Promise.reject('No Auth module registered in Amplify');\n\t\t}\n\n\t\tif (!this._isExpired(cred) && this._isPastTTL()) {\n\t\t\tlogger.debug('ttl has passed but token is not yet expired');\n\t\t\ttry {\n\t\t\t\tconst user = await Auth.currentUserPoolUser();\n\t\t\t\tconst session = await Auth.currentSession();\n\t\t\t\tconst refreshToken = session.refreshToken;\n\t\t\t\tconst refreshRequest = new Promise((res, rej) => {\n\t\t\t\t\tuser.refreshSession(refreshToken, (err, data) => {\n\t\t\t\t\t\treturn err ? rej(err) : res(data);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tawait refreshRequest; // note that rejections will be caught and handled in the catch block.\n\t\t\t} catch (err) {\n\t\t\t\t// should not throw because user might just be on guest access or is authenticated through federation\n\t\t\t\tlogger.debug('Error attempting to refreshing the session', err);\n\t\t\t}\n\t\t}\n\t\treturn Auth.currentUserCredentials();\n\t}\n\n\tpublic refreshFederatedToken(federatedInfo) {\n\t\tlogger.debug('Getting federated credentials');\n\t\tconst { provider, user, token, identity_id } = federatedInfo;\n\t\tlet { expires_at } = federatedInfo;\n\n\t\t// Make sure expires_at is in millis\n\t\texpires_at =\n\t\t\tnew Date(expires_at).getFullYear() === 1970\n\t\t\t\t? expires_at * 1000\n\t\t\t\t: expires_at;\n\n\t\tconst that = this;\n\t\tlogger.debug('checking if federated jwt token expired');\n\t\tif (expires_at > new Date().getTime()) {\n\t\t\t// if not expired\n\t\t\tlogger.debug('token not expired');\n\t\t\treturn this._setCredentialsFromFederation({\n\t\t\t\tprovider,\n\t\t\t\ttoken,\n\t\t\t\tuser,\n\t\t\t\tidentity_id,\n\t\t\t\texpires_at,\n\t\t\t});\n\t\t} else {\n\t\t\t// if refresh handler exists\n\t\t\tif (\n\t\t\t\tthat._refreshHandlers[provider] &&\n\t\t\t\ttypeof that._refreshHandlers[provider] === 'function'\n\t\t\t) {\n\t\t\t\tlogger.debug('getting refreshed jwt token from federation provider');\n\t\t\t\treturn this._providerRefreshWithRetry({\n\t\t\t\t\trefreshHandler: that._refreshHandlers[provider],\n\t\t\t\t\tprovider,\n\t\t\t\t\tuser,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tlogger.debug('no refresh handler for provider:', provider);\n\t\t\t\tthis.clear();\n\t\t\t\treturn Promise.reject('no refresh handler for provider');\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _providerRefreshWithRetry({ refreshHandler, provider, user }) {\n\t\tconst MAX_DELAY_MS = 10 * 1000;\n\t\t// refreshHandler will retry network errors, otherwise it will\n\t\t// return NonRetryableError to break out of jitteredExponentialRetry\n\t\treturn jitteredExponentialRetry(refreshHandler, [], MAX_DELAY_MS)\n\t\t\t.then(data => {\n\t\t\t\tlogger.debug('refresh federated token sucessfully', data);\n\t\t\t\treturn this._setCredentialsFromFederation({\n\t\t\t\t\tprovider,\n\t\t\t\t\ttoken: data.token,\n\t\t\t\t\tuser,\n\t\t\t\t\tidentity_id: data.identity_id,\n\t\t\t\t\texpires_at: data.expires_at,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(e => {\n\t\t\t\tconst isNetworkError =\n\t\t\t\t\ttypeof e === 'string' &&\n\t\t\t\t\te.toLowerCase().lastIndexOf('network error', e.length) === 0;\n\n\t\t\t\tif (!isNetworkError) {\n\t\t\t\t\tthis.clear();\n\t\t\t\t}\n\n\t\t\t\tlogger.debug('refresh federated token failed', e);\n\t\t\t\treturn Promise.reject('refreshing federation token failed: ' + e);\n\t\t\t});\n\t}\n\n\tprivate _isExpired(credentials): boolean {\n\t\tif (!credentials) {\n\t\t\tlogger.debug('no credentials for expiration check');\n\t\t\treturn true;\n\t\t}\n\t\tlogger.debug('are these credentials expired?', credentials);\n\t\tconst ts = Date.now();\n\n\t\t/* returns date object.\n\t\t\thttps://github.com/aws/aws-sdk-js-v3/blob/v1.0.0-beta.1/packages/types/src/credentials.ts#L26\n\t\t*/\n\t\tconst { expiration } = credentials;\n\t\treturn expiration.getTime() <= ts;\n\t}\n\n\tprivate _isPastTTL(): boolean {\n\t\treturn this._nextCredentialsRefresh <= Date.now();\n\t}\n\n\tprivate async _setCredentialsForGuest() {\n\t\tlogger.debug('setting credentials for guest');\n\t\tconst { identityPoolId, region, mandatorySignIn } = this._config;\n\t\tif (mandatorySignIn) {\n\t\t\treturn Promise.reject(\n\t\t\t\t'cannot get guest credentials when mandatory signin enabled'\n\t\t\t);\n\t\t}\n\n\t\tif (!identityPoolId) {\n\t\t\tlogger.debug(\n\t\t\t\t'No Cognito Identity pool provided for unauthenticated access'\n\t\t\t);\n\t\t\treturn Promise.reject(\n\t\t\t\t'No Cognito Identity pool provided for unauthenticated access'\n\t\t\t);\n\t\t}\n\n\t\tif (!region) {\n\t\t\tlogger.debug('region is not configured for getting the credentials');\n\t\t\treturn Promise.reject(\n\t\t\t\t'region is not configured for getting the credentials'\n\t\t\t);\n\t\t}\n\n\t\tconst identityId = (this._identityId = await this._getGuestIdentityId());\n\n\t\tconst cognitoClient = createCognitoIdentityClient({\n\t\t\tregion,\n\t\t});\n\n\t\tlet credentials = undefined;\n\t\tif (identityId) {\n\t\t\tconst cognitoIdentityParams: FromCognitoIdentityParameters = {\n\t\t\t\tidentityId,\n\t\t\t\tclient: cognitoClient,\n\t\t\t};\n\t\t\tcredentials = fromCognitoIdentity(cognitoIdentityParams)();\n\t\t} else {\n\t\t\t/*\n\t\t\tRetreiving identityId with GetIdCommand to mimic the behavior in the following code in aws-sdk-v3:\n\t\t\thttps://git.io/JeDxU\n\n\t\t\tNote: Retreive identityId from CredentialsProvider once aws-sdk-js v3 supports this.\n\t\t\t*/\n\t\t\tconst credentialsProvider: CredentialProvider = async () => {\n\t\t\t\tconst { IdentityId } = await cognitoClient.send(\n\t\t\t\t\tnew GetIdCommand({\n\t\t\t\t\t\tIdentityPoolId: identityPoolId,\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t\tthis._identityId = IdentityId;\n\t\t\t\tconst cognitoIdentityParams: FromCognitoIdentityParameters = {\n\t\t\t\t\tclient: cognitoClient,\n\t\t\t\t\tidentityId: IdentityId,\n\t\t\t\t};\n\n\t\t\t\tconst credentialsFromCognitoIdentity = fromCognitoIdentity(\n\t\t\t\t\tcognitoIdentityParams\n\t\t\t\t);\n\n\t\t\t\treturn credentialsFromCognitoIdentity();\n\t\t\t};\n\n\t\t\tcredentials = credentialsProvider().catch(async err => {\n\t\t\t\tthrow err;\n\t\t\t});\n\t\t}\n\n\t\treturn this._loadCredentials(credentials, 'guest', false, null)\n\t\t\t.then(res => {\n\t\t\t\treturn res;\n\t\t\t})\n\t\t\t.catch(async e => {\n\t\t\t\t// If identity id is deleted in the console, we make one attempt to recreate it\n\t\t\t\t// and remove existing id from cache.\n\t\t\t\tif (\n\t\t\t\t\te.name === 'ResourceNotFoundException' &&\n\t\t\t\t\te.message === `Identity '${identityId}' not found.`\n\t\t\t\t) {\n\t\t\t\t\tlogger.debug('Failed to load guest credentials');\n\t\t\t\t\tawait this._removeGuestIdentityId();\n\n\t\t\t\t\tconst credentialsProvider: CredentialProvider = async () => {\n\t\t\t\t\t\tconst { IdentityId } = await cognitoClient.send(\n\t\t\t\t\t\t\tnew GetIdCommand({\n\t\t\t\t\t\t\t\tIdentityPoolId: identityPoolId,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis._identityId = IdentityId;\n\t\t\t\t\t\tconst cognitoIdentityParams: FromCognitoIdentityParameters = {\n\t\t\t\t\t\t\tclient: cognitoClient,\n\t\t\t\t\t\t\tidentityId: IdentityId,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst credentialsFromCognitoIdentity = fromCognitoIdentity(\n\t\t\t\t\t\t\tcognitoIdentityParams\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn credentialsFromCognitoIdentity();\n\t\t\t\t\t};\n\n\t\t\t\t\tcredentials = credentialsProvider().catch(async err => {\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t});\n\n\t\t\t\t\treturn this._loadCredentials(credentials, 'guest', false, null);\n\t\t\t\t} else {\n\t\t\t\t\treturn e;\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tprivate _setCredentialsFromFederation(params) {\n\t\tconst { provider, token, identity_id } = params;\n\t\tconst domains = {\n\t\t\tgoogle: 'accounts.google.com',\n\t\t\tfacebook: 'graph.facebook.com',\n\t\t\tamazon: 'www.amazon.com',\n\t\t\tdeveloper: 'cognito-identity.amazonaws.com',\n\t\t};\n\n\t\t// Use custom provider url instead of the predefined ones\n\t\tconst domain = domains[provider] || provider;\n\t\tif (!domain) {\n\t\t\treturn Promise.reject('You must specify a federated provider');\n\t\t}\n\n\t\tconst logins = {};\n\t\tlogins[domain] = token;\n\n\t\tconst { identityPoolId, region } = this._config;\n\t\tif (!identityPoolId) {\n\t\t\tlogger.debug('No Cognito Federated Identity pool provided');\n\t\t\treturn Promise.reject('No Cognito Federated Identity pool provided');\n\t\t}\n\t\tif (!region) {\n\t\t\tlogger.debug('region is not configured for getting the credentials');\n\t\t\treturn Promise.reject(\n\t\t\t\t'region is not configured for getting the credentials'\n\t\t\t);\n\t\t}\n\n\t\tconst cognitoClient = createCognitoIdentityClient({\n\t\t\tregion,\n\t\t});\n\n\t\tlet credentials = undefined;\n\t\tif (identity_id) {\n\t\t\tconst cognitoIdentityParams: FromCognitoIdentityParameters = {\n\t\t\t\tidentityId: identity_id,\n\t\t\t\tlogins,\n\t\t\t\tclient: cognitoClient,\n\t\t\t};\n\t\t\tcredentials = fromCognitoIdentity(cognitoIdentityParams)();\n\t\t} else {\n\t\t\tconst cognitoIdentityParams: FromCognitoIdentityPoolParameters = {\n\t\t\t\tlogins,\n\t\t\t\tidentityPoolId,\n\t\t\t\tclient: cognitoClient,\n\t\t\t};\n\t\t\tcredentials = fromCognitoIdentityPool(cognitoIdentityParams)();\n\t\t}\n\t\treturn this._loadCredentials(credentials, 'federated', true, params);\n\t}\n\n\tprivate _setCredentialsFromSession(session): Promise {\n\t\tlogger.debug('set credentials from session');\n\t\tconst idToken = session.getIdToken().getJwtToken();\n\t\tconst { region, userPoolId, identityPoolId } = this._config;\n\t\tif (!identityPoolId) {\n\t\t\tlogger.debug('No Cognito Federated Identity pool provided');\n\t\t\treturn Promise.reject('No Cognito Federated Identity pool provided');\n\t\t}\n\t\tif (!region) {\n\t\t\tlogger.debug('region is not configured for getting the credentials');\n\t\t\treturn Promise.reject(\n\t\t\t\t'region is not configured for getting the credentials'\n\t\t\t);\n\t\t}\n\t\tconst key = 'cognito-idp.' + region + '.amazonaws.com/' + userPoolId;\n\t\tconst logins = {};\n\t\tlogins[key] = idToken;\n\n\t\tconst cognitoClient = createCognitoIdentityClient({\n\t\t\tregion,\n\t\t});\n\n\t\t/* \n\t\t\tRetreiving identityId with GetIdCommand to mimic the behavior in the following code in aws-sdk-v3:\n\t\t\thttps://git.io/JeDxU\n\n\t\t\tNote: Retreive identityId from CredentialsProvider once aws-sdk-js v3 supports this.\n\t\t*/\n\t\tconst credentialsProvider: CredentialProvider = async () => {\n\t\t\t// try to fetch the local stored guest identity, if found, we will associate it with the logins\n\t\t\tconst guestIdentityId = await this._getGuestIdentityId();\n\n\t\t\tlet generatedOrRetrievedIdentityId;\n\t\t\tif (!guestIdentityId) {\n\t\t\t\t// for a first-time user, this will return a brand new identity\n\t\t\t\t// for a returning user, this will retrieve the previous identity assocaited with the logins\n\t\t\t\tconst { IdentityId } = await cognitoClient.send(\n\t\t\t\t\tnew GetIdCommand({\n\t\t\t\t\t\tIdentityPoolId: identityPoolId,\n\t\t\t\t\t\tLogins: logins,\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t\tgeneratedOrRetrievedIdentityId = IdentityId;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\tCredentials: { AccessKeyId, Expiration, SecretKey, SessionToken },\n\t\t\t\t// single source of truth for the primary identity associated with the logins\n\t\t\t\t// only if a guest identity is used for a first-time user, that guest identity will become its primary identity\n\t\t\t\tIdentityId: primaryIdentityId,\n\t\t\t} = await cognitoClient.send(\n\t\t\t\tnew GetCredentialsForIdentityCommand({\n\t\t\t\t\tIdentityId: guestIdentityId || generatedOrRetrievedIdentityId,\n\t\t\t\t\tLogins: logins,\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tthis._identityId = primaryIdentityId;\n\t\t\tif (guestIdentityId) {\n\t\t\t\t// if guestIdentity is found and used by GetCredentialsForIdentity\n\t\t\t\t// it will be linked to the logins provided, and disqualified as an unauth identity\n\t\t\t\tlogger.debug(\n\t\t\t\t\t`The guest identity ${guestIdentityId} has been successfully linked to the logins`\n\t\t\t\t);\n\t\t\t\tif (guestIdentityId === primaryIdentityId) {\n\t\t\t\t\tlogger.debug(\n\t\t\t\t\t\t`The guest identity ${guestIdentityId} has become the primary identity`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t// remove it from local storage to avoid being used as a guest Identity by _setCredentialsForGuest\n\t\t\t\tawait this._removeGuestIdentityId();\n\t\t\t}\n\n\t\t\t// https://github.com/aws/aws-sdk-js-v3/blob/main/packages/credential-provider-cognito-identity/src/fromCognitoIdentity.ts#L40\n\t\t\treturn {\n\t\t\t\taccessKeyId: AccessKeyId,\n\t\t\t\tsecretAccessKey: SecretKey,\n\t\t\t\tsessionToken: SessionToken,\n\t\t\t\texpiration: Expiration,\n\t\t\t\tidentityId: primaryIdentityId,\n\t\t\t};\n\t\t};\n\n\t\tconst credentials = credentialsProvider().catch(async err => {\n\t\t\tthrow err;\n\t\t});\n\n\t\treturn this._loadCredentials(credentials, 'userPool', true, null);\n\t}\n\n\tprivate _loadCredentials(\n\t\tcredentials,\n\t\tsource,\n\t\tauthenticated,\n\t\tinfo\n\t): Promise {\n\t\tconst that = this;\n\t\treturn new Promise((res, rej) => {\n\t\t\tcredentials\n\t\t\t\t.then(async credentials => {\n\t\t\t\t\tlogger.debug('Load credentials successfully', credentials);\n\t\t\t\t\tif (this._identityId && !credentials.identityId) {\n\t\t\t\t\t\tcredentials['identityId'] = this._identityId;\n\t\t\t\t\t}\n\n\t\t\t\t\tthat._credentials = credentials;\n\t\t\t\t\tthat._credentials.authenticated = authenticated;\n\t\t\t\t\tthat._credentials_source = source;\n\t\t\t\t\tthat._nextCredentialsRefresh = new Date().getTime() + CREDENTIALS_TTL;\n\t\t\t\t\tif (source === 'federated') {\n\t\t\t\t\t\tconst user = Object.assign(\n\t\t\t\t\t\t\t{ id: this._credentials.identityId },\n\t\t\t\t\t\t\tinfo.user\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst { provider, token, expires_at, identity_id } = info;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tthis._storage.setItem(\n\t\t\t\t\t\t\t\t'aws-amplify-federatedInfo',\n\t\t\t\t\t\t\t\tJSON.stringify({\n\t\t\t\t\t\t\t\t\tprovider,\n\t\t\t\t\t\t\t\t\ttoken,\n\t\t\t\t\t\t\t\t\tuser,\n\t\t\t\t\t\t\t\t\texpires_at,\n\t\t\t\t\t\t\t\t\tidentity_id,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tlogger.debug('Failed to put federated info into auth storage', e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (source === 'guest') {\n\t\t\t\t\t\tawait this._setGuestIdentityId(credentials.identityId);\n\t\t\t\t\t}\n\t\t\t\t\tres(that._credentials);\n\t\t\t\t\treturn;\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tlogger.debug('Failed to load credentials', credentials);\n\t\t\t\t\t\tlogger.debug('Error loading credentials', err);\n\t\t\t\t\t\trej(err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t});\n\t}\n\n\tpublic set(params, source): Promise {\n\t\tif (source === 'session') {\n\t\t\treturn this._setCredentialsFromSession(params);\n\t\t} else if (source === 'federation') {\n\t\t\treturn this._setCredentialsFromFederation(params);\n\t\t} else if (source === 'guest') {\n\t\t\treturn this._setCredentialsForGuest();\n\t\t} else {\n\t\t\tlogger.debug('no source specified for setting credentials');\n\t\t\treturn Promise.reject('invalid source');\n\t\t}\n\t}\n\n\tpublic async clear() {\n\t\tthis._credentials = null;\n\t\tthis._credentials_source = null;\n\t\tlogger.debug('removing aws-amplify-federatedInfo from storage');\n\t\tthis._storage.removeItem('aws-amplify-federatedInfo');\n\t}\n\n\t/* operations on local stored guest identity */\n\tprivate async _getGuestIdentityId(): Promise {\n\t\tconst { identityPoolId } = this._config;\n\t\ttry {\n\t\t\tawait this._storageSync;\n\t\t\treturn this._storage.getItem(\n\t\t\t\tthis._getCognitoIdentityIdStorageKey(identityPoolId)\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tlogger.debug('Failed to get the cached guest identityId', e);\n\t\t}\n\t}\n\n\tprivate async _setGuestIdentityId(identityId: string) {\n\t\tconst { identityPoolId } = this._config;\n\t\ttry {\n\t\t\tawait this._storageSync;\n\t\t\tthis._storage.setItem(\n\t\t\t\tthis._getCognitoIdentityIdStorageKey(identityPoolId),\n\t\t\t\tidentityId\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tlogger.debug('Failed to cache guest identityId', e);\n\t\t}\n\t}\n\n\tprivate async _removeGuestIdentityId() {\n\t\tconst { identityPoolId } = this._config;\n\t\tlogger.debug(\n\t\t\t`removing ${this._getCognitoIdentityIdStorageKey(\n\t\t\t\tidentityPoolId\n\t\t\t)} from storage`\n\t\t);\n\t\tthis._storage.removeItem(\n\t\t\tthis._getCognitoIdentityIdStorageKey(identityPoolId)\n\t\t);\n\t}\n\n\t/**\n\t * Compact version of credentials\n\t * @param {Object} credentials\n\t * @return {Object} - Credentials\n\t */\n\tpublic shear(credentials) {\n\t\treturn {\n\t\t\taccessKeyId: credentials.accessKeyId,\n\t\t\tsessionToken: credentials.sessionToken,\n\t\t\tsecretAccessKey: credentials.secretAccessKey,\n\t\t\tidentityId: credentials.identityId,\n\t\t\tauthenticated: credentials.authenticated,\n\t\t};\n\t}\n}\n\nexport const Credentials = new CredentialsClass(null);\n\nAmplify.register(Credentials);\n\n/**\n * @deprecated use named import\n */\nexport default Credentials;\n","import { AmplifyConfig } from './types';\nimport { ConsoleLogger as Logger } from './Logger';\n\nconst logger = new Logger('Parser');\n\nexport const parseMobileHubConfig = (config): AmplifyConfig => {\n\tconst amplifyConfig: AmplifyConfig = {};\n\t// Analytics\n\tif (config['aws_mobile_analytics_app_id']) {\n\t\tconst Analytics = {\n\t\t\tAWSPinpoint: {\n\t\t\t\tappId: config['aws_mobile_analytics_app_id'],\n\t\t\t\tregion: config['aws_mobile_analytics_app_region'],\n\t\t\t},\n\t\t};\n\t\tamplifyConfig.Analytics = Analytics;\n\t}\n\n\t// Auth\n\tif (config['aws_cognito_identity_pool_id'] || config['aws_user_pools_id']) {\n\t\tamplifyConfig.Auth = {\n\t\t\tuserPoolId: config['aws_user_pools_id'],\n\t\t\tuserPoolWebClientId: config['aws_user_pools_web_client_id'],\n\t\t\tregion: config['aws_cognito_region'],\n\t\t\tidentityPoolId: config['aws_cognito_identity_pool_id'],\n\t\t\tidentityPoolRegion: config['aws_cognito_region'],\n\t\t\tmandatorySignIn: config['aws_mandatory_sign_in'] === 'enable',\n\t\t\tsignUpVerificationMethod:\n\t\t\t\tconfig['aws_cognito_sign_up_verification_method'] || 'code',\n\t\t};\n\t}\n\n\t// Storage\n\tlet storageConfig;\n\tif (config['aws_user_files_s3_bucket']) {\n\t\tstorageConfig = {\n\t\t\tAWSS3: {\n\t\t\t\tbucket: config['aws_user_files_s3_bucket'],\n\t\t\t\tregion: config['aws_user_files_s3_bucket_region'],\n\t\t\t\tdangerouslyConnectToHttpEndpointForTesting:\n\t\t\t\t\tconfig[\n\t\t\t\t\t\t'aws_user_files_s3_dangerously_connect_to_http_endpoint_for_testing'\n\t\t\t\t\t],\n\t\t\t},\n\t\t};\n\t} else {\n\t\tstorageConfig = config ? config.Storage || config : {};\n\t}\n\n\t// Logging\n\tif (config['Logging']) {\n\t\tamplifyConfig.Logging = {\n\t\t\t...config['Logging'],\n\t\t\tregion: config['aws_project_region'],\n\t\t};\n\t}\n\n\t// Geo\n\tif (config['geo']) {\n\t\tamplifyConfig.Geo = Object.assign({}, config.geo);\n\t\tif (config.geo['amazon_location_service']) {\n\t\t\tamplifyConfig.Geo = {\n\t\t\t\tAmazonLocationService: config.geo['amazon_location_service'],\n\t\t\t};\n\t\t}\n\t}\n\n\tamplifyConfig.Analytics = Object.assign(\n\t\t{},\n\t\tamplifyConfig.Analytics,\n\t\tconfig.Analytics\n\t);\n\tamplifyConfig.Auth = Object.assign({}, amplifyConfig.Auth, config.Auth);\n\tamplifyConfig.Storage = Object.assign({}, storageConfig);\n\tamplifyConfig.Logging = Object.assign(\n\t\t{},\n\t\tamplifyConfig.Logging,\n\t\tconfig.Logging\n\t);\n\tlogger.debug('parse config', config, 'to amplifyconfig', amplifyConfig);\n\treturn amplifyConfig;\n};\n\n/**\n * @deprecated use per-function export\n */\nexport class Parser {\n\tstatic parseMobilehubConfig = parseMobileHubConfig;\n}\n\n/**\n * @deprecated use per-function export\n */\nexport default Parser;\n","import * as cookie from 'cookie';\r\nexport function hasDocumentCookie() {\r\n // Can we get/set cookies on document.cookie?\r\n return typeof document === 'object' && typeof document.cookie === 'string';\r\n}\r\nexport function cleanCookies() {\r\n document.cookie.split(';').forEach(function (c) {\r\n document.cookie = c\r\n .replace(/^ +/, '')\r\n .replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/');\r\n });\r\n}\r\nexport function parseCookies(cookies, options) {\r\n if (typeof cookies === 'string') {\r\n return cookie.parse(cookies, options);\r\n }\r\n else if (typeof cookies === 'object' && cookies !== null) {\r\n return cookies;\r\n }\r\n else {\r\n return {};\r\n }\r\n}\r\nexport function isParsingCookie(value, doNotParse) {\r\n if (typeof doNotParse === 'undefined') {\r\n // We guess if the cookie start with { or [, it has been serialized\r\n doNotParse =\r\n !value || (value[0] !== '{' && value[0] !== '[' && value[0] !== '\"');\r\n }\r\n return !doNotParse;\r\n}\r\nexport function readCookie(value, options) {\r\n if (options === void 0) { options = {}; }\r\n var cleanValue = cleanupCookieValue(value);\r\n if (isParsingCookie(cleanValue, options.doNotParse)) {\r\n try {\r\n return JSON.parse(cleanValue);\r\n }\r\n catch (e) {\r\n // At least we tried\r\n }\r\n }\r\n // Ignore clean value if we failed the deserialization\r\n // It is not relevant anymore to trim those values\r\n return value;\r\n}\r\nfunction cleanupCookieValue(value) {\r\n // express prepend j: before serializing a cookie\r\n if (value && value[0] === 'j' && value[1] === ':') {\r\n return value.substr(2);\r\n }\r\n return value;\r\n}\r\n","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport * as cookie from 'cookie';\r\nimport { hasDocumentCookie, parseCookies, readCookie } from './utils';\r\nvar Cookies = /** @class */ (function () {\r\n function Cookies(cookies, options) {\r\n var _this = this;\r\n this.changeListeners = [];\r\n this.HAS_DOCUMENT_COOKIE = false;\r\n this.cookies = parseCookies(cookies, options);\r\n new Promise(function () {\r\n _this.HAS_DOCUMENT_COOKIE = hasDocumentCookie();\r\n }).catch(function () { });\r\n }\r\n Cookies.prototype._updateBrowserValues = function (parseOptions) {\r\n if (!this.HAS_DOCUMENT_COOKIE) {\r\n return;\r\n }\r\n this.cookies = cookie.parse(document.cookie, parseOptions);\r\n };\r\n Cookies.prototype._emitChange = function (params) {\r\n for (var i = 0; i < this.changeListeners.length; ++i) {\r\n this.changeListeners[i](params);\r\n }\r\n };\r\n Cookies.prototype.get = function (name, options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n return readCookie(this.cookies[name], options);\r\n };\r\n Cookies.prototype.getAll = function (options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n var result = {};\r\n for (var name_1 in this.cookies) {\r\n result[name_1] = readCookie(this.cookies[name_1], options);\r\n }\r\n return result;\r\n };\r\n Cookies.prototype.set = function (name, value, options) {\r\n var _a;\r\n if (typeof value === 'object') {\r\n value = JSON.stringify(value);\r\n }\r\n this.cookies = __assign(__assign({}, this.cookies), (_a = {}, _a[name] = value, _a));\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, value, options);\r\n }\r\n this._emitChange({ name: name, value: value, options: options });\r\n };\r\n Cookies.prototype.remove = function (name, options) {\r\n var finalOptions = (options = __assign(__assign({}, options), { expires: new Date(1970, 1, 1, 0, 0, 1), maxAge: 0 }));\r\n this.cookies = __assign({}, this.cookies);\r\n delete this.cookies[name];\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, '', finalOptions);\r\n }\r\n this._emitChange({ name: name, value: undefined, options: options });\r\n };\r\n Cookies.prototype.addChangeListener = function (callback) {\r\n this.changeListeners.push(callback);\r\n };\r\n Cookies.prototype.removeChangeListener = function (callback) {\r\n var idx = this.changeListeners.indexOf(callback);\r\n if (idx >= 0) {\r\n this.changeListeners.splice(idx, 1);\r\n }\r\n };\r\n return Cookies;\r\n}());\r\nexport default Cookies;\r\n","import Cookies from './Cookies';\r\nexport default Cookies;\r\n","import Cookies from 'universal-cookie';\nimport { browserOrNode } from '../JS';\n\ntype Store = Record;\n\nconst { isBrowser } = browserOrNode();\n\n// Avoid using @types/next because @aws-amplify/ui-angular's version of TypeScript is too old to support it\ntype Context = { req?: any };\n\nexport class UniversalStorage implements Storage {\n\tcookies = new Cookies();\n\tstore: Store = isBrowser ? window.localStorage : Object.create(null);\n\n\tconstructor(context: Context = {}) {\n\t\tthis.cookies = context.req\n\t\t\t? new Cookies(context.req.headers.cookie)\n\t\t\t: new Cookies();\n\n\t\tObject.assign(this.store, this.cookies.getAll());\n\t}\n\n\tget length() {\n\t\treturn Object.entries(this.store).length;\n\t}\n\n\tclear() {\n\t\tArray.from(new Array(this.length))\n\t\t\t.map((_, i) => this.key(i))\n\t\t\t.forEach(key => this.removeItem(key));\n\t}\n\n\tgetItem(key: keyof Store) {\n\t\treturn this.getLocalItem(key);\n\t}\n\n\tprotected getLocalItem(key: keyof Store) {\n\t\treturn Object.prototype.hasOwnProperty.call(this.store, key)\n\t\t\t? this.store[key]\n\t\t\t: null;\n\t}\n\n\tprotected getUniversalItem(key: keyof Store) {\n\t\treturn this.cookies.get(key);\n\t}\n\n\tkey(index: number) {\n\t\treturn Object.keys(this.store)[index];\n\t}\n\n\tremoveItem(key: string) {\n\t\tthis.removeLocalItem(key);\n\t\tthis.removeUniversalItem(key);\n\t}\n\n\tprotected removeLocalItem(key: keyof Store) {\n\t\tdelete this.store[key];\n\t}\n\n\tprotected removeUniversalItem(key: keyof Store) {\n\t\tthis.cookies.remove(key, {\n\t\t\tpath: '/',\n\t\t});\n\t}\n\n\tsetItem(key: keyof Store, value: string) {\n\t\tthis.setLocalItem(key, value);\n\n\t\t// keys take the shape:\n\t\t// 1. `${ProviderPrefix}.${userPoolClientId}.${username}.${tokenType}\n\t\t// 2. `${ProviderPrefix}.${userPoolClientId}.LastAuthUser\n\t\tconst tokenType = key.split('.').pop();\n\n\t\tswitch (tokenType) {\n\t\t\t// LastAuthUser is needed for computing other key names\n\t\t\tcase 'LastAuthUser':\n\n\t\t\t// accessToken is required for CognitoUserSession\n\t\t\tcase 'accessToken':\n\n\t\t\t// refreshToken originates on the client, but SSR pages won't fail when this expires\n\t\t\t// Note: the new `accessToken` will also be refreshed on the client (since Amplify doesn't set server-side cookies)\n\t\t\tcase 'refreshToken':\n\n\t\t\t// Required for CognitoUserSession\n\t\t\tcase 'idToken':\n\t\t\t\tisBrowser\n\t\t\t\t\t? this.setUniversalItem(key, value)\n\t\t\t\t\t: this.setLocalItem(key, value);\n\n\t\t\t// userData is used when `Auth.currentAuthenticatedUser({ bypassCache: false })`.\n\t\t\t// Can be persisted to speed up calls to `Auth.currentAuthenticatedUser()`\n\t\t\t// case 'userData':\n\n\t\t\t// Ignoring clockDrift on the server for now, but needs testing\n\t\t\t// case 'clockDrift':\n\t\t}\n\t}\n\n\tprotected setLocalItem(key: keyof Store, value: string) {\n\t\tthis.store[key] = value;\n\t}\n\n\tprotected setUniversalItem(key: keyof Store, value: string) {\n\t\tthis.cookies.set(key, value, {\n\t\t\tpath: '/',\n\t\t\t// `httpOnly` cannot be set via JavaScript: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#JavaScript_access_using_Document.cookie\n\t\t\tsameSite: true,\n\t\t\t// Allow unsecure requests to http://localhost:3000/ when in development.\n\t\t\tsecure: window.location.hostname === 'localhost' ? false : true,\n\t\t});\n\t}\n}\n","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n/** @class */\nvar AuthenticationDetails = /*#__PURE__*/function () {\n /**\n * Constructs a new AuthenticationDetails object\n * @param {object=} data Creation options.\n * @param {string} data.Username User being authenticated.\n * @param {string} data.Password Plain-text password to authenticate with.\n * @param {(AttributeArg[])?} data.ValidationData Application extra metadata.\n * @param {(AttributeArg[])?} data.AuthParamaters Authentication paramaters for custom auth.\n */\n function AuthenticationDetails(data) {\n var _ref = data || {},\n ValidationData = _ref.ValidationData,\n Username = _ref.Username,\n Password = _ref.Password,\n AuthParameters = _ref.AuthParameters,\n ClientMetadata = _ref.ClientMetadata;\n this.validationData = ValidationData || {};\n this.authParameters = AuthParameters || {};\n this.clientMetadata = ClientMetadata || {};\n this.username = Username;\n this.password = Password;\n }\n\n /**\n * @returns {string} the record's username\n */\n var _proto = AuthenticationDetails.prototype;\n _proto.getUsername = function getUsername() {\n return this.username;\n }\n\n /**\n * @returns {string} the record's password\n */;\n _proto.getPassword = function getPassword() {\n return this.password;\n }\n\n /**\n * @returns {Array} the record's validationData\n */;\n _proto.getValidationData = function getValidationData() {\n return this.validationData;\n }\n\n /**\n * @returns {Array} the record's authParameters\n */;\n _proto.getAuthParameters = function getAuthParameters() {\n return this.authParameters;\n }\n\n /**\n * @returns {ClientMetadata} the clientMetadata for a Lambda trigger\n */;\n _proto.getClientMetadata = function getClientMetadata() {\n return this.clientMetadata;\n };\n return AuthenticationDetails;\n}();\nexport { AuthenticationDetails as default };","var crypto;\n\n// Native crypto from window (Browser)\nif (typeof window !== 'undefined' && window.crypto) {\n crypto = window.crypto;\n}\n\n// Native (experimental IE 11) crypto from window (Browser)\nif (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n crypto = window.msCrypto;\n}\n\n/*\n * Cryptographically secure pseudorandom number generator\n * As Math.random() is cryptographically not safe to use\n */\nexport default function cryptoSecureRandomInt() {\n if (crypto) {\n // Use getRandomValues method (Browser)\n if (typeof crypto.getRandomValues === 'function') {\n try {\n return crypto.getRandomValues(new Uint32Array(1))[0];\n } catch (err) {}\n }\n\n // Use randomBytes method (NodeJS)\n if (typeof crypto.randomBytes === 'function') {\n try {\n return crypto.randomBytes(4).readInt32LE();\n } catch (err) {}\n }\n }\n throw new Error('Native crypto module could not be used to get secure random number.');\n}","import cryptoSecureRandomInt from './cryptoSecureRandomInt';\n\n/**\n * Hex encoding strategy.\n * Converts a word array to a hex string.\n * @param {WordArray} wordArray The word array.\n * @return {string} The hex string.\n * @static\n */\nfunction hexStringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n\n // Convert\n var hexChars = [];\n for (var i = 0; i < sigBytes; i++) {\n var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n hexChars.push((bite >>> 4).toString(16));\n hexChars.push((bite & 0x0f).toString(16));\n }\n return hexChars.join('');\n}\nvar WordArray = /*#__PURE__*/function () {\n function WordArray(words, sigBytes) {\n words = this.words = words || [];\n if (sigBytes != undefined) {\n this.sigBytes = sigBytes;\n } else {\n this.sigBytes = words.length * 4;\n }\n }\n var _proto = WordArray.prototype;\n _proto.random = function random(nBytes) {\n var words = [];\n for (var i = 0; i < nBytes; i += 4) {\n words.push(cryptoSecureRandomInt());\n }\n return new WordArray(words, nBytes);\n };\n _proto.toString = function toString() {\n return hexStringify(this);\n };\n return WordArray;\n}();\nexport { WordArray as default };","// A small implementation of BigInteger based on http://www-cs-students.stanford.edu/~tjw/jsbn/\n//\n// All public methods have been removed except the following:\n// new BigInteger(a, b) (only radix 2, 4, 8, 16 and 32 supported)\n// toString (only radix 2, 4, 8, 16 and 32 supported)\n// negate\n// abs\n// compareTo\n// bitLength\n// mod\n// equals\n// add\n// subtract\n// multiply\n// divide\n// modPow\n\nexport default BigInteger;\n\n/*\n * Copyright (c) 2003-2005 Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY\n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n\n// (public) Constructor\nfunction BigInteger(a, b) {\n if (a != null) this.fromString(a, b);\n}\n\n// return new, unset BigInteger\nfunction nbi() {\n return new BigInteger(null);\n}\n\n// Bits per digit\nvar dbits;\n\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = (canary & 0xffffff) == 0xefcafe;\n\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\nfunction am1(i, x, w, j, c, n) {\n while (--n >= 0) {\n var v = x * this[i++] + w[j] + c;\n c = Math.floor(v / 0x4000000);\n w[j++] = v & 0x3ffffff;\n }\n return c;\n}\n// am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\nfunction am2(i, x, w, j, c, n) {\n var xl = x & 0x7fff,\n xh = x >> 15;\n while (--n >= 0) {\n var l = this[i] & 0x7fff;\n var h = this[i++] >> 15;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);\n c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30);\n w[j++] = l & 0x3fffffff;\n }\n return c;\n}\n// Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\nfunction am3(i, x, w, j, c, n) {\n var xl = x & 0x3fff,\n xh = x >> 14;\n while (--n >= 0) {\n var l = this[i] & 0x3fff;\n var h = this[i++] >> 14;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x3fff) << 14) + w[j] + c;\n c = (l >> 28) + (m >> 14) + xh * h;\n w[j++] = l & 0xfffffff;\n }\n return c;\n}\nvar inBrowser = typeof navigator !== 'undefined';\nif (inBrowser && j_lm && navigator.appName == 'Microsoft Internet Explorer') {\n BigInteger.prototype.am = am2;\n dbits = 30;\n} else if (inBrowser && j_lm && navigator.appName != 'Netscape') {\n BigInteger.prototype.am = am1;\n dbits = 26;\n} else {\n // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n}\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = (1 << dbits) - 1;\nBigInteger.prototype.DV = 1 << dbits;\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2, BI_FP);\nBigInteger.prototype.F1 = BI_FP - dbits;\nBigInteger.prototype.F2 = 2 * dbits - BI_FP;\n\n// Digit conversions\nvar BI_RM = '0123456789abcdefghijklmnopqrstuvwxyz';\nvar BI_RC = new Array();\nvar rr, vv;\nrr = '0'.charCodeAt(0);\nfor (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;\nrr = 'a'.charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\nrr = 'A'.charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\nfunction int2char(n) {\n return BI_RM.charAt(n);\n}\nfunction intAt(s, i) {\n var c = BI_RC[s.charCodeAt(i)];\n return c == null ? -1 : c;\n}\n\n// (protected) copy this to r\nfunction bnpCopyTo(r) {\n for (var i = this.t - 1; i >= 0; --i) r[i] = this[i];\n r.t = this.t;\n r.s = this.s;\n}\n\n// (protected) set from integer value x, -DV <= x < DV\nfunction bnpFromInt(x) {\n this.t = 1;\n this.s = x < 0 ? -1 : 0;\n if (x > 0) this[0] = x;else if (x < -1) this[0] = x + this.DV;else this.t = 0;\n}\n\n// return bigint initialized to value\nfunction nbv(i) {\n var r = nbi();\n r.fromInt(i);\n return r;\n}\n\n// (protected) set from string and radix\nfunction bnpFromString(s, b) {\n var k;\n if (b == 16) k = 4;else if (b == 8) k = 3;else if (b == 2) k = 1;else if (b == 32) k = 5;else if (b == 4) k = 2;else throw new Error('Only radix 2, 4, 8, 16, 32 are supported');\n this.t = 0;\n this.s = 0;\n var i = s.length,\n mi = false,\n sh = 0;\n while (--i >= 0) {\n var x = intAt(s, i);\n if (x < 0) {\n if (s.charAt(i) == '-') mi = true;\n continue;\n }\n mi = false;\n if (sh == 0) this[this.t++] = x;else if (sh + k > this.DB) {\n this[this.t - 1] |= (x & (1 << this.DB - sh) - 1) << sh;\n this[this.t++] = x >> this.DB - sh;\n } else this[this.t - 1] |= x << sh;\n sh += k;\n if (sh >= this.DB) sh -= this.DB;\n }\n this.clamp();\n if (mi) BigInteger.ZERO.subTo(this, this);\n}\n\n// (protected) clamp off excess high words\nfunction bnpClamp() {\n var c = this.s & this.DM;\n while (this.t > 0 && this[this.t - 1] == c) --this.t;\n}\n\n// (public) return string representation in given radix\nfunction bnToString(b) {\n if (this.s < 0) return '-' + this.negate().toString(b);\n var k;\n if (b == 16) k = 4;else if (b == 8) k = 3;else if (b == 2) k = 1;else if (b == 32) k = 5;else if (b == 4) k = 2;else throw new Error('Only radix 2, 4, 8, 16, 32 are supported');\n var km = (1 << k) - 1,\n d,\n m = false,\n r = '',\n i = this.t;\n var p = this.DB - i * this.DB % k;\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) > 0) {\n m = true;\n r = int2char(d);\n }\n while (i >= 0) {\n if (p < k) {\n d = (this[i] & (1 << p) - 1) << k - p;\n d |= this[--i] >> (p += this.DB - k);\n } else {\n d = this[i] >> (p -= k) & km;\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n if (d > 0) m = true;\n if (m) r += int2char(d);\n }\n }\n return m ? r : '0';\n}\n\n// (public) -this\nfunction bnNegate() {\n var r = nbi();\n BigInteger.ZERO.subTo(this, r);\n return r;\n}\n\n// (public) |this|\nfunction bnAbs() {\n return this.s < 0 ? this.negate() : this;\n}\n\n// (public) return + if this > a, - if this < a, 0 if equal\nfunction bnCompareTo(a) {\n var r = this.s - a.s;\n if (r != 0) return r;\n var i = this.t;\n r = i - a.t;\n if (r != 0) return this.s < 0 ? -r : r;\n while (--i >= 0) if ((r = this[i] - a[i]) != 0) return r;\n return 0;\n}\n\n// returns bit length of the integer x\nfunction nbits(x) {\n var r = 1,\n t;\n if ((t = x >>> 16) != 0) {\n x = t;\n r += 16;\n }\n if ((t = x >> 8) != 0) {\n x = t;\n r += 8;\n }\n if ((t = x >> 4) != 0) {\n x = t;\n r += 4;\n }\n if ((t = x >> 2) != 0) {\n x = t;\n r += 2;\n }\n if ((t = x >> 1) != 0) {\n x = t;\n r += 1;\n }\n return r;\n}\n\n// (public) return the number of bits in \"this\"\nfunction bnBitLength() {\n if (this.t <= 0) return 0;\n return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ this.s & this.DM);\n}\n\n// (protected) r = this << n*DB\nfunction bnpDLShiftTo(n, r) {\n var i;\n for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i];\n for (i = n - 1; i >= 0; --i) r[i] = 0;\n r.t = this.t + n;\n r.s = this.s;\n}\n\n// (protected) r = this >> n*DB\nfunction bnpDRShiftTo(n, r) {\n for (var i = n; i < this.t; ++i) r[i - n] = this[i];\n r.t = Math.max(this.t - n, 0);\n r.s = this.s;\n}\n\n// (protected) r = this << n\nfunction bnpLShiftTo(n, r) {\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << cbs) - 1;\n var ds = Math.floor(n / this.DB),\n c = this.s << bs & this.DM,\n i;\n for (i = this.t - 1; i >= 0; --i) {\n r[i + ds + 1] = this[i] >> cbs | c;\n c = (this[i] & bm) << bs;\n }\n for (i = ds - 1; i >= 0; --i) r[i] = 0;\n r[ds] = c;\n r.t = this.t + ds + 1;\n r.s = this.s;\n r.clamp();\n}\n\n// (protected) r = this >> n\nfunction bnpRShiftTo(n, r) {\n r.s = this.s;\n var ds = Math.floor(n / this.DB);\n if (ds >= this.t) {\n r.t = 0;\n return;\n }\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << bs) - 1;\n r[0] = this[ds] >> bs;\n for (var i = ds + 1; i < this.t; ++i) {\n r[i - ds - 1] |= (this[i] & bm) << cbs;\n r[i - ds] = this[i] >> bs;\n }\n if (bs > 0) r[this.t - ds - 1] |= (this.s & bm) << cbs;\n r.t = this.t - ds;\n r.clamp();\n}\n\n// (protected) r = this - a\nfunction bnpSubTo(a, r) {\n var i = 0,\n c = 0,\n m = Math.min(a.t, this.t);\n while (i < m) {\n c += this[i] - a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n if (a.t < this.t) {\n c -= a.s;\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += this.s;\n } else {\n c += this.s;\n while (i < a.t) {\n c -= a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = c < 0 ? -1 : 0;\n if (c < -1) r[i++] = this.DV + c;else if (c > 0) r[i++] = c;\n r.t = i;\n r.clamp();\n}\n\n// (protected) r = this * a, r != this,a (HAC 14.12)\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyTo(a, r) {\n var x = this.abs(),\n y = a.abs();\n var i = x.t;\n r.t = i + y.t;\n while (--i >= 0) r[i] = 0;\n for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t);\n r.s = 0;\n r.clamp();\n if (this.s != a.s) BigInteger.ZERO.subTo(r, r);\n}\n\n// (protected) r = this^2, r != this (HAC 14.16)\nfunction bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2 * x.t;\n while (--i >= 0) r[i] = 0;\n for (i = 0; i < x.t - 1; ++i) {\n var c = x.am(i, x[i], r, 2 * i, 0, 1);\n if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {\n r[i + x.t] -= x.DV;\n r[i + x.t + 1] = 1;\n }\n }\n if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1);\n r.s = 0;\n r.clamp();\n}\n\n// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n// r != q, this != m. q or r may be null.\nfunction bnpDivRemTo(m, q, r) {\n var pm = m.abs();\n if (pm.t <= 0) return;\n var pt = this.abs();\n if (pt.t < pm.t) {\n if (q != null) q.fromInt(0);\n if (r != null) this.copyTo(r);\n return;\n }\n if (r == null) r = nbi();\n var y = nbi(),\n ts = this.s,\n ms = m.s;\n var nsh = this.DB - nbits(pm[pm.t - 1]);\n // normalize modulus\n if (nsh > 0) {\n pm.lShiftTo(nsh, y);\n pt.lShiftTo(nsh, r);\n } else {\n pm.copyTo(y);\n pt.copyTo(r);\n }\n var ys = y.t;\n var y0 = y[ys - 1];\n if (y0 == 0) return;\n var yt = y0 * (1 << this.F1) + (ys > 1 ? y[ys - 2] >> this.F2 : 0);\n var d1 = this.FV / yt,\n d2 = (1 << this.F1) / yt,\n e = 1 << this.F2;\n var i = r.t,\n j = i - ys,\n t = q == null ? nbi() : q;\n y.dlShiftTo(j, t);\n if (r.compareTo(t) >= 0) {\n r[r.t++] = 1;\n r.subTo(t, r);\n }\n BigInteger.ONE.dlShiftTo(ys, t);\n t.subTo(y, y);\n // \"negative\" y so we can replace sub with am later\n while (y.t < ys) y[y.t++] = 0;\n while (--j >= 0) {\n // Estimate quotient digit\n var qd = r[--i] == y0 ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2);\n if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) {\n // Try it out\n y.dlShiftTo(j, t);\n r.subTo(t, r);\n while (r[i] < --qd) r.subTo(t, r);\n }\n }\n if (q != null) {\n r.drShiftTo(ys, q);\n if (ts != ms) BigInteger.ZERO.subTo(q, q);\n }\n r.t = ys;\n r.clamp();\n if (nsh > 0) r.rShiftTo(nsh, r);\n // Denormalize remainder\n if (ts < 0) BigInteger.ZERO.subTo(r, r);\n}\n\n// (public) this mod a\nfunction bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a, null, r);\n if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r);\n return r;\n}\n\n// (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n// justification:\n// xy == 1 (mod m)\n// xy = 1+km\n// xy(2-xy) = (1+km)(1-km)\n// x[y(2-xy)] = 1-k^2m^2\n// x[y(2-xy)] == 1 (mod m^2)\n// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n// JS multiply \"overflows\" differently from C/C++, so care is needed here.\nfunction bnpInvDigit() {\n if (this.t < 1) return 0;\n var x = this[0];\n if ((x & 1) == 0) return 0;\n var y = x & 3;\n // y == 1/x mod 2^2\n y = y * (2 - (x & 0xf) * y) & 0xf;\n // y == 1/x mod 2^4\n y = y * (2 - (x & 0xff) * y) & 0xff;\n // y == 1/x mod 2^8\n y = y * (2 - ((x & 0xffff) * y & 0xffff)) & 0xffff;\n // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = y * (2 - x * y % this.DV) % this.DV;\n // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return y > 0 ? this.DV - y : -y;\n}\nfunction bnEquals(a) {\n return this.compareTo(a) == 0;\n}\n\n// (protected) r = this + a\nfunction bnpAddTo(a, r) {\n var i = 0,\n c = 0,\n m = Math.min(a.t, this.t);\n while (i < m) {\n c += this[i] + a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n if (a.t < this.t) {\n c += a.s;\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += this.s;\n } else {\n c += this.s;\n while (i < a.t) {\n c += a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += a.s;\n }\n r.s = c < 0 ? -1 : 0;\n if (c > 0) r[i++] = c;else if (c < -1) r[i++] = this.DV + c;\n r.t = i;\n r.clamp();\n}\n\n// (public) this + a\nfunction bnAdd(a) {\n var r = nbi();\n this.addTo(a, r);\n return r;\n}\n\n// (public) this - a\nfunction bnSubtract(a) {\n var r = nbi();\n this.subTo(a, r);\n return r;\n}\n\n// (public) this * a\nfunction bnMultiply(a) {\n var r = nbi();\n this.multiplyTo(a, r);\n return r;\n}\n\n// (public) this / a\nfunction bnDivide(a) {\n var r = nbi();\n this.divRemTo(a, r, null);\n return r;\n}\n\n// Montgomery reduction\nfunction Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp & 0x7fff;\n this.mph = this.mp >> 15;\n this.um = (1 << m.DB - 15) - 1;\n this.mt2 = 2 * m.t;\n}\n\n// xR mod m\nfunction montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t, r);\n r.divRemTo(this.m, null, r);\n if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r);\n return r;\n}\n\n// x/R mod m\nfunction montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n}\n\n// x = x/R mod m (HAC 14.32)\nfunction montReduce(x) {\n while (x.t <= this.mt2)\n // pad x so am has enough room later\n x[x.t++] = 0;\n for (var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i] & 0x7fff;\n var u0 = j * this.mpl + ((j * this.mph + (x[i] >> 15) * this.mpl & this.um) << 15) & x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i + this.m.t;\n x[j] += this.m.am(0, u0, x, i, 0, this.m.t);\n // propagate carry\n while (x[j] >= x.DV) {\n x[j] -= x.DV;\n x[++j]++;\n }\n }\n x.clamp();\n x.drShiftTo(this.m.t, x);\n if (x.compareTo(this.m) >= 0) x.subTo(this.m, x);\n}\n\n// r = \"x^2/R mod m\"; x != r\nfunction montSqrTo(x, r) {\n x.squareTo(r);\n this.reduce(r);\n}\n\n// r = \"xy/R mod m\"; x,y != r\nfunction montMulTo(x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n}\nMontgomery.prototype.convert = montConvert;\nMontgomery.prototype.revert = montRevert;\nMontgomery.prototype.reduce = montReduce;\nMontgomery.prototype.mulTo = montMulTo;\nMontgomery.prototype.sqrTo = montSqrTo;\n\n// (public) this^e % m (HAC 14.85)\nfunction bnModPow(e, m, callback) {\n var i = e.bitLength(),\n k,\n r = nbv(1),\n z = new Montgomery(m);\n if (i <= 0) return r;else if (i < 18) k = 1;else if (i < 48) k = 3;else if (i < 144) k = 4;else if (i < 768) k = 5;else k = 6;\n\n // precomputation\n var g = new Array(),\n n = 3,\n k1 = k - 1,\n km = (1 << k) - 1;\n g[1] = z.convert(this);\n if (k > 1) {\n var g2 = nbi();\n z.sqrTo(g[1], g2);\n while (n <= km) {\n g[n] = nbi();\n z.mulTo(g2, g[n - 2], g[n]);\n n += 2;\n }\n }\n var j = e.t - 1,\n w,\n is1 = true,\n r2 = nbi(),\n t;\n i = nbits(e[j]) - 1;\n while (j >= 0) {\n if (i >= k1) w = e[j] >> i - k1 & km;else {\n w = (e[j] & (1 << i + 1) - 1) << k1 - i;\n if (j > 0) w |= e[j - 1] >> this.DB + i - k1;\n }\n n = k;\n while ((w & 1) == 0) {\n w >>= 1;\n --n;\n }\n if ((i -= n) < 0) {\n i += this.DB;\n --j;\n }\n if (is1) {\n // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n } else {\n while (n > 1) {\n z.sqrTo(r, r2);\n z.sqrTo(r2, r);\n n -= 2;\n }\n if (n > 0) z.sqrTo(r, r2);else {\n t = r;\n r = r2;\n r2 = t;\n }\n z.mulTo(r2, g[w], r);\n }\n while (j >= 0 && (e[j] & 1 << i) == 0) {\n z.sqrTo(r, r2);\n t = r;\n r = r2;\n r2 = t;\n if (--i < 0) {\n i = this.DB - 1;\n --j;\n }\n }\n }\n var result = z.revert(r);\n callback(null, result);\n return result;\n}\n\n// protected\nBigInteger.prototype.copyTo = bnpCopyTo;\nBigInteger.prototype.fromInt = bnpFromInt;\nBigInteger.prototype.fromString = bnpFromString;\nBigInteger.prototype.clamp = bnpClamp;\nBigInteger.prototype.dlShiftTo = bnpDLShiftTo;\nBigInteger.prototype.drShiftTo = bnpDRShiftTo;\nBigInteger.prototype.lShiftTo = bnpLShiftTo;\nBigInteger.prototype.rShiftTo = bnpRShiftTo;\nBigInteger.prototype.subTo = bnpSubTo;\nBigInteger.prototype.multiplyTo = bnpMultiplyTo;\nBigInteger.prototype.squareTo = bnpSquareTo;\nBigInteger.prototype.divRemTo = bnpDivRemTo;\nBigInteger.prototype.invDigit = bnpInvDigit;\nBigInteger.prototype.addTo = bnpAddTo;\n\n// public\nBigInteger.prototype.toString = bnToString;\nBigInteger.prototype.negate = bnNegate;\nBigInteger.prototype.abs = bnAbs;\nBigInteger.prototype.compareTo = bnCompareTo;\nBigInteger.prototype.bitLength = bnBitLength;\nBigInteger.prototype.mod = bnMod;\nBigInteger.prototype.equals = bnEquals;\nBigInteger.prototype.add = bnAdd;\nBigInteger.prototype.subtract = bnSubtract;\nBigInteger.prototype.multiply = bnMultiply;\nBigInteger.prototype.divide = bnDivide;\nBigInteger.prototype.modPow = bnModPow;\n\n// \"constants\"\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Buffer } from 'buffer';\nimport CryptoJS from 'crypto-js/core';\nimport 'crypto-js/lib-typedarrays'; // necessary for crypto js\nimport SHA256 from 'crypto-js/sha256';\nimport HmacSHA256 from 'crypto-js/hmac-sha256';\nimport WordArray from './utils/WordArray';\n\n/**\n * Returns a Buffer with a sequence of random nBytes\n *\n * @param {number} nBytes\n * @returns {Buffer} fixed-length sequence of random bytes\n */\n\nfunction randomBytes(nBytes) {\n return Buffer.from(new WordArray().random(nBytes).toString(), 'hex');\n}\nimport BigInteger from './BigInteger';\n\n/**\n * Tests if a hex string has it most significant bit set (case-insensitive regex)\n */\nvar HEX_MSB_REGEX = /^[89a-f]/i;\nvar initN = 'FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1' + '29024E088A67CC74020BBEA63B139B22514A08798E3404DD' + 'EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245' + 'E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED' + 'EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D' + 'C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F' + '83655D23DCA3AD961C62F356208552BB9ED529077096966D' + '670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B' + 'E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9' + 'DE2BCBF6955817183995497CEA956AE515D2261898FA0510' + '15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64' + 'ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7' + 'ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B' + 'F12FFA06D98A0864D87602733EC86A64521F2B18177B200C' + 'BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31' + '43DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF';\nvar newPasswordRequiredChallengeUserAttributePrefix = 'userAttributes.';\n\n/** @class */\nvar AuthenticationHelper = /*#__PURE__*/function () {\n /**\n * Constructs a new AuthenticationHelper object\n * @param {string} PoolName Cognito user pool name.\n */\n function AuthenticationHelper(PoolName) {\n this.N = new BigInteger(initN, 16);\n this.g = new BigInteger('2', 16);\n this.k = new BigInteger(this.hexHash(\"\" + this.padHex(this.N) + this.padHex(this.g)), 16);\n this.smallAValue = this.generateRandomSmallA();\n this.getLargeAValue(function () {});\n this.infoBits = Buffer.from('Caldera Derived Key', 'utf8');\n this.poolName = PoolName;\n }\n\n /**\n * @returns {BigInteger} small A, a random number\n */\n var _proto = AuthenticationHelper.prototype;\n _proto.getSmallAValue = function getSmallAValue() {\n return this.smallAValue;\n }\n\n /**\n * @param {nodeCallback} callback Called with (err, largeAValue)\n * @returns {void}\n */;\n _proto.getLargeAValue = function getLargeAValue(callback) {\n var _this = this;\n if (this.largeAValue) {\n callback(null, this.largeAValue);\n } else {\n this.calculateA(this.smallAValue, function (err, largeAValue) {\n if (err) {\n callback(err, null);\n }\n _this.largeAValue = largeAValue;\n callback(null, _this.largeAValue);\n });\n }\n }\n\n /**\n * helper function to generate a random big integer\n * @returns {BigInteger} a random value.\n * @private\n */;\n _proto.generateRandomSmallA = function generateRandomSmallA() {\n // This will be interpreted as a postive 128-bit integer\n var hexRandom = randomBytes(128).toString('hex');\n var randomBigInt = new BigInteger(hexRandom, 16);\n\n // There is no need to do randomBigInt.mod(this.N - 1) as N (3072-bit) is > 128 bytes (1024-bit)\n\n return randomBigInt;\n }\n\n /**\n * helper function to generate a random string\n * @returns {string} a random value.\n * @private\n */;\n _proto.generateRandomString = function generateRandomString() {\n return randomBytes(40).toString('base64');\n }\n\n /**\n * @returns {string} Generated random value included in password hash.\n */;\n _proto.getRandomPassword = function getRandomPassword() {\n return this.randomPassword;\n }\n\n /**\n * @returns {string} Generated random value included in devices hash.\n */;\n _proto.getSaltDevices = function getSaltDevices() {\n return this.SaltToHashDevices;\n }\n\n /**\n * @returns {string} Value used to verify devices.\n */;\n _proto.getVerifierDevices = function getVerifierDevices() {\n return this.verifierDevices;\n }\n\n /**\n * Generate salts and compute verifier.\n * @param {string} deviceGroupKey Devices to generate verifier for.\n * @param {string} username User to generate verifier for.\n * @param {nodeCallback} callback Called with (err, null)\n * @returns {void}\n */;\n _proto.generateHashDevice = function generateHashDevice(deviceGroupKey, username, callback) {\n var _this2 = this;\n this.randomPassword = this.generateRandomString();\n var combinedString = \"\" + deviceGroupKey + username + \":\" + this.randomPassword;\n var hashedString = this.hash(combinedString);\n var hexRandom = randomBytes(16).toString('hex');\n\n // The random hex will be unambiguously represented as a postive integer\n this.SaltToHashDevices = this.padHex(new BigInteger(hexRandom, 16));\n this.g.modPow(new BigInteger(this.hexHash(this.SaltToHashDevices + hashedString), 16), this.N, function (err, verifierDevicesNotPadded) {\n if (err) {\n callback(err, null);\n }\n _this2.verifierDevices = _this2.padHex(verifierDevicesNotPadded);\n callback(null, null);\n });\n }\n\n /**\n * Calculate the client's public value A = g^a%N\n * with the generated random number a\n * @param {BigInteger} a Randomly generated small A.\n * @param {nodeCallback} callback Called with (err, largeAValue)\n * @returns {void}\n * @private\n */;\n _proto.calculateA = function calculateA(a, callback) {\n var _this3 = this;\n this.g.modPow(a, this.N, function (err, A) {\n if (err) {\n callback(err, null);\n }\n if (A.mod(_this3.N).equals(BigInteger.ZERO)) {\n callback(new Error('Illegal paramater. A mod N cannot be 0.'), null);\n }\n callback(null, A);\n });\n }\n\n /**\n * Calculate the client's value U which is the hash of A and B\n * @param {BigInteger} A Large A value.\n * @param {BigInteger} B Server B value.\n * @returns {BigInteger} Computed U value.\n * @private\n */;\n _proto.calculateU = function calculateU(A, B) {\n this.UHexHash = this.hexHash(this.padHex(A) + this.padHex(B));\n var finalU = new BigInteger(this.UHexHash, 16);\n return finalU;\n }\n\n /**\n * Calculate a hash from a bitArray\n * @param {Buffer} buf Value to hash.\n * @returns {String} Hex-encoded hash.\n * @private\n */;\n _proto.hash = function hash(buf) {\n var str = buf instanceof Buffer ? CryptoJS.lib.WordArray.create(buf) : buf;\n var hashHex = SHA256(str).toString();\n return new Array(64 - hashHex.length).join('0') + hashHex;\n }\n\n /**\n * Calculate a hash from a hex string\n * @param {String} hexStr Value to hash.\n * @returns {String} Hex-encoded hash.\n * @private\n */;\n _proto.hexHash = function hexHash(hexStr) {\n return this.hash(Buffer.from(hexStr, 'hex'));\n }\n\n /**\n * Standard hkdf algorithm\n * @param {Buffer} ikm Input key material.\n * @param {Buffer} salt Salt value.\n * @returns {Buffer} Strong key material.\n * @private\n */;\n _proto.computehkdf = function computehkdf(ikm, salt) {\n var infoBitsWordArray = CryptoJS.lib.WordArray.create(Buffer.concat([this.infoBits, Buffer.from(String.fromCharCode(1), 'utf8')]));\n var ikmWordArray = ikm instanceof Buffer ? CryptoJS.lib.WordArray.create(ikm) : ikm;\n var saltWordArray = salt instanceof Buffer ? CryptoJS.lib.WordArray.create(salt) : salt;\n var prk = HmacSHA256(ikmWordArray, saltWordArray);\n var hmac = HmacSHA256(infoBitsWordArray, prk);\n return Buffer.from(hmac.toString(), 'hex').slice(0, 16);\n }\n\n /**\n * Calculates the final hkdf based on computed S value, and computed U value and the key\n * @param {String} username Username.\n * @param {String} password Password.\n * @param {BigInteger} serverBValue Server B value.\n * @param {BigInteger} salt Generated salt.\n * @param {nodeCallback} callback Called with (err, hkdfValue)\n * @returns {void}\n */;\n _proto.getPasswordAuthenticationKey = function getPasswordAuthenticationKey(username, password, serverBValue, salt, callback) {\n var _this4 = this;\n if (serverBValue.mod(this.N).equals(BigInteger.ZERO)) {\n throw new Error('B cannot be zero.');\n }\n this.UValue = this.calculateU(this.largeAValue, serverBValue);\n if (this.UValue.equals(BigInteger.ZERO)) {\n throw new Error('U cannot be zero.');\n }\n var usernamePassword = \"\" + this.poolName + username + \":\" + password;\n var usernamePasswordHash = this.hash(usernamePassword);\n var xValue = new BigInteger(this.hexHash(this.padHex(salt) + usernamePasswordHash), 16);\n this.calculateS(xValue, serverBValue, function (err, sValue) {\n if (err) {\n callback(err, null);\n }\n var hkdf = _this4.computehkdf(Buffer.from(_this4.padHex(sValue), 'hex'), Buffer.from(_this4.padHex(_this4.UValue), 'hex'));\n callback(null, hkdf);\n });\n }\n\n /**\n * Calculates the S value used in getPasswordAuthenticationKey\n * @param {BigInteger} xValue Salted password hash value.\n * @param {BigInteger} serverBValue Server B value.\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */;\n _proto.calculateS = function calculateS(xValue, serverBValue, callback) {\n var _this5 = this;\n this.g.modPow(xValue, this.N, function (err, gModPowXN) {\n if (err) {\n callback(err, null);\n }\n var intValue2 = serverBValue.subtract(_this5.k.multiply(gModPowXN));\n intValue2.modPow(_this5.smallAValue.add(_this5.UValue.multiply(xValue)), _this5.N, function (err2, result) {\n if (err2) {\n callback(err2, null);\n }\n callback(null, result.mod(_this5.N));\n });\n });\n }\n\n /**\n * Return constant newPasswordRequiredChallengeUserAttributePrefix\n * @return {newPasswordRequiredChallengeUserAttributePrefix} constant prefix value\n */;\n _proto.getNewPasswordRequiredChallengeUserAttributePrefix = function getNewPasswordRequiredChallengeUserAttributePrefix() {\n return newPasswordRequiredChallengeUserAttributePrefix;\n }\n\n /**\n * Returns an unambiguous, even-length hex string of the two's complement encoding of an integer.\n *\n * It is compatible with the hex encoding of Java's BigInteger's toByteArray(), wich returns a\n * byte array containing the two's-complement representation of a BigInteger. The array contains\n * the minimum number of bytes required to represent the BigInteger, including at least one sign bit.\n *\n * Examples showing how ambiguity is avoided by left padding with:\n * \t\"00\" (for positive values where the most-significant-bit is set)\n * \"FF\" (for negative values where the most-significant-bit is set)\n *\n * padHex(bigInteger.fromInt(-236)) === \"FF14\"\n * padHex(bigInteger.fromInt(20)) === \"14\"\n *\n * padHex(bigInteger.fromInt(-200)) === \"FF38\"\n * padHex(bigInteger.fromInt(56)) === \"38\"\n *\n * padHex(bigInteger.fromInt(-20)) === \"EC\"\n * padHex(bigInteger.fromInt(236)) === \"00EC\"\n *\n * padHex(bigInteger.fromInt(-56)) === \"C8\"\n * padHex(bigInteger.fromInt(200)) === \"00C8\"\n *\n * @param {BigInteger} bigInt Number to encode.\n * @returns {String} even-length hex string of the two's complement encoding.\n */;\n _proto.padHex = function padHex(bigInt) {\n if (!(bigInt instanceof BigInteger)) {\n throw new Error('Not a BigInteger');\n }\n var isNegative = bigInt.compareTo(BigInteger.ZERO) < 0;\n\n /* Get a hex string for abs(bigInt) */\n var hexStr = bigInt.abs().toString(16);\n\n /* Pad hex to even length if needed */\n hexStr = hexStr.length % 2 !== 0 ? \"0\" + hexStr : hexStr;\n\n /* Prepend \"00\" if the most significant bit is set */\n hexStr = HEX_MSB_REGEX.test(hexStr) ? \"00\" + hexStr : hexStr;\n if (isNegative) {\n /* Flip the bits of the representation */\n var invertedNibbles = hexStr.split('').map(function (x) {\n var invertedNibble = ~parseInt(x, 16) & 0xf;\n return '0123456789ABCDEF'.charAt(invertedNibble);\n }).join('');\n\n /* After flipping the bits, add one to get the 2's complement representation */\n var flippedBitsBI = new BigInteger(invertedNibbles, 16).add(BigInteger.ONE);\n hexStr = flippedBitsBI.toString(16);\n\n /*\n For hex strings starting with 'FF8', 'FF' can be dropped, e.g. 0xFFFF80=0xFF80=0x80=-128\n \t\tAny sequence of '1' bits on the left can always be substituted with a single '1' bit\n without changing the represented value.\n \t\tThis only happens in the case when the input is 80...00\n */\n if (hexStr.toUpperCase().startsWith('FF8')) {\n hexStr = hexStr.substring(2);\n }\n }\n return hexStr;\n };\n return AuthenticationHelper;\n}();\nexport { AuthenticationHelper as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Buffer } from 'buffer';\n\n/** @class */\nvar CognitoJwtToken = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoJwtToken object\n * @param {string=} token The JWT token.\n */\n function CognitoJwtToken(token) {\n // Assign object\n this.jwtToken = token || '';\n this.payload = this.decodePayload();\n }\n\n /**\n * @returns {string} the record's token.\n */\n var _proto = CognitoJwtToken.prototype;\n _proto.getJwtToken = function getJwtToken() {\n return this.jwtToken;\n }\n\n /**\n * @returns {int} the token's expiration (exp member).\n */;\n _proto.getExpiration = function getExpiration() {\n return this.payload.exp;\n }\n\n /**\n * @returns {int} the token's \"issued at\" (iat member).\n */;\n _proto.getIssuedAt = function getIssuedAt() {\n return this.payload.iat;\n }\n\n /**\n * @returns {object} the token's payload.\n */;\n _proto.decodePayload = function decodePayload() {\n var payload = this.jwtToken.split('.')[1];\n try {\n return JSON.parse(Buffer.from(payload, 'base64').toString('utf8'));\n } catch (err) {\n return {};\n }\n };\n return CognitoJwtToken;\n}();\nexport { CognitoJwtToken as default };","function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport CognitoJwtToken from './CognitoJwtToken';\n\n/** @class */\nvar CognitoAccessToken = /*#__PURE__*/function (_CognitoJwtToken) {\n _inheritsLoose(CognitoAccessToken, _CognitoJwtToken);\n /**\n * Constructs a new CognitoAccessToken object\n * @param {string=} AccessToken The JWT access token.\n */\n function CognitoAccessToken(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n AccessToken = _ref.AccessToken;\n return _CognitoJwtToken.call(this, AccessToken || '') || this;\n }\n return CognitoAccessToken;\n}(CognitoJwtToken);\nexport { CognitoAccessToken as default };","function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport CognitoJwtToken from './CognitoJwtToken';\n\n/** @class */\nvar CognitoIdToken = /*#__PURE__*/function (_CognitoJwtToken) {\n _inheritsLoose(CognitoIdToken, _CognitoJwtToken);\n /**\n * Constructs a new CognitoIdToken object\n * @param {string=} IdToken The JWT Id token\n */\n function CognitoIdToken(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n IdToken = _ref.IdToken;\n return _CognitoJwtToken.call(this, IdToken || '') || this;\n }\n return CognitoIdToken;\n}(CognitoJwtToken);\nexport { CognitoIdToken as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n/** @class */\nvar CognitoRefreshToken = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoRefreshToken object\n * @param {string=} RefreshToken The JWT refresh token.\n */\n function CognitoRefreshToken(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n RefreshToken = _ref.RefreshToken;\n // Assign object\n this.token = RefreshToken || '';\n }\n\n /**\n * @returns {string} the record's token.\n */\n var _proto = CognitoRefreshToken.prototype;\n _proto.getToken = function getToken() {\n return this.token;\n };\n return CognitoRefreshToken;\n}();\nexport { CognitoRefreshToken as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n/** @class */\nvar CognitoUserSession = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoUserSession object\n * @param {CognitoIdToken} IdToken The session's Id token.\n * @param {CognitoRefreshToken=} RefreshToken The session's refresh token.\n * @param {CognitoAccessToken} AccessToken The session's access token.\n * @param {int} ClockDrift The saved computer's clock drift or undefined to force calculation.\n */\n function CognitoUserSession(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n IdToken = _ref.IdToken,\n RefreshToken = _ref.RefreshToken,\n AccessToken = _ref.AccessToken,\n ClockDrift = _ref.ClockDrift;\n if (AccessToken == null || IdToken == null) {\n throw new Error('Id token and Access Token must be present.');\n }\n this.idToken = IdToken;\n this.refreshToken = RefreshToken;\n this.accessToken = AccessToken;\n this.clockDrift = ClockDrift === undefined ? this.calculateClockDrift() : ClockDrift;\n }\n\n /**\n * @returns {CognitoIdToken} the session's Id token\n */\n var _proto = CognitoUserSession.prototype;\n _proto.getIdToken = function getIdToken() {\n return this.idToken;\n }\n\n /**\n * @returns {CognitoRefreshToken} the session's refresh token\n */;\n _proto.getRefreshToken = function getRefreshToken() {\n return this.refreshToken;\n }\n\n /**\n * @returns {CognitoAccessToken} the session's access token\n */;\n _proto.getAccessToken = function getAccessToken() {\n return this.accessToken;\n }\n\n /**\n * @returns {int} the session's clock drift\n */;\n _proto.getClockDrift = function getClockDrift() {\n return this.clockDrift;\n }\n\n /**\n * @returns {int} the computer's clock drift\n */;\n _proto.calculateClockDrift = function calculateClockDrift() {\n var now = Math.floor(new Date() / 1000);\n var iat = Math.min(this.accessToken.getIssuedAt(), this.idToken.getIssuedAt());\n return now - iat;\n }\n\n /**\n * Checks to see if the session is still valid based on session expiry information found\n * in tokens and the current time (adjusted with clock drift)\n * @returns {boolean} if the session is still valid\n */;\n _proto.isValid = function isValid() {\n var now = Math.floor(new Date() / 1000);\n var adjusted = now - this.clockDrift;\n return adjusted < this.accessToken.getExpiration() && adjusted < this.idToken.getExpiration();\n };\n return CognitoUserSession;\n}();\nexport { CognitoUserSession as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nvar monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\nvar weekNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\n/** @class */\nvar DateHelper = /*#__PURE__*/function () {\n function DateHelper() {}\n var _proto = DateHelper.prototype;\n /**\n * @returns {string} The current time in \"ddd MMM D HH:mm:ss UTC YYYY\" format.\n */\n _proto.getNowString = function getNowString() {\n var now = new Date();\n var weekDay = weekNames[now.getUTCDay()];\n var month = monthNames[now.getUTCMonth()];\n var day = now.getUTCDate();\n var hours = now.getUTCHours();\n if (hours < 10) {\n hours = \"0\" + hours;\n }\n var minutes = now.getUTCMinutes();\n if (minutes < 10) {\n minutes = \"0\" + minutes;\n }\n var seconds = now.getUTCSeconds();\n if (seconds < 10) {\n seconds = \"0\" + seconds;\n }\n var year = now.getUTCFullYear();\n\n // ddd MMM D HH:mm:ss UTC YYYY\n var dateNow = weekDay + \" \" + month + \" \" + day + \" \" + hours + \":\" + minutes + \":\" + seconds + \" UTC \" + year;\n return dateNow;\n };\n return DateHelper;\n}();\nexport { DateHelper as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n/** @class */\nvar CognitoUserAttribute = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoUserAttribute object\n * @param {string=} Name The record's name\n * @param {string=} Value The record's value\n */\n function CognitoUserAttribute(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n Name = _ref.Name,\n Value = _ref.Value;\n this.Name = Name || '';\n this.Value = Value || '';\n }\n\n /**\n * @returns {string} the record's value.\n */\n var _proto = CognitoUserAttribute.prototype;\n _proto.getValue = function getValue() {\n return this.Value;\n }\n\n /**\n * Sets the record's value.\n * @param {string} value The new value.\n * @returns {CognitoUserAttribute} The record for method chaining.\n */;\n _proto.setValue = function setValue(value) {\n this.Value = value;\n return this;\n }\n\n /**\n * @returns {string} the record's name.\n */;\n _proto.getName = function getName() {\n return this.Name;\n }\n\n /**\n * Sets the record's name\n * @param {string} name The new name.\n * @returns {CognitoUserAttribute} The record for method chaining.\n */;\n _proto.setName = function setName(name) {\n this.Name = name;\n return this;\n }\n\n /**\n * @returns {string} a string representation of the record.\n */;\n _proto.toString = function toString() {\n return JSON.stringify(this);\n }\n\n /**\n * @returns {object} a flat object representing the record.\n */;\n _proto.toJSON = function toJSON() {\n return {\n Name: this.Name,\n Value: this.Value\n };\n };\n return CognitoUserAttribute;\n}();\nexport { CognitoUserAttribute as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nvar dataMemory = {};\n\n/** @class */\nexport var MemoryStorage = /*#__PURE__*/function () {\n function MemoryStorage() {}\n /**\n * This is used to set a specific item in storage\n * @param {string} key - the key for the item\n * @param {object} value - the value\n * @returns {string} value that was set\n */\n MemoryStorage.setItem = function setItem(key, value) {\n dataMemory[key] = value;\n return dataMemory[key];\n }\n\n /**\n * This is used to get a specific key from storage\n * @param {string} key - the key for the item\n * This is used to clear the storage\n * @returns {string} the data item\n */;\n MemoryStorage.getItem = function getItem(key) {\n return Object.prototype.hasOwnProperty.call(dataMemory, key) ? dataMemory[key] : undefined;\n }\n\n /**\n * This is used to remove an item from storage\n * @param {string} key - the key being set\n * @returns {boolean} return true\n */;\n MemoryStorage.removeItem = function removeItem(key) {\n return delete dataMemory[key];\n }\n\n /**\n * This is used to clear the storage\n * @returns {string} nothing\n */;\n MemoryStorage.clear = function clear() {\n dataMemory = {};\n return dataMemory;\n };\n return MemoryStorage;\n}();\n\n/** @class */\nvar StorageHelper = /*#__PURE__*/function () {\n /**\n * This is used to get a storage object\n * @returns {object} the storage\n */\n function StorageHelper() {\n try {\n this.storageWindow = window.localStorage;\n this.storageWindow.setItem('aws.cognito.test-ls', 1);\n this.storageWindow.removeItem('aws.cognito.test-ls');\n } catch (exception) {\n this.storageWindow = MemoryStorage;\n }\n }\n\n /**\n * This is used to return the storage\n * @returns {object} the storage\n */\n var _proto = StorageHelper.prototype;\n _proto.getStorage = function getStorage() {\n return this.storageWindow;\n };\n return StorageHelper;\n}();\nexport { StorageHelper as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Buffer } from 'buffer';\nimport CryptoJS from 'crypto-js/core';\nimport TypedArrays from 'crypto-js/lib-typedarrays'; // necessary for crypto js\nimport Base64 from 'crypto-js/enc-base64';\nimport HmacSHA256 from 'crypto-js/hmac-sha256';\nimport BigInteger from './BigInteger';\nimport AuthenticationHelper from './AuthenticationHelper';\nimport CognitoAccessToken from './CognitoAccessToken';\nimport CognitoIdToken from './CognitoIdToken';\nimport CognitoRefreshToken from './CognitoRefreshToken';\nimport CognitoUserSession from './CognitoUserSession';\nimport DateHelper from './DateHelper';\nimport CognitoUserAttribute from './CognitoUserAttribute';\nimport StorageHelper from './StorageHelper';\n\n/**\n * @callback nodeCallback\n * @template T result\n * @param {*} err The operation failure reason, or null.\n * @param {T} result The operation result.\n */\n\n/**\n * @callback onFailure\n * @param {*} err Failure reason.\n */\n\n/**\n * @callback onSuccess\n * @template T result\n * @param {T} result The operation result.\n */\n\n/**\n * @callback mfaRequired\n * @param {*} details MFA challenge details.\n */\n\n/**\n * @callback customChallenge\n * @param {*} details Custom challenge details.\n */\n\n/**\n * @callback inputVerificationCode\n * @param {*} data Server response.\n */\n\n/**\n * @callback authSuccess\n * @param {CognitoUserSession} session The new session.\n * @param {bool=} userConfirmationNecessary User must be confirmed.\n */\n\nvar isBrowser = typeof navigator !== 'undefined';\nvar userAgent = isBrowser ? navigator.userAgent : 'nodejs';\n\n/** @class */\nvar CognitoUser = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoUser object\n * @param {object} data Creation options\n * @param {string} data.Username The user's username.\n * @param {CognitoUserPool} data.Pool Pool containing the user.\n * @param {object} data.Storage Optional storage object.\n */\n function CognitoUser(data) {\n if (data == null || data.Username == null || data.Pool == null) {\n throw new Error('Username and Pool information are required.');\n }\n this.username = data.Username || '';\n this.pool = data.Pool;\n this.Session = null;\n this.client = data.Pool.client;\n this.signInUserSession = null;\n this.authenticationFlowType = 'USER_SRP_AUTH';\n this.storage = data.Storage || new StorageHelper().getStorage();\n this.keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n this.userDataKey = this.keyPrefix + \".\" + this.username + \".userData\";\n }\n\n /**\n * Sets the session for this user\n * @param {CognitoUserSession} signInUserSession the session\n * @returns {void}\n */\n var _proto = CognitoUser.prototype;\n _proto.setSignInUserSession = function setSignInUserSession(signInUserSession) {\n this.clearCachedUserData();\n this.signInUserSession = signInUserSession;\n this.cacheTokens();\n }\n\n /**\n * @returns {CognitoUserSession} the current session for this user\n */;\n _proto.getSignInUserSession = function getSignInUserSession() {\n return this.signInUserSession;\n }\n\n /**\n * @returns {string} the user's username\n */;\n _proto.getUsername = function getUsername() {\n return this.username;\n }\n\n /**\n * @returns {String} the authentication flow type\n */;\n _proto.getAuthenticationFlowType = function getAuthenticationFlowType() {\n return this.authenticationFlowType;\n }\n\n /**\n * sets authentication flow type\n * @param {string} authenticationFlowType New value.\n * @returns {void}\n */;\n _proto.setAuthenticationFlowType = function setAuthenticationFlowType(authenticationFlowType) {\n this.authenticationFlowType = authenticationFlowType;\n }\n\n /**\n * This is used for authenticating the user through the custom authentication flow.\n * @param {AuthenticationDetails} authDetails Contains the authentication data\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {customChallenge} callback.customChallenge Custom challenge\n * response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @returns {void}\n */;\n _proto.initiateAuth = function initiateAuth(authDetails, callback) {\n var _this = this;\n var authParameters = authDetails.getAuthParameters();\n authParameters.USERNAME = this.username;\n var clientMetaData = Object.keys(authDetails.getValidationData()).length !== 0 ? authDetails.getValidationData() : authDetails.getClientMetadata();\n var jsonReq = {\n AuthFlow: 'CUSTOM_AUTH',\n ClientId: this.pool.getClientId(),\n AuthParameters: authParameters,\n ClientMetadata: clientMetaData\n };\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n this.client.request('InitiateAuth', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n var challengeName = data.ChallengeName;\n var challengeParameters = data.ChallengeParameters;\n if (challengeName === 'CUSTOM_CHALLENGE') {\n _this.Session = data.Session;\n return callback.customChallenge(challengeParameters);\n }\n _this.signInUserSession = _this.getCognitoUserSession(data.AuthenticationResult);\n _this.cacheTokens();\n return callback.onSuccess(_this.signInUserSession);\n });\n }\n\n /**\n * This is used for authenticating the user.\n * stuff\n * @param {AuthenticationDetails} authDetails Contains the authentication data\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {newPasswordRequired} callback.newPasswordRequired new\n * password and any required attributes are required to continue\n * @param {mfaRequired} callback.mfaRequired MFA code\n * required to continue.\n * @param {customChallenge} callback.customChallenge Custom challenge\n * response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @returns {void}\n */;\n _proto.authenticateUser = function authenticateUser(authDetails, callback) {\n if (this.authenticationFlowType === 'USER_PASSWORD_AUTH') {\n return this.authenticateUserPlainUsernamePassword(authDetails, callback);\n } else if (this.authenticationFlowType === 'USER_SRP_AUTH' || this.authenticationFlowType === 'CUSTOM_AUTH') {\n return this.authenticateUserDefaultAuth(authDetails, callback);\n }\n return callback.onFailure(new Error('Authentication flow type is invalid.'));\n }\n\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n * It calls the AuthenticationHelper for SRP related\n * stuff\n * @param {AuthenticationDetails} authDetails Contains the authentication data\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {newPasswordRequired} callback.newPasswordRequired new\n * password and any required attributes are required to continue\n * @param {mfaRequired} callback.mfaRequired MFA code\n * required to continue.\n * @param {customChallenge} callback.customChallenge Custom challenge\n * response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @returns {void}\n */;\n _proto.authenticateUserDefaultAuth = function authenticateUserDefaultAuth(authDetails, callback) {\n var _this2 = this;\n var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolName());\n var dateHelper = new DateHelper();\n var serverBValue;\n var salt;\n var authParameters = {};\n if (this.deviceKey != null) {\n authParameters.DEVICE_KEY = this.deviceKey;\n }\n authParameters.USERNAME = this.username;\n authenticationHelper.getLargeAValue(function (errOnAValue, aValue) {\n // getLargeAValue callback start\n if (errOnAValue) {\n callback.onFailure(errOnAValue);\n }\n authParameters.SRP_A = aValue.toString(16);\n if (_this2.authenticationFlowType === 'CUSTOM_AUTH') {\n authParameters.CHALLENGE_NAME = 'SRP_A';\n }\n var clientMetaData = Object.keys(authDetails.getValidationData()).length !== 0 ? authDetails.getValidationData() : authDetails.getClientMetadata();\n var jsonReq = {\n AuthFlow: _this2.authenticationFlowType,\n ClientId: _this2.pool.getClientId(),\n AuthParameters: authParameters,\n ClientMetadata: clientMetaData\n };\n if (_this2.getUserContextData(_this2.username)) {\n jsonReq.UserContextData = _this2.getUserContextData(_this2.username);\n }\n _this2.client.request('InitiateAuth', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n var challengeParameters = data.ChallengeParameters;\n _this2.username = challengeParameters.USER_ID_FOR_SRP;\n _this2.userDataKey = _this2.keyPrefix + \".\" + _this2.username + \".userData\";\n serverBValue = new BigInteger(challengeParameters.SRP_B, 16);\n salt = new BigInteger(challengeParameters.SALT, 16);\n _this2.getCachedDeviceKeyAndPassword();\n authenticationHelper.getPasswordAuthenticationKey(_this2.username, authDetails.getPassword(), serverBValue, salt, function (errOnHkdf, hkdf) {\n // getPasswordAuthenticationKey callback start\n if (errOnHkdf) {\n callback.onFailure(errOnHkdf);\n }\n var dateNow = dateHelper.getNowString();\n var message = CryptoJS.lib.WordArray.create(Buffer.concat([Buffer.from(_this2.pool.getUserPoolName(), 'utf8'), Buffer.from(_this2.username, 'utf8'), Buffer.from(challengeParameters.SECRET_BLOCK, 'base64'), Buffer.from(dateNow, 'utf8')]));\n var key = CryptoJS.lib.WordArray.create(hkdf);\n var signatureString = Base64.stringify(HmacSHA256(message, key));\n var challengeResponses = {};\n challengeResponses.USERNAME = _this2.username;\n challengeResponses.PASSWORD_CLAIM_SECRET_BLOCK = challengeParameters.SECRET_BLOCK;\n challengeResponses.TIMESTAMP = dateNow;\n challengeResponses.PASSWORD_CLAIM_SIGNATURE = signatureString;\n if (_this2.deviceKey != null) {\n challengeResponses.DEVICE_KEY = _this2.deviceKey;\n }\n var respondToAuthChallenge = function respondToAuthChallenge(challenge, challengeCallback) {\n return _this2.client.request('RespondToAuthChallenge', challenge, function (errChallenge, dataChallenge) {\n if (errChallenge && errChallenge.code === 'ResourceNotFoundException' && errChallenge.message.toLowerCase().indexOf('device') !== -1) {\n challengeResponses.DEVICE_KEY = null;\n _this2.deviceKey = null;\n _this2.randomPassword = null;\n _this2.deviceGroupKey = null;\n _this2.clearCachedDeviceKeyAndPassword();\n return respondToAuthChallenge(challenge, challengeCallback);\n }\n return challengeCallback(errChallenge, dataChallenge);\n });\n };\n var jsonReqResp = {\n ChallengeName: 'PASSWORD_VERIFIER',\n ClientId: _this2.pool.getClientId(),\n ChallengeResponses: challengeResponses,\n Session: data.Session,\n ClientMetadata: clientMetaData\n };\n if (_this2.getUserContextData()) {\n jsonReqResp.UserContextData = _this2.getUserContextData();\n }\n respondToAuthChallenge(jsonReqResp, function (errAuthenticate, dataAuthenticate) {\n if (errAuthenticate) {\n return callback.onFailure(errAuthenticate);\n }\n return _this2.authenticateUserInternal(dataAuthenticate, authenticationHelper, callback);\n });\n return undefined;\n // getPasswordAuthenticationKey callback end\n });\n\n return undefined;\n });\n // getLargeAValue callback end\n });\n }\n\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n * @param {AuthenticationDetails} authDetails Contains the authentication data.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {mfaRequired} callback.mfaRequired MFA code\n * required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @returns {void}\n */;\n _proto.authenticateUserPlainUsernamePassword = function authenticateUserPlainUsernamePassword(authDetails, callback) {\n var _this3 = this;\n var authParameters = {};\n authParameters.USERNAME = this.username;\n authParameters.PASSWORD = authDetails.getPassword();\n if (!authParameters.PASSWORD) {\n callback.onFailure(new Error('PASSWORD parameter is required'));\n return;\n }\n var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolName());\n this.getCachedDeviceKeyAndPassword();\n if (this.deviceKey != null) {\n authParameters.DEVICE_KEY = this.deviceKey;\n }\n var clientMetaData = Object.keys(authDetails.getValidationData()).length !== 0 ? authDetails.getValidationData() : authDetails.getClientMetadata();\n var jsonReq = {\n AuthFlow: 'USER_PASSWORD_AUTH',\n ClientId: this.pool.getClientId(),\n AuthParameters: authParameters,\n ClientMetadata: clientMetaData\n };\n if (this.getUserContextData(this.username)) {\n jsonReq.UserContextData = this.getUserContextData(this.username);\n }\n // USER_PASSWORD_AUTH happens in a single round-trip: client sends userName and password,\n // Cognito UserPools verifies password and returns tokens.\n this.client.request('InitiateAuth', jsonReq, function (err, authResult) {\n if (err) {\n return callback.onFailure(err);\n }\n return _this3.authenticateUserInternal(authResult, authenticationHelper, callback);\n });\n }\n\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n * @param {object} dataAuthenticate authentication data\n * @param {object} authenticationHelper helper created\n * @param {callback} callback passed on from caller\n * @returns {void}\n */;\n _proto.authenticateUserInternal = function authenticateUserInternal(dataAuthenticate, authenticationHelper, callback) {\n var _this4 = this;\n var challengeName = dataAuthenticate.ChallengeName;\n var challengeParameters = dataAuthenticate.ChallengeParameters;\n if (challengeName === 'SMS_MFA') {\n this.Session = dataAuthenticate.Session;\n return callback.mfaRequired(challengeName, challengeParameters);\n }\n if (challengeName === 'SELECT_MFA_TYPE') {\n this.Session = dataAuthenticate.Session;\n return callback.selectMFAType(challengeName, challengeParameters);\n }\n if (challengeName === 'MFA_SETUP') {\n this.Session = dataAuthenticate.Session;\n return callback.mfaSetup(challengeName, challengeParameters);\n }\n if (challengeName === 'SOFTWARE_TOKEN_MFA') {\n this.Session = dataAuthenticate.Session;\n return callback.totpRequired(challengeName, challengeParameters);\n }\n if (challengeName === 'CUSTOM_CHALLENGE') {\n this.Session = dataAuthenticate.Session;\n return callback.customChallenge(challengeParameters);\n }\n if (challengeName === 'NEW_PASSWORD_REQUIRED') {\n this.Session = dataAuthenticate.Session;\n var userAttributes = null;\n var rawRequiredAttributes = null;\n var requiredAttributes = [];\n var userAttributesPrefix = authenticationHelper.getNewPasswordRequiredChallengeUserAttributePrefix();\n if (challengeParameters) {\n userAttributes = JSON.parse(dataAuthenticate.ChallengeParameters.userAttributes);\n rawRequiredAttributes = JSON.parse(dataAuthenticate.ChallengeParameters.requiredAttributes);\n }\n if (rawRequiredAttributes) {\n for (var i = 0; i < rawRequiredAttributes.length; i++) {\n requiredAttributes[i] = rawRequiredAttributes[i].substr(userAttributesPrefix.length);\n }\n }\n return callback.newPasswordRequired(userAttributes, requiredAttributes);\n }\n if (challengeName === 'DEVICE_SRP_AUTH') {\n this.Session = dataAuthenticate.Session;\n this.getDeviceResponse(callback);\n return undefined;\n }\n this.signInUserSession = this.getCognitoUserSession(dataAuthenticate.AuthenticationResult);\n this.challengeName = challengeName;\n this.cacheTokens();\n var newDeviceMetadata = dataAuthenticate.AuthenticationResult.NewDeviceMetadata;\n if (newDeviceMetadata == null) {\n return callback.onSuccess(this.signInUserSession);\n }\n authenticationHelper.generateHashDevice(dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey, dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey, function (errGenHash) {\n if (errGenHash) {\n return callback.onFailure(errGenHash);\n }\n var deviceSecretVerifierConfig = {\n Salt: Buffer.from(authenticationHelper.getSaltDevices(), 'hex').toString('base64'),\n PasswordVerifier: Buffer.from(authenticationHelper.getVerifierDevices(), 'hex').toString('base64')\n };\n _this4.verifierDevices = deviceSecretVerifierConfig.PasswordVerifier;\n _this4.deviceGroupKey = newDeviceMetadata.DeviceGroupKey;\n _this4.randomPassword = authenticationHelper.getRandomPassword();\n _this4.client.request('ConfirmDevice', {\n DeviceKey: newDeviceMetadata.DeviceKey,\n AccessToken: _this4.signInUserSession.getAccessToken().getJwtToken(),\n DeviceSecretVerifierConfig: deviceSecretVerifierConfig,\n DeviceName: userAgent\n }, function (errConfirm, dataConfirm) {\n if (errConfirm) {\n return callback.onFailure(errConfirm);\n }\n _this4.deviceKey = dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey;\n _this4.cacheDeviceKeyAndPassword();\n if (dataConfirm.UserConfirmationNecessary === true) {\n return callback.onSuccess(_this4.signInUserSession, dataConfirm.UserConfirmationNecessary);\n }\n return callback.onSuccess(_this4.signInUserSession);\n });\n return undefined;\n });\n return undefined;\n }\n\n /**\n * This method is user to complete the NEW_PASSWORD_REQUIRED challenge.\n * Pass the new password with any new user attributes to be updated.\n * User attribute keys must be of format userAttributes..\n * @param {string} newPassword new password for this user\n * @param {object} requiredAttributeData map with values for all required attributes\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {mfaRequired} callback.mfaRequired MFA code required to continue.\n * @param {customChallenge} callback.customChallenge Custom challenge\n * response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */;\n _proto.completeNewPasswordChallenge = function completeNewPasswordChallenge(newPassword, requiredAttributeData, callback, clientMetadata) {\n var _this5 = this;\n if (!newPassword) {\n return callback.onFailure(new Error('New password is required.'));\n }\n var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolName());\n var userAttributesPrefix = authenticationHelper.getNewPasswordRequiredChallengeUserAttributePrefix();\n var finalUserAttributes = {};\n if (requiredAttributeData) {\n Object.keys(requiredAttributeData).forEach(function (key) {\n finalUserAttributes[userAttributesPrefix + key] = requiredAttributeData[key];\n });\n }\n finalUserAttributes.NEW_PASSWORD = newPassword;\n finalUserAttributes.USERNAME = this.username;\n var jsonReq = {\n ChallengeName: 'NEW_PASSWORD_REQUIRED',\n ClientId: this.pool.getClientId(),\n ChallengeResponses: finalUserAttributes,\n Session: this.Session,\n ClientMetadata: clientMetadata\n };\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n this.client.request('RespondToAuthChallenge', jsonReq, function (errAuthenticate, dataAuthenticate) {\n if (errAuthenticate) {\n return callback.onFailure(errAuthenticate);\n }\n return _this5.authenticateUserInternal(dataAuthenticate, authenticationHelper, callback);\n });\n return undefined;\n }\n\n /**\n * This is used to get a session using device authentication. It is called at the end of user\n * authentication\n *\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n * @private\n */;\n _proto.getDeviceResponse = function getDeviceResponse(callback, clientMetadata) {\n var _this6 = this;\n var authenticationHelper = new AuthenticationHelper(this.deviceGroupKey);\n var dateHelper = new DateHelper();\n var authParameters = {};\n authParameters.USERNAME = this.username;\n authParameters.DEVICE_KEY = this.deviceKey;\n authenticationHelper.getLargeAValue(function (errAValue, aValue) {\n // getLargeAValue callback start\n if (errAValue) {\n callback.onFailure(errAValue);\n }\n authParameters.SRP_A = aValue.toString(16);\n var jsonReq = {\n ChallengeName: 'DEVICE_SRP_AUTH',\n ClientId: _this6.pool.getClientId(),\n ChallengeResponses: authParameters,\n ClientMetadata: clientMetadata,\n Session: _this6.Session\n };\n if (_this6.getUserContextData()) {\n jsonReq.UserContextData = _this6.getUserContextData();\n }\n _this6.client.request('RespondToAuthChallenge', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n var challengeParameters = data.ChallengeParameters;\n var serverBValue = new BigInteger(challengeParameters.SRP_B, 16);\n var salt = new BigInteger(challengeParameters.SALT, 16);\n authenticationHelper.getPasswordAuthenticationKey(_this6.deviceKey, _this6.randomPassword, serverBValue, salt, function (errHkdf, hkdf) {\n // getPasswordAuthenticationKey callback start\n if (errHkdf) {\n return callback.onFailure(errHkdf);\n }\n var dateNow = dateHelper.getNowString();\n var message = CryptoJS.lib.WordArray.create(Buffer.concat([Buffer.from(_this6.deviceGroupKey, 'utf8'), Buffer.from(_this6.deviceKey, 'utf8'), Buffer.from(challengeParameters.SECRET_BLOCK, 'base64'), Buffer.from(dateNow, 'utf8')]));\n var key = CryptoJS.lib.WordArray.create(hkdf);\n var signatureString = Base64.stringify(HmacSHA256(message, key));\n var challengeResponses = {};\n challengeResponses.USERNAME = _this6.username;\n challengeResponses.PASSWORD_CLAIM_SECRET_BLOCK = challengeParameters.SECRET_BLOCK;\n challengeResponses.TIMESTAMP = dateNow;\n challengeResponses.PASSWORD_CLAIM_SIGNATURE = signatureString;\n challengeResponses.DEVICE_KEY = _this6.deviceKey;\n var jsonReqResp = {\n ChallengeName: 'DEVICE_PASSWORD_VERIFIER',\n ClientId: _this6.pool.getClientId(),\n ChallengeResponses: challengeResponses,\n Session: data.Session\n };\n if (_this6.getUserContextData()) {\n jsonReqResp.UserContextData = _this6.getUserContextData();\n }\n _this6.client.request('RespondToAuthChallenge', jsonReqResp, function (errAuthenticate, dataAuthenticate) {\n if (errAuthenticate) {\n return callback.onFailure(errAuthenticate);\n }\n _this6.signInUserSession = _this6.getCognitoUserSession(dataAuthenticate.AuthenticationResult);\n _this6.cacheTokens();\n return callback.onSuccess(_this6.signInUserSession);\n });\n return undefined;\n // getPasswordAuthenticationKey callback end\n });\n\n return undefined;\n });\n // getLargeAValue callback end\n });\n }\n\n /**\n * This is used for a certain user to confirm the registration by using a confirmation code\n * @param {string} confirmationCode Code entered by user.\n * @param {bool} forceAliasCreation Allow migrating from an existing email / phone number.\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */;\n _proto.confirmRegistration = function confirmRegistration(confirmationCode, forceAliasCreation, callback, clientMetadata) {\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n ConfirmationCode: confirmationCode,\n Username: this.username,\n ForceAliasCreation: forceAliasCreation,\n ClientMetadata: clientMetadata\n };\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n this.client.request('ConfirmSignUp', jsonReq, function (err) {\n if (err) {\n return callback(err, null);\n }\n return callback(null, 'SUCCESS');\n });\n }\n\n /**\n * This is used by the user once he has the responses to a custom challenge\n * @param {string} answerChallenge The custom challenge answer.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {customChallenge} callback.customChallenge\n * Custom challenge response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */;\n _proto.sendCustomChallengeAnswer = function sendCustomChallengeAnswer(answerChallenge, callback, clientMetadata) {\n var _this7 = this;\n var challengeResponses = {};\n challengeResponses.USERNAME = this.username;\n challengeResponses.ANSWER = answerChallenge;\n var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolName());\n this.getCachedDeviceKeyAndPassword();\n if (this.deviceKey != null) {\n challengeResponses.DEVICE_KEY = this.deviceKey;\n }\n var jsonReq = {\n ChallengeName: 'CUSTOM_CHALLENGE',\n ChallengeResponses: challengeResponses,\n ClientId: this.pool.getClientId(),\n Session: this.Session,\n ClientMetadata: clientMetadata\n };\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n this.client.request('RespondToAuthChallenge', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n return _this7.authenticateUserInternal(data, authenticationHelper, callback);\n });\n }\n\n /**\n * This is used by the user once he has an MFA code\n * @param {string} confirmationCode The MFA code entered by the user.\n * @param {object} callback Result callback map.\n * @param {string} mfaType The mfa we are replying to.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */;\n _proto.sendMFACode = function sendMFACode(confirmationCode, callback, mfaType, clientMetadata) {\n var _this8 = this;\n var challengeResponses = {};\n challengeResponses.USERNAME = this.username;\n challengeResponses.SMS_MFA_CODE = confirmationCode;\n var mfaTypeSelection = mfaType || 'SMS_MFA';\n if (mfaTypeSelection === 'SOFTWARE_TOKEN_MFA') {\n challengeResponses.SOFTWARE_TOKEN_MFA_CODE = confirmationCode;\n }\n if (this.deviceKey != null) {\n challengeResponses.DEVICE_KEY = this.deviceKey;\n }\n var jsonReq = {\n ChallengeName: mfaTypeSelection,\n ChallengeResponses: challengeResponses,\n ClientId: this.pool.getClientId(),\n Session: this.Session,\n ClientMetadata: clientMetadata\n };\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n this.client.request('RespondToAuthChallenge', jsonReq, function (err, dataAuthenticate) {\n if (err) {\n return callback.onFailure(err);\n }\n var challengeName = dataAuthenticate.ChallengeName;\n if (challengeName === 'DEVICE_SRP_AUTH') {\n _this8.getDeviceResponse(callback);\n return undefined;\n }\n _this8.signInUserSession = _this8.getCognitoUserSession(dataAuthenticate.AuthenticationResult);\n _this8.cacheTokens();\n if (dataAuthenticate.AuthenticationResult.NewDeviceMetadata == null) {\n return callback.onSuccess(_this8.signInUserSession);\n }\n var authenticationHelper = new AuthenticationHelper(_this8.pool.getUserPoolName());\n authenticationHelper.generateHashDevice(dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey, dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey, function (errGenHash) {\n if (errGenHash) {\n return callback.onFailure(errGenHash);\n }\n var deviceSecretVerifierConfig = {\n Salt: Buffer.from(authenticationHelper.getSaltDevices(), 'hex').toString('base64'),\n PasswordVerifier: Buffer.from(authenticationHelper.getVerifierDevices(), 'hex').toString('base64')\n };\n _this8.verifierDevices = deviceSecretVerifierConfig.PasswordVerifier;\n _this8.deviceGroupKey = dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey;\n _this8.randomPassword = authenticationHelper.getRandomPassword();\n _this8.client.request('ConfirmDevice', {\n DeviceKey: dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey,\n AccessToken: _this8.signInUserSession.getAccessToken().getJwtToken(),\n DeviceSecretVerifierConfig: deviceSecretVerifierConfig,\n DeviceName: userAgent\n }, function (errConfirm, dataConfirm) {\n if (errConfirm) {\n return callback.onFailure(errConfirm);\n }\n _this8.deviceKey = dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey;\n _this8.cacheDeviceKeyAndPassword();\n if (dataConfirm.UserConfirmationNecessary === true) {\n return callback.onSuccess(_this8.signInUserSession, dataConfirm.UserConfirmationNecessary);\n }\n return callback.onSuccess(_this8.signInUserSession);\n });\n return undefined;\n });\n return undefined;\n });\n }\n\n /**\n * This is used by an authenticated user to change the current password\n * @param {string} oldUserPassword The current password.\n * @param {string} newUserPassword The requested new password.\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */;\n _proto.changePassword = function changePassword(oldUserPassword, newUserPassword, callback, clientMetadata) {\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n return callback(new Error('User is not authenticated'), null);\n }\n this.client.request('ChangePassword', {\n PreviousPassword: oldUserPassword,\n ProposedPassword: newUserPassword,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n ClientMetadata: clientMetadata\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n\n /**\n * This is used by an authenticated user to enable MFA for itself\n * @deprecated\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */;\n _proto.enableMFA = function enableMFA(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n var mfaOptions = [];\n var mfaEnabled = {\n DeliveryMedium: 'SMS',\n AttributeName: 'phone_number'\n };\n mfaOptions.push(mfaEnabled);\n this.client.request('SetUserSettings', {\n MFAOptions: mfaOptions,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n\n /**\n * This is used by an authenticated user to enable MFA for itself\n * @param {IMfaSettings} smsMfaSettings the sms mfa settings\n * @param {IMFASettings} softwareTokenMfaSettings the software token mfa settings\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */;\n _proto.setUserMfaPreference = function setUserMfaPreference(smsMfaSettings, softwareTokenMfaSettings, callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n this.client.request('SetUserMFAPreference', {\n SMSMfaSettings: smsMfaSettings,\n SoftwareTokenMfaSettings: softwareTokenMfaSettings,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n\n /**\n * This is used by an authenticated user to disable MFA for itself\n * @deprecated\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */;\n _proto.disableMFA = function disableMFA(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n var mfaOptions = [];\n this.client.request('SetUserSettings', {\n MFAOptions: mfaOptions,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n\n /**\n * This is used by an authenticated user to delete itself\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */;\n _proto.deleteUser = function deleteUser(callback, clientMetadata) {\n var _this9 = this;\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n this.client.request('DeleteUser', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n ClientMetadata: clientMetadata\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n _this9.clearCachedUser();\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n\n /**\n * @typedef {CognitoUserAttribute | { Name:string, Value:string }} AttributeArg\n */\n /**\n * This is used by an authenticated user to change a list of attributes\n * @param {AttributeArg[]} attributes A list of the new user attributes.\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */;\n _proto.updateAttributes = function updateAttributes(attributes, callback, clientMetadata) {\n var _this10 = this;\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n this.client.request('UpdateUserAttributes', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n UserAttributes: attributes,\n ClientMetadata: clientMetadata\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n // update cached user\n return _this10.getUserData(function () {\n return callback(null, 'SUCCESS');\n }, {\n bypassCache: true\n });\n });\n return undefined;\n }\n\n /**\n * This is used by an authenticated user to get a list of attributes\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */;\n _proto.getUserAttributes = function getUserAttributes(callback) {\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n return callback(new Error('User is not authenticated'), null);\n }\n this.client.request('GetUser', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err, userData) {\n if (err) {\n return callback(err, null);\n }\n var attributeList = [];\n for (var i = 0; i < userData.UserAttributes.length; i++) {\n var attribute = {\n Name: userData.UserAttributes[i].Name,\n Value: userData.UserAttributes[i].Value\n };\n var userAttribute = new CognitoUserAttribute(attribute);\n attributeList.push(userAttribute);\n }\n return callback(null, attributeList);\n });\n return undefined;\n }\n\n /**\n * This was previously used by an authenticated user to get MFAOptions,\n * but no longer returns a meaningful response. Refer to the documentation for\n * how to setup and use MFA: https://docs.amplify.aws/lib/auth/mfa/q/platform/js\n * @deprecated\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */;\n _proto.getMFAOptions = function getMFAOptions(callback) {\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n return callback(new Error('User is not authenticated'), null);\n }\n this.client.request('GetUser', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err, userData) {\n if (err) {\n return callback(err, null);\n }\n return callback(null, userData.MFAOptions);\n });\n return undefined;\n }\n\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n */;\n _proto.createGetUserRequest = function createGetUserRequest() {\n return this.client.promisifyRequest('GetUser', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n });\n }\n\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n */;\n _proto.refreshSessionIfPossible = function refreshSessionIfPossible(options) {\n var _this11 = this;\n if (options === void 0) {\n options = {};\n }\n // best effort, if not possible\n return new Promise(function (resolve) {\n var refresh = _this11.signInUserSession.getRefreshToken();\n if (refresh && refresh.getToken()) {\n _this11.refreshSession(refresh, resolve, options.clientMetadata);\n } else {\n resolve();\n }\n });\n }\n\n /**\n * @typedef {Object} GetUserDataOptions\n * @property {boolean} bypassCache - force getting data from Cognito service\n * @property {Record} clientMetadata - clientMetadata for getSession\n */\n\n /**\n * This is used by an authenticated users to get the userData\n * @param {nodeCallback} callback Called on success or error.\n * @param {GetUserDataOptions} params\n * @returns {void}\n */;\n _proto.getUserData = function getUserData(callback, params) {\n var _this12 = this;\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n this.clearCachedUserData();\n return callback(new Error('User is not authenticated'), null);\n }\n var userData = this.getUserDataFromCache();\n if (!userData) {\n this.fetchUserData().then(function (data) {\n callback(null, data);\n })[\"catch\"](callback);\n return;\n }\n if (this.isFetchUserDataAndTokenRequired(params)) {\n this.fetchUserData().then(function (data) {\n return _this12.refreshSessionIfPossible(params).then(function () {\n return data;\n });\n }).then(function (data) {\n return callback(null, data);\n })[\"catch\"](callback);\n return;\n }\n try {\n callback(null, JSON.parse(userData));\n return;\n } catch (err) {\n this.clearCachedUserData();\n callback(err, null);\n return;\n }\n }\n\n /**\n *\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n */;\n _proto.getUserDataFromCache = function getUserDataFromCache() {\n var userData = this.storage.getItem(this.userDataKey);\n return userData;\n }\n\n /**\n *\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n */;\n _proto.isFetchUserDataAndTokenRequired = function isFetchUserDataAndTokenRequired(params) {\n var _ref = params || {},\n _ref$bypassCache = _ref.bypassCache,\n bypassCache = _ref$bypassCache === void 0 ? false : _ref$bypassCache;\n return bypassCache;\n }\n /**\n *\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n */;\n _proto.fetchUserData = function fetchUserData() {\n var _this13 = this;\n return this.createGetUserRequest().then(function (data) {\n _this13.cacheUserData(data);\n return data;\n });\n }\n\n /**\n * This is used by an authenticated user to delete a list of attributes\n * @param {string[]} attributeList Names of the attributes to delete.\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */;\n _proto.deleteAttributes = function deleteAttributes(attributeList, callback) {\n var _this14 = this;\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n return callback(new Error('User is not authenticated'), null);\n }\n this.client.request('DeleteUserAttributes', {\n UserAttributeNames: attributeList,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n // update cached user\n return _this14.getUserData(function () {\n return callback(null, 'SUCCESS');\n }, {\n bypassCache: true\n });\n });\n return undefined;\n }\n\n /**\n * This is used by a user to resend a confirmation code\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */;\n _proto.resendConfirmationCode = function resendConfirmationCode(callback, clientMetadata) {\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n Username: this.username,\n ClientMetadata: clientMetadata\n };\n this.client.request('ResendConfirmationCode', jsonReq, function (err, result) {\n if (err) {\n return callback(err, null);\n }\n return callback(null, result);\n });\n }\n\n /**\n * @typedef {Object} GetSessionOptions\n * @property {Record} clientMetadata - clientMetadata for getSession\n */\n\n /**\n * This is used to get a session, either from the session object\n * or from the local storage, or by using a refresh token\n *\n * @param {nodeCallback} callback Called on success or error.\n * @param {GetSessionOptions} options\n * @returns {void}\n */;\n _proto.getSession = function getSession(callback, options) {\n if (options === void 0) {\n options = {};\n }\n if (this.username == null) {\n return callback(new Error('Username is null. Cannot retrieve a new session'), null);\n }\n if (this.signInUserSession != null && this.signInUserSession.isValid()) {\n return callback(null, this.signInUserSession);\n }\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n var idTokenKey = keyPrefix + \".idToken\";\n var accessTokenKey = keyPrefix + \".accessToken\";\n var refreshTokenKey = keyPrefix + \".refreshToken\";\n var clockDriftKey = keyPrefix + \".clockDrift\";\n if (this.storage.getItem(idTokenKey)) {\n var idToken = new CognitoIdToken({\n IdToken: this.storage.getItem(idTokenKey)\n });\n var accessToken = new CognitoAccessToken({\n AccessToken: this.storage.getItem(accessTokenKey)\n });\n var refreshToken = new CognitoRefreshToken({\n RefreshToken: this.storage.getItem(refreshTokenKey)\n });\n var clockDrift = parseInt(this.storage.getItem(clockDriftKey), 0) || 0;\n var sessionData = {\n IdToken: idToken,\n AccessToken: accessToken,\n RefreshToken: refreshToken,\n ClockDrift: clockDrift\n };\n var cachedSession = new CognitoUserSession(sessionData);\n if (cachedSession.isValid()) {\n this.signInUserSession = cachedSession;\n return callback(null, this.signInUserSession);\n }\n if (!refreshToken.getToken()) {\n return callback(new Error('Cannot retrieve a new session. Please authenticate.'), null);\n }\n this.refreshSession(refreshToken, callback, options.clientMetadata);\n } else {\n callback(new Error('Local storage is missing an ID Token, Please authenticate'), null);\n }\n return undefined;\n }\n\n /**\n * This uses the refreshToken to retrieve a new session\n * @param {CognitoRefreshToken} refreshToken A previous session's refresh token.\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */;\n _proto.refreshSession = function refreshSession(refreshToken, callback, clientMetadata) {\n var _this15 = this;\n var wrappedCallback = this.pool.wrapRefreshSessionCallback ? this.pool.wrapRefreshSessionCallback(callback) : callback;\n var authParameters = {};\n authParameters.REFRESH_TOKEN = refreshToken.getToken();\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n var lastUserKey = keyPrefix + \".LastAuthUser\";\n if (this.storage.getItem(lastUserKey)) {\n this.username = this.storage.getItem(lastUserKey);\n var deviceKeyKey = keyPrefix + \".\" + this.username + \".deviceKey\";\n this.deviceKey = this.storage.getItem(deviceKeyKey);\n authParameters.DEVICE_KEY = this.deviceKey;\n }\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n AuthFlow: 'REFRESH_TOKEN_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata\n };\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n this.client.request('InitiateAuth', jsonReq, function (err, authResult) {\n if (err) {\n if (err.code === 'NotAuthorizedException') {\n _this15.clearCachedUser();\n }\n return wrappedCallback(err, null);\n }\n if (authResult) {\n var authenticationResult = authResult.AuthenticationResult;\n if (!Object.prototype.hasOwnProperty.call(authenticationResult, 'RefreshToken')) {\n authenticationResult.RefreshToken = refreshToken.getToken();\n }\n _this15.signInUserSession = _this15.getCognitoUserSession(authenticationResult);\n _this15.cacheTokens();\n return wrappedCallback(null, _this15.signInUserSession);\n }\n return undefined;\n });\n }\n\n /**\n * This is used to save the session tokens to local storage\n * @returns {void}\n */;\n _proto.cacheTokens = function cacheTokens() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n var idTokenKey = keyPrefix + \".\" + this.username + \".idToken\";\n var accessTokenKey = keyPrefix + \".\" + this.username + \".accessToken\";\n var refreshTokenKey = keyPrefix + \".\" + this.username + \".refreshToken\";\n var clockDriftKey = keyPrefix + \".\" + this.username + \".clockDrift\";\n var lastUserKey = keyPrefix + \".LastAuthUser\";\n this.storage.setItem(idTokenKey, this.signInUserSession.getIdToken().getJwtToken());\n this.storage.setItem(accessTokenKey, this.signInUserSession.getAccessToken().getJwtToken());\n this.storage.setItem(refreshTokenKey, this.signInUserSession.getRefreshToken().getToken());\n this.storage.setItem(clockDriftKey, \"\" + this.signInUserSession.getClockDrift());\n this.storage.setItem(lastUserKey, this.username);\n }\n\n /**\n * This is to cache user data\n */;\n _proto.cacheUserData = function cacheUserData(userData) {\n this.storage.setItem(this.userDataKey, JSON.stringify(userData));\n }\n\n /**\n * This is to remove cached user data\n */;\n _proto.clearCachedUserData = function clearCachedUserData() {\n this.storage.removeItem(this.userDataKey);\n };\n _proto.clearCachedUser = function clearCachedUser() {\n this.clearCachedTokens();\n this.clearCachedUserData();\n }\n\n /**\n * This is used to cache the device key and device group and device password\n * @returns {void}\n */;\n _proto.cacheDeviceKeyAndPassword = function cacheDeviceKeyAndPassword() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n var deviceKeyKey = keyPrefix + \".deviceKey\";\n var randomPasswordKey = keyPrefix + \".randomPasswordKey\";\n var deviceGroupKeyKey = keyPrefix + \".deviceGroupKey\";\n this.storage.setItem(deviceKeyKey, this.deviceKey);\n this.storage.setItem(randomPasswordKey, this.randomPassword);\n this.storage.setItem(deviceGroupKeyKey, this.deviceGroupKey);\n }\n\n /**\n * This is used to get current device key and device group and device password\n * @returns {void}\n */;\n _proto.getCachedDeviceKeyAndPassword = function getCachedDeviceKeyAndPassword() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n var deviceKeyKey = keyPrefix + \".deviceKey\";\n var randomPasswordKey = keyPrefix + \".randomPasswordKey\";\n var deviceGroupKeyKey = keyPrefix + \".deviceGroupKey\";\n if (this.storage.getItem(deviceKeyKey)) {\n this.deviceKey = this.storage.getItem(deviceKeyKey);\n this.randomPassword = this.storage.getItem(randomPasswordKey);\n this.deviceGroupKey = this.storage.getItem(deviceGroupKeyKey);\n }\n }\n\n /**\n * This is used to clear the device key info from local storage\n * @returns {void}\n */;\n _proto.clearCachedDeviceKeyAndPassword = function clearCachedDeviceKeyAndPassword() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n var deviceKeyKey = keyPrefix + \".deviceKey\";\n var randomPasswordKey = keyPrefix + \".randomPasswordKey\";\n var deviceGroupKeyKey = keyPrefix + \".deviceGroupKey\";\n this.storage.removeItem(deviceKeyKey);\n this.storage.removeItem(randomPasswordKey);\n this.storage.removeItem(deviceGroupKeyKey);\n }\n\n /**\n * This is used to clear the session tokens from local storage\n * @returns {void}\n */;\n _proto.clearCachedTokens = function clearCachedTokens() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n var idTokenKey = keyPrefix + \".\" + this.username + \".idToken\";\n var accessTokenKey = keyPrefix + \".\" + this.username + \".accessToken\";\n var refreshTokenKey = keyPrefix + \".\" + this.username + \".refreshToken\";\n var lastUserKey = keyPrefix + \".LastAuthUser\";\n var clockDriftKey = keyPrefix + \".\" + this.username + \".clockDrift\";\n this.storage.removeItem(idTokenKey);\n this.storage.removeItem(accessTokenKey);\n this.storage.removeItem(refreshTokenKey);\n this.storage.removeItem(lastUserKey);\n this.storage.removeItem(clockDriftKey);\n }\n\n /**\n * This is used to build a user session from tokens retrieved in the authentication result\n * @param {object} authResult Successful auth response from server.\n * @returns {CognitoUserSession} The new user session.\n * @private\n */;\n _proto.getCognitoUserSession = function getCognitoUserSession(authResult) {\n var idToken = new CognitoIdToken(authResult);\n var accessToken = new CognitoAccessToken(authResult);\n var refreshToken = new CognitoRefreshToken(authResult);\n var sessionData = {\n IdToken: idToken,\n AccessToken: accessToken,\n RefreshToken: refreshToken\n };\n return new CognitoUserSession(sessionData);\n }\n\n /**\n * This is used to initiate a forgot password request\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {inputVerificationCode?} callback.inputVerificationCode\n * Optional callback raised instead of onSuccess with response data.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */;\n _proto.forgotPassword = function forgotPassword(callback, clientMetadata) {\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n Username: this.username,\n ClientMetadata: clientMetadata\n };\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n this.client.request('ForgotPassword', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n if (typeof callback.inputVerificationCode === 'function') {\n return callback.inputVerificationCode(data);\n }\n return callback.onSuccess(data);\n });\n }\n\n /**\n * This is used to confirm a new password using a confirmationCode\n * @param {string} confirmationCode Code entered by user.\n * @param {string} newPassword Confirm new password.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */;\n _proto.confirmPassword = function confirmPassword(confirmationCode, newPassword, callback, clientMetadata) {\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n Username: this.username,\n ConfirmationCode: confirmationCode,\n Password: newPassword,\n ClientMetadata: clientMetadata\n };\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n this.client.request('ConfirmForgotPassword', jsonReq, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n return callback.onSuccess('SUCCESS');\n });\n }\n\n /**\n * This is used to initiate an attribute confirmation request\n * @param {string} attributeName User attribute that needs confirmation.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {inputVerificationCode} callback.inputVerificationCode Called on success.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */;\n _proto.getAttributeVerificationCode = function getAttributeVerificationCode(attributeName, callback, clientMetadata) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n this.client.request('GetUserAttributeVerificationCode', {\n AttributeName: attributeName,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n ClientMetadata: clientMetadata\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n if (typeof callback.inputVerificationCode === 'function') {\n return callback.inputVerificationCode(data);\n }\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n\n /**\n * This is used to confirm an attribute using a confirmation code\n * @param {string} attributeName Attribute being confirmed.\n * @param {string} confirmationCode Code entered by user.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */;\n _proto.verifyAttribute = function verifyAttribute(attributeName, confirmationCode, callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n this.client.request('VerifyUserAttribute', {\n AttributeName: attributeName,\n Code: confirmationCode,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n\n /**\n * This is used to get the device information using the current device key\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess<*>} callback.onSuccess Called on success with device data.\n * @returns {void}\n */;\n _proto.getDevice = function getDevice(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n this.client.request('GetDevice', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n DeviceKey: this.deviceKey\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n return callback.onSuccess(data);\n });\n return undefined;\n }\n\n /**\n * This is used to forget a specific device\n * @param {string} deviceKey Device key.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */;\n _proto.forgetSpecificDevice = function forgetSpecificDevice(deviceKey, callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n this.client.request('ForgetDevice', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n DeviceKey: deviceKey\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n\n /**\n * This is used to forget the current device\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */;\n _proto.forgetDevice = function forgetDevice(callback) {\n var _this16 = this;\n this.forgetSpecificDevice(this.deviceKey, {\n onFailure: callback.onFailure,\n onSuccess: function onSuccess(result) {\n _this16.deviceKey = null;\n _this16.deviceGroupKey = null;\n _this16.randomPassword = null;\n _this16.clearCachedDeviceKeyAndPassword();\n return callback.onSuccess(result);\n }\n });\n }\n\n /**\n * This is used to set the device status as remembered\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */;\n _proto.setDeviceStatusRemembered = function setDeviceStatusRemembered(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n this.client.request('UpdateDeviceStatus', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n DeviceKey: this.deviceKey,\n DeviceRememberedStatus: 'remembered'\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n\n /**\n * This is used to set the device status as not remembered\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */;\n _proto.setDeviceStatusNotRemembered = function setDeviceStatusNotRemembered(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n this.client.request('UpdateDeviceStatus', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n DeviceKey: this.deviceKey,\n DeviceRememberedStatus: 'not_remembered'\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n\n /**\n * This is used to list all devices for a user\n *\n * @param {int} limit the number of devices returned in a call\n * @param {string | null} paginationToken the pagination token in case any was returned before\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess<*>} callback.onSuccess Called on success with device list.\n * @returns {void}\n */;\n _proto.listDevices = function listDevices(limit, paginationToken, callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n var requestParams = {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n Limit: limit\n };\n if (paginationToken) {\n requestParams.PaginationToken = paginationToken;\n }\n this.client.request('ListDevices', requestParams, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n return callback.onSuccess(data);\n });\n return undefined;\n }\n\n /**\n * This is used to globally revoke all tokens issued to a user\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */;\n _proto.globalSignOut = function globalSignOut(callback) {\n var _this17 = this;\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n this.client.request('GlobalSignOut', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n _this17.clearCachedUser();\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n\n /**\n * This is used for the user to signOut of the application and clear the cached tokens.\n * @returns {void}\n */;\n _proto.signOut = function signOut(revokeTokenCallback) {\n var _this18 = this;\n // If tokens won't be revoked, we just clean the client data.\n if (!revokeTokenCallback || typeof revokeTokenCallback !== 'function') {\n this.cleanClientData();\n return;\n }\n this.getSession(function (error, _session) {\n if (error) {\n return revokeTokenCallback(error);\n }\n _this18.revokeTokens(function (err) {\n _this18.cleanClientData();\n revokeTokenCallback(err);\n });\n });\n };\n _proto.revokeTokens = function revokeTokens(revokeTokenCallback) {\n if (revokeTokenCallback === void 0) {\n revokeTokenCallback = function revokeTokenCallback() {};\n }\n if (typeof revokeTokenCallback !== 'function') {\n throw new Error('Invalid revokeTokenCallback. It should be a function.');\n }\n var tokensToBeRevoked = [];\n if (!this.signInUserSession) {\n var error = new Error('User is not authenticated');\n return revokeTokenCallback(error);\n }\n if (!this.signInUserSession.getAccessToken()) {\n var _error = new Error('No Access token available');\n return revokeTokenCallback(_error);\n }\n var refreshToken = this.signInUserSession.getRefreshToken().getToken();\n var accessToken = this.signInUserSession.getAccessToken();\n if (this.isSessionRevocable(accessToken)) {\n if (refreshToken) {\n return this.revokeToken({\n token: refreshToken,\n callback: revokeTokenCallback\n });\n }\n }\n revokeTokenCallback();\n };\n _proto.isSessionRevocable = function isSessionRevocable(token) {\n if (token && typeof token.decodePayload === 'function') {\n try {\n var _token$decodePayload2 = token.decodePayload(),\n origin_jti = _token$decodePayload2.origin_jti;\n return !!origin_jti;\n } catch (err) {\n // Nothing to do, token doesnt have origin_jti claim\n }\n }\n return false;\n };\n _proto.cleanClientData = function cleanClientData() {\n this.signInUserSession = null;\n this.clearCachedUser();\n };\n _proto.revokeToken = function revokeToken(_ref2) {\n var token = _ref2.token,\n callback = _ref2.callback;\n this.client.requestWithRetry('RevokeToken', {\n Token: token,\n ClientId: this.pool.getClientId()\n }, function (err) {\n if (err) {\n return callback(err);\n }\n callback();\n });\n }\n\n /**\n * This is used by a user trying to select a given MFA\n * @param {string} answerChallenge the mfa the user wants\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */;\n _proto.sendMFASelectionAnswer = function sendMFASelectionAnswer(answerChallenge, callback) {\n var _this19 = this;\n var challengeResponses = {};\n challengeResponses.USERNAME = this.username;\n challengeResponses.ANSWER = answerChallenge;\n var jsonReq = {\n ChallengeName: 'SELECT_MFA_TYPE',\n ChallengeResponses: challengeResponses,\n ClientId: this.pool.getClientId(),\n Session: this.Session\n };\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n this.client.request('RespondToAuthChallenge', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n _this19.Session = data.Session;\n if (answerChallenge === 'SMS_MFA') {\n return callback.mfaRequired(data.ChallengeName, data.ChallengeParameters);\n }\n if (answerChallenge === 'SOFTWARE_TOKEN_MFA') {\n return callback.totpRequired(data.ChallengeName, data.ChallengeParameters);\n }\n return undefined;\n });\n }\n\n /**\n * This returns the user context data for advanced security feature.\n * @returns {string} the user context data from CognitoUserPool\n */;\n _proto.getUserContextData = function getUserContextData() {\n var pool = this.pool;\n return pool.getUserContextData(this.username);\n }\n\n /**\n * This is used by an authenticated or a user trying to authenticate to associate a TOTP MFA\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */;\n _proto.associateSoftwareToken = function associateSoftwareToken(callback) {\n var _this20 = this;\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n this.client.request('AssociateSoftwareToken', {\n Session: this.Session\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n _this20.Session = data.Session;\n return callback.associateSecretCode(data.SecretCode);\n });\n } else {\n this.client.request('AssociateSoftwareToken', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n return callback.associateSecretCode(data.SecretCode);\n });\n }\n }\n\n /**\n * This is used by an authenticated or a user trying to authenticate to verify a TOTP MFA\n * @param {string} totpCode The MFA code entered by the user.\n * @param {string} friendlyDeviceName The device name we are assigning to the device.\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */;\n _proto.verifySoftwareToken = function verifySoftwareToken(totpCode, friendlyDeviceName, callback) {\n var _this21 = this;\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n this.client.request('VerifySoftwareToken', {\n Session: this.Session,\n UserCode: totpCode,\n FriendlyDeviceName: friendlyDeviceName\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n _this21.Session = data.Session;\n var challengeResponses = {};\n challengeResponses.USERNAME = _this21.username;\n var jsonReq = {\n ChallengeName: 'MFA_SETUP',\n ClientId: _this21.pool.getClientId(),\n ChallengeResponses: challengeResponses,\n Session: _this21.Session\n };\n if (_this21.getUserContextData()) {\n jsonReq.UserContextData = _this21.getUserContextData();\n }\n _this21.client.request('RespondToAuthChallenge', jsonReq, function (errRespond, dataRespond) {\n if (errRespond) {\n return callback.onFailure(errRespond);\n }\n _this21.signInUserSession = _this21.getCognitoUserSession(dataRespond.AuthenticationResult);\n _this21.cacheTokens();\n return callback.onSuccess(_this21.signInUserSession);\n });\n return undefined;\n });\n } else {\n this.client.request('VerifySoftwareToken', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n UserCode: totpCode,\n FriendlyDeviceName: friendlyDeviceName\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n return callback.onSuccess(data);\n });\n }\n };\n return CognitoUser;\n}();\nexport { CognitoUser as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { version } from './version';\nvar BASE_USER_AGENT = \"aws-amplify/\" + version;\nexport var Platform = {\n userAgent: BASE_USER_AGENT + \" js\",\n product: '',\n navigator: null,\n isReactNative: false\n};\nif (typeof navigator !== 'undefined' && navigator.product) {\n Platform.product = navigator.product || '';\n Platform.navigator = navigator || null;\n switch (navigator.product) {\n case 'ReactNative':\n Platform.userAgent = BASE_USER_AGENT + \" react-native\";\n Platform.isReactNative = true;\n break;\n default:\n Platform.userAgent = BASE_USER_AGENT + \" js\";\n Platform.isReactNative = false;\n break;\n }\n}\nexport var getUserAgent = function getUserAgent() {\n return Platform.userAgent;\n};\n\n/**\n * @deprecated use named import\n */\nexport default Platform;","import { getUserAgent } from \"./Platform\";\n// constructor\nfunction UserAgent() {}\n// public\nUserAgent.prototype.userAgent = getUserAgent();\nexport var appendToCognitoUserAgent = function appendToCognitoUserAgent(content) {\n if (!content) {\n return;\n }\n if (UserAgent.prototype.userAgent && !UserAgent.prototype.userAgent.includes(content)) {\n UserAgent.prototype.userAgent = UserAgent.prototype.userAgent.concat(' ', content);\n }\n if (!UserAgent.prototype.userAgent || UserAgent.prototype.userAgent === '') {\n UserAgent.prototype.userAgent = content;\n }\n};\n\n// class for defining the amzn user-agent\nexport default UserAgent;","function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport 'isomorphic-unfetch';\nimport UserAgent from './UserAgent';\nvar CognitoError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(CognitoError, _Error);\n function CognitoError(message, code, name, statusCode) {\n var _this;\n _this = _Error.call(this, message) || this;\n _this.code = code;\n _this.name = name;\n _this.statusCode = statusCode;\n return _this;\n }\n return CognitoError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n/** @class */\nvar Client = /*#__PURE__*/function () {\n /**\n * Constructs a new AWS Cognito Identity Provider client object\n * @param {string} region AWS region\n * @param {string} endpoint endpoint\n * @param {object} fetchOptions options for fetch API (only credentials is supported)\n */\n function Client(region, endpoint, fetchOptions) {\n this.endpoint = endpoint || \"https://cognito-idp.\" + region + \".amazonaws.com/\";\n var _ref = fetchOptions || {},\n credentials = _ref.credentials;\n this.fetchOptions = credentials ? {\n credentials: credentials\n } : {};\n }\n\n /**\n * Makes an unauthenticated request on AWS Cognito Identity Provider API\n * using fetch\n * @param {string} operation API operation\n * @param {object} params Input parameters\n * @returns Promise\n */\n var _proto = Client.prototype;\n _proto.promisifyRequest = function promisifyRequest(operation, params) {\n var _this2 = this;\n return new Promise(function (resolve, reject) {\n _this2.request(operation, params, function (err, data) {\n if (err) {\n reject(new CognitoError(err.message, err.code, err.name, err.statusCode));\n } else {\n resolve(data);\n }\n });\n });\n };\n _proto.requestWithRetry = function requestWithRetry(operation, params, callback) {\n var _this3 = this;\n var MAX_DELAY_IN_MILLIS = 5 * 1000;\n jitteredExponentialRetry(function (p) {\n return new Promise(function (res, rej) {\n _this3.request(operation, p, function (error, result) {\n if (error) {\n rej(error);\n } else {\n res(result);\n }\n });\n });\n }, [params], MAX_DELAY_IN_MILLIS).then(function (result) {\n return callback(null, result);\n })[\"catch\"](function (error) {\n return callback(error);\n });\n }\n\n /**\n * Makes an unauthenticated request on AWS Cognito Identity Provider API\n * using fetch\n * @param {string} operation API operation\n * @param {object} params Input parameters\n * @param {function} callback Callback called when a response is returned\n * @returns {void}\n */;\n _proto.request = function request(operation, params, callback) {\n var headers = {\n 'Content-Type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': \"AWSCognitoIdentityProviderService.\" + operation,\n 'X-Amz-User-Agent': UserAgent.prototype.userAgent,\n 'Cache-Control': 'no-store'\n };\n var options = Object.assign({}, this.fetchOptions, {\n headers: headers,\n method: 'POST',\n mode: 'cors',\n body: JSON.stringify(params)\n });\n var response;\n var responseJsonData;\n fetch(this.endpoint, options).then(function (resp) {\n response = resp;\n return resp;\n }, function (err) {\n // If error happens here, the request failed\n // if it is TypeError throw network error\n if (err instanceof TypeError) {\n throw new Error('Network error');\n }\n throw err;\n }).then(function (resp) {\n return resp.json()[\"catch\"](function () {\n return {};\n });\n }).then(function (data) {\n // return parsed body stream\n if (response.ok) return callback(null, data);\n responseJsonData = data;\n\n // Taken from aws-sdk-js/lib/protocol/json.js\n // eslint-disable-next-line no-underscore-dangle\n var code = (data.__type || data.code).split('#').pop();\n var error = new Error(data.message || data.Message || null);\n error.name = code;\n error.code = code;\n return callback(error);\n })[\"catch\"](function (err) {\n // first check if we have a service error\n if (response && response.headers && response.headers.get('x-amzn-errortype')) {\n try {\n var code = response.headers.get('x-amzn-errortype').split(':')[0];\n var error = new Error(response.status ? response.status.toString() : null);\n error.code = code;\n error.name = code;\n error.statusCode = response.status;\n return callback(error);\n } catch (ex) {\n return callback(err);\n }\n // otherwise check if error is Network error\n } else if (err instanceof Error && err.message === 'Network error') {\n err.code = 'NetworkError';\n }\n return callback(err);\n });\n };\n return Client;\n}();\nexport { Client as default };\nvar logger = {\n debug: function debug() {\n // Intentionally blank. This package doesn't have logging\n }\n};\n\n/**\n * For now, all errors are retryable.\n */\nvar NonRetryableError = /*#__PURE__*/function (_Error2) {\n _inheritsLoose(NonRetryableError, _Error2);\n function NonRetryableError(message) {\n var _this4;\n _this4 = _Error2.call(this, message) || this;\n _this4.nonRetryable = true;\n return _this4;\n }\n return NonRetryableError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nvar isNonRetryableError = function isNonRetryableError(obj) {\n var key = 'nonRetryable';\n return obj && obj[key];\n};\nfunction retry(functionToRetry, args, delayFn, attempt) {\n if (attempt === void 0) {\n attempt = 1;\n }\n if (typeof functionToRetry !== 'function') {\n throw Error('functionToRetry must be a function');\n }\n logger.debug(functionToRetry.name + \" attempt #\" + attempt + \" with args: \" + JSON.stringify(args));\n return functionToRetry.apply(void 0, args)[\"catch\"](function (err) {\n logger.debug(\"error on \" + functionToRetry.name, err);\n if (isNonRetryableError(err)) {\n logger.debug(functionToRetry.name + \" non retryable error\", err);\n throw err;\n }\n var retryIn = delayFn(attempt, args, err);\n logger.debug(functionToRetry.name + \" retrying in \" + retryIn + \" ms\");\n if (retryIn !== false) {\n return new Promise(function (res) {\n return setTimeout(res, retryIn);\n }).then(function () {\n return retry(functionToRetry, args, delayFn, attempt + 1);\n });\n } else {\n throw err;\n }\n });\n}\nfunction jitteredBackoff(maxDelayMs) {\n var BASE_TIME_MS = 100;\n var JITTER_FACTOR = 100;\n return function (attempt) {\n var delay = Math.pow(2, attempt) * BASE_TIME_MS + JITTER_FACTOR * Math.random();\n return delay > maxDelayMs ? false : delay;\n };\n}\nvar MAX_DELAY_MS = 5 * 60 * 1000;\nfunction jitteredExponentialRetry(functionToRetry, args, maxDelayMs) {\n if (maxDelayMs === void 0) {\n maxDelayMs = MAX_DELAY_MS;\n }\n return retry(functionToRetry, args, jitteredBackoff(maxDelayMs));\n}","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport Client from './Client';\nimport CognitoUser from './CognitoUser';\nimport StorageHelper from './StorageHelper';\nvar USER_POOL_ID_MAX_LENGTH = 55;\n\n/** @class */\nvar CognitoUserPool = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoUserPool object\n * @param {object} data Creation options.\n * @param {string} data.UserPoolId Cognito user pool id.\n * @param {string} data.ClientId User pool application client id.\n * @param {string} data.endpoint Optional custom service endpoint.\n * @param {object} data.fetchOptions Optional options for fetch API.\n * (only credentials option is supported)\n * @param {object} data.Storage Optional storage object.\n * @param {boolean} data.AdvancedSecurityDataCollectionFlag Optional:\n * boolean flag indicating if the data collection is enabled\n * to support cognito advanced security features. By default, this\n * flag is set to true.\n */\n function CognitoUserPool(data, wrapRefreshSessionCallback) {\n var _ref = data || {},\n UserPoolId = _ref.UserPoolId,\n ClientId = _ref.ClientId,\n endpoint = _ref.endpoint,\n fetchOptions = _ref.fetchOptions,\n AdvancedSecurityDataCollectionFlag = _ref.AdvancedSecurityDataCollectionFlag;\n if (!UserPoolId || !ClientId) {\n throw new Error('Both UserPoolId and ClientId are required.');\n }\n if (UserPoolId.length > USER_POOL_ID_MAX_LENGTH || !/^[\\w-]+_[0-9a-zA-Z]+$/.test(UserPoolId)) {\n throw new Error('Invalid UserPoolId format.');\n }\n var region = UserPoolId.split('_')[0];\n this.userPoolId = UserPoolId;\n this.clientId = ClientId;\n this.client = new Client(region, endpoint, fetchOptions);\n\n /**\n * By default, AdvancedSecurityDataCollectionFlag is set to true,\n * if no input value is provided.\n */\n this.advancedSecurityDataCollectionFlag = AdvancedSecurityDataCollectionFlag !== false;\n this.storage = data.Storage || new StorageHelper().getStorage();\n if (wrapRefreshSessionCallback) {\n this.wrapRefreshSessionCallback = wrapRefreshSessionCallback;\n }\n }\n\n /**\n * @returns {string} the user pool id\n */\n var _proto = CognitoUserPool.prototype;\n _proto.getUserPoolId = function getUserPoolId() {\n return this.userPoolId;\n }\n\n /**\n * @returns {string} the user pool name\n */;\n _proto.getUserPoolName = function getUserPoolName() {\n return this.getUserPoolId().split('_')[1];\n }\n\n /**\n * @returns {string} the client id\n */;\n _proto.getClientId = function getClientId() {\n return this.clientId;\n }\n\n /**\n * @typedef {object} SignUpResult\n * @property {CognitoUser} user New user.\n * @property {bool} userConfirmed If the user is already confirmed.\n */\n /**\n * method for signing up a user\n * @param {string} username User's username.\n * @param {string} password Plain-text initial password entered by user.\n * @param {(AttributeArg[])=} userAttributes New user attributes.\n * @param {(AttributeArg[])=} validationData Application metadata.\n * @param {(AttributeArg[])=} clientMetadata Client metadata.\n * @param {nodeCallback} callback Called on error or with the new user.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */;\n _proto.signUp = function signUp(username, password, userAttributes, validationData, callback, clientMetadata) {\n var _this = this;\n var jsonReq = {\n ClientId: this.clientId,\n Username: username,\n Password: password,\n UserAttributes: userAttributes,\n ValidationData: validationData,\n ClientMetadata: clientMetadata\n };\n if (this.getUserContextData(username)) {\n jsonReq.UserContextData = this.getUserContextData(username);\n }\n this.client.request('SignUp', jsonReq, function (err, data) {\n if (err) {\n return callback(err, null);\n }\n var cognitoUser = {\n Username: username,\n Pool: _this,\n Storage: _this.storage\n };\n var returnData = {\n user: new CognitoUser(cognitoUser),\n userConfirmed: data.UserConfirmed,\n userSub: data.UserSub,\n codeDeliveryDetails: data.CodeDeliveryDetails\n };\n return callback(null, returnData);\n });\n }\n\n /**\n * method for getting the current user of the application from the local storage\n *\n * @returns {CognitoUser} the user retrieved from storage\n */;\n _proto.getCurrentUser = function getCurrentUser() {\n var lastUserKey = \"CognitoIdentityServiceProvider.\" + this.clientId + \".LastAuthUser\";\n var lastAuthUser = this.storage.getItem(lastUserKey);\n if (lastAuthUser) {\n var cognitoUser = {\n Username: lastAuthUser,\n Pool: this,\n Storage: this.storage\n };\n return new CognitoUser(cognitoUser);\n }\n return null;\n }\n\n /**\n * This method returns the encoded data string used for cognito advanced security feature.\n * This would be generated only when developer has included the JS used for collecting the\n * data on their client. Please refer to documentation to know more about using AdvancedSecurity\n * features\n * @param {string} username the username for the context data\n * @returns {string} the user context data\n **/;\n _proto.getUserContextData = function getUserContextData(username) {\n if (typeof AmazonCognitoAdvancedSecurityData === 'undefined') {\n return undefined;\n }\n /* eslint-disable */\n var amazonCognitoAdvancedSecurityDataConst = AmazonCognitoAdvancedSecurityData;\n /* eslint-enable */\n\n if (this.advancedSecurityDataCollectionFlag) {\n var advancedSecurityData = amazonCognitoAdvancedSecurityDataConst.getData(username, this.userPoolId, this.clientId);\n if (advancedSecurityData) {\n var userContextData = {\n EncodedData: advancedSecurityData\n };\n return userContextData;\n }\n }\n return {};\n };\n return CognitoUserPool;\n}();\nexport { CognitoUserPool as default };","import * as Cookies from 'js-cookie';\n\n/** @class */\nvar CookieStorage = /*#__PURE__*/function () {\n /**\n * Constructs a new CookieStorage object\n * @param {object} data Creation options.\n * @param {string} data.domain Cookies domain (mandatory).\n * @param {string} data.path Cookies path (default: '/')\n * @param {integer} data.expires Cookie expiration (in days, default: 365)\n * @param {boolean} data.secure Cookie secure flag (default: true)\n * @param {string} data.sameSite Cookie request behaviour (default: null)\n */\n function CookieStorage(data) {\n if (data.domain) {\n this.domain = data.domain;\n } else {\n throw new Error('The domain of cookieStorage can not be undefined.');\n }\n if (data.path) {\n this.path = data.path;\n } else {\n this.path = '/';\n }\n if (Object.prototype.hasOwnProperty.call(data, 'expires')) {\n this.expires = data.expires;\n } else {\n this.expires = 365;\n }\n if (Object.prototype.hasOwnProperty.call(data, 'secure')) {\n this.secure = data.secure;\n } else {\n this.secure = true;\n }\n if (Object.prototype.hasOwnProperty.call(data, 'sameSite')) {\n if (!['strict', 'lax', 'none'].includes(data.sameSite)) {\n throw new Error('The sameSite value of cookieStorage must be \"lax\", \"strict\" or \"none\".');\n }\n if (data.sameSite === 'none' && !this.secure) {\n throw new Error('sameSite = None requires the Secure attribute in latest browser versions.');\n }\n this.sameSite = data.sameSite;\n } else {\n this.sameSite = null;\n }\n }\n\n /**\n * This is used to set a specific item in storage\n * @param {string} key - the key for the item\n * @param {object} value - the value\n * @returns {string} value that was set\n */\n var _proto = CookieStorage.prototype;\n _proto.setItem = function setItem(key, value) {\n var options = {\n path: this.path,\n expires: this.expires,\n domain: this.domain,\n secure: this.secure\n };\n if (this.sameSite) {\n options.sameSite = this.sameSite;\n }\n Cookies.set(key, value, options);\n return Cookies.get(key);\n }\n\n /**\n * This is used to get a specific key from storage\n * @param {string} key - the key for the item\n * This is used to clear the storage\n * @returns {string} the data item\n */;\n _proto.getItem = function getItem(key) {\n return Cookies.get(key);\n }\n\n /**\n * This is used to remove an item from storage\n * @param {string} key - the key being set\n * @returns {string} value - value that was deleted\n */;\n _proto.removeItem = function removeItem(key) {\n var options = {\n path: this.path,\n expires: this.expires,\n domain: this.domain,\n secure: this.secure\n };\n if (this.sameSite) {\n options.sameSite = this.sameSite;\n }\n return Cookies.remove(key, options);\n }\n\n /**\n * This is used to clear the storage of optional\n * items that were previously set\n * @returns {} an empty object\n */;\n _proto.clear = function clear() {\n var cookies = Cookies.get();\n var numKeys = Object.keys(cookies).length;\n for (var index = 0; index < numKeys; ++index) {\n this.removeItem(Object.keys(cookies)[index]);\n }\n return {};\n };\n return CookieStorage;\n}();\nexport { CookieStorage as default };","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nconst SELF = '_self';\n\nexport const launchUri = (url: string) => {\n\tconst windowProxy = window.open(url, SELF);\n\tif (windowProxy) {\n\t\treturn Promise.resolve(windowProxy);\n\t} else {\n\t\treturn Promise.reject();\n\t}\n};\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport { parse } from 'url'; // Used for OAuth parsing of Cognito Hosted UI\nimport { launchUri } from './urlOpener';\nimport * as oAuthStorage from './oauthStorage';\n\nimport {\n\tOAuthOpts,\n\tisCognitoHostedOpts,\n\tCognitoHostedUIIdentityProvider,\n} from '../types/Auth';\n\nimport { ConsoleLogger as Logger, Hub, urlSafeEncode } from '@aws-amplify/core';\n\nimport sha256 from 'crypto-js/sha256';\nimport Base64 from 'crypto-js/enc-base64';\n\nconst AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' &&\ntypeof Symbol.for === 'function'\n\t? Symbol.for('amplify_default')\n\t: '@@amplify_default') as Symbol;\n\nconst dispatchAuthEvent = (event: string, data: any, message: string) => {\n\tHub.dispatch('auth', { event, data, message }, 'Auth', AMPLIFY_SYMBOL);\n};\n\nconst logger = new Logger('OAuth');\n\nexport default class OAuth {\n\tprivate _urlOpener;\n\tprivate _config;\n\tprivate _cognitoClientId;\n\tprivate _scopes;\n\n\tconstructor({\n\t\tconfig,\n\t\tcognitoClientId,\n\t\tscopes = [],\n\t}: {\n\t\tscopes: string[];\n\t\tconfig: OAuthOpts;\n\t\tcognitoClientId: string;\n\t}) {\n\t\tthis._urlOpener = config.urlOpener || launchUri;\n\t\tthis._config = config;\n\t\tthis._cognitoClientId = cognitoClientId;\n\n\t\tif (!this.isValidScopes(scopes))\n\t\t\tthrow Error('scopes must be a String Array');\n\t\tthis._scopes = scopes;\n\t}\n\n\tprivate isValidScopes(scopes: string[]) {\n\t\treturn (\n\t\t\tArray.isArray(scopes) && scopes.every(scope => typeof scope === 'string')\n\t\t);\n\t}\n\n\tpublic oauthSignIn(\n\t\tresponseType = 'code',\n\t\tdomain: string,\n\t\tredirectSignIn: string,\n\t\tclientId: string,\n\t\tprovider:\n\t\t\t| CognitoHostedUIIdentityProvider\n\t\t\t| string = CognitoHostedUIIdentityProvider.Cognito,\n\t\tcustomState?: string\n\t) {\n\t\tconst generatedState = this._generateState(32);\n\n\t\t/* encodeURIComponent is not URL safe, use urlSafeEncode instead. Cognito \n\t\tsingle-encodes/decodes url on first sign in and double-encodes/decodes url\n\t\twhen user already signed in. Using encodeURIComponent, Base32, Base64 add \n\t\tcharacters % or = which on further encoding becomes unsafe. '=' create issue \n\t\tfor parsing query params. \n\t\tRefer: https://github.com/aws-amplify/amplify-js/issues/5218 */\n\t\tconst state = customState\n\t\t\t? `${generatedState}-${urlSafeEncode(customState)}`\n\t\t\t: generatedState;\n\n\t\toAuthStorage.setState(state);\n\n\t\tconst pkce_key = this._generateRandom(128);\n\t\toAuthStorage.setPKCE(pkce_key);\n\n\t\tconst code_challenge = this._generateChallenge(pkce_key);\n\t\tconst code_challenge_method = 'S256';\n\n\t\tconst scopesString = this._scopes.join(' ');\n\n\t\tconst queryString = Object.entries({\n\t\t\tredirect_uri: redirectSignIn,\n\t\t\tresponse_type: responseType,\n\t\t\tclient_id: clientId,\n\t\t\tidentity_provider: provider,\n\t\t\tscope: scopesString,\n\t\t\tstate,\n\t\t\t...(responseType === 'code' ? { code_challenge } : {}),\n\t\t\t...(responseType === 'code' ? { code_challenge_method } : {}),\n\t\t})\n\t\t\t.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)\n\t\t\t.join('&');\n\n\t\tconst URL = `https://${domain}/oauth2/authorize?${queryString}`;\n\t\tlogger.debug(`Redirecting to ${URL}`);\n\t\tthis._urlOpener(URL, redirectSignIn);\n\t}\n\n\tprivate async _handleCodeFlow(currentUrl: string) {\n\t\t/* Convert URL into an object with parameters as keys\n { redirect_uri: 'http://localhost:3000/', response_type: 'code', ...} */\n\t\tconst { code } = (parse(currentUrl).query || '')\n\t\t\t.split('&')\n\t\t\t.map(pairings => pairings.split('='))\n\t\t\t.reduce((accum, [k, v]) => ({ ...accum, [k]: v }), { code: undefined });\n\n\t\tconst currentUrlPathname = parse(currentUrl).pathname || '/';\n\t\tconst redirectSignInPathname =\n\t\t\tparse(this._config.redirectSignIn).pathname || '/';\n\n\t\tif (!code || currentUrlPathname !== redirectSignInPathname) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst oAuthTokenEndpoint =\n\t\t\t'https://' + this._config.domain + '/oauth2/token';\n\n\t\tdispatchAuthEvent(\n\t\t\t'codeFlow',\n\t\t\t{},\n\t\t\t`Retrieving tokens from ${oAuthTokenEndpoint}`\n\t\t);\n\n\t\tconst client_id = isCognitoHostedOpts(this._config)\n\t\t\t? this._cognitoClientId\n\t\t\t: this._config.clientID;\n\n\t\tconst redirect_uri = isCognitoHostedOpts(this._config)\n\t\t\t? this._config.redirectSignIn\n\t\t\t: this._config.redirectUri;\n\n\t\tconst code_verifier = oAuthStorage.getPKCE();\n\n\t\tconst oAuthTokenBody = {\n\t\t\tgrant_type: 'authorization_code',\n\t\t\tcode,\n\t\t\tclient_id,\n\t\t\tredirect_uri,\n\t\t\t...(code_verifier ? { code_verifier } : {}),\n\t\t};\n\n\t\tlogger.debug(\n\t\t\t`Calling token endpoint: ${oAuthTokenEndpoint} with`,\n\t\t\toAuthTokenBody\n\t\t);\n\n\t\tconst body = Object.entries(oAuthTokenBody)\n\t\t\t.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)\n\t\t\t.join('&');\n\n\t\tconst {\n\t\t\taccess_token,\n\t\t\trefresh_token,\n\t\t\tid_token,\n\t\t\terror,\n\t\t} = await ((await fetch(oAuthTokenEndpoint, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded',\n\t\t\t},\n\t\t\tbody,\n\t\t})) as any).json();\n\n\t\tif (error) {\n\t\t\tthrow new Error(error);\n\t\t}\n\n\t\treturn {\n\t\t\taccessToken: access_token,\n\t\t\trefreshToken: refresh_token,\n\t\t\tidToken: id_token,\n\t\t};\n\t}\n\n\tprivate async _handleImplicitFlow(currentUrl: string) {\n\t\t// hash is `null` if `#` doesn't exist on URL\n\t\tconst { id_token, access_token } = (parse(currentUrl).hash || '#')\n\t\t\t.substr(1) // Remove # from returned code\n\t\t\t.split('&')\n\t\t\t.map(pairings => pairings.split('='))\n\t\t\t.reduce((accum, [k, v]) => ({ ...accum, [k]: v }), {\n\t\t\t\tid_token: undefined,\n\t\t\t\taccess_token: undefined,\n\t\t\t});\n\n\t\tdispatchAuthEvent('implicitFlow', {}, `Got tokens from ${currentUrl}`);\n\t\tlogger.debug(`Retrieving implicit tokens from ${currentUrl} with`);\n\n\t\treturn {\n\t\t\taccessToken: access_token,\n\t\t\tidToken: id_token,\n\t\t\trefreshToken: null,\n\t\t};\n\t}\n\n\tpublic async handleAuthResponse(currentUrl?: string) {\n\t\ttry {\n\t\t\tconst urlParams = currentUrl\n\t\t\t\t? ({\n\t\t\t\t\t\t...(parse(currentUrl).hash || '#')\n\t\t\t\t\t\t\t.substr(1)\n\t\t\t\t\t\t\t.split('&')\n\t\t\t\t\t\t\t.map(entry => entry.split('='))\n\t\t\t\t\t\t\t.reduce((acc, [k, v]) => ((acc[k] = v), acc), {}),\n\t\t\t\t\t\t...(parse(currentUrl).query || '')\n\t\t\t\t\t\t\t.split('&')\n\t\t\t\t\t\t\t.map(entry => entry.split('='))\n\t\t\t\t\t\t\t.reduce((acc, [k, v]) => ((acc[k] = v), acc), {}),\n\t\t\t\t } as any)\n\t\t\t\t: {};\n\t\t\tconst { error, error_description } = urlParams;\n\n\t\t\tif (error) {\n\t\t\t\tthrow new Error(error_description);\n\t\t\t}\n\n\t\t\tconst state: string = this._validateState(urlParams);\n\n\t\t\tlogger.debug(\n\t\t\t\t`Starting ${this._config.responseType} flow with ${currentUrl}`\n\t\t\t);\n\t\t\tif (this._config.responseType === 'code') {\n\t\t\t\treturn { ...(await this._handleCodeFlow(currentUrl)), state };\n\t\t\t} else {\n\t\t\t\treturn { ...(await this._handleImplicitFlow(currentUrl)), state };\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tlogger.error(`Error handling auth response.`, e);\n\t\t\tthrow e;\n\t\t}\n\t}\n\n\tprivate _validateState(urlParams: any): string {\n\t\tif (!urlParams) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst savedState = oAuthStorage.getState();\n\t\tconst { state: returnedState } = urlParams;\n\n\t\t// This is because savedState only exists if the flow was initiated by Amplify\n\t\tif (savedState && savedState !== returnedState) {\n\t\t\tthrow new Error('Invalid state in OAuth flow');\n\t\t}\n\t\treturn returnedState;\n\t}\n\n\tpublic async signOut() {\n\t\tlet oAuthLogoutEndpoint = 'https://' + this._config.domain + '/logout?';\n\n\t\tconst client_id = isCognitoHostedOpts(this._config)\n\t\t\t? this._cognitoClientId\n\t\t\t: this._config.oauth.clientID;\n\n\t\tconst signout_uri = isCognitoHostedOpts(this._config)\n\t\t\t? this._config.redirectSignOut\n\t\t\t: this._config.returnTo;\n\n\t\toAuthLogoutEndpoint += Object.entries({\n\t\t\tclient_id,\n\t\t\tlogout_uri: encodeURIComponent(signout_uri),\n\t\t})\n\t\t\t.map(([k, v]) => `${k}=${v}`)\n\t\t\t.join('&');\n\n\t\tdispatchAuthEvent(\n\t\t\t'oAuthSignOut',\n\t\t\t{ oAuth: 'signOut' },\n\t\t\t`Signing out from ${oAuthLogoutEndpoint}`\n\t\t);\n\t\tlogger.debug(`Signing out from ${oAuthLogoutEndpoint}`);\n\n\t\treturn this._urlOpener(oAuthLogoutEndpoint, signout_uri);\n\t}\n\n\tprivate _generateState(length: number) {\n\t\tlet result = '';\n\t\tlet i = length;\n\t\tconst chars =\n\t\t\t'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\t\tfor (; i > 0; --i)\n\t\t\tresult += chars[Math.round(Math.random() * (chars.length - 1))];\n\t\treturn result;\n\t}\n\n\tprivate _generateChallenge(code: string) {\n\t\treturn this._base64URL(sha256(code));\n\t}\n\n\tprivate _base64URL(string) {\n\t\treturn string\n\t\t\t.toString(Base64)\n\t\t\t.replace(/=/g, '')\n\t\t\t.replace(/\\+/g, '-')\n\t\t\t.replace(/\\//g, '_');\n\t}\n\n\tprivate _generateRandom(size: number) {\n\t\tconst CHARSET =\n\t\t\t'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~';\n\t\tconst buffer = new Uint8Array(size);\n\t\tif (typeof window !== 'undefined' && !!window.crypto) {\n\t\t\twindow.crypto.getRandomValues(buffer);\n\t\t} else {\n\t\t\tfor (let i = 0; i < size; i += 1) {\n\t\t\t\tbuffer[i] = (Math.random() * CHARSET.length) | 0;\n\t\t\t}\n\t\t}\n\t\treturn this._bufferToString(buffer);\n\t}\n\n\tprivate _bufferToString(buffer: Uint8Array) {\n\t\tconst CHARSET =\n\t\t\t'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\t\tconst state = [];\n\t\tfor (let i = 0; i < buffer.byteLength; i += 1) {\n\t\t\tconst index = buffer[i] % CHARSET.length;\n\t\t\tstate.push(CHARSET[index]);\n\t\t}\n\t\treturn state.join('');\n\t}\n}\n","export function urlSafeEncode(str: string) {\n\treturn str\n\t\t.split('')\n\t\t.map(char =>\n\t\t\tchar\n\t\t\t\t.charCodeAt(0)\n\t\t\t\t.toString(16)\n\t\t\t\t.padStart(2, '0')\n\t\t)\n\t\t.join('');\n}\n\nexport function urlSafeDecode(hex: string) {\n\treturn hex\n\t\t.match(/.{2}/g)\n\t\t.map(char => String.fromCharCode(parseInt(char, 16)))\n\t\t.join('');\n}\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nexport const setState = (state: string) => {\n\twindow.sessionStorage.setItem('oauth_state', state);\n};\n\nexport const getState = () => {\n\tconst oauth_state = window.sessionStorage.getItem('oauth_state');\n\twindow.sessionStorage.removeItem('oauth_state');\n\treturn oauth_state;\n};\n\nexport const setPKCE = (private_key: string) => {\n\twindow.sessionStorage.setItem('ouath_pkce_key', private_key);\n};\n\nexport const getPKCE = () => {\n\tconst ouath_pkce_key = window.sessionStorage.getItem('ouath_pkce_key');\n\twindow.sessionStorage.removeItem('ouath_pkce_key');\n\treturn ouath_pkce_key;\n};\n\nexport const clearAll = () => {\n\twindow.sessionStorage.removeItem('ouath_pkce_key');\n\twindow.sessionStorage.removeItem('oauth_state');\n};\n","export enum AuthErrorStrings {\n\tDEFAULT_MSG = 'Authentication Error',\n\tEMPTY_EMAIL = 'Email cannot be empty',\n\tEMPTY_PHONE = 'Phone number cannot be empty',\n\tEMPTY_USERNAME = 'Username cannot be empty',\n\tINVALID_USERNAME = 'The username should either be a string or one of the sign in types',\n\tEMPTY_PASSWORD = 'Password cannot be empty',\n\tEMPTY_CODE = 'Confirmation code cannot be empty',\n\tSIGN_UP_ERROR = 'Error creating account',\n\tNO_MFA = 'No valid MFA method provided',\n\tINVALID_MFA = 'Invalid MFA type',\n\tEMPTY_CHALLENGE = 'Challenge response cannot be empty',\n\tNO_USER_SESSION = 'Failed to get the session because the user is empty',\n\tNETWORK_ERROR = 'Network Error',\n\tDEVICE_CONFIG = 'Device tracking has not been configured in this User Pool',\n\tAUTOSIGNIN_ERROR = 'Please use your credentials to sign in',\n}\n","/*\n * Copyright 2019-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport { AuthErrorMessages, AuthErrorTypes } from './types';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nimport { AuthErrorStrings } from './common/AuthErrorStrings';\n\nconst logger = new Logger('AuthError');\n\nexport class AuthError extends Error {\n\tpublic log: string;\n\tconstructor(type: AuthErrorTypes) {\n\t\tconst { message, log } = authErrorMessages[type];\n\t\tsuper(message);\n\n\t\t// Hack for making the custom error class work when transpiled to es5\n\t\t// TODO: Delete the following 2 lines after we change the build target to >= es2015\n\t\tthis.constructor = AuthError;\n\t\tObject.setPrototypeOf(this, AuthError.prototype);\n\n\t\tthis.name = 'AuthError';\n\t\tthis.log = log || message;\n\n\t\tlogger.error(this.log);\n\t}\n}\n\nexport class NoUserPoolError extends AuthError {\n\tconstructor(type: AuthErrorTypes) {\n\t\tsuper(type);\n\n\t\t// Hack for making the custom error class work when transpiled to es5\n\t\t// TODO: Delete the following 2 lines after we change the build target to >= es2015\n\t\tthis.constructor = NoUserPoolError;\n\t\tObject.setPrototypeOf(this, NoUserPoolError.prototype);\n\n\t\tthis.name = 'NoUserPoolError';\n\t}\n}\n\nexport const authErrorMessages: AuthErrorMessages = {\n\tnoConfig: {\n\t\tmessage: AuthErrorStrings.DEFAULT_MSG,\n\t\tlog: `\n Error: Amplify has not been configured correctly.\n This error is typically caused by one of the following scenarios:\n\n 1. Make sure you're passing the awsconfig object to Amplify.configure() in your app's entry point\n See https://aws-amplify.github.io/docs/js/authentication#configure-your-app for more information\n \n 2. There might be multiple conflicting versions of amplify packages in your node_modules.\n\t\t\t\tRefer to our docs site for help upgrading Amplify packages (https://docs.amplify.aws/lib/troubleshooting/upgrading/q/platform/js)\n `,\n\t},\n\tmissingAuthConfig: {\n\t\tmessage: AuthErrorStrings.DEFAULT_MSG,\n\t\tlog: `\n Error: Amplify has not been configured correctly. \n The configuration object is missing required auth properties.\n This error is typically caused by one of the following scenarios:\n\n 1. Did you run \\`amplify push\\` after adding auth via \\`amplify add auth\\`?\n See https://aws-amplify.github.io/docs/js/authentication#amplify-project-setup for more information\n\n 2. This could also be caused by multiple conflicting versions of amplify packages, see (https://docs.amplify.aws/lib/troubleshooting/upgrading/q/platform/js) for help upgrading Amplify packages.\n `,\n\t},\n\temptyUsername: {\n\t\tmessage: AuthErrorStrings.EMPTY_USERNAME,\n\t},\n\t// TODO: should include a list of valid sign-in types\n\tinvalidUsername: {\n\t\tmessage: AuthErrorStrings.INVALID_USERNAME,\n\t},\n\temptyPassword: {\n\t\tmessage: AuthErrorStrings.EMPTY_PASSWORD,\n\t},\n\temptyCode: {\n\t\tmessage: AuthErrorStrings.EMPTY_CODE,\n\t},\n\tsignUpError: {\n\t\tmessage: AuthErrorStrings.SIGN_UP_ERROR,\n\t\tlog: 'The first parameter should either be non-null string or object',\n\t},\n\tnoMFA: {\n\t\tmessage: AuthErrorStrings.NO_MFA,\n\t},\n\tinvalidMFA: {\n\t\tmessage: AuthErrorStrings.INVALID_MFA,\n\t},\n\temptyChallengeResponse: {\n\t\tmessage: AuthErrorStrings.EMPTY_CHALLENGE,\n\t},\n\tnoUserSession: {\n\t\tmessage: AuthErrorStrings.NO_USER_SESSION,\n\t},\n\tdeviceConfig: {\n\t\tmessage: AuthErrorStrings.DEVICE_CONFIG,\n\t},\n\tnetworkError: {\n\t\tmessage: AuthErrorStrings.NETWORK_ERROR,\n\t},\n\tautoSignInError: {\n\t\tmessage: AuthErrorStrings.AUTOSIGNIN_ERROR,\n\t},\n\tdefault: {\n\t\tmessage: AuthErrorStrings.DEFAULT_MSG,\n\t},\n};\n","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n *\t http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport {\n\tAuthOptions,\n\tFederatedResponse,\n\tSignUpParams,\n\tFederatedUser,\n\tConfirmSignUpOptions,\n\tSignOutOpts,\n\tCurrentUserOpts,\n\tGetPreferredMFAOpts,\n\tSignInOpts,\n\tisUsernamePasswordOpts,\n\tisCognitoHostedOpts,\n\tisFederatedSignInOptions,\n\tisFederatedSignInOptionsCustom,\n\thasCustomState,\n\tFederatedSignInOptionsCustom,\n\tLegacyProvider,\n\tFederatedSignInOptions,\n\tAwsCognitoOAuthOpts,\n\tClientMetaData,\n} from './types';\n\nimport {\n\tAmplify,\n\tConsoleLogger as Logger,\n\tCredentials,\n\tHub,\n\tStorageHelper,\n\tICredentials,\n\tParser,\n\tbrowserOrNode,\n\tUniversalStorage,\n\turlSafeDecode,\n\tHubCallback,\n} from '@aws-amplify/core';\nimport {\n\tCookieStorage,\n\tCognitoUserPool,\n\tAuthenticationDetails,\n\tICognitoUserPoolData,\n\tICognitoUserData,\n\tISignUpResult,\n\tCognitoUser,\n\tMFAOption,\n\tCognitoUserSession,\n\tIAuthenticationCallback,\n\tICognitoUserAttributeData,\n\tCognitoUserAttribute,\n\tCognitoIdToken,\n\tCognitoRefreshToken,\n\tCognitoAccessToken,\n\tNodeCallback,\n} from 'amazon-cognito-identity-js';\n\nimport { parse } from 'url';\nimport OAuth from './OAuth/OAuth';\nimport { default as urlListener } from './urlListener';\nimport { AuthError, NoUserPoolError } from './Errors';\nimport {\n\tAuthErrorTypes,\n\tAutoSignInOptions,\n\tCognitoHostedUIIdentityProvider,\n\tIAuthDevice,\n} from './types/Auth';\n\nconst logger = new Logger('AuthClass');\nconst USER_ADMIN_SCOPE = 'aws.cognito.signin.user.admin';\n\n// 10 sec, following this guide https://www.nngroup.com/articles/response-times-3-important-limits/\nconst OAUTH_FLOW_MS_TIMEOUT = 10 * 1000;\n\nconst AMPLIFY_SYMBOL = (\n\ttypeof Symbol !== 'undefined' && typeof Symbol.for === 'function'\n\t\t? Symbol.for('amplify_default')\n\t\t: '@@amplify_default'\n) as Symbol;\n\nconst dispatchAuthEvent = (event: string, data: any, message: string) => {\n\tHub.dispatch('auth', { event, data, message }, 'Auth', AMPLIFY_SYMBOL);\n};\n\n// Cognito Documentation for max device\n// tslint:disable-next-line:max-line-length\n// https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListDevices.html#API_ListDevices_RequestSyntax\nconst MAX_DEVICES = 60;\n\nconst MAX_AUTOSIGNIN_POLLING_MS = 3 * 60 * 1000;\n\n/**\n * Provide authentication steps\n */\nexport class AuthClass {\n\tprivate _config: AuthOptions;\n\tprivate userPool: CognitoUserPool = null;\n\tprivate user: any = null;\n\tprivate _oAuthHandler: OAuth;\n\tprivate _storage;\n\tprivate _storageSync;\n\tprivate oAuthFlowInProgress: boolean = false;\n\tprivate pendingSignIn: ReturnType | null;\n\tprivate autoSignInInitiated: boolean = false;\n\n\tCredentials = Credentials;\n\n\t/**\n\t * Initialize Auth with AWS configurations\n\t * @param {Object} config - Configuration of the Auth\n\t */\n\tconstructor(config: AuthOptions) {\n\t\tthis.configure(config);\n\t\tthis.currentCredentials = this.currentCredentials.bind(this);\n\t\tthis.currentUserCredentials = this.currentUserCredentials.bind(this);\n\n\t\tHub.listen('auth', ({ payload }) => {\n\t\t\tconst { event } = payload;\n\t\t\tswitch (event) {\n\t\t\t\tcase 'signIn':\n\t\t\t\t\tthis._storage.setItem('amplify-signin-with-hostedUI', 'false');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'signOut':\n\t\t\t\t\tthis._storage.removeItem('amplify-signin-with-hostedUI');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'cognitoHostedUI':\n\t\t\t\t\tthis._storage.setItem('amplify-signin-with-hostedUI', 'true');\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic getModuleName() {\n\t\treturn 'Auth';\n\t}\n\n\tconfigure(config?) {\n\t\tif (!config) return this._config || {};\n\t\tlogger.debug('configure Auth');\n\t\tconst conf = Object.assign(\n\t\t\t{},\n\t\t\tthis._config,\n\t\t\tParser.parseMobilehubConfig(config).Auth,\n\t\t\tconfig\n\t\t);\n\t\tthis._config = conf;\n\t\tconst {\n\t\t\tuserPoolId,\n\t\t\tuserPoolWebClientId,\n\t\t\tcookieStorage,\n\t\t\toauth,\n\t\t\tregion,\n\t\t\tidentityPoolId,\n\t\t\tmandatorySignIn,\n\t\t\trefreshHandlers,\n\t\t\tidentityPoolRegion,\n\t\t\tclientMetadata,\n\t\t\tendpoint,\n\t\t} = this._config;\n\n\t\tif (!this._config.storage) {\n\t\t\t// backward compatability\n\t\t\tif (cookieStorage) this._storage = new CookieStorage(cookieStorage);\n\t\t\telse {\n\t\t\t\tthis._storage = config.ssr\n\t\t\t\t\t? new UniversalStorage()\n\t\t\t\t\t: new StorageHelper().getStorage();\n\t\t\t}\n\t\t} else {\n\t\t\tif (!this._isValidAuthStorage(this._config.storage)) {\n\t\t\t\tlogger.error('The storage in the Auth config is not valid!');\n\t\t\t\tthrow new Error('Empty storage object');\n\t\t\t}\n\t\t\tthis._storage = this._config.storage;\n\t\t}\n\n\t\tthis._storageSync = Promise.resolve();\n\t\tif (typeof this._storage['sync'] === 'function') {\n\t\t\tthis._storageSync = this._storage['sync']();\n\t\t}\n\n\t\tif (userPoolId) {\n\t\t\tconst userPoolData: ICognitoUserPoolData = {\n\t\t\t\tUserPoolId: userPoolId,\n\t\t\t\tClientId: userPoolWebClientId,\n\t\t\t\tendpoint,\n\t\t\t};\n\t\t\tuserPoolData.Storage = this._storage;\n\n\t\t\tthis.userPool = new CognitoUserPool(\n\t\t\t\tuserPoolData,\n\t\t\t\tthis.wrapRefreshSessionCallback\n\t\t\t);\n\t\t}\n\n\t\tthis.Credentials.configure({\n\t\t\tmandatorySignIn,\n\t\t\tregion: identityPoolRegion || region,\n\t\t\tuserPoolId,\n\t\t\tidentityPoolId,\n\t\t\trefreshHandlers,\n\t\t\tstorage: this._storage,\n\t\t});\n\n\t\t// initialize cognitoauth client if hosted ui options provided\n\t\t// to keep backward compatibility:\n\t\tconst cognitoHostedUIConfig = oauth\n\t\t\t? isCognitoHostedOpts(this._config.oauth)\n\t\t\t\t? oauth\n\t\t\t\t: (oauth).awsCognito\n\t\t\t: undefined;\n\n\t\tif (cognitoHostedUIConfig) {\n\t\t\tconst cognitoAuthParams = Object.assign(\n\t\t\t\t{\n\t\t\t\t\tcognitoClientId: userPoolWebClientId,\n\t\t\t\t\tUserPoolId: userPoolId,\n\t\t\t\t\tdomain: cognitoHostedUIConfig['domain'],\n\t\t\t\t\tscopes: cognitoHostedUIConfig['scope'],\n\t\t\t\t\tredirectSignIn: cognitoHostedUIConfig['redirectSignIn'],\n\t\t\t\t\tredirectSignOut: cognitoHostedUIConfig['redirectSignOut'],\n\t\t\t\t\tresponseType: cognitoHostedUIConfig['responseType'],\n\t\t\t\t\tStorage: this._storage,\n\t\t\t\t\turlOpener: cognitoHostedUIConfig['urlOpener'],\n\t\t\t\t\tclientMetadata,\n\t\t\t\t},\n\t\t\t\tcognitoHostedUIConfig['options']\n\t\t\t);\n\n\t\t\tthis._oAuthHandler = new OAuth({\n\t\t\t\tscopes: cognitoAuthParams.scopes,\n\t\t\t\tconfig: cognitoAuthParams,\n\t\t\t\tcognitoClientId: cognitoAuthParams.cognitoClientId,\n\t\t\t});\n\n\t\t\t// **NOTE** - Remove this in a future major release as it is a breaking change\n\t\t\t// Prevents _handleAuthResponse from being called multiple times in Expo\n\t\t\t// See https://github.com/aws-amplify/amplify-js/issues/4388\n\t\t\tconst usedResponseUrls = {};\n\t\t\turlListener(({ url }) => {\n\t\t\t\tif (usedResponseUrls[url]) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tusedResponseUrls[url] = true;\n\t\t\t\tthis._handleAuthResponse(url);\n\t\t\t});\n\t\t}\n\n\t\tdispatchAuthEvent(\n\t\t\t'configured',\n\t\t\tnull,\n\t\t\t`The Auth category has been configured successfully`\n\t\t);\n\n\t\tif (\n\t\t\t!this.autoSignInInitiated &&\n\t\t\ttypeof this._storage['getItem'] === 'function'\n\t\t) {\n\t\t\tconst pollingInitiated = this.isTrueStorageValue(\n\t\t\t\t'amplify-polling-started'\n\t\t\t);\n\t\t\tif (pollingInitiated) {\n\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t'autoSignIn_failure',\n\t\t\t\t\tnull,\n\t\t\t\t\tAuthErrorTypes.AutoSignInError\n\t\t\t\t);\n\t\t\t\tthis._storage.removeItem('amplify-auto-sign-in');\n\t\t\t}\n\t\t\tthis._storage.removeItem('amplify-polling-started');\n\t\t}\n\t\treturn this._config;\n\t}\n\n\twrapRefreshSessionCallback = (callback: NodeCallback.Any) => {\n\t\tconst wrapped: NodeCallback.Any = (error, data) => {\n\t\t\tif (data) {\n\t\t\t\tdispatchAuthEvent('tokenRefresh', undefined, `New token retrieved`);\n\t\t\t} else {\n\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t'tokenRefresh_failure',\n\t\t\t\t\terror,\n\t\t\t\t\t`Failed to retrieve new token`\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn callback(error, data);\n\t\t};\n\t\treturn wrapped;\n\t} // prettier-ignore\n\n\t/**\n\t * Sign up with username, password and other attributes like phone, email\n\t * @param {String | object} params - The user attributes used for signin\n\t * @param {String[]} restOfAttrs - for the backward compatability\n\t * @return - A promise resolves callback data if success\n\t */\n\tpublic signUp(\n\t\tparams: string | SignUpParams,\n\t\t...restOfAttrs: string[]\n\t): Promise {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\n\t\tlet username: string = null;\n\t\tlet password: string = null;\n\t\tconst attributes: CognitoUserAttribute[] = [];\n\t\tlet validationData: CognitoUserAttribute[] = null;\n\t\tlet clientMetadata;\n\t\tlet autoSignIn: AutoSignInOptions = { enabled: false };\n\t\tlet autoSignInValidationData = {};\n\t\tlet autoSignInClientMetaData: ClientMetaData = {};\n\n\t\tif (params && typeof params === 'string') {\n\t\t\tusername = params;\n\t\t\tpassword = restOfAttrs ? restOfAttrs[0] : null;\n\t\t\tconst email: string = restOfAttrs ? restOfAttrs[1] : null;\n\t\t\tconst phone_number: string = restOfAttrs ? restOfAttrs[2] : null;\n\n\t\t\tif (email)\n\t\t\t\tattributes.push(\n\t\t\t\t\tnew CognitoUserAttribute({ Name: 'email', Value: email })\n\t\t\t\t);\n\n\t\t\tif (phone_number)\n\t\t\t\tattributes.push(\n\t\t\t\t\tnew CognitoUserAttribute({\n\t\t\t\t\t\tName: 'phone_number',\n\t\t\t\t\t\tValue: phone_number,\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t} else if (params && typeof params === 'object') {\n\t\t\tusername = params['username'];\n\t\t\tpassword = params['password'];\n\n\t\t\tif (params && params.clientMetadata) {\n\t\t\t\tclientMetadata = params.clientMetadata;\n\t\t\t} else if (this._config.clientMetadata) {\n\t\t\t\tclientMetadata = this._config.clientMetadata;\n\t\t\t}\n\n\t\t\tconst attrs = params['attributes'];\n\t\t\tif (attrs) {\n\t\t\t\tObject.keys(attrs).map(key => {\n\t\t\t\t\tattributes.push(\n\t\t\t\t\t\tnew CognitoUserAttribute({ Name: key, Value: attrs[key] })\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst validationDataObject = params['validationData'];\n\t\t\tif (validationDataObject) {\n\t\t\t\tvalidationData = [];\n\t\t\t\tObject.keys(validationDataObject).map(key => {\n\t\t\t\t\tvalidationData.push(\n\t\t\t\t\t\tnew CognitoUserAttribute({\n\t\t\t\t\t\t\tName: key,\n\t\t\t\t\t\t\tValue: validationDataObject[key],\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tautoSignIn = params.autoSignIn ?? { enabled: false };\n\t\t\tif (autoSignIn.enabled) {\n\t\t\t\tthis._storage.setItem('amplify-auto-sign-in', 'true');\n\t\t\t\tautoSignInValidationData = autoSignIn.validationData ?? {};\n\t\t\t\tautoSignInClientMetaData = autoSignIn.clientMetaData ?? {};\n\t\t\t}\n\t\t} else {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.SignUpError);\n\t\t}\n\n\t\tif (!username) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n\t\t}\n\t\tif (!password) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyPassword);\n\t\t}\n\n\t\tlogger.debug('signUp attrs:', attributes);\n\t\tlogger.debug('signUp validation data:', validationData);\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.userPool.signUp(\n\t\t\t\tusername,\n\t\t\t\tpassword,\n\t\t\t\tattributes,\n\t\t\t\tvalidationData,\n\t\t\t\t(err, data) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'signUp_failure',\n\t\t\t\t\t\t\terr,\n\t\t\t\t\t\t\t`${username} failed to signup`\n\t\t\t\t\t\t);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'signUp',\n\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\t`${username} has signed up successfully`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (autoSignIn.enabled) {\n\t\t\t\t\t\t\tthis.handleAutoSignIn(\n\t\t\t\t\t\t\t\tusername,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tautoSignInValidationData,\n\t\t\t\t\t\t\t\tautoSignInClientMetaData,\n\t\t\t\t\t\t\t\tdata\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\tprivate handleAutoSignIn(\n\t\tusername: string,\n\t\tpassword: string,\n\t\tvalidationData: {},\n\t\tclientMetadata: any,\n\t\tdata: any\n\t) {\n\t\tthis.autoSignInInitiated = true;\n\t\tconst authDetails = new AuthenticationDetails({\n\t\t\tUsername: username,\n\t\t\tPassword: password,\n\t\t\tValidationData: validationData,\n\t\t\tClientMetadata: clientMetadata,\n\t\t});\n\t\tif (data.userConfirmed) {\n\t\t\tthis.signInAfterUserConfirmed(authDetails);\n\t\t} else if (this._config.signUpVerificationMethod === 'link') {\n\t\t\tthis.handleLinkAutoSignIn(authDetails);\n\t\t} else {\n\t\t\tthis.handleCodeAutoSignIn(authDetails);\n\t\t}\n\t}\n\n\tprivate handleCodeAutoSignIn(authDetails: AuthenticationDetails) {\n\t\tconst listenEvent = ({ payload }) => {\n\t\t\tif (payload.event === 'confirmSignUp') {\n\t\t\t\tthis.signInAfterUserConfirmed(authDetails, listenEvent);\n\t\t\t}\n\t\t};\n\t\tHub.listen('auth', listenEvent);\n\t}\n\n\tprivate handleLinkAutoSignIn(authDetails: AuthenticationDetails) {\n\t\tthis._storage.setItem('amplify-polling-started', 'true');\n\t\tconst start = Date.now();\n\t\tconst autoSignInPollingIntervalId = setInterval(() => {\n\t\t\tif (Date.now() - start > MAX_AUTOSIGNIN_POLLING_MS) {\n\t\t\t\tclearInterval(autoSignInPollingIntervalId);\n\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t'autoSignIn_failure',\n\t\t\t\t\tnull,\n\t\t\t\t\t'Please confirm your account and use your credentials to sign in.'\n\t\t\t\t);\n\t\t\t\tthis._storage.removeItem('amplify-auto-sign-in');\n\t\t\t} else {\n\t\t\t\tthis.signInAfterUserConfirmed(\n\t\t\t\t\tauthDetails,\n\t\t\t\t\tnull,\n\t\t\t\t\tautoSignInPollingIntervalId\n\t\t\t\t);\n\t\t\t}\n\t\t}, 5000);\n\t}\n\n\tprivate async signInAfterUserConfirmed(\n\t\tauthDetails: AuthenticationDetails,\n\t\tlistenEvent?: HubCallback,\n\t\tautoSignInPollingIntervalId?: ReturnType\n\t) {\n\t\tconst user = this.createCognitoUser(authDetails.getUsername());\n\t\ttry {\n\t\t\tawait user.authenticateUser(\n\t\t\t\tauthDetails,\n\t\t\t\tthis.authCallbacks(\n\t\t\t\t\tuser,\n\t\t\t\t\tvalue => {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'autoSignIn',\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t`${authDetails.getUsername()} has signed in successfully`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (listenEvent) {\n\t\t\t\t\t\t\tHub.remove('auth', listenEvent);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (autoSignInPollingIntervalId) {\n\t\t\t\t\t\t\tclearInterval(autoSignInPollingIntervalId);\n\t\t\t\t\t\t\tthis._storage.removeItem('amplify-polling-started');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._storage.removeItem('amplify-auto-sign-in');\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\tlogger.error(error);\n\t\t\t\t\t\tthis._storage.removeItem('amplify-auto-sign-in');\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tlogger.error(error);\n\t\t}\n\t}\n\n\t/**\n\t * Send the verification code to confirm sign up\n\t * @param {String} username - The username to be confirmed\n\t * @param {String} code - The verification code\n\t * @param {ConfirmSignUpOptions} options - other options for confirm signup\n\t * @return - A promise resolves callback data if success\n\t */\n\tpublic confirmSignUp(\n\t\tusername: string,\n\t\tcode: string,\n\t\toptions?: ConfirmSignUpOptions\n\t): Promise {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\t\tif (!username) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n\t\t}\n\t\tif (!code) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyCode);\n\t\t}\n\n\t\tconst user = this.createCognitoUser(username);\n\t\tconst forceAliasCreation =\n\t\t\toptions && typeof options.forceAliasCreation === 'boolean'\n\t\t\t\t? options.forceAliasCreation\n\t\t\t\t: true;\n\n\t\tlet clientMetadata;\n\t\tif (options && options.clientMetadata) {\n\t\t\tclientMetadata = options.clientMetadata;\n\t\t} else if (this._config.clientMetadata) {\n\t\t\tclientMetadata = this._config.clientMetadata;\n\t\t}\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.confirmRegistration(\n\t\t\t\tcode,\n\t\t\t\tforceAliasCreation,\n\t\t\t\t(err, data) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'confirmSignUp',\n\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\t`${username} has been confirmed successfully`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst autoSignIn = this.isTrueStorageValue('amplify-auto-sign-in');\n\t\t\t\t\t\tif (autoSignIn && !this.autoSignInInitiated) {\n\t\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t\t'autoSignIn_failure',\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tAuthErrorTypes.AutoSignInError\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tthis._storage.removeItem('amplify-auto-sign-in');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\tprivate isTrueStorageValue(value: string) {\n\t\tconst item = this._storage.getItem(value);\n\t\treturn item ? item === 'true' : false;\n\t}\n\n\t/**\n\t * Resend the verification code\n\t * @param {String} username - The username to be confirmed\n\t * @param {ClientMetadata} clientMetadata - Metadata to be passed to Cognito Lambda triggers\n\t * @return - A promise resolves code delivery details if successful\n\t */\n\tpublic resendSignUp(\n\t\tusername: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\t\tif (!username) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n\t\t}\n\n\t\tconst user = this.createCognitoUser(username);\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.resendConfirmationCode((err, data) => {\n\t\t\t\tif (err) {\n\t\t\t\t\treject(err);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(data);\n\t\t\t\t}\n\t\t\t}, clientMetadata);\n\t\t});\n\t}\n\n\t/**\n\t * Sign in\n\t * @param {String | SignInOpts} usernameOrSignInOpts - The username to be signed in or the sign in options\n\t * @param {String} pw - The password of the username\n\t * @param {ClientMetaData} clientMetadata - Client metadata for custom workflows\n\t * @return - A promise resolves the CognitoUser\n\t */\n\tpublic signIn(\n\t\tusernameOrSignInOpts: string | SignInOpts,\n\t\tpw?: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\n\t\tlet username = null;\n\t\tlet password = null;\n\t\tlet validationData = {};\n\n\t\t// for backward compatibility\n\t\tif (typeof usernameOrSignInOpts === 'string') {\n\t\t\tusername = usernameOrSignInOpts;\n\t\t\tpassword = pw;\n\t\t} else if (isUsernamePasswordOpts(usernameOrSignInOpts)) {\n\t\t\tif (typeof pw !== 'undefined') {\n\t\t\t\tlogger.warn(\n\t\t\t\t\t'The password should be defined under the first parameter object!'\n\t\t\t\t);\n\t\t\t}\n\t\t\tusername = usernameOrSignInOpts.username;\n\t\t\tpassword = usernameOrSignInOpts.password;\n\t\t\tvalidationData = usernameOrSignInOpts.validationData;\n\t\t} else {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.InvalidUsername);\n\t\t}\n\t\tif (!username) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n\t\t}\n\t\tconst authDetails = new AuthenticationDetails({\n\t\t\tUsername: username,\n\t\t\tPassword: password,\n\t\t\tValidationData: validationData,\n\t\t\tClientMetadata: clientMetadata,\n\t\t});\n\t\tif (password) {\n\t\t\treturn this.signInWithPassword(authDetails);\n\t\t} else {\n\t\t\treturn this.signInWithoutPassword(authDetails);\n\t\t}\n\t}\n\n\t/**\n\t * Return an object with the authentication callbacks\n\t * @param {CognitoUser} user - the cognito user object\n\t * @param {} resolve - function called when resolving the current step\n\t * @param {} reject - function called when rejecting the current step\n\t * @return - an object with the callback methods for user authentication\n\t */\n\tprivate authCallbacks(\n\t\tuser: CognitoUser,\n\t\tresolve: (value?: CognitoUser | any) => void,\n\t\treject: (value?: any) => void\n\t): IAuthenticationCallback {\n\t\tconst that = this;\n\t\treturn {\n\t\t\tonSuccess: async session => {\n\t\t\t\tlogger.debug(session);\n\t\t\t\tdelete user['challengeName'];\n\t\t\t\tdelete user['challengeParam'];\n\t\t\t\ttry {\n\t\t\t\t\tawait this.Credentials.clear();\n\t\t\t\t\tconst cred = await this.Credentials.set(session, 'session');\n\t\t\t\t\tlogger.debug('succeed to get cognito credentials', cred);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tlogger.debug('cannot get cognito credentials', e);\n\t\t\t\t} finally {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// In order to get user attributes and MFA methods\n\t\t\t\t\t\t// We need to trigger currentUserPoolUser again\n\t\t\t\t\t\tconst currentUser = await this.currentUserPoolUser();\n\t\t\t\t\t\tthat.user = currentUser;\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'signIn',\n\t\t\t\t\t\t\tcurrentUser,\n\t\t\t\t\t\t\t`A user ${user.getUsername()} has been signed in`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresolve(currentUser);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tlogger.error('Failed to get the signed in user', e);\n\t\t\t\t\t\treject(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tonFailure: err => {\n\t\t\t\tlogger.debug('signIn failure', err);\n\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t'signIn_failure',\n\t\t\t\t\terr,\n\t\t\t\t\t`${user.getUsername()} failed to signin`\n\t\t\t\t);\n\t\t\t\treject(err);\n\t\t\t},\n\t\t\tcustomChallenge: challengeParam => {\n\t\t\t\tlogger.debug('signIn custom challenge answer required');\n\t\t\t\tuser['challengeName'] = 'CUSTOM_CHALLENGE';\n\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\tresolve(user);\n\t\t\t},\n\t\t\tmfaRequired: (challengeName, challengeParam) => {\n\t\t\t\tlogger.debug('signIn MFA required');\n\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\tresolve(user);\n\t\t\t},\n\t\t\tmfaSetup: (challengeName, challengeParam) => {\n\t\t\t\tlogger.debug('signIn mfa setup', challengeName);\n\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\tresolve(user);\n\t\t\t},\n\t\t\tnewPasswordRequired: (userAttributes, requiredAttributes) => {\n\t\t\t\tlogger.debug('signIn new password');\n\t\t\t\tuser['challengeName'] = 'NEW_PASSWORD_REQUIRED';\n\t\t\t\tuser['challengeParam'] = {\n\t\t\t\t\tuserAttributes,\n\t\t\t\t\trequiredAttributes,\n\t\t\t\t};\n\t\t\t\tresolve(user);\n\t\t\t},\n\t\t\ttotpRequired: (challengeName, challengeParam) => {\n\t\t\t\tlogger.debug('signIn totpRequired');\n\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\tresolve(user);\n\t\t\t},\n\t\t\tselectMFAType: (challengeName, challengeParam) => {\n\t\t\t\tlogger.debug('signIn selectMFAType', challengeName);\n\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\tresolve(user);\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Sign in with a password\n\t * @private\n\t * @param {AuthenticationDetails} authDetails - the user sign in data\n\t * @return - A promise resolves the CognitoUser object if success or mfa required\n\t */\n\tprivate signInWithPassword(\n\t\tauthDetails: AuthenticationDetails\n\t): Promise {\n\t\tif (this.pendingSignIn) {\n\t\t\tthrow new Error('Pending sign-in attempt already in progress');\n\t\t}\n\n\t\tconst user = this.createCognitoUser(authDetails.getUsername());\n\n\t\tthis.pendingSignIn = new Promise((resolve, reject) => {\n\t\t\tuser.authenticateUser(\n\t\t\t\tauthDetails,\n\t\t\t\tthis.authCallbacks(\n\t\t\t\t\tuser,\n\t\t\t\t\tvalue => {\n\t\t\t\t\t\tthis.pendingSignIn = null;\n\t\t\t\t\t\tresolve(value);\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\tthis.pendingSignIn = null;\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t);\n\t\t});\n\n\t\treturn this.pendingSignIn;\n\t}\n\n\t/**\n\t * Sign in without a password\n\t * @private\n\t * @param {AuthenticationDetails} authDetails - the user sign in data\n\t * @return - A promise resolves the CognitoUser object if success or mfa required\n\t */\n\tprivate signInWithoutPassword(\n\t\tauthDetails: AuthenticationDetails\n\t): Promise {\n\t\tconst user = this.createCognitoUser(authDetails.getUsername());\n\t\tuser.setAuthenticationFlowType('CUSTOM_AUTH');\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.initiateAuth(authDetails, this.authCallbacks(user, resolve, reject));\n\t\t});\n\t}\n\n\t/**\n\t * This was previously used by an authenticated user to get MFAOptions,\n\t * but no longer returns a meaningful response. Refer to the documentation for\n\t * how to setup and use MFA: https://docs.amplify.aws/lib/auth/mfa/q/platform/js\n\t * @deprecated\n\t * @param {CognitoUser} user - the current user\n\t * @return - A promise resolves the current preferred mfa option if success\n\t */\n\tpublic getMFAOptions(user: CognitoUser | any): Promise {\n\t\treturn new Promise((res, rej) => {\n\t\t\tuser.getMFAOptions((err, mfaOptions) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tlogger.debug('get MFA Options failed', err);\n\t\t\t\t\trej(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlogger.debug('get MFA options success', mfaOptions);\n\t\t\t\tres(mfaOptions);\n\t\t\t\treturn;\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * get preferred mfa method\n\t * @param {CognitoUser} user - the current cognito user\n\t * @param {GetPreferredMFAOpts} params - options for getting the current user preferred MFA\n\t */\n\tpublic getPreferredMFA(\n\t\tuser: CognitoUser | any,\n\t\tparams?: GetPreferredMFAOpts\n\t): Promise {\n\t\tconst that = this;\n\t\treturn new Promise((res, rej) => {\n\t\t\tconst clientMetadata = this._config.clientMetadata; // TODO: verify behavior if this is override during signIn\n\n\t\t\tconst bypassCache = params ? params.bypassCache : false;\n\t\t\tuser.getUserData(\n\t\t\t\tasync (err, data) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tlogger.debug('getting preferred mfa failed', err);\n\t\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\trej(err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst mfaType = that._getMfaTypeFromUserData(data);\n\t\t\t\t\tif (!mfaType) {\n\t\t\t\t\t\trej('invalid MFA Type');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tres(mfaType);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ bypassCache, clientMetadata }\n\t\t\t);\n\t\t});\n\t}\n\n\tprivate _getMfaTypeFromUserData(data) {\n\t\tlet ret = null;\n\t\tconst preferredMFA = data.PreferredMfaSetting;\n\t\t// if the user has used Auth.setPreferredMFA() to setup the mfa type\n\t\t// then the \"PreferredMfaSetting\" would exist in the response\n\t\tif (preferredMFA) {\n\t\t\tret = preferredMFA;\n\t\t} else {\n\t\t\t// if mfaList exists but empty, then its noMFA\n\t\t\tconst mfaList = data.UserMFASettingList;\n\t\t\tif (!mfaList) {\n\t\t\t\t// if SMS was enabled by using Auth.enableSMS(),\n\t\t\t\t// the response would contain MFAOptions\n\t\t\t\t// as for now Cognito only supports for SMS, so we will say it is 'SMS_MFA'\n\t\t\t\t// if it does not exist, then it should be NOMFA\n\t\t\t\tconst MFAOptions = data.MFAOptions;\n\t\t\t\tif (MFAOptions) {\n\t\t\t\t\tret = 'SMS_MFA';\n\t\t\t\t} else {\n\t\t\t\t\tret = 'NOMFA';\n\t\t\t\t}\n\t\t\t} else if (mfaList.length === 0) {\n\t\t\t\tret = 'NOMFA';\n\t\t\t} else {\n\t\t\t\tlogger.debug('invalid case for getPreferredMFA', data);\n\t\t\t}\n\t\t}\n\t\treturn ret;\n\t}\n\n\tprivate _getUserData(user, params) {\n\t\treturn new Promise((res, rej) => {\n\t\t\tuser.getUserData(async (err, data) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tlogger.debug('getting user data failed', err);\n\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\trej(err);\n\t\t\t\t\treturn;\n\t\t\t\t} else {\n\t\t\t\t\tres(data);\n\t\t\t\t}\n\t\t\t}, params);\n\t\t});\n\t}\n\n\t/**\n\t * set preferred MFA method\n\t * @param {CognitoUser} user - the current Cognito user\n\t * @param {string} mfaMethod - preferred mfa method\n\t * @return - A promise resolve if success\n\t */\n\tpublic async setPreferredMFA(\n\t\tuser: CognitoUser | any,\n\t\tmfaMethod: 'TOTP' | 'SMS' | 'NOMFA' | 'SMS_MFA' | 'SOFTWARE_TOKEN_MFA'\n\t): Promise {\n\t\tconst clientMetadata = this._config.clientMetadata; // TODO: verify behavior if this is override during signIn\n\n\t\tconst userData = await this._getUserData(user, {\n\t\t\tbypassCache: true,\n\t\t\tclientMetadata,\n\t\t});\n\t\tlet smsMfaSettings = null;\n\t\tlet totpMfaSettings = null;\n\n\t\tswitch (mfaMethod) {\n\t\t\tcase 'TOTP':\n\t\t\tcase 'SOFTWARE_TOKEN_MFA':\n\t\t\t\ttotpMfaSettings = {\n\t\t\t\t\tPreferredMfa: true,\n\t\t\t\t\tEnabled: true,\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase 'SMS':\n\t\t\tcase 'SMS_MFA':\n\t\t\t\tsmsMfaSettings = {\n\t\t\t\t\tPreferredMfa: true,\n\t\t\t\t\tEnabled: true,\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase 'NOMFA':\n\t\t\t\tconst mfaList = userData['UserMFASettingList'];\n\t\t\t\tconst currentMFAType = await this._getMfaTypeFromUserData(userData);\n\t\t\t\tif (currentMFAType === 'NOMFA') {\n\t\t\t\t\treturn Promise.resolve('No change for mfa type');\n\t\t\t\t} else if (currentMFAType === 'SMS_MFA') {\n\t\t\t\t\tsmsMfaSettings = {\n\t\t\t\t\t\tPreferredMfa: false,\n\t\t\t\t\t\tEnabled: false,\n\t\t\t\t\t};\n\t\t\t\t} else if (currentMFAType === 'SOFTWARE_TOKEN_MFA') {\n\t\t\t\t\ttotpMfaSettings = {\n\t\t\t\t\t\tPreferredMfa: false,\n\t\t\t\t\t\tEnabled: false,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn this.rejectAuthError(AuthErrorTypes.InvalidMFA);\n\t\t\t\t}\n\t\t\t\t// if there is a UserMFASettingList in the response\n\t\t\t\t// we need to disable every mfa type in that list\n\t\t\t\tif (mfaList && mfaList.length !== 0) {\n\t\t\t\t\t// to disable SMS or TOTP if exists in that list\n\t\t\t\t\tmfaList.forEach(mfaType => {\n\t\t\t\t\t\tif (mfaType === 'SMS_MFA') {\n\t\t\t\t\t\t\tsmsMfaSettings = {\n\t\t\t\t\t\t\t\tPreferredMfa: false,\n\t\t\t\t\t\t\t\tEnabled: false,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else if (mfaType === 'SOFTWARE_TOKEN_MFA') {\n\t\t\t\t\t\t\ttotpMfaSettings = {\n\t\t\t\t\t\t\t\tPreferredMfa: false,\n\t\t\t\t\t\t\t\tEnabled: false,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tlogger.debug('no validmfa method provided');\n\t\t\t\treturn this.rejectAuthError(AuthErrorTypes.NoMFA);\n\t\t}\n\n\t\tconst that = this;\n\t\treturn new Promise((res, rej) => {\n\t\t\tuser.setUserMfaPreference(\n\t\t\t\tsmsMfaSettings,\n\t\t\t\ttotpMfaSettings,\n\t\t\t\t(err, result) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tlogger.debug('Set user mfa preference error', err);\n\t\t\t\t\t\treturn rej(err);\n\t\t\t\t\t}\n\t\t\t\t\tlogger.debug('Set user mfa success', result);\n\t\t\t\t\tlogger.debug('Caching the latest user data into local');\n\t\t\t\t\t// cache the latest result into user data\n\t\t\t\t\tuser.getUserData(\n\t\t\t\t\t\tasync (err, data) => {\n\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tlogger.debug('getting user data failed', err);\n\t\t\t\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn rej(err);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn res(result);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbypassCache: true,\n\t\t\t\t\t\t\tclientMetadata,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * disable SMS\n\t * @deprecated\n\t * @param {CognitoUser} user - the current user\n\t * @return - A promise resolves is success\n\t */\n\tpublic disableSMS(user: CognitoUser): Promise {\n\t\treturn new Promise((res, rej) => {\n\t\t\tuser.disableMFA((err, data) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tlogger.debug('disable mfa failed', err);\n\t\t\t\t\trej(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlogger.debug('disable mfa succeed', data);\n\t\t\t\tres(data);\n\t\t\t\treturn;\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * enable SMS\n\t * @deprecated\n\t * @param {CognitoUser} user - the current user\n\t * @return - A promise resolves is success\n\t */\n\tpublic enableSMS(user: CognitoUser): Promise {\n\t\treturn new Promise((res, rej) => {\n\t\t\tuser.enableMFA((err, data) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tlogger.debug('enable mfa failed', err);\n\t\t\t\t\trej(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlogger.debug('enable mfa succeed', data);\n\t\t\t\tres(data);\n\t\t\t\treturn;\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Setup TOTP\n\t * @param {CognitoUser} user - the current user\n\t * @return - A promise resolves with the secret code if success\n\t */\n\tpublic setupTOTP(user: CognitoUser | any): Promise {\n\t\treturn new Promise((res, rej) => {\n\t\t\tuser.associateSoftwareToken({\n\t\t\t\tonFailure: err => {\n\t\t\t\t\tlogger.debug('associateSoftwareToken failed', err);\n\t\t\t\t\trej(err);\n\t\t\t\t\treturn;\n\t\t\t\t},\n\t\t\t\tassociateSecretCode: secretCode => {\n\t\t\t\t\tlogger.debug('associateSoftwareToken sucess', secretCode);\n\t\t\t\t\tres(secretCode);\n\t\t\t\t\treturn;\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * verify TOTP setup\n\t * @param {CognitoUser} user - the current user\n\t * @param {string} challengeAnswer - challenge answer\n\t * @return - A promise resolves is success\n\t */\n\tpublic verifyTotpToken(\n\t\tuser: CognitoUser | any,\n\t\tchallengeAnswer: string\n\t): Promise {\n\t\tlogger.debug('verification totp token', user, challengeAnswer);\n\t\treturn new Promise((res, rej) => {\n\t\t\tuser.verifySoftwareToken(challengeAnswer, 'My TOTP device', {\n\t\t\t\tonFailure: err => {\n\t\t\t\t\tlogger.debug('verifyTotpToken failed', err);\n\t\t\t\t\trej(err);\n\t\t\t\t\treturn;\n\t\t\t\t},\n\t\t\t\tonSuccess: data => {\n\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t'signIn',\n\t\t\t\t\t\tuser,\n\t\t\t\t\t\t`A user ${user.getUsername()} has been signed in`\n\t\t\t\t\t);\n\t\t\t\t\tlogger.debug('verifyTotpToken success', data);\n\t\t\t\t\tres(data);\n\t\t\t\t\treturn;\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Send MFA code to confirm sign in\n\t * @param {Object} user - The CognitoUser object\n\t * @param {String} code - The confirmation code\n\t */\n\tpublic confirmSignIn(\n\t\tuser: CognitoUser | any,\n\t\tcode: string,\n\t\tmfaType?: 'SMS_MFA' | 'SOFTWARE_TOKEN_MFA' | null,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise {\n\t\tif (!code) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyCode);\n\t\t}\n\n\t\tconst that = this;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.sendMFACode(\n\t\t\t\tcode,\n\t\t\t\t{\n\t\t\t\t\tonSuccess: async session => {\n\t\t\t\t\t\tlogger.debug(session);\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this.Credentials.clear();\n\t\t\t\t\t\t\tconst cred = await this.Credentials.set(session, 'session');\n\t\t\t\t\t\t\tlogger.debug('succeed to get cognito credentials', cred);\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tlogger.debug('cannot get cognito credentials', e);\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tthat.user = user;\n\n\t\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t\t'signIn',\n\t\t\t\t\t\t\t\tuser,\n\t\t\t\t\t\t\t\t`A user ${user.getUsername()} has been signed in`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tresolve(user);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tonFailure: err => {\n\t\t\t\t\t\tlogger.debug('confirm signIn failure', err);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tmfaType,\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\tpublic completeNewPassword(\n\t\tuser: CognitoUser | any,\n\t\tpassword: string,\n\t\trequiredAttributes: any = {},\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise {\n\t\tif (!password) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyPassword);\n\t\t}\n\n\t\tconst that = this;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.completeNewPasswordChallenge(\n\t\t\t\tpassword,\n\t\t\t\trequiredAttributes,\n\t\t\t\t{\n\t\t\t\t\tonSuccess: async session => {\n\t\t\t\t\t\tlogger.debug(session);\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this.Credentials.clear();\n\t\t\t\t\t\t\tconst cred = await this.Credentials.set(session, 'session');\n\t\t\t\t\t\t\tlogger.debug('succeed to get cognito credentials', cred);\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tlogger.debug('cannot get cognito credentials', e);\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tthat.user = user;\n\t\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t\t'signIn',\n\t\t\t\t\t\t\t\tuser,\n\t\t\t\t\t\t\t\t`A user ${user.getUsername()} has been signed in`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tresolve(user);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tonFailure: err => {\n\t\t\t\t\t\tlogger.debug('completeNewPassword failure', err);\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'completeNewPassword_failure',\n\t\t\t\t\t\t\terr,\n\t\t\t\t\t\t\t`${this.user} failed to complete the new password flow`\n\t\t\t\t\t\t);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t},\n\t\t\t\t\tmfaRequired: (challengeName, challengeParam) => {\n\t\t\t\t\t\tlogger.debug('signIn MFA required');\n\t\t\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\t\t\tresolve(user);\n\t\t\t\t\t},\n\t\t\t\t\tmfaSetup: (challengeName, challengeParam) => {\n\t\t\t\t\t\tlogger.debug('signIn mfa setup', challengeName);\n\t\t\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\t\t\tresolve(user);\n\t\t\t\t\t},\n\t\t\t\t\ttotpRequired: (challengeName, challengeParam) => {\n\t\t\t\t\t\tlogger.debug('signIn mfa setup', challengeName);\n\t\t\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\t\t\tresolve(user);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Send the answer to a custom challenge\n\t * @param {CognitoUser} user - The CognitoUser object\n\t * @param {String} challengeResponses - The confirmation code\n\t */\n\tpublic sendCustomChallengeAnswer(\n\t\tuser: CognitoUser | any,\n\t\tchallengeResponses: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\t\tif (!challengeResponses) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyChallengeResponse);\n\t\t}\n\n\t\tconst that = this;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.sendCustomChallengeAnswer(\n\t\t\t\tchallengeResponses,\n\t\t\t\tthis.authCallbacks(user, resolve, reject),\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Delete an authenticated users' attributes\n\t * @param {CognitoUser} - The currently logged in user object\n\t * @return {Promise}\n\t **/\n\tpublic deleteUserAttributes(\n\t\tuser: CognitoUser | any,\n\t\tattributeNames: string[]\n\t) {\n\t\tconst that = this;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthat.userSession(user).then(session => {\n\t\t\t\tuser.deleteAttributes(attributeNames, (err, result) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treturn reject(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn resolve(result);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Delete the current authenticated user\n\t * @return {Promise}\n\t **/\n\t// TODO: Check return type void\n\tpublic async deleteUser(): Promise {\n\t\ttry {\n\t\t\tawait this._storageSync;\n\t\t} catch (e) {\n\t\t\tlogger.debug('Failed to sync cache info into memory', e);\n\t\t\tthrow new Error(e);\n\t\t}\n\n\t\tconst isSignedInHostedUI =\n\t\t\tthis._oAuthHandler &&\n\t\t\tthis._storage.getItem('amplify-signin-with-hostedUI') === 'true';\n\n\t\treturn new Promise(async (res, rej) => {\n\t\t\tif (this.userPool) {\n\t\t\t\tconst user = this.userPool.getCurrentUser();\n\n\t\t\t\tif (!user) {\n\t\t\t\t\tlogger.debug('Failed to get user from user pool');\n\t\t\t\t\treturn rej(new Error('No current user.'));\n\t\t\t\t} else {\n\t\t\t\t\tuser.getSession(async (err, session) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tlogger.debug('Failed to get the user session', err);\n\t\t\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn rej(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tuser.deleteUser((err, result: string) => {\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\trej(err);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t\t\t\t'userDeleted',\n\t\t\t\t\t\t\t\t\t\tresult,\n\t\t\t\t\t\t\t\t\t\t'The authenticated user has been deleted.'\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tuser.signOut();\n\t\t\t\t\t\t\t\t\tthis.user = null;\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tthis.cleanCachedItems(); // clean aws credentials\n\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t// TODO: change to rejects in refactor\n\t\t\t\t\t\t\t\t\t\tlogger.debug('failed to clear cached items');\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (isSignedInHostedUI) {\n\t\t\t\t\t\t\t\t\t\tthis.oAuthSignOutRedirect(res, rej);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t\t\t\t\t'signOut',\n\t\t\t\t\t\t\t\t\t\t\tthis.user,\n\t\t\t\t\t\t\t\t\t\t\t`A user has been signed out`\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\tres(result);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlogger.debug('no Congito User pool');\n\t\t\t\trej(new Error('Cognito User pool does not exist'));\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Update an authenticated users' attributes\n\t * @param {CognitoUser} - The currently logged in user object\n\t * @return {Promise}\n\t **/\n\tpublic updateUserAttributes(\n\t\tuser: CognitoUser | any,\n\t\tattributes: object,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise {\n\t\tconst attributeList: ICognitoUserAttributeData[] = [];\n\t\tconst that = this;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthat.userSession(user).then(session => {\n\t\t\t\tfor (const key in attributes) {\n\t\t\t\t\tif (key !== 'sub' && key.indexOf('_verified') < 0) {\n\t\t\t\t\t\tconst attr: ICognitoUserAttributeData = {\n\t\t\t\t\t\t\tName: key,\n\t\t\t\t\t\t\tValue: attributes[key],\n\t\t\t\t\t\t};\n\t\t\t\t\t\tattributeList.push(attr);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tuser.updateAttributes(\n\t\t\t\t\tattributeList,\n\t\t\t\t\t(err, result) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\treturn reject(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn resolve(result);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tclientMetadata\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t}\n\t/**\n\t * Return user attributes\n\t * @param {Object} user - The CognitoUser object\n\t * @return - A promise resolves to user attributes if success\n\t */\n\tpublic userAttributes(\n\t\tuser: CognitoUser | any\n\t): Promise {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.userSession(user).then(session => {\n\t\t\t\tuser.getUserAttributes((err, attributes) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve(attributes);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic verifiedContact(user: CognitoUser | any) {\n\t\tconst that = this;\n\t\treturn this.userAttributes(user).then(attributes => {\n\t\t\tconst attrs = that.attributesToObject(attributes);\n\t\t\tconst unverified = {};\n\t\t\tconst verified = {};\n\t\t\tif (attrs['email']) {\n\t\t\t\tif (attrs['email_verified']) {\n\t\t\t\t\tverified['email'] = attrs['email'];\n\t\t\t\t} else {\n\t\t\t\t\tunverified['email'] = attrs['email'];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (attrs['phone_number']) {\n\t\t\t\tif (attrs['phone_number_verified']) {\n\t\t\t\t\tverified['phone_number'] = attrs['phone_number'];\n\t\t\t\t} else {\n\t\t\t\t\tunverified['phone_number'] = attrs['phone_number'];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tverified,\n\t\t\t\tunverified,\n\t\t\t};\n\t\t});\n\t}\n\n\tprivate isErrorWithMessage(err: any): err is { message: string } {\n\t\treturn (\n\t\t\ttypeof err === 'object' &&\n\t\t\tObject.prototype.hasOwnProperty.call(err, 'message')\n\t\t);\n\t}\n\n\t// Session revoked by another app\n\tprivate isTokenRevokedError(\n\t\terr: any\n\t): err is { message: 'Access Token has been revoked' } {\n\t\treturn (\n\t\t\tthis.isErrorWithMessage(err) &&\n\t\t\terr.message === 'Access Token has been revoked'\n\t\t);\n\t}\n\n\tprivate isRefreshTokenRevokedError(\n\t\terr: any\n\t): err is { message: 'Refresh Token has been revoked' } {\n\t\treturn (\n\t\t\tthis.isErrorWithMessage(err) &&\n\t\t\terr.message === 'Refresh Token has been revoked'\n\t\t);\n\t}\n\n\tprivate isUserDisabledError(\n\t\terr: any\n\t): err is { message: 'User is disabled.' } {\n\t\treturn this.isErrorWithMessage(err) && err.message === 'User is disabled.';\n\t}\n\n\tprivate isUserDoesNotExistError(\n\t\terr: any\n\t): err is { message: 'User does not exist.' } {\n\t\treturn (\n\t\t\tthis.isErrorWithMessage(err) && err.message === 'User does not exist.'\n\t\t);\n\t}\n\n\tprivate isRefreshTokenExpiredError(\n\t\terr: any\n\t): err is { message: 'Refresh Token has expired' } {\n\t\treturn (\n\t\t\tthis.isErrorWithMessage(err) &&\n\t\t\terr.message === 'Refresh Token has expired'\n\t\t);\n\t}\n\n\tprivate isSignedInHostedUI() {\n\t\treturn (\n\t\t\tthis._oAuthHandler &&\n\t\t\tthis._storage.getItem('amplify-signin-with-hostedUI') === 'true'\n\t\t);\n\t}\n\n\tprivate isSessionInvalid(err: any) {\n\t\treturn (\n\t\t\tthis.isUserDisabledError(err) ||\n\t\t\tthis.isUserDoesNotExistError(err) ||\n\t\t\tthis.isTokenRevokedError(err) ||\n\t\t\tthis.isRefreshTokenRevokedError(err) ||\n\t\t\tthis.isRefreshTokenExpiredError(err)\n\t\t);\n\t}\n\n\tprivate async cleanUpInvalidSession(user: CognitoUser) {\n\t\tuser.signOut();\n\t\tthis.user = null;\n\t\ttry {\n\t\t\tawait this.cleanCachedItems(); // clean aws credentials\n\t\t} catch (e) {\n\t\t\tlogger.debug('failed to clear cached items');\n\t\t}\n\t\tif (this.isSignedInHostedUI()) {\n\t\t\treturn new Promise((res, rej) => {\n\t\t\t\tthis.oAuthSignOutRedirect(res, rej);\n\t\t\t});\n\t\t} else {\n\t\t\tdispatchAuthEvent('signOut', this.user, `A user has been signed out`);\n\t\t}\n\t}\n\n\t/**\n\t * Get current authenticated user\n\t * @return - A promise resolves to current authenticated CognitoUser if success\n\t */\n\tpublic currentUserPoolUser(\n\t\tparams?: CurrentUserOpts\n\t): Promise {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\n\t\treturn new Promise((res, rej) => {\n\t\t\tthis._storageSync\n\t\t\t\t.then(async () => {\n\t\t\t\t\tif (this.isOAuthInProgress()) {\n\t\t\t\t\t\tlogger.debug('OAuth signIn in progress, waiting for resolution...');\n\n\t\t\t\t\t\tawait new Promise(res => {\n\t\t\t\t\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\t\t\t\t\tlogger.debug('OAuth signIn in progress timeout');\n\n\t\t\t\t\t\t\t\tHub.remove('auth', hostedUISignCallback);\n\n\t\t\t\t\t\t\t\tres();\n\t\t\t\t\t\t\t}, OAUTH_FLOW_MS_TIMEOUT);\n\n\t\t\t\t\t\t\tHub.listen('auth', hostedUISignCallback);\n\n\t\t\t\t\t\t\tfunction hostedUISignCallback({ payload }) {\n\t\t\t\t\t\t\t\tconst { event } = payload;\n\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tevent === 'cognitoHostedUI' ||\n\t\t\t\t\t\t\t\t\tevent === 'cognitoHostedUI_failure'\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tlogger.debug(`OAuth signIn resolved: ${event}`);\n\t\t\t\t\t\t\t\t\tclearTimeout(timeoutId);\n\n\t\t\t\t\t\t\t\t\tHub.remove('auth', hostedUISignCallback);\n\n\t\t\t\t\t\t\t\t\tres();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconst user = this.userPool.getCurrentUser();\n\n\t\t\t\t\tif (!user) {\n\t\t\t\t\t\tlogger.debug('Failed to get user from user pool');\n\t\t\t\t\t\trej('No current user');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst clientMetadata = this._config.clientMetadata; // TODO: verify behavior if this is override during signIn\n\n\t\t\t\t\t// refresh the session if the session expired.\n\t\t\t\t\tuser.getSession(\n\t\t\t\t\t\tasync (err, session) => {\n\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tlogger.debug('Failed to get the user session', err);\n\t\t\t\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trej(err);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// get user data from Cognito\n\t\t\t\t\t\t\tconst bypassCache = params ? params.bypassCache : false;\n\n\t\t\t\t\t\t\tif (bypassCache) {\n\t\t\t\t\t\t\t\tawait this.Credentials.clear();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst clientMetadata = this._config.clientMetadata; // TODO: verify behavior if this is override during signIn\n\n\t\t\t\t\t\t\t// validate the token's scope first before calling this function\n\t\t\t\t\t\t\tconst { scope = '' } = session.getAccessToken().decodePayload();\n\t\t\t\t\t\t\tif (scope.split(' ').includes(USER_ADMIN_SCOPE)) {\n\t\t\t\t\t\t\t\tuser.getUserData(\n\t\t\t\t\t\t\t\t\tasync (err, data) => {\n\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\tlogger.debug('getting user data failed', err);\n\t\t\t\t\t\t\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\trej(err);\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tres(user);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst preferredMFA = data.PreferredMfaSetting || 'NOMFA';\n\t\t\t\t\t\t\t\t\t\tconst attributeList = [];\n\n\t\t\t\t\t\t\t\t\t\tfor (let i = 0; i < data.UserAttributes.length; i++) {\n\t\t\t\t\t\t\t\t\t\t\tconst attribute = {\n\t\t\t\t\t\t\t\t\t\t\t\tName: data.UserAttributes[i].Name,\n\t\t\t\t\t\t\t\t\t\t\t\tValue: data.UserAttributes[i].Value,\n\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\tconst userAttribute = new CognitoUserAttribute(attribute);\n\t\t\t\t\t\t\t\t\t\t\tattributeList.push(userAttribute);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tconst attributes = this.attributesToObject(attributeList);\n\t\t\t\t\t\t\t\t\t\tObject.assign(user, { attributes, preferredMFA });\n\t\t\t\t\t\t\t\t\t\treturn res(user);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{ bypassCache, clientMetadata }\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlogger.debug(\n\t\t\t\t\t\t\t\t\t`Unable to get the user data because the ${USER_ADMIN_SCOPE} ` +\n\t\t\t\t\t\t\t\t\t\t`is not in the scopes of the access token`\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn res(user);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ clientMetadata }\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tlogger.debug('Failed to sync cache info into memory', e);\n\t\t\t\t\treturn rej(e);\n\t\t\t\t});\n\t\t});\n\t}\n\n\tprivate isOAuthInProgress(): boolean {\n\t\treturn this.oAuthFlowInProgress;\n\t}\n\n\t/**\n\t * Get current authenticated user\n\t * @param {CurrentUserOpts} - options for getting the current user\n\t * @return - A promise resolves to current authenticated CognitoUser if success\n\t */\n\tpublic async currentAuthenticatedUser(\n\t\tparams?: CurrentUserOpts\n\t): Promise {\n\t\tlogger.debug('getting current authenticated user');\n\t\tlet federatedUser = null;\n\t\ttry {\n\t\t\tawait this._storageSync;\n\t\t} catch (e) {\n\t\t\tlogger.debug('Failed to sync cache info into memory', e);\n\t\t\tthrow e;\n\t\t}\n\n\t\ttry {\n\t\t\tconst federatedInfo = JSON.parse(\n\t\t\t\tthis._storage.getItem('aws-amplify-federatedInfo')\n\t\t\t);\n\t\t\tif (federatedInfo) {\n\t\t\t\tfederatedUser = {\n\t\t\t\t\t...federatedInfo.user,\n\t\t\t\t\ttoken: federatedInfo.token,\n\t\t\t\t};\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tlogger.debug('cannot load federated user from auth storage');\n\t\t}\n\n\t\tif (federatedUser) {\n\t\t\tthis.user = federatedUser;\n\t\t\tlogger.debug('get current authenticated federated user', this.user);\n\t\t\treturn this.user;\n\t\t} else {\n\t\t\tlogger.debug('get current authenticated userpool user');\n\t\t\tlet user = null;\n\t\t\ttry {\n\t\t\t\tuser = await this.currentUserPoolUser(params);\n\t\t\t} catch (e) {\n\t\t\t\tif (e === 'No userPool') {\n\t\t\t\t\tlogger.error(\n\t\t\t\t\t\t'Cannot get the current user because the user pool is missing. ' +\n\t\t\t\t\t\t\t'Please make sure the Auth module is configured with a valid Cognito User Pool ID'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tlogger.debug('The user is not authenticated by the error', e);\n\t\t\t\treturn Promise.reject('The user is not authenticated');\n\t\t\t}\n\t\t\tthis.user = user;\n\t\t\treturn this.user;\n\t\t}\n\t}\n\n\t/**\n\t * Get current user's session\n\t * @return - A promise resolves to session object if success\n\t */\n\tpublic currentSession(): Promise {\n\t\tconst that = this;\n\t\tlogger.debug('Getting current session');\n\t\t// Purposely not calling the reject method here because we don't need a console error\n\t\tif (!this.userPool) {\n\t\t\treturn Promise.reject(new Error('No User Pool in the configuration.'));\n\t\t}\n\n\t\treturn new Promise((res, rej) => {\n\t\t\tthat\n\t\t\t\t.currentUserPoolUser()\n\t\t\t\t.then(user => {\n\t\t\t\t\tthat\n\t\t\t\t\t\t.userSession(user)\n\t\t\t\t\t\t.then(session => {\n\t\t\t\t\t\t\tres(session);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(e => {\n\t\t\t\t\t\t\tlogger.debug('Failed to get the current session', e);\n\t\t\t\t\t\t\trej(e);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tlogger.debug('Failed to get the current user', e);\n\t\t\t\t\trej(e);\n\t\t\t\t\treturn;\n\t\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Get the corresponding user session\n\t * @param {Object} user - The CognitoUser object\n\t * @return - A promise resolves to the session\n\t */\n\tpublic userSession(user): Promise {\n\t\tif (!user) {\n\t\t\tlogger.debug('the user is null');\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.NoUserSession);\n\t\t}\n\t\tconst clientMetadata = this._config.clientMetadata; // TODO: verify behavior if this is override during signIn\n\n\t\treturn new Promise((res, rej) => {\n\t\t\tlogger.debug('Getting the session from this user:', user);\n\t\t\tuser.getSession(\n\t\t\t\tasync (err, session) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tlogger.debug('Failed to get the session from user', user);\n\t\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\trej(err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlogger.debug('Succeed to get the user session', session);\n\t\t\t\t\t\tres(session);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ clientMetadata }\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Get authenticated credentials of current user.\n\t * @return - A promise resolves to be current user's credentials\n\t */\n\tpublic async currentUserCredentials(): Promise {\n\t\tlogger.debug('Getting current user credentials');\n\n\t\ttry {\n\t\t\tawait this._storageSync;\n\t\t} catch (e) {\n\t\t\tlogger.debug('Failed to sync cache info into memory', e);\n\t\t\tthrow e;\n\t\t}\n\n\t\t// first to check whether there is federation info in the auth storage\n\t\tlet federatedInfo = null;\n\t\ttry {\n\t\t\tfederatedInfo = JSON.parse(\n\t\t\t\tthis._storage.getItem('aws-amplify-federatedInfo')\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tlogger.debug('failed to get or parse item aws-amplify-federatedInfo', e);\n\t\t}\n\n\t\tif (federatedInfo) {\n\t\t\t// refresh the jwt token here if necessary\n\t\t\treturn this.Credentials.refreshFederatedToken(federatedInfo);\n\t\t} else {\n\t\t\treturn this.currentSession()\n\t\t\t\t.then(session => {\n\t\t\t\t\tlogger.debug('getting session success', session);\n\t\t\t\t\treturn this.Credentials.set(session, 'session');\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tlogger.debug('getting guest credentials');\n\t\t\t\t\treturn this.Credentials.set(null, 'guest');\n\t\t\t\t});\n\t\t}\n\t}\n\n\tpublic currentCredentials(): Promise {\n\t\tlogger.debug('getting current credentials');\n\t\treturn this.Credentials.get();\n\t}\n\n\t/**\n\t * Initiate an attribute confirmation request\n\t * @param {Object} user - The CognitoUser\n\t * @param {Object} attr - The attributes to be verified\n\t * @return - A promise resolves to callback data if success\n\t */\n\tpublic verifyUserAttribute(\n\t\tuser: CognitoUser | any,\n\t\tattr: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.getAttributeVerificationCode(\n\t\t\t\tattr,\n\t\t\t\t{\n\t\t\t\t\tonSuccess(success) {\n\t\t\t\t\t\treturn resolve(success);\n\t\t\t\t\t},\n\t\t\t\t\tonFailure(err) {\n\t\t\t\t\t\treturn reject(err);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Confirm an attribute using a confirmation code\n\t * @param {Object} user - The CognitoUser\n\t * @param {Object} attr - The attribute to be verified\n\t * @param {String} code - The confirmation code\n\t * @return - A promise resolves to callback data if success\n\t */\n\tpublic verifyUserAttributeSubmit(\n\t\tuser: CognitoUser | any,\n\t\tattr: string,\n\t\tcode: string\n\t): Promise {\n\t\tif (!code) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyCode);\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.verifyAttribute(attr, code, {\n\t\t\t\tonSuccess(data) {\n\t\t\t\t\tresolve(data);\n\t\t\t\t\treturn;\n\t\t\t\t},\n\t\t\t\tonFailure(err) {\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic verifyCurrentUserAttribute(attr: string): Promise {\n\t\tconst that = this;\n\t\treturn that\n\t\t\t.currentUserPoolUser()\n\t\t\t.then(user => that.verifyUserAttribute(user, attr));\n\t}\n\n\t/**\n\t * Confirm current user's attribute using a confirmation code\n\t * @param {Object} attr - The attribute to be verified\n\t * @param {String} code - The confirmation code\n\t * @return - A promise resolves to callback data if success\n\t */\n\tverifyCurrentUserAttributeSubmit(\n\t\tattr: string,\n\t\tcode: string\n\t): Promise {\n\t\tconst that = this;\n\t\treturn that\n\t\t\t.currentUserPoolUser()\n\t\t\t.then(user => that.verifyUserAttributeSubmit(user, attr, code));\n\t}\n\n\tprivate async cognitoIdentitySignOut(\n\t\topts: SignOutOpts,\n\t\tuser: CognitoUser | any\n\t) {\n\t\ttry {\n\t\t\tawait this._storageSync;\n\t\t} catch (e) {\n\t\t\tlogger.debug('Failed to sync cache info into memory', e);\n\t\t\tthrow e;\n\t\t}\n\n\t\tconst isSignedInHostedUI =\n\t\t\tthis._oAuthHandler &&\n\t\t\tthis._storage.getItem('amplify-signin-with-hostedUI') === 'true';\n\n\t\treturn new Promise((res, rej) => {\n\t\t\tif (opts && opts.global) {\n\t\t\t\tlogger.debug('user global sign out', user);\n\t\t\t\t// in order to use global signout\n\t\t\t\t// we must validate the user as an authenticated user by using getSession\n\t\t\t\tconst clientMetadata = this._config.clientMetadata; // TODO: verify behavior if this is override during signIn\n\n\t\t\t\tuser.getSession(\n\t\t\t\t\tasync (err, result) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tlogger.debug('failed to get the user session', err);\n\t\t\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn rej(err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tuser.globalSignOut({\n\t\t\t\t\t\t\tonSuccess: data => {\n\t\t\t\t\t\t\t\tlogger.debug('global sign out success');\n\t\t\t\t\t\t\t\tif (isSignedInHostedUI) {\n\t\t\t\t\t\t\t\t\tthis.oAuthSignOutRedirect(res, rej);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn res();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonFailure: err => {\n\t\t\t\t\t\t\t\tlogger.debug('global sign out failed', err);\n\t\t\t\t\t\t\t\treturn rej(err);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\t{ clientMetadata }\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tlogger.debug('user sign out', user);\n\t\t\t\tuser.signOut(() => {\n\t\t\t\t\tif (isSignedInHostedUI) {\n\t\t\t\t\t\tthis.oAuthSignOutRedirect(res, rej);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn res();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate oAuthSignOutRedirect(\n\t\tresolve: () => void,\n\t\treject: (reason?: any) => void\n\t) {\n\t\tconst { isBrowser } = browserOrNode();\n\n\t\tif (isBrowser) {\n\t\t\tthis.oAuthSignOutRedirectOrReject(reject);\n\t\t} else {\n\t\t\tthis.oAuthSignOutAndResolve(resolve);\n\t\t}\n\t}\n\n\tprivate oAuthSignOutAndResolve(resolve: () => void) {\n\t\tthis._oAuthHandler.signOut();\n\t\tresolve();\n\t}\n\n\tprivate oAuthSignOutRedirectOrReject(reject: (reason?: any) => void) {\n\t\tthis._oAuthHandler.signOut(); // this method redirects url\n\n\t\t// App should be redirected to another url otherwise it will reject\n\t\tsetTimeout(() => reject(Error('Signout timeout fail')), 3000);\n\t}\n\n\t/**\n\t * Sign out method\n\t * @\n\t * @return - A promise resolved if success\n\t */\n\tpublic async signOut(opts?: SignOutOpts): Promise {\n\t\ttry {\n\t\t\tawait this.cleanCachedItems();\n\t\t} catch (e) {\n\t\t\tlogger.debug('failed to clear cached items');\n\t\t}\n\n\t\tif (this.userPool) {\n\t\t\tconst user = this.userPool.getCurrentUser();\n\t\t\tif (user) {\n\t\t\t\tawait this.cognitoIdentitySignOut(opts, user);\n\t\t\t} else {\n\t\t\t\tlogger.debug('no current Cognito user');\n\t\t\t}\n\t\t} else {\n\t\t\tlogger.debug('no Cognito User pool');\n\t\t}\n\n\t\t/**\n\t\t * Note for future refactor - no reliable way to get username with\n\t\t * Cognito User Pools vs Identity when federating with Social Providers\n\t\t * This is why we need a well structured session object that can be inspected\n\t\t * and information passed back in the message below for Hub dispatch\n\t\t */\n\t\tdispatchAuthEvent('signOut', this.user, `A user has been signed out`);\n\t\tthis.user = null;\n\t}\n\n\tprivate async cleanCachedItems() {\n\t\t// clear cognito cached item\n\t\tawait this.Credentials.clear();\n\t}\n\n\t/**\n\t * Change a password for an authenticated user\n\t * @param {Object} user - The CognitoUser object\n\t * @param {String} oldPassword - the current password\n\t * @param {String} newPassword - the requested new password\n\t * @return - A promise resolves if success\n\t */\n\tpublic changePassword(\n\t\tuser: CognitoUser | any,\n\t\toldPassword: string,\n\t\tnewPassword: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise<'SUCCESS'> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.userSession(user).then(session => {\n\t\t\t\tuser.changePassword(\n\t\t\t\t\toldPassword,\n\t\t\t\t\tnewPassword,\n\t\t\t\t\t(err, data) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tlogger.debug('change password failure', err);\n\t\t\t\t\t\t\treturn reject(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn resolve(data);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tclientMetadata\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Initiate a forgot password request\n\t * @param {String} username - the username to change password\n\t * @return - A promise resolves if success\n\t */\n\tpublic forgotPassword(\n\t\tusername: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\t\tif (!username) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n\t\t}\n\n\t\tconst user = this.createCognitoUser(username);\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.forgotPassword(\n\t\t\t\t{\n\t\t\t\t\tonSuccess: () => {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t},\n\t\t\t\t\tonFailure: err => {\n\t\t\t\t\t\tlogger.debug('forgot password failure', err);\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'forgotPassword_failure',\n\t\t\t\t\t\t\terr,\n\t\t\t\t\t\t\t`${username} forgotPassword failed`\n\t\t\t\t\t\t);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t},\n\t\t\t\t\tinputVerificationCode: data => {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'forgotPassword',\n\t\t\t\t\t\t\tuser,\n\t\t\t\t\t\t\t`${username} has initiated forgot password flow`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Confirm a new password using a confirmation Code\n\t * @param {String} username - The username\n\t * @param {String} code - The confirmation code\n\t * @param {String} password - The new password\n\t * @return - A promise that resolves if success\n\t */\n\tpublic forgotPasswordSubmit(\n\t\tusername: string,\n\t\tcode: string,\n\t\tpassword: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\t\tif (!username) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n\t\t}\n\t\tif (!code) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyCode);\n\t\t}\n\t\tif (!password) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyPassword);\n\t\t}\n\n\t\tconst user = this.createCognitoUser(username);\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.confirmPassword(\n\t\t\t\tcode,\n\t\t\t\tpassword,\n\t\t\t\t{\n\t\t\t\t\tonSuccess: success => {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'forgotPasswordSubmit',\n\t\t\t\t\t\t\tuser,\n\t\t\t\t\t\t\t`${username} forgotPasswordSubmit successful`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresolve(success);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t},\n\t\t\t\t\tonFailure: err => {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'forgotPasswordSubmit_failure',\n\t\t\t\t\t\t\terr,\n\t\t\t\t\t\t\t`${username} forgotPasswordSubmit failed`\n\t\t\t\t\t\t);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Get user information\n\t * @async\n\t * @return {Object }- current User's information\n\t */\n\tpublic async currentUserInfo() {\n\t\tconst source = this.Credentials.getCredSource();\n\n\t\tif (!source || source === 'aws' || source === 'userPool') {\n\t\t\tconst user = await this.currentUserPoolUser().catch(err =>\n\t\t\t\tlogger.error(err)\n\t\t\t);\n\t\t\tif (!user) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst attributes = await this.userAttributes(user);\n\t\t\t\tconst userAttrs: object = this.attributesToObject(attributes);\n\t\t\t\tlet credentials = null;\n\t\t\t\ttry {\n\t\t\t\t\tcredentials = await this.currentCredentials();\n\t\t\t\t} catch (e) {\n\t\t\t\t\tlogger.debug(\n\t\t\t\t\t\t'Failed to retrieve credentials while getting current user info',\n\t\t\t\t\t\te\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst info = {\n\t\t\t\t\tid: credentials ? credentials.identityId : undefined,\n\t\t\t\t\tusername: user.getUsername(),\n\t\t\t\t\tattributes: userAttrs,\n\t\t\t\t};\n\t\t\t\treturn info;\n\t\t\t} catch (err) {\n\t\t\t\tlogger.error('currentUserInfo error', err);\n\t\t\t\treturn {};\n\t\t\t}\n\t\t}\n\n\t\tif (source === 'federated') {\n\t\t\tconst user = this.user;\n\t\t\treturn user ? user : {};\n\t\t}\n\t}\n\n\tpublic async federatedSignIn(\n\t\toptions?: FederatedSignInOptions\n\t): Promise;\n\tpublic async federatedSignIn(\n\t\tprovider: LegacyProvider,\n\t\tresponse: FederatedResponse,\n\t\tuser: FederatedUser\n\t): Promise;\n\tpublic async federatedSignIn(\n\t\toptions?: FederatedSignInOptionsCustom\n\t): Promise;\n\tpublic async federatedSignIn(\n\t\tproviderOrOptions:\n\t\t\t| LegacyProvider\n\t\t\t| FederatedSignInOptions\n\t\t\t| FederatedSignInOptionsCustom,\n\t\tresponse?: FederatedResponse,\n\t\tuser?: FederatedUser\n\t): Promise {\n\t\tif (!this._config.identityPoolId && !this._config.userPoolId) {\n\t\t\tthrow new Error(\n\t\t\t\t`Federation requires either a User Pool or Identity Pool in config`\n\t\t\t);\n\t\t}\n\n\t\t// Ensure backwards compatability\n\t\tif (typeof providerOrOptions === 'undefined') {\n\t\t\tif (this._config.identityPoolId && !this._config.userPoolId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Federation with Identity Pools requires tokens passed as arguments`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tisFederatedSignInOptions(providerOrOptions) ||\n\t\t\tisFederatedSignInOptionsCustom(providerOrOptions) ||\n\t\t\thasCustomState(providerOrOptions) ||\n\t\t\ttypeof providerOrOptions === 'undefined'\n\t\t) {\n\t\t\tconst options = providerOrOptions || {\n\t\t\t\tprovider: CognitoHostedUIIdentityProvider.Cognito,\n\t\t\t};\n\t\t\tconst provider = isFederatedSignInOptions(options)\n\t\t\t\t? options.provider\n\t\t\t\t: (options as FederatedSignInOptionsCustom).customProvider;\n\n\t\t\tconst customState = isFederatedSignInOptions(options)\n\t\t\t\t? options.customState\n\t\t\t\t: (options as FederatedSignInOptionsCustom).customState;\n\n\t\t\tif (this._config.userPoolId) {\n\t\t\t\tconst client_id = isCognitoHostedOpts(this._config.oauth)\n\t\t\t\t\t? this._config.userPoolWebClientId\n\t\t\t\t\t: this._config.oauth.clientID;\n\t\t\t\t/*Note: Invenstigate automatically adding trailing slash */\n\t\t\t\tconst redirect_uri = isCognitoHostedOpts(this._config.oauth)\n\t\t\t\t\t? this._config.oauth.redirectSignIn\n\t\t\t\t\t: this._config.oauth.redirectUri;\n\n\t\t\t\tthis._oAuthHandler.oauthSignIn(\n\t\t\t\t\tthis._config.oauth.responseType,\n\t\t\t\t\tthis._config.oauth.domain,\n\t\t\t\t\tredirect_uri,\n\t\t\t\t\tclient_id,\n\t\t\t\t\tprovider,\n\t\t\t\t\tcustomState\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tconst provider = providerOrOptions;\n\t\t\t// To check if the user is already logged in\n\t\t\ttry {\n\t\t\t\tconst loggedInUser = JSON.stringify(\n\t\t\t\t\tJSON.parse(this._storage.getItem('aws-amplify-federatedInfo')).user\n\t\t\t\t);\n\t\t\t\tif (loggedInUser) {\n\t\t\t\t\tlogger.warn(`There is already a signed in user: ${loggedInUser} in your app.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tYou should not call Auth.federatedSignIn method again as it may cause unexpected behavior.`);\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tconst { token, identity_id, expires_at } = response;\n\t\t\t// Because this.Credentials.set would update the user info with identity id\n\t\t\t// So we need to retrieve the user again.\n\t\t\tconst credentials = await this.Credentials.set(\n\t\t\t\t{ provider, token, identity_id, user, expires_at },\n\t\t\t\t'federation'\n\t\t\t);\n\t\t\tconst currentUser = await this.currentAuthenticatedUser();\n\t\t\tdispatchAuthEvent(\n\t\t\t\t'signIn',\n\t\t\t\tcurrentUser,\n\t\t\t\t`A user ${currentUser.username} has been signed in`\n\t\t\t);\n\t\t\tlogger.debug('federated sign in credentials', credentials);\n\t\t\treturn credentials;\n\t\t}\n\t}\n\n\t/**\n\t * Used to complete the OAuth flow with or without the Cognito Hosted UI\n\t * @param {String} URL - optional parameter for customers to pass in the response URL\n\t */\n\tprivate async _handleAuthResponse(URL?: string) {\n\t\tif (this.oAuthFlowInProgress) {\n\t\t\tlogger.debug(`Skipping URL ${URL} current flow in progress`);\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tthis.oAuthFlowInProgress = true;\n\t\t\tif (!this._config.userPoolId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`OAuth responses require a User Pool defined in config`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tdispatchAuthEvent(\n\t\t\t\t'parsingCallbackUrl',\n\t\t\t\t{ url: URL },\n\t\t\t\t`The callback url is being parsed`\n\t\t\t);\n\n\t\t\tconst currentUrl =\n\t\t\t\tURL || (browserOrNode().isBrowser ? window.location.href : '');\n\n\t\t\tconst hasCodeOrError = !!(parse(currentUrl).query || '')\n\t\t\t\t.split('&')\n\t\t\t\t.map(entry => entry.split('='))\n\t\t\t\t.find(([k]) => k === 'code' || k === 'error');\n\n\t\t\tconst hasTokenOrError = !!(parse(currentUrl).hash || '#')\n\t\t\t\t.substr(1)\n\t\t\t\t.split('&')\n\t\t\t\t.map(entry => entry.split('='))\n\t\t\t\t.find(([k]) => k === 'access_token' || k === 'error');\n\n\t\t\tif (hasCodeOrError || hasTokenOrError) {\n\t\t\t\tthis._storage.setItem('amplify-redirected-from-hosted-ui', 'true');\n\t\t\t\ttry {\n\t\t\t\t\tconst { accessToken, idToken, refreshToken, state } =\n\t\t\t\t\t\tawait this._oAuthHandler.handleAuthResponse(currentUrl);\n\t\t\t\t\tconst session = new CognitoUserSession({\n\t\t\t\t\t\tIdToken: new CognitoIdToken({ IdToken: idToken }),\n\t\t\t\t\t\tRefreshToken: new CognitoRefreshToken({\n\t\t\t\t\t\t\tRefreshToken: refreshToken,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tAccessToken: new CognitoAccessToken({\n\t\t\t\t\t\t\tAccessToken: accessToken,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\n\t\t\t\t\tlet credentials;\n\t\t\t\t\t// Get AWS Credentials & store if Identity Pool is defined\n\t\t\t\t\tif (this._config.identityPoolId) {\n\t\t\t\t\t\tcredentials = await this.Credentials.set(session, 'session');\n\t\t\t\t\t\tlogger.debug('AWS credentials', credentials);\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\tPrior to the request we do sign the custom state along with the state we set. This check will verify\n\t\t\t\tif there is a dash indicated when setting custom state from the request. If a dash is contained\n\t\t\t\tthen there is custom state present on the state string.\n\t\t\t\t*/\n\t\t\t\t\tconst isCustomStateIncluded = /-/.test(state);\n\n\t\t\t\t\t/*\n\t\t\t\tThe following is to create a user for the Cognito Identity SDK to store the tokens\n\t\t\t\tWhen we remove this SDK later that logic will have to be centralized in our new version\n\t\t\t\t*/\n\t\t\t\t\t//#region\n\t\t\t\t\tconst currentUser = this.createCognitoUser(\n\t\t\t\t\t\tsession.getIdToken().decodePayload()['cognito:username']\n\t\t\t\t\t);\n\n\t\t\t\t\t// This calls cacheTokens() in Cognito SDK\n\t\t\t\t\tcurrentUser.setSignInUserSession(session);\n\n\t\t\t\t\tif (window && typeof window.history !== 'undefined') {\n\t\t\t\t\t\twindow.history.replaceState(\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t(this._config.oauth as AwsCognitoOAuthOpts).redirectSignIn\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t'signIn',\n\t\t\t\t\t\tcurrentUser,\n\t\t\t\t\t\t`A user ${currentUser.getUsername()} has been signed in`\n\t\t\t\t\t);\n\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t'cognitoHostedUI',\n\t\t\t\t\t\tcurrentUser,\n\t\t\t\t\t\t`A user ${currentUser.getUsername()} has been signed in via Cognito Hosted UI`\n\t\t\t\t\t);\n\n\t\t\t\t\tif (isCustomStateIncluded) {\n\t\t\t\t\t\tconst customState = state.split('-').splice(1).join('-');\n\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'customOAuthState',\n\t\t\t\t\t\t\turlSafeDecode(customState),\n\t\t\t\t\t\t\t`State for user ${currentUser.getUsername()}`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t//#endregion\n\n\t\t\t\t\treturn credentials;\n\t\t\t\t} catch (err) {\n\t\t\t\t\tlogger.debug('Error in cognito hosted auth response', err);\n\n\t\t\t\t\t// Just like a successful handling of `?code`, replace the window history to \"dispose\" of the `code`.\n\t\t\t\t\t// Otherwise, reloading the page will throw errors as the `code` has already been spent.\n\t\t\t\t\tif (window && typeof window.history !== 'undefined') {\n\t\t\t\t\t\twindow.history.replaceState(\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t(this._config.oauth as AwsCognitoOAuthOpts).redirectSignIn\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t'signIn_failure',\n\t\t\t\t\t\terr,\n\t\t\t\t\t\t`The OAuth response flow failed`\n\t\t\t\t\t);\n\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t'cognitoHostedUI_failure',\n\t\t\t\t\t\terr,\n\t\t\t\t\t\t`A failure occurred when returning to the Cognito Hosted UI`\n\t\t\t\t\t);\n\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t'customState_failure',\n\t\t\t\t\t\terr,\n\t\t\t\t\t\t`A failure occurred when returning state`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tthis.oAuthFlowInProgress = false;\n\t\t}\n\t}\n\n\t/**\n\t * Compact version of credentials\n\t * @param {Object} credentials\n\t * @return {Object} - Credentials\n\t */\n\tpublic essentialCredentials(credentials): ICredentials {\n\t\treturn {\n\t\t\taccessKeyId: credentials.accessKeyId,\n\t\t\tsessionToken: credentials.sessionToken,\n\t\t\tsecretAccessKey: credentials.secretAccessKey,\n\t\t\tidentityId: credentials.identityId,\n\t\t\tauthenticated: credentials.authenticated,\n\t\t};\n\t}\n\n\tprivate attributesToObject(attributes) {\n\t\tconst obj = {};\n\t\tif (attributes) {\n\t\t\tattributes.map(attribute => {\n\t\t\t\tif (\n\t\t\t\t\tattribute.Name === 'email_verified' ||\n\t\t\t\t\tattribute.Name === 'phone_number_verified'\n\t\t\t\t) {\n\t\t\t\t\tobj[attribute.Name] =\n\t\t\t\t\t\tthis.isTruthyString(attribute.Value) || attribute.Value === true;\n\t\t\t\t} else {\n\t\t\t\t\tobj[attribute.Name] = attribute.Value;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn obj;\n\t}\n\n\tprivate isTruthyString(value: any): boolean {\n\t\treturn (\n\t\t\ttypeof value.toLowerCase === 'function' && value.toLowerCase() === 'true'\n\t\t);\n\t}\n\n\tprivate createCognitoUser(username: string): CognitoUser {\n\t\tconst userData: ICognitoUserData = {\n\t\t\tUsername: username,\n\t\t\tPool: this.userPool,\n\t\t};\n\t\tuserData.Storage = this._storage;\n\n\t\tconst { authenticationFlowType } = this._config;\n\n\t\tconst user = new CognitoUser(userData);\n\t\tif (authenticationFlowType) {\n\t\t\tuser.setAuthenticationFlowType(authenticationFlowType);\n\t\t}\n\t\treturn user;\n\t}\n\n\tprivate _isValidAuthStorage(obj) {\n\t\t// We need to check if the obj has the functions of Storage\n\t\treturn (\n\t\t\t!!obj &&\n\t\t\ttypeof obj.getItem === 'function' &&\n\t\t\ttypeof obj.setItem === 'function' &&\n\t\t\ttypeof obj.removeItem === 'function' &&\n\t\t\ttypeof obj.clear === 'function'\n\t\t);\n\t}\n\n\tprivate noUserPoolErrorHandler(config: AuthOptions): AuthErrorTypes {\n\t\tif (config) {\n\t\t\tif (!config.userPoolId || !config.identityPoolId) {\n\t\t\t\treturn AuthErrorTypes.MissingAuthConfig;\n\t\t\t}\n\t\t}\n\t\treturn AuthErrorTypes.NoConfig;\n\t}\n\n\tprivate rejectAuthError(type: AuthErrorTypes): Promise {\n\t\treturn Promise.reject(new AuthError(type));\n\t}\n\n\tprivate rejectNoUserPool(): Promise {\n\t\tconst type = this.noUserPoolErrorHandler(this._config);\n\t\treturn Promise.reject(new NoUserPoolError(type));\n\t}\n\n\tpublic async rememberDevice(): Promise {\n\t\tlet currUser;\n\n\t\ttry {\n\t\t\tcurrUser = await this.currentUserPoolUser();\n\t\t} catch (error) {\n\t\t\tlogger.debug('The user is not authenticated by the error', error);\n\t\t\treturn Promise.reject('The user is not authenticated');\n\t\t}\n\n\t\tcurrUser.getCachedDeviceKeyAndPassword();\n\t\treturn new Promise((res, rej) => {\n\t\t\tcurrUser.setDeviceStatusRemembered({\n\t\t\t\tonSuccess: data => {\n\t\t\t\t\tres(data);\n\t\t\t\t},\n\t\t\t\tonFailure: err => {\n\t\t\t\t\tif (err.code === 'InvalidParameterException') {\n\t\t\t\t\t\trej(new AuthError(AuthErrorTypes.DeviceConfig));\n\t\t\t\t\t} else if (err.code === 'NetworkError') {\n\t\t\t\t\t\trej(new AuthError(AuthErrorTypes.NetworkError));\n\t\t\t\t\t} else {\n\t\t\t\t\t\trej(err);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic async forgetDevice(): Promise {\n\t\tlet currUser;\n\n\t\ttry {\n\t\t\tcurrUser = await this.currentUserPoolUser();\n\t\t} catch (error) {\n\t\t\tlogger.debug('The user is not authenticated by the error', error);\n\t\t\treturn Promise.reject('The user is not authenticated');\n\t\t}\n\n\t\tcurrUser.getCachedDeviceKeyAndPassword();\n\t\treturn new Promise((res, rej) => {\n\t\t\tcurrUser.forgetDevice({\n\t\t\t\tonSuccess: data => {\n\t\t\t\t\tres(data);\n\t\t\t\t},\n\t\t\t\tonFailure: err => {\n\t\t\t\t\tif (err.code === 'InvalidParameterException') {\n\t\t\t\t\t\trej(new AuthError(AuthErrorTypes.DeviceConfig));\n\t\t\t\t\t} else if (err.code === 'NetworkError') {\n\t\t\t\t\t\trej(new AuthError(AuthErrorTypes.NetworkError));\n\t\t\t\t\t} else {\n\t\t\t\t\t\trej(err);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic async fetchDevices(): Promise {\n\t\tlet currUser;\n\n\t\ttry {\n\t\t\tcurrUser = await this.currentUserPoolUser();\n\t\t} catch (error) {\n\t\t\tlogger.debug('The user is not authenticated by the error', error);\n\t\t\tthrow new Error('The user is not authenticated');\n\t\t}\n\n\t\tcurrUser.getCachedDeviceKeyAndPassword();\n\t\treturn new Promise((res, rej) => {\n\t\t\tconst cb = {\n\t\t\t\tonSuccess(data) {\n\t\t\t\t\tconst deviceList: IAuthDevice[] = data.Devices.map(device => {\n\t\t\t\t\t\tconst deviceName =\n\t\t\t\t\t\t\tdevice.DeviceAttributes.find(\n\t\t\t\t\t\t\t\t({ Name }) => Name === 'device_name'\n\t\t\t\t\t\t\t) || {};\n\n\t\t\t\t\t\tconst deviceInfo: IAuthDevice = {\n\t\t\t\t\t\t\tid: device.DeviceKey,\n\t\t\t\t\t\t\tname: deviceName.Value,\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn deviceInfo;\n\t\t\t\t\t});\n\t\t\t\t\tres(deviceList);\n\t\t\t\t},\n\t\t\t\tonFailure: err => {\n\t\t\t\t\tif (err.code === 'InvalidParameterException') {\n\t\t\t\t\t\trej(new AuthError(AuthErrorTypes.DeviceConfig));\n\t\t\t\t\t} else if (err.code === 'NetworkError') {\n\t\t\t\t\t\trej(new AuthError(AuthErrorTypes.NetworkError));\n\t\t\t\t\t} else {\n\t\t\t\t\t\trej(err);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t};\n\t\t\tcurrUser.listDevices(MAX_DEVICES, null, cb);\n\t\t});\n\t}\n}\n\nexport const Auth = new AuthClass(null);\n\nAmplify.register(Auth);\n","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { browserOrNode } from '@aws-amplify/core';\n\nexport default callback => {\n\tif (browserOrNode().isBrowser && window.location) {\n\t\tconst url = window.location.href;\n\n\t\tcallback({ url });\n\t} else if (browserOrNode().isNode) {\n\t\t// continue building on ssr\n\t\t() => {}; // noop\n\t} else {\n\t\tthrow new Error('Not supported');\n\t}\n};\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { ConsoleLogger as Logger } from '../Logger';\n\nconst logger = new Logger('ClientDevice_Browser');\n\nexport function clientInfo() {\n\tif (typeof window === 'undefined') {\n\t\treturn {};\n\t}\n\n\treturn browserClientInfo();\n}\n\nfunction browserClientInfo() {\n\tif (typeof window === 'undefined') {\n\t\tlogger.warn('No window object available to get browser client info');\n\t\treturn {};\n\t}\n\n\tconst nav = window.navigator;\n\tif (!nav) {\n\t\tlogger.warn('No navigator object available to get browser client info');\n\t\treturn {};\n\t}\n\n\tconst { platform, product, vendor, userAgent, language } = nav;\n\tconst type = browserType(userAgent);\n\tconst timezone = browserTimezone();\n\n\treturn {\n\t\tplatform,\n\t\tmake: product || vendor,\n\t\tmodel: type.type,\n\t\tversion: type.version,\n\t\tappVersion: [type.type, type.version].join('/'),\n\t\tlanguage,\n\t\ttimezone,\n\t};\n}\n\nexport function dimension() {\n\tif (typeof window === 'undefined') {\n\t\tlogger.warn('No window object available to get browser client info');\n\t\treturn { width: 320, height: 320 };\n\t}\n\n\treturn {\n\t\twidth: window.innerWidth,\n\t\theight: window.innerHeight,\n\t};\n}\n\nfunction browserTimezone() {\n\tconst tzMatch = /\\(([A-Za-z\\s].*)\\)/.exec(new Date().toString());\n\treturn tzMatch ? tzMatch[1] || '' : '';\n}\n\nexport function browserType(userAgent: string) {\n\tconst operaMatch = /.+(Opera[\\s[A-Z]*|OPR[\\sA-Z]*)\\/([0-9\\.]+).*/i.exec(\n\t\tuserAgent\n\t);\n\tif (operaMatch) {\n\t\treturn { type: operaMatch[1], version: operaMatch[2] };\n\t}\n\n\tconst ieMatch = /.+(Trident|Edge)\\/([0-9\\.]+).*/i.exec(userAgent);\n\tif (ieMatch) {\n\t\treturn { type: ieMatch[1], version: ieMatch[2] };\n\t}\n\n\tconst cfMatch = /.+(Chrome|Firefox|FxiOS)\\/([0-9\\.]+).*/i.exec(userAgent);\n\tif (cfMatch) {\n\t\treturn { type: cfMatch[1], version: cfMatch[2] };\n\t}\n\n\tconst sMatch = /.+(Safari)\\/([0-9\\.]+).*/i.exec(userAgent);\n\tif (sMatch) {\n\t\treturn { type: sMatch[1], version: sMatch[2] };\n\t}\n\n\tconst awkMatch = /.+(AppleWebKit)\\/([0-9\\.]+).*/i.exec(userAgent);\n\tif (awkMatch) {\n\t\treturn { type: awkMatch[1], version: awkMatch[2] };\n\t}\n\n\tconst anyMatch = /.*([A-Z]+)\\/([0-9\\.]+).*/i.exec(userAgent);\n\tif (anyMatch) {\n\t\treturn { type: anyMatch[1], version: anyMatch[2] };\n\t}\n\n\treturn { type: '', version: '' };\n}\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport { clientInfo, dimension } from './browser';\n\nexport class ClientDevice {\n\tstatic clientInfo() {\n\t\treturn clientInfo();\n\t}\n\n\tstatic dimension() {\n\t\treturn dimension();\n\t}\n}\n\n/**\n * @deprecated use named import\n */\nexport default ClientDevice;\n","/**\n * Date & time utility functions to abstract the `aws-sdk` away from users.\n * (v2 => v3 modularization is a breaking change)\n *\n * @see https://github.com/aws/aws-sdk-js/blob/6edf586dcc1de7fe8fbfbbd9a0d2b1847921e6e1/lib/util.js#L262\n */\n\n// Comment - TODO: remove\n\nconst FIVE_MINUTES_IN_MS = 1000 * 60 * 5;\n\nexport const DateUtils = {\n\t/**\n\t * Milliseconds to offset the date to compensate for clock skew between device & services\n\t */\n\tclockOffset: 0,\n\n\tgetDateWithClockOffset() {\n\t\tif (DateUtils.clockOffset) {\n\t\t\treturn new Date(new Date().getTime() + DateUtils.clockOffset);\n\t\t} else {\n\t\t\treturn new Date();\n\t\t}\n\t},\n\n\t/**\n\t * @returns {number} Clock offset in milliseconds\n\t */\n\tgetClockOffset() {\n\t\treturn DateUtils.clockOffset;\n\t},\n\n\tgetHeaderStringFromDate(date: Date = DateUtils.getDateWithClockOffset()) {\n\t\treturn date.toISOString().replace(/[:\\-]|\\.\\d{3}/g, '');\n\t},\n\n\tgetDateFromHeaderString(header: string) {\n\t\tconst [, year, month, day, hour, minute, second] = header.match(\n\t\t\t/^(\\d{4})(\\d{2})(\\d{2})T(\\d{2})(\\d{2})(\\d{2}).+/\n\t\t);\n\n\t\treturn new Date(\n\t\t\tDate.UTC(\n\t\t\t\tNumber(year),\n\t\t\t\tNumber(month) - 1,\n\t\t\t\tNumber(day),\n\t\t\t\tNumber(hour),\n\t\t\t\tNumber(minute),\n\t\t\t\tNumber(second)\n\t\t\t)\n\t\t);\n\t},\n\n\tisClockSkewed(serverDate: Date) {\n\t\t// API gateway permits client calls that are off by no more than ±5 minutes\n\t\treturn (\n\t\t\tMath.abs(\n\t\t\t\tserverDate.getTime() - DateUtils.getDateWithClockOffset().getTime()\n\t\t\t) >= FIVE_MINUTES_IN_MS\n\t\t);\n\t},\n\n\tisClockSkewError(error: any) {\n\t\tif (!error.response || !error.response.headers) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst { headers } = error.response;\n\n\t\treturn Boolean(\n\t\t\t['BadRequestException', 'InvalidSignatureException'].includes(\n\t\t\t\theaders['x-amzn-errortype']\n\t\t\t) &&\n\t\t\t\t(headers.date || headers.Date)\n\t\t);\n\t},\n\n\t/**\n\t * @param {number} offset Clock offset in milliseconds\n\t */\n\tsetClockOffset(offset: number) {\n\t\tDateUtils.clockOffset = offset;\n\t},\n};\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport { ConsoleLogger as Logger } from './Logger';\nimport { Sha256 as jsSha256 } from '@aws-crypto/sha256-js';\nimport { toHex } from '@aws-sdk/util-hex-encoding';\nimport { parse, format } from 'url';\nimport { DateUtils } from './Util';\n\nconst logger = new Logger('Signer');\n\nconst DEFAULT_ALGORITHM = 'AWS4-HMAC-SHA256';\nconst IOT_SERVICE_NAME = 'iotdevicegateway';\n\nconst encrypt = function(key, src) {\n\tconst hash = new jsSha256(key);\n\thash.update(src);\n\treturn hash.digestSync();\n};\n\nconst hash = function(src) {\n\tconst arg = src || '';\n\tconst hash = new jsSha256();\n\thash.update(arg);\n\treturn toHex(hash.digestSync());\n};\n\n/**\n * @private\n * RFC 3986 compliant version of encodeURIComponent\n */\nconst escape_RFC3986 = function(component) {\n\treturn component.replace(/[!'()*]/g, function(c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n\n/**\n * @private\n * Create canonical query string\n *\n */\nconst canonical_query = function(query) {\n\tif (!query || query.length === 0) {\n\t\treturn '';\n\t}\n\n\treturn query\n\t\t.split('&')\n\t\t.map(e => {\n\t\t\tconst key_val = e.split('=');\n\n\t\t\tif (key_val.length === 1) {\n\t\t\t\treturn e;\n\t\t\t} else {\n\t\t\t\tconst reencoded_val = escape_RFC3986(key_val[1]);\n\t\t\t\treturn key_val[0] + '=' + reencoded_val;\n\t\t\t}\n\t\t})\n\t\t.sort((a, b) => {\n\t\t\tconst key_a = a.split('=')[0];\n\t\t\tconst key_b = b.split('=')[0];\n\t\t\tif (key_a === key_b) {\n\t\t\t\treturn a < b ? -1 : 1;\n\t\t\t} else {\n\t\t\t\treturn key_a < key_b ? -1 : 1;\n\t\t\t}\n\t\t})\n\t\t.join('&');\n};\n\n/**\n* @private\n* Create canonical headers\n*\n
\nCanonicalHeaders =\n    CanonicalHeadersEntry0 + CanonicalHeadersEntry1 + ... + CanonicalHeadersEntryN\nCanonicalHeadersEntry =\n    Lowercase(HeaderName) + ':' + Trimall(HeaderValue) + '\\n'\n
\n*/\nconst canonical_headers = function(headers) {\n\tif (!headers || Object.keys(headers).length === 0) {\n\t\treturn '';\n\t}\n\n\treturn (\n\t\tObject.keys(headers)\n\t\t\t.map(function(key) {\n\t\t\t\treturn {\n\t\t\t\t\tkey: key.toLowerCase(),\n\t\t\t\t\tvalue: headers[key] ? headers[key].trim().replace(/\\s+/g, ' ') : '',\n\t\t\t\t};\n\t\t\t})\n\t\t\t.sort(function(a, b) {\n\t\t\t\treturn a.key < b.key ? -1 : 1;\n\t\t\t})\n\t\t\t.map(function(item) {\n\t\t\t\treturn item.key + ':' + item.value;\n\t\t\t})\n\t\t\t.join('\\n') + '\\n'\n\t);\n};\n\n/**\n * List of header keys included in the canonical headers.\n * @access private\n */\nconst signed_headers = function(headers) {\n\treturn Object.keys(headers)\n\t\t.map(function(key) {\n\t\t\treturn key.toLowerCase();\n\t\t})\n\t\t.sort()\n\t\t.join(';');\n};\n\n/**\n* @private\n* Create canonical request\n* Refer to\n* {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html|Create a Canonical Request}\n*\n
\nCanonicalRequest =\n    HTTPRequestMethod + '\\n' +\n    CanonicalURI + '\\n' +\n    CanonicalQueryString + '\\n' +\n    CanonicalHeaders + '\\n' +\n    SignedHeaders + '\\n' +\n    HexEncode(Hash(RequestPayload))\n
\n*/\nconst canonical_request = function(request) {\n\tconst url_info = parse(request.url);\n\n\treturn [\n\t\trequest.method || '/',\n\t\tencodeURIComponent(url_info.pathname).replace(/%2F/gi, '/'),\n\t\tcanonical_query(url_info.query),\n\t\tcanonical_headers(request.headers),\n\t\tsigned_headers(request.headers),\n\t\thash(request.data),\n\t].join('\\n');\n};\n\nconst parse_service_info = function(request) {\n\tconst url_info = parse(request.url),\n\t\thost = url_info.host;\n\n\tconst matched = host.match(/([^\\.]+)\\.(?:([^\\.]*)\\.)?amazonaws\\.com$/);\n\tlet parsed = (matched || []).slice(1, 3);\n\n\tif (parsed[1] === 'es') {\n\t\t// Elastic Search\n\t\tparsed = parsed.reverse();\n\t}\n\n\treturn {\n\t\tservice: request.service || parsed[0],\n\t\tregion: request.region || parsed[1],\n\t};\n};\n\nconst credential_scope = function(d_str, region, service) {\n\treturn [d_str, region, service, 'aws4_request'].join('/');\n};\n\n/**\n* @private\n* Create a string to sign\n* Refer to\n* {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html|Create String to Sign}\n*\n
\nStringToSign =\n    Algorithm + \\n +\n    RequestDateTime + \\n +\n    CredentialScope + \\n +\n    HashedCanonicalRequest\n
\n*/\nconst string_to_sign = function(algorithm, canonical_request, dt_str, scope) {\n\treturn [algorithm, dt_str, scope, hash(canonical_request)].join('\\n');\n};\n\n/**\n* @private\n* Create signing key\n* Refer to\n* {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html|Calculate Signature}\n*\n
\nkSecret = your secret access key\nkDate = HMAC(\"AWS4\" + kSecret, Date)\nkRegion = HMAC(kDate, Region)\nkService = HMAC(kRegion, Service)\nkSigning = HMAC(kService, \"aws4_request\")\n
\n*/\nconst get_signing_key = function(secret_key, d_str, service_info) {\n\tlogger.debug(service_info);\n\tconst k = 'AWS4' + secret_key,\n\t\tk_date = encrypt(k, d_str),\n\t\tk_region = encrypt(k_date, service_info.region),\n\t\tk_service = encrypt(k_region, service_info.service),\n\t\tk_signing = encrypt(k_service, 'aws4_request');\n\n\treturn k_signing;\n};\n\nconst get_signature = function(signing_key, str_to_sign) {\n\treturn toHex(encrypt(signing_key, str_to_sign));\n};\n\n/**\n * @private\n * Create authorization header\n * Refer to\n * {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html|Add the Signing Information}\n */\nconst get_authorization_header = function(\n\talgorithm,\n\taccess_key,\n\tscope,\n\tsigned_headers,\n\tsignature\n) {\n\treturn [\n\t\talgorithm + ' ' + 'Credential=' + access_key + '/' + scope,\n\t\t'SignedHeaders=' + signed_headers,\n\t\t'Signature=' + signature,\n\t].join(', ');\n};\n\nexport class Signer {\n\t/**\n * Sign a HTTP request, add 'Authorization' header to request param\n * @method sign\n * @memberof Signer\n * @static\n *\n * @param {object} request - HTTP request object\n
\n    request: {\n        method: GET | POST | PUT ...\n        url: ...,\n        headers: {\n            header1: ...\n        },\n        data: data\n    }\n    
\n * @param {object} access_info - AWS access credential info\n
\n    access_info: {\n        access_key: ...,\n        secret_key: ...,\n        session_token: ...\n    }\n    
\n * @param {object} [service_info] - AWS service type and region, optional,\n * if not provided then parse out from url\n
\n    service_info: {\n        service: ...,\n        region: ...\n    }\n    
\n *\n * @returns {object} Signed HTTP request\n */\n\tstatic sign(request, access_info, service_info = null) {\n\t\trequest.headers = request.headers || {};\n\n\t\tif (request.body && !request.data) {\n\t\t\tthrow new Error(\n\t\t\t\t'The attribute \"body\" was found on the request object. Please use the attribute \"data\" instead.'\n\t\t\t);\n\t\t}\n\n\t\t// datetime string and date string\n\t\tconst dt = DateUtils.getDateWithClockOffset(),\n\t\t\tdt_str = dt.toISOString().replace(/[:\\-]|\\.\\d{3}/g, ''),\n\t\t\td_str = dt_str.substr(0, 8);\n\n\t\tconst url_info = parse(request.url);\n\t\trequest.headers['host'] = url_info.host;\n\t\trequest.headers['x-amz-date'] = dt_str;\n\t\tif (access_info.session_token) {\n\t\t\trequest.headers['X-Amz-Security-Token'] = access_info.session_token;\n\t\t}\n\n\t\t// Task 1: Create a Canonical Request\n\t\tconst request_str = canonical_request(request);\n\t\tlogger.debug(request_str);\n\n\t\t// Task 2: Create a String to Sign\n\t\tconst serviceInfo = service_info || parse_service_info(request),\n\t\t\tscope = credential_scope(d_str, serviceInfo.region, serviceInfo.service),\n\t\t\tstr_to_sign = string_to_sign(\n\t\t\t\tDEFAULT_ALGORITHM,\n\t\t\t\trequest_str,\n\t\t\t\tdt_str,\n\t\t\t\tscope\n\t\t\t);\n\n\t\t// Task 3: Calculate the Signature\n\t\tconst signing_key = get_signing_key(\n\t\t\t\taccess_info.secret_key,\n\t\t\t\td_str,\n\t\t\t\tserviceInfo\n\t\t\t),\n\t\t\tsignature = get_signature(signing_key, str_to_sign);\n\n\t\t// Task 4: Adding the Signing information to the Request\n\t\tconst authorization_header = get_authorization_header(\n\t\t\tDEFAULT_ALGORITHM,\n\t\t\taccess_info.access_key,\n\t\t\tscope,\n\t\t\tsigned_headers(request.headers),\n\t\t\tsignature\n\t\t);\n\t\trequest.headers['Authorization'] = authorization_header;\n\n\t\treturn request;\n\t}\n\n\tstatic signUrl(\n\t\turlToSign: string,\n\t\taccessInfo: any,\n\t\tserviceInfo?: any,\n\t\texpiration?: number\n\t): string;\n\tstatic signUrl(\n\t\trequest: any,\n\t\taccessInfo: any,\n\t\tserviceInfo?: any,\n\t\texpiration?: number\n\t): string;\n\tstatic signUrl(\n\t\turlOrRequest: string | any,\n\t\taccessInfo: any,\n\t\tserviceInfo?: any,\n\t\texpiration?: number\n\t): string {\n\t\tconst urlToSign: string =\n\t\t\ttypeof urlOrRequest === 'object' ? urlOrRequest.url : urlOrRequest;\n\t\tconst method: string =\n\t\t\ttypeof urlOrRequest === 'object' ? urlOrRequest.method : 'GET';\n\t\tconst body: any =\n\t\t\ttypeof urlOrRequest === 'object' ? urlOrRequest.body : undefined;\n\n\t\tconst now = DateUtils.getDateWithClockOffset()\n\t\t\t.toISOString()\n\t\t\t.replace(/[:\\-]|\\.\\d{3}/g, '');\n\t\tconst today = now.substr(0, 8);\n\t\t// Intentionally discarding search\n\t\tconst { search, ...parsedUrl } = parse(urlToSign, true, true);\n\t\tconst { host } = parsedUrl;\n\t\tconst signedHeaders = { host };\n\n\t\tconst { region, service } =\n\t\t\tserviceInfo || parse_service_info({ url: format(parsedUrl) });\n\t\tconst credentialScope = credential_scope(today, region, service);\n\n\t\t// IoT service does not allow the session token in the canonical request\n\t\t// https://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html\n\t\tconst sessionTokenRequired =\n\t\t\taccessInfo.session_token && service !== IOT_SERVICE_NAME;\n\t\tconst queryParams = {\n\t\t\t'X-Amz-Algorithm': DEFAULT_ALGORITHM,\n\t\t\t'X-Amz-Credential': [accessInfo.access_key, credentialScope].join('/'),\n\t\t\t'X-Amz-Date': now.substr(0, 16),\n\t\t\t...(sessionTokenRequired\n\t\t\t\t? { 'X-Amz-Security-Token': `${accessInfo.session_token}` }\n\t\t\t\t: {}),\n\t\t\t...(expiration ? { 'X-Amz-Expires': `${expiration}` } : {}),\n\t\t\t'X-Amz-SignedHeaders': Object.keys(signedHeaders).join(','),\n\t\t};\n\n\t\tconst canonicalRequest = canonical_request({\n\t\t\tmethod,\n\t\t\turl: format({\n\t\t\t\t...parsedUrl,\n\t\t\t\tquery: {\n\t\t\t\t\t...parsedUrl.query,\n\t\t\t\t\t...queryParams,\n\t\t\t\t},\n\t\t\t}),\n\t\t\theaders: signedHeaders,\n\t\t\tdata: body,\n\t\t});\n\n\t\tconst stringToSign = string_to_sign(\n\t\t\tDEFAULT_ALGORITHM,\n\t\t\tcanonicalRequest,\n\t\t\tnow,\n\t\t\tcredentialScope\n\t\t);\n\n\t\tconst signing_key = get_signing_key(accessInfo.secret_key, today, {\n\t\t\tregion,\n\t\t\tservice,\n\t\t});\n\t\tconst signature = get_signature(signing_key, stringToSign);\n\n\t\tconst additionalQueryParams = {\n\t\t\t'X-Amz-Signature': signature,\n\t\t\t...(accessInfo.session_token && {\n\t\t\t\t'X-Amz-Security-Token': accessInfo.session_token,\n\t\t\t}),\n\t\t};\n\n\t\tconst result = format({\n\t\t\tprotocol: parsedUrl.protocol,\n\t\t\tslashes: true,\n\t\t\thostname: parsedUrl.hostname,\n\t\t\tport: parsedUrl.port,\n\t\t\tpathname: parsedUrl.pathname,\n\t\t\tquery: {\n\t\t\t\t...parsedUrl.query,\n\t\t\t\t...queryParams,\n\t\t\t\t...additionalQueryParams,\n\t\t\t},\n\t\t});\n\n\t\treturn result;\n\t}\n}\n\n/**\n * @deprecated use per-function import\n */\nexport default Signer;\n","import {\n ADMChannelRequest,\n ADMChannelResponse,\n APNSChannelRequest,\n APNSChannelResponse,\n APNSPushNotificationTemplate,\n APNSSandboxChannelRequest,\n APNSSandboxChannelResponse,\n APNSVoipChannelRequest,\n APNSVoipChannelResponse,\n APNSVoipSandboxChannelRequest,\n APNSVoipSandboxChannelResponse,\n AddressConfiguration,\n AndroidPushNotificationTemplate,\n ApplicationSettingsResource,\n AttributesResource,\n BaiduChannelRequest,\n BaiduChannelResponse,\n BaseKpiResult,\n CampaignHook,\n CampaignLimits,\n CampaignResponse,\n DefaultPushNotificationTemplate,\n DeliveryStatus,\n DirectMessageConfiguration,\n EmailChannelRequest,\n EmailChannelResponse,\n EmailTemplateRequest,\n EndpointBatchRequest,\n EndpointMessageResult,\n EndpointRequest,\n EndpointSendConfiguration,\n EndpointsResponse,\n EventStream,\n EventsRequest,\n EventsResponse,\n ExportJobsResponse,\n GCMChannelRequest,\n GCMChannelResponse,\n ImportJobsResponse,\n JourneyResponse,\n MessageBody,\n PushNotificationTemplateRequest,\n QuietTime,\n RecommenderConfigurationResponse,\n SMSChannelResponse,\n SMSTemplateRequest,\n SegmentResponse,\n State,\n TemplateConfiguration,\n TemplateType,\n VoiceChannelResponse,\n VoiceTemplateRequest,\n WriteCampaignRequest,\n WriteJourneyRequest,\n WriteSegmentRequest,\n} from \"./models_0\";\n\nexport interface GetJourneyDateRangeKpiRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The last date and time to retrieve data for, as part of an inclusive date range that filters the query results. This value should be in extended ISO 8601 format and use Coordinated Universal Time (UTC), for example: 2019-07-26T20:00:00Z for 8:00 PM UTC July 26, 2019.

\n */\n EndTime?: Date;\n\n /**\n *

The unique identifier for the journey.

\n */\n JourneyId: string | undefined;\n\n /**\n *

The name of the metric, also referred to as a key performance indicator (KPI), to retrieve data for. This value describes the associated metric and consists of two or more terms, which are comprised of lowercase alphanumeric characters, separated by a hyphen. Examples are email-open-rate and successful-delivery-rate. For a list of valid values, see the Amazon Pinpoint Developer Guide.

\n */\n KpiName: string | undefined;\n\n /**\n *

The string that specifies which page of results to return in a paginated response. This parameter is not supported for application, campaign, and journey metrics.

\n */\n NextToken?: string;\n\n /**\n *

The maximum number of items to include in each page of a paginated response. This parameter is not supported for application, campaign, and journey metrics.

\n */\n PageSize?: string;\n\n /**\n *

The first date and time to retrieve data for, as part of an inclusive date range that filters the query results. This value should be in extended ISO 8601 format and use Coordinated Universal Time (UTC), for example: 2019-07-19T20:00:00Z for 8:00 PM UTC July 19, 2019. This value should also be fewer than 90 days from the current day.

\n */\n StartTime?: Date;\n}\n\nexport namespace GetJourneyDateRangeKpiRequest {\n export const filterSensitiveLog = (obj: GetJourneyDateRangeKpiRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Provides the results of a query that retrieved the data for a standard engagement metric that applies to a journey, and provides information about that query.

\n */\nexport interface JourneyDateRangeKpiResponse {\n /**\n *

The unique identifier for the application that the metric applies to.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The last date and time of the date range that was used to filter the query results, in extended ISO 8601 format. The date range is inclusive.

\n */\n EndTime: Date | undefined;\n\n /**\n *

The unique identifier for the journey that the metric applies to.

\n */\n JourneyId: string | undefined;\n\n /**\n *

The name of the metric, also referred to as a key performance indicator (KPI), that the data was retrieved for. This value describes the associated metric and consists of two or more terms, which are comprised of lowercase alphanumeric characters, separated by a hyphen. For a list of possible values, see the Amazon Pinpoint Developer Guide.

\n */\n KpiName: string | undefined;\n\n /**\n *

An array of objects that contains the results of the query. Each object contains the value for the metric and metadata about that value.

\n */\n KpiResult: BaseKpiResult | undefined;\n\n /**\n *

The string to use in a subsequent request to get the next page of results in a paginated response. This value is null for the Journey Engagement Metrics resource because the resource returns all results in a single page.

\n */\n NextToken?: string;\n\n /**\n *

The first date and time of the date range that was used to filter the query results, in extended ISO 8601 format. The date range is inclusive.

\n */\n StartTime: Date | undefined;\n}\n\nexport namespace JourneyDateRangeKpiResponse {\n export const filterSensitiveLog = (obj: JourneyDateRangeKpiResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetJourneyDateRangeKpiResponse {\n /**\n *

Provides the results of a query that retrieved the data for a standard engagement metric that applies to a journey, and provides information about that query.

\n */\n JourneyDateRangeKpiResponse: JourneyDateRangeKpiResponse | undefined;\n}\n\nexport namespace GetJourneyDateRangeKpiResponse {\n export const filterSensitiveLog = (obj: GetJourneyDateRangeKpiResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetJourneyExecutionActivityMetricsRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The unique identifier for the journey activity.

\n */\n JourneyActivityId: string | undefined;\n\n /**\n *

The unique identifier for the journey.

\n */\n JourneyId: string | undefined;\n\n /**\n *

The string that specifies which page of results to return in a paginated response. This parameter is not supported for application, campaign, and journey metrics.

\n */\n NextToken?: string;\n\n /**\n *

The maximum number of items to include in each page of a paginated response. This parameter is not supported for application, campaign, and journey metrics.

\n */\n PageSize?: string;\n}\n\nexport namespace GetJourneyExecutionActivityMetricsRequest {\n export const filterSensitiveLog = (obj: GetJourneyExecutionActivityMetricsRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Provides the results of a query that retrieved the data for a standard execution metric that applies to a journey activity, and provides information about that query.

\n */\nexport interface JourneyExecutionActivityMetricsResponse {\n /**\n *

The type of activity that the metric applies to. Possible values are:

  • CONDITIONAL_SPLIT - For a yes/no split activity, which is an activity that sends participants down one of two paths in a journey.

  • HOLDOUT - For a holdout activity, which is an activity that stops a journey for a specified percentage of participants.

  • MESSAGE - For an email activity, which is an activity that sends an email message to participants.

  • MULTI_CONDITIONAL_SPLIT - For a multivariate split activity, which is an activity that sends participants down one of as many as five paths in a journey.

  • RANDOM_SPLIT - For a random split activity, which is an activity that sends specified percentages of participants down one of as many as five paths in a journey.

  • WAIT - For a wait activity, which is an activity that waits for a certain amount of time or until a specific date and time before moving participants to the next activity in a journey.

\n */\n ActivityType: string | undefined;\n\n /**\n *

The unique identifier for the application that the metric applies to.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The unique identifier for the activity that the metric applies to.

\n */\n JourneyActivityId: string | undefined;\n\n /**\n *

The unique identifier for the journey that the metric applies to.

\n */\n JourneyId: string | undefined;\n\n /**\n *

The date and time, in ISO 8601 format, when Amazon Pinpoint last evaluated the execution status of the activity and updated the data for the metric.

\n */\n LastEvaluatedTime: string | undefined;\n\n /**\n *

A JSON object that contains the results of the query. The results vary depending on the type of activity (ActivityType). For information about the structure and contents of the results, see the Amazon Pinpoint Developer Guide.

\n */\n Metrics: { [key: string]: string } | undefined;\n}\n\nexport namespace JourneyExecutionActivityMetricsResponse {\n export const filterSensitiveLog = (obj: JourneyExecutionActivityMetricsResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetJourneyExecutionActivityMetricsResponse {\n /**\n *

Provides the results of a query that retrieved the data for a standard execution metric that applies to a journey activity, and provides information about that query.

\n */\n JourneyExecutionActivityMetricsResponse: JourneyExecutionActivityMetricsResponse | undefined;\n}\n\nexport namespace GetJourneyExecutionActivityMetricsResponse {\n export const filterSensitiveLog = (obj: GetJourneyExecutionActivityMetricsResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetJourneyExecutionMetricsRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The unique identifier for the journey.

\n */\n JourneyId: string | undefined;\n\n /**\n *

The string that specifies which page of results to return in a paginated response. This parameter is not supported for application, campaign, and journey metrics.

\n */\n NextToken?: string;\n\n /**\n *

The maximum number of items to include in each page of a paginated response. This parameter is not supported for application, campaign, and journey metrics.

\n */\n PageSize?: string;\n}\n\nexport namespace GetJourneyExecutionMetricsRequest {\n export const filterSensitiveLog = (obj: GetJourneyExecutionMetricsRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Provides the results of a query that retrieved the data for a standard execution metric that applies to a journey, and provides information about that query.

\n */\nexport interface JourneyExecutionMetricsResponse {\n /**\n *

The unique identifier for the application that the metric applies to.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The unique identifier for the journey that the metric applies to.

\n */\n JourneyId: string | undefined;\n\n /**\n *

The date and time, in ISO 8601 format, when Amazon Pinpoint last evaluated the journey and updated the data for the metric.

\n */\n LastEvaluatedTime: string | undefined;\n\n /**\n *

A JSON object that contains the results of the query. For information about the structure and contents of the results, see the Amazon Pinpoint Developer Guide.

\n */\n Metrics: { [key: string]: string } | undefined;\n}\n\nexport namespace JourneyExecutionMetricsResponse {\n export const filterSensitiveLog = (obj: JourneyExecutionMetricsResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetJourneyExecutionMetricsResponse {\n /**\n *

Provides the results of a query that retrieved the data for a standard execution metric that applies to a journey, and provides information about that query.

\n */\n JourneyExecutionMetricsResponse: JourneyExecutionMetricsResponse | undefined;\n}\n\nexport namespace GetJourneyExecutionMetricsResponse {\n export const filterSensitiveLog = (obj: GetJourneyExecutionMetricsResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetPushTemplateRequest {\n /**\n *

The name of the message template. A template name must start with an alphanumeric character and can contain a maximum of 128 characters. The characters can be alphanumeric characters, underscores (_), or hyphens (-). Template names are case sensitive.

\n */\n TemplateName: string | undefined;\n\n /**\n *

The unique identifier for the version of the message template to update, retrieve information about, or delete. To retrieve identifiers and other information for all the versions of a template, use the Template Versions resource.

If specified, this value must match the identifier for an existing template version. If specified for an update operation, this value must match the identifier for the latest existing version of the template. This restriction helps ensure that race conditions don't occur.

If you don't specify a value for this parameter, Amazon Pinpoint does the following:

  • For a get operation, retrieves information about the active version of the template.

  • For an update operation, saves the updates to (overwrites) the latest existing version of the template, if the create-new-version parameter isn't used or is set to false.

  • For a delete operation, deletes the template, including all versions of the template.

\n */\n Version?: string;\n}\n\nexport namespace GetPushTemplateRequest {\n export const filterSensitiveLog = (obj: GetPushTemplateRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Provides information about the content and settings for a message template that can be used in messages that are sent through a push notification channel.

\n */\nexport interface PushNotificationTemplateResponse {\n /**\n *

The message template that's used for the ADM (Amazon Device Messaging) channel. This message template overrides the default template for push notification channels (DefaultPushNotificationTemplate).

\n */\n ADM?: AndroidPushNotificationTemplate;\n\n /**\n *

The message template that's used for the APNs (Apple Push Notification service) channel. This message template overrides the default template for push notification channels (DefaultPushNotificationTemplate).

\n */\n APNS?: APNSPushNotificationTemplate;\n\n /**\n *

The Amazon Resource Name (ARN) of the message template.

\n */\n Arn?: string;\n\n /**\n *

The message template that's used for the Baidu (Baidu Cloud Push) channel. This message template overrides the default template for push notification channels (DefaultPushNotificationTemplate).

\n */\n Baidu?: AndroidPushNotificationTemplate;\n\n /**\n *

The date, in ISO 8601 format, when the message template was created.

\n */\n CreationDate: string | undefined;\n\n /**\n *

The default message template that's used for push notification channels.

\n */\n Default?: DefaultPushNotificationTemplate;\n\n /**\n *

The JSON object that specifies the default values that are used for message variables in the message template. This object is a set of key-value pairs. Each key defines a message variable in the template. The corresponding value defines the default value for that variable.

\n */\n DefaultSubstitutions?: string;\n\n /**\n *

The message template that's used for the GCM channel, which is used to send notifications through the Firebase Cloud Messaging (FCM), formerly Google Cloud Messaging (GCM), service. This message template overrides the default template for push notification channels (DefaultPushNotificationTemplate).

\n */\n GCM?: AndroidPushNotificationTemplate;\n\n /**\n *

The date, in ISO 8601 format, when the message template was last modified.

\n */\n LastModifiedDate: string | undefined;\n\n /**\n *

The unique identifier for the recommender model that's used by the message template.

\n */\n RecommenderId?: string;\n\n /**\n *

A string-to-string map of key-value pairs that identifies the tags that are associated with the message template. Each tag consists of a required tag key and an associated tag value.

\n */\n tags?: { [key: string]: string };\n\n /**\n *

The custom description of the message template.

\n */\n TemplateDescription?: string;\n\n /**\n *

The name of the message template.

\n */\n TemplateName: string | undefined;\n\n /**\n *

The type of channel that the message template is designed for. For a push notification template, this value is PUSH.

\n */\n TemplateType: TemplateType | string | undefined;\n\n /**\n *

The unique identifier, as an integer, for the active version of the message template, or the version of the template that you specified by using the version parameter in your request.

\n */\n Version?: string;\n}\n\nexport namespace PushNotificationTemplateResponse {\n export const filterSensitiveLog = (obj: PushNotificationTemplateResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetPushTemplateResponse {\n /**\n *

Provides information about the content and settings for a message template that can be used in messages that are sent through a push notification channel.

\n */\n PushNotificationTemplateResponse: PushNotificationTemplateResponse | undefined;\n}\n\nexport namespace GetPushTemplateResponse {\n export const filterSensitiveLog = (obj: GetPushTemplateResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetRecommenderConfigurationRequest {\n /**\n *

The unique identifier for the recommender model configuration. This identifier is displayed as the Recommender ID on the Amazon Pinpoint console.

\n */\n RecommenderId: string | undefined;\n}\n\nexport namespace GetRecommenderConfigurationRequest {\n export const filterSensitiveLog = (obj: GetRecommenderConfigurationRequest): any => ({\n ...obj,\n });\n}\n\nexport interface GetRecommenderConfigurationResponse {\n /**\n *

Provides information about Amazon Pinpoint configuration settings for retrieving and processing data from a recommender model.

\n */\n RecommenderConfigurationResponse: RecommenderConfigurationResponse | undefined;\n}\n\nexport namespace GetRecommenderConfigurationResponse {\n export const filterSensitiveLog = (obj: GetRecommenderConfigurationResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetRecommenderConfigurationsRequest {\n /**\n *

The maximum number of items to include in each page of a paginated response. This parameter is not supported for application, campaign, and journey metrics.

\n */\n PageSize?: string;\n\n /**\n *

The NextToken string that specifies which page of results to return in a paginated response.

\n */\n Token?: string;\n}\n\nexport namespace GetRecommenderConfigurationsRequest {\n export const filterSensitiveLog = (obj: GetRecommenderConfigurationsRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Provides information about all the recommender model configurations that are associated with your Amazon Pinpoint account.

\n */\nexport interface ListRecommenderConfigurationsResponse {\n /**\n *

An array of responses, one for each recommender model configuration that's associated with your Amazon Pinpoint account.

\n */\n Item: RecommenderConfigurationResponse[] | undefined;\n\n /**\n *

The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.

\n */\n NextToken?: string;\n}\n\nexport namespace ListRecommenderConfigurationsResponse {\n export const filterSensitiveLog = (obj: ListRecommenderConfigurationsResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetRecommenderConfigurationsResponse {\n /**\n *

Provides information about all the recommender model configurations that are associated with your Amazon Pinpoint account.

\n */\n ListRecommenderConfigurationsResponse: ListRecommenderConfigurationsResponse | undefined;\n}\n\nexport namespace GetRecommenderConfigurationsResponse {\n export const filterSensitiveLog = (obj: GetRecommenderConfigurationsResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetSegmentRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The unique identifier for the segment.

\n */\n SegmentId: string | undefined;\n}\n\nexport namespace GetSegmentRequest {\n export const filterSensitiveLog = (obj: GetSegmentRequest): any => ({\n ...obj,\n });\n}\n\nexport interface GetSegmentResponse {\n /**\n *

Provides information about the configuration, dimension, and other settings for a segment.

\n */\n SegmentResponse: SegmentResponse | undefined;\n}\n\nexport namespace GetSegmentResponse {\n export const filterSensitiveLog = (obj: GetSegmentResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetSegmentExportJobsRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The maximum number of items to include in each page of a paginated response. This parameter is not supported for application, campaign, and journey metrics.

\n */\n PageSize?: string;\n\n /**\n *

The unique identifier for the segment.

\n */\n SegmentId: string | undefined;\n\n /**\n *

The NextToken string that specifies which page of results to return in a paginated response.

\n */\n Token?: string;\n}\n\nexport namespace GetSegmentExportJobsRequest {\n export const filterSensitiveLog = (obj: GetSegmentExportJobsRequest): any => ({\n ...obj,\n });\n}\n\nexport interface GetSegmentExportJobsResponse {\n /**\n *

Provides information about all the export jobs that are associated with an application or segment. An export job is a job that exports endpoint definitions to a file.

\n */\n ExportJobsResponse: ExportJobsResponse | undefined;\n}\n\nexport namespace GetSegmentExportJobsResponse {\n export const filterSensitiveLog = (obj: GetSegmentExportJobsResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetSegmentImportJobsRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The maximum number of items to include in each page of a paginated response. This parameter is not supported for application, campaign, and journey metrics.

\n */\n PageSize?: string;\n\n /**\n *

The unique identifier for the segment.

\n */\n SegmentId: string | undefined;\n\n /**\n *

The NextToken string that specifies which page of results to return in a paginated response.

\n */\n Token?: string;\n}\n\nexport namespace GetSegmentImportJobsRequest {\n export const filterSensitiveLog = (obj: GetSegmentImportJobsRequest): any => ({\n ...obj,\n });\n}\n\nexport interface GetSegmentImportJobsResponse {\n /**\n *

Provides information about the status and settings of all the import jobs that are associated with an application or segment. An import job is a job that imports endpoint definitions from one or more files.

\n */\n ImportJobsResponse: ImportJobsResponse | undefined;\n}\n\nexport namespace GetSegmentImportJobsResponse {\n export const filterSensitiveLog = (obj: GetSegmentImportJobsResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetSegmentsRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The maximum number of items to include in each page of a paginated response. This parameter is not supported for application, campaign, and journey metrics.

\n */\n PageSize?: string;\n\n /**\n *

The NextToken string that specifies which page of results to return in a paginated response.

\n */\n Token?: string;\n}\n\nexport namespace GetSegmentsRequest {\n export const filterSensitiveLog = (obj: GetSegmentsRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Provides information about all the segments that are associated with an application.

\n */\nexport interface SegmentsResponse {\n /**\n *

An array of responses, one for each segment that's associated with the application (Segments resource) or each version of a segment that's associated with the application (Segment Versions resource).

\n */\n Item: SegmentResponse[] | undefined;\n\n /**\n *

The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.

\n */\n NextToken?: string;\n}\n\nexport namespace SegmentsResponse {\n export const filterSensitiveLog = (obj: SegmentsResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetSegmentsResponse {\n /**\n *

Provides information about all the segments that are associated with an application.

\n */\n SegmentsResponse: SegmentsResponse | undefined;\n}\n\nexport namespace GetSegmentsResponse {\n export const filterSensitiveLog = (obj: GetSegmentsResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetSegmentVersionRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The unique identifier for the segment.

\n */\n SegmentId: string | undefined;\n\n /**\n *

The unique version number (Version property) for the campaign version.

\n */\n Version: string | undefined;\n}\n\nexport namespace GetSegmentVersionRequest {\n export const filterSensitiveLog = (obj: GetSegmentVersionRequest): any => ({\n ...obj,\n });\n}\n\nexport interface GetSegmentVersionResponse {\n /**\n *

Provides information about the configuration, dimension, and other settings for a segment.

\n */\n SegmentResponse: SegmentResponse | undefined;\n}\n\nexport namespace GetSegmentVersionResponse {\n export const filterSensitiveLog = (obj: GetSegmentVersionResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetSegmentVersionsRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The maximum number of items to include in each page of a paginated response. This parameter is not supported for application, campaign, and journey metrics.

\n */\n PageSize?: string;\n\n /**\n *

The unique identifier for the segment.

\n */\n SegmentId: string | undefined;\n\n /**\n *

The NextToken string that specifies which page of results to return in a paginated response.

\n */\n Token?: string;\n}\n\nexport namespace GetSegmentVersionsRequest {\n export const filterSensitiveLog = (obj: GetSegmentVersionsRequest): any => ({\n ...obj,\n });\n}\n\nexport interface GetSegmentVersionsResponse {\n /**\n *

Provides information about all the segments that are associated with an application.

\n */\n SegmentsResponse: SegmentsResponse | undefined;\n}\n\nexport namespace GetSegmentVersionsResponse {\n export const filterSensitiveLog = (obj: GetSegmentVersionsResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetSmsChannelRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n}\n\nexport namespace GetSmsChannelRequest {\n export const filterSensitiveLog = (obj: GetSmsChannelRequest): any => ({\n ...obj,\n });\n}\n\nexport interface GetSmsChannelResponse {\n /**\n *

Provides information about the status and settings of the SMS channel for an application.

\n */\n SMSChannelResponse: SMSChannelResponse | undefined;\n}\n\nexport namespace GetSmsChannelResponse {\n export const filterSensitiveLog = (obj: GetSmsChannelResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetSmsTemplateRequest {\n /**\n *

The name of the message template. A template name must start with an alphanumeric character and can contain a maximum of 128 characters. The characters can be alphanumeric characters, underscores (_), or hyphens (-). Template names are case sensitive.

\n */\n TemplateName: string | undefined;\n\n /**\n *

The unique identifier for the version of the message template to update, retrieve information about, or delete. To retrieve identifiers and other information for all the versions of a template, use the Template Versions resource.

If specified, this value must match the identifier for an existing template version. If specified for an update operation, this value must match the identifier for the latest existing version of the template. This restriction helps ensure that race conditions don't occur.

If you don't specify a value for this parameter, Amazon Pinpoint does the following:

  • For a get operation, retrieves information about the active version of the template.

  • For an update operation, saves the updates to (overwrites) the latest existing version of the template, if the create-new-version parameter isn't used or is set to false.

  • For a delete operation, deletes the template, including all versions of the template.

\n */\n Version?: string;\n}\n\nexport namespace GetSmsTemplateRequest {\n export const filterSensitiveLog = (obj: GetSmsTemplateRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Provides information about the content and settings for a message template that can be used in text messages that are sent through the SMS channel.

\n */\nexport interface SMSTemplateResponse {\n /**\n *

The Amazon Resource Name (ARN) of the message template.

\n */\n Arn?: string;\n\n /**\n *

The message body that's used in text messages that are based on the message template.

\n */\n Body?: string;\n\n /**\n *

The date, in ISO 8601 format, when the message template was created.

\n */\n CreationDate: string | undefined;\n\n /**\n *

The JSON object that specifies the default values that are used for message variables in the message template. This object is a set of key-value pairs. Each key defines a message variable in the template. The corresponding value defines the default value for that variable.

\n */\n DefaultSubstitutions?: string;\n\n /**\n *

The date, in ISO 8601 format, when the message template was last modified.

\n */\n LastModifiedDate: string | undefined;\n\n /**\n *

The unique identifier for the recommender model that's used by the message template.

\n */\n RecommenderId?: string;\n\n /**\n *

A string-to-string map of key-value pairs that identifies the tags that are associated with the message template. Each tag consists of a required tag key and an associated tag value.

\n */\n tags?: { [key: string]: string };\n\n /**\n *

The custom description of the message template.

\n */\n TemplateDescription?: string;\n\n /**\n *

The name of the message template.

\n */\n TemplateName: string | undefined;\n\n /**\n *

The type of channel that the message template is designed for. For an SMS template, this value is SMS.

\n */\n TemplateType: TemplateType | string | undefined;\n\n /**\n *

The unique identifier, as an integer, for the active version of the message template, or the version of the template that you specified by using the version parameter in your request.

\n */\n Version?: string;\n}\n\nexport namespace SMSTemplateResponse {\n export const filterSensitiveLog = (obj: SMSTemplateResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetSmsTemplateResponse {\n /**\n *

Provides information about the content and settings for a message template that can be used in text messages that are sent through the SMS channel.

\n */\n SMSTemplateResponse: SMSTemplateResponse | undefined;\n}\n\nexport namespace GetSmsTemplateResponse {\n export const filterSensitiveLog = (obj: GetSmsTemplateResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetUserEndpointsRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The unique identifier for the user.

\n */\n UserId: string | undefined;\n}\n\nexport namespace GetUserEndpointsRequest {\n export const filterSensitiveLog = (obj: GetUserEndpointsRequest): any => ({\n ...obj,\n });\n}\n\nexport interface GetUserEndpointsResponse {\n /**\n *

Provides information about all the endpoints that are associated with a user ID.

\n */\n EndpointsResponse: EndpointsResponse | undefined;\n}\n\nexport namespace GetUserEndpointsResponse {\n export const filterSensitiveLog = (obj: GetUserEndpointsResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetVoiceChannelRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n}\n\nexport namespace GetVoiceChannelRequest {\n export const filterSensitiveLog = (obj: GetVoiceChannelRequest): any => ({\n ...obj,\n });\n}\n\nexport interface GetVoiceChannelResponse {\n /**\n *

Provides information about the status and settings of the voice channel for an application.

\n */\n VoiceChannelResponse: VoiceChannelResponse | undefined;\n}\n\nexport namespace GetVoiceChannelResponse {\n export const filterSensitiveLog = (obj: GetVoiceChannelResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetVoiceTemplateRequest {\n /**\n *

The name of the message template. A template name must start with an alphanumeric character and can contain a maximum of 128 characters. The characters can be alphanumeric characters, underscores (_), or hyphens (-). Template names are case sensitive.

\n */\n TemplateName: string | undefined;\n\n /**\n *

The unique identifier for the version of the message template to update, retrieve information about, or delete. To retrieve identifiers and other information for all the versions of a template, use the Template Versions resource.

If specified, this value must match the identifier for an existing template version. If specified for an update operation, this value must match the identifier for the latest existing version of the template. This restriction helps ensure that race conditions don't occur.

If you don't specify a value for this parameter, Amazon Pinpoint does the following:

  • For a get operation, retrieves information about the active version of the template.

  • For an update operation, saves the updates to (overwrites) the latest existing version of the template, if the create-new-version parameter isn't used or is set to false.

  • For a delete operation, deletes the template, including all versions of the template.

\n */\n Version?: string;\n}\n\nexport namespace GetVoiceTemplateRequest {\n export const filterSensitiveLog = (obj: GetVoiceTemplateRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Provides information about the content and settings for a message template that can be used in messages that are sent through the voice channel.

\n */\nexport interface VoiceTemplateResponse {\n /**\n *

The Amazon Resource Name (ARN) of the message template.

\n */\n Arn?: string;\n\n /**\n *

The text of the script that's used in messages that are based on the message template, in plain text format.

\n */\n Body?: string;\n\n /**\n *

The date, in ISO 8601 format, when the message template was created.

\n */\n CreationDate: string | undefined;\n\n /**\n *

The JSON object that specifies the default values that are used for message variables in the message template. This object is a set of key-value pairs. Each key defines a message variable in the template. The corresponding value defines the default value for that variable.

\n */\n DefaultSubstitutions?: string;\n\n /**\n *

The code for the language that's used when synthesizing the text of the script in messages that are based on the message template. For a list of supported languages and the code for each one, see the Amazon Polly Developer Guide.

\n */\n LanguageCode?: string;\n\n /**\n *

The date, in ISO 8601 format, when the message template was last modified.

\n */\n LastModifiedDate: string | undefined;\n\n /**\n *

A string-to-string map of key-value pairs that identifies the tags that are associated with the message template. Each tag consists of a required tag key and an associated tag value.

\n */\n tags?: { [key: string]: string };\n\n /**\n *

The custom description of the message template.

\n */\n TemplateDescription?: string;\n\n /**\n *

The name of the message template.

\n */\n TemplateName: string | undefined;\n\n /**\n *

The type of channel that the message template is designed for. For a voice template, this value is VOICE.

\n */\n TemplateType: TemplateType | string | undefined;\n\n /**\n *

The unique identifier, as an integer, for the active version of the message template, or the version of the template that you specified by using the version parameter in your request.

\n */\n Version?: string;\n\n /**\n *

The name of the voice that's used when delivering messages that are based on the message template. For a list of supported voices, see the Amazon Polly Developer Guide.

\n */\n VoiceId?: string;\n}\n\nexport namespace VoiceTemplateResponse {\n export const filterSensitiveLog = (obj: VoiceTemplateResponse): any => ({\n ...obj,\n });\n}\n\nexport interface GetVoiceTemplateResponse {\n /**\n *

Provides information about the content and settings for a message template that can be used in messages that are sent through the voice channel.

\n */\n VoiceTemplateResponse: VoiceTemplateResponse | undefined;\n}\n\nexport namespace GetVoiceTemplateResponse {\n export const filterSensitiveLog = (obj: GetVoiceTemplateResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Provides information about the status, configuration, and other settings for all the journeys that are associated with an application.

\n */\nexport interface JourneysResponse {\n /**\n *

An array of responses, one for each journey that's associated with the application.

\n */\n Item: JourneyResponse[] | undefined;\n\n /**\n *

The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.

\n */\n NextToken?: string;\n}\n\nexport namespace JourneysResponse {\n export const filterSensitiveLog = (obj: JourneysResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Changes the status of a journey.

\n */\nexport interface JourneyStateRequest {\n /**\n *

The status of the journey. Currently, the only supported value is CANCELLED.

If you cancel a journey, Amazon Pinpoint continues to perform activities that are currently in progress, until those activities are complete. Amazon Pinpoint also continues to collect and aggregate analytics data for those activities, until they are complete, and any activities that were complete when you cancelled the journey.

After you cancel a journey, you can't add, change, or remove any activities from the journey. In addition, Amazon Pinpoint stops evaluating the journey and doesn't perform any activities that haven't started.

\n */\n State?: State | string;\n}\n\nexport namespace JourneyStateRequest {\n export const filterSensitiveLog = (obj: JourneyStateRequest): any => ({\n ...obj,\n });\n}\n\nexport interface ListJourneysRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The maximum number of items to include in each page of a paginated response. This parameter is not supported for application, campaign, and journey metrics.

\n */\n PageSize?: string;\n\n /**\n *

The NextToken string that specifies which page of results to return in a paginated response.

\n */\n Token?: string;\n}\n\nexport namespace ListJourneysRequest {\n export const filterSensitiveLog = (obj: ListJourneysRequest): any => ({\n ...obj,\n });\n}\n\nexport interface ListJourneysResponse {\n /**\n *

Provides information about the status, configuration, and other settings for all the journeys that are associated with an application.

\n */\n JourneysResponse: JourneysResponse | undefined;\n}\n\nexport namespace ListJourneysResponse {\n export const filterSensitiveLog = (obj: ListJourneysResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Provides information about a message template that's associated with your Amazon Pinpoint account.

\n */\nexport interface TemplateResponse {\n /**\n *

The Amazon Resource Name (ARN) of the message template. This value isn't included in a TemplateResponse object. To retrieve the ARN of a template, use the GetEmailTemplate, GetPushTemplate, GetSmsTemplate, or GetVoiceTemplate operation, depending on the type of template that you want to retrieve the ARN for.

\n */\n Arn?: string;\n\n /**\n *

The date, in ISO 8601 format, when the message template was created.

\n */\n CreationDate: string | undefined;\n\n /**\n *

The JSON object that specifies the default values that are used for message variables in the message template. This object isn't included in a TemplateResponse object. To retrieve this object for a template, use the GetEmailTemplate, GetPushTemplate, GetSmsTemplate, or GetVoiceTemplate operation, depending on the type of template that you want to retrieve the object for.

\n */\n DefaultSubstitutions?: string;\n\n /**\n *

The date, in ISO 8601 format, when the message template was last modified.

\n */\n LastModifiedDate: string | undefined;\n\n /**\n *

A map of key-value pairs that identifies the tags that are associated with the message template. This object isn't included in a TemplateResponse object. To retrieve this object for a template, use the GetEmailTemplate, GetPushTemplate, GetSmsTemplate, or GetVoiceTemplate operation, depending on the type of template that you want to retrieve the object for.

\n */\n tags?: { [key: string]: string };\n\n /**\n *

The custom description of the message template. This value isn't included in a TemplateResponse object. To retrieve the description of a template, use the GetEmailTemplate, GetPushTemplate, GetSmsTemplate, or GetVoiceTemplate operation, depending on the type of template that you want to retrieve the description for.

\n */\n TemplateDescription?: string;\n\n /**\n *

The name of the message template.

\n */\n TemplateName: string | undefined;\n\n /**\n *

The type of channel that the message template is designed for. Possible values are: EMAIL, PUSH, SMS, and VOICE.

\n */\n TemplateType: TemplateType | string | undefined;\n\n /**\n *

The unique identifier, as an integer, for the active version of the message template.

\n */\n Version?: string;\n}\n\nexport namespace TemplateResponse {\n export const filterSensitiveLog = (obj: TemplateResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Provides information about a specific version of a message template.

\n */\nexport interface TemplateVersionResponse {\n /**\n *

The date, in ISO 8601 format, when the version of the message template was created.

\n */\n CreationDate: string | undefined;\n\n /**\n *

A JSON object that specifies the default values that are used for message variables in the version of the message template. This object is a set of key-value pairs. Each key defines a message variable in the template. The corresponding value defines the default value for that variable.

\n */\n DefaultSubstitutions?: string;\n\n /**\n *

The date, in ISO 8601 format, when the version of the message template was last modified.

\n */\n LastModifiedDate: string | undefined;\n\n /**\n *

The custom description of the version of the message template.

\n */\n TemplateDescription?: string;\n\n /**\n *

The name of the message template.

\n */\n TemplateName: string | undefined;\n\n /**\n *

The type of channel that the message template is designed for. Possible values are: EMAIL, PUSH, SMS, and VOICE.

\n */\n TemplateType: string | undefined;\n\n /**\n *

The unique identifier for the version of the message template. This value is an integer that Amazon Pinpoint automatically increments and assigns to each new version of a template.

\n */\n Version?: string;\n}\n\nexport namespace TemplateVersionResponse {\n export const filterSensitiveLog = (obj: TemplateVersionResponse): any => ({\n ...obj,\n });\n}\n\nexport interface ListTagsForResourceRequest {\n /**\n *

The Amazon Resource Name (ARN) of the resource.

\n */\n ResourceArn: string | undefined;\n}\n\nexport namespace ListTagsForResourceRequest {\n export const filterSensitiveLog = (obj: ListTagsForResourceRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies the tags (keys and values) for an application, campaign, message template, or segment.

\n */\nexport interface TagsModel {\n /**\n *

A string-to-string map of key-value pairs that defines the tags for an application, campaign, message template, or segment. Each of these resources can have a maximum of 50 tags.

Each tag consists of a required tag key and an associated tag value. The maximum length of a tag key is 128 characters. The maximum length of a tag value is 256 characters.

\n */\n tags: { [key: string]: string } | undefined;\n}\n\nexport namespace TagsModel {\n export const filterSensitiveLog = (obj: TagsModel): any => ({\n ...obj,\n });\n}\n\nexport interface ListTagsForResourceResponse {\n /**\n *

Specifies the tags (keys and values) for an application, campaign, message template, or segment.

\n */\n TagsModel: TagsModel | undefined;\n}\n\nexport namespace ListTagsForResourceResponse {\n export const filterSensitiveLog = (obj: ListTagsForResourceResponse): any => ({\n ...obj,\n });\n}\n\nexport interface ListTemplatesRequest {\n /**\n *

The string that specifies which page of results to return in a paginated response. This parameter is not supported for application, campaign, and journey metrics.

\n */\n NextToken?: string;\n\n /**\n *

The maximum number of items to include in each page of a paginated response. This parameter is not supported for application, campaign, and journey metrics.

\n */\n PageSize?: string;\n\n /**\n *

The substring to match in the names of the message templates to include in the results. If you specify this value, Amazon Pinpoint returns only those templates whose names begin with the value that you specify.

\n */\n Prefix?: string;\n\n /**\n *

The type of message template to include in the results. Valid values are: EMAIL, PUSH, SMS, and VOICE. To include all types of templates in the results, don't include this parameter in your request.

\n */\n TemplateType?: string;\n}\n\nexport namespace ListTemplatesRequest {\n export const filterSensitiveLog = (obj: ListTemplatesRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Provides information about all the message templates that are associated with your Amazon Pinpoint account.

\n */\nexport interface TemplatesResponse {\n /**\n *

An array of responses, one for each message template that's associated with your Amazon Pinpoint account and meets any filter criteria that you specified in the request.

\n */\n Item: TemplateResponse[] | undefined;\n\n /**\n *

The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.

\n */\n NextToken?: string;\n}\n\nexport namespace TemplatesResponse {\n export const filterSensitiveLog = (obj: TemplatesResponse): any => ({\n ...obj,\n });\n}\n\nexport interface ListTemplatesResponse {\n /**\n *

Provides information about all the message templates that are associated with your Amazon Pinpoint account.

\n */\n TemplatesResponse: TemplatesResponse | undefined;\n}\n\nexport namespace ListTemplatesResponse {\n export const filterSensitiveLog = (obj: ListTemplatesResponse): any => ({\n ...obj,\n });\n}\n\nexport interface ListTemplateVersionsRequest {\n /**\n *

The string that specifies which page of results to return in a paginated response. This parameter is not supported for application, campaign, and journey metrics.

\n */\n NextToken?: string;\n\n /**\n *

The maximum number of items to include in each page of a paginated response. This parameter is not supported for application, campaign, and journey metrics.

\n */\n PageSize?: string;\n\n /**\n *

The name of the message template. A template name must start with an alphanumeric character and can contain a maximum of 128 characters. The characters can be alphanumeric characters, underscores (_), or hyphens (-). Template names are case sensitive.

\n */\n TemplateName: string | undefined;\n\n /**\n *

The type of channel that the message template is designed for. Valid values are: EMAIL, PUSH, SMS, and VOICE.

\n */\n TemplateType: string | undefined;\n}\n\nexport namespace ListTemplateVersionsRequest {\n export const filterSensitiveLog = (obj: ListTemplateVersionsRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Provides information about all the versions of a specific message template.

\n */\nexport interface TemplateVersionsResponse {\n /**\n *

An array of responses, one for each version of the message template.

\n */\n Item: TemplateVersionResponse[] | undefined;\n\n /**\n *

The message that's returned from the API for the request to retrieve information about all the versions of the message template.

\n */\n Message?: string;\n\n /**\n *

The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.

\n */\n NextToken?: string;\n\n /**\n *

The unique identifier for the request to retrieve information about all the versions of the message template.

\n */\n RequestID?: string;\n}\n\nexport namespace TemplateVersionsResponse {\n export const filterSensitiveLog = (obj: TemplateVersionsResponse): any => ({\n ...obj,\n });\n}\n\nexport interface ListTemplateVersionsResponse {\n /**\n *

Provides information about all the versions of a specific message template.

\n */\n TemplateVersionsResponse: TemplateVersionsResponse | undefined;\n}\n\nexport namespace ListTemplateVersionsResponse {\n export const filterSensitiveLog = (obj: ListTemplateVersionsResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Provides information about the results of sending a message directly to an endpoint address.

\n */\nexport interface MessageResult {\n /**\n *

The delivery status of the message. Possible values are:

  • DUPLICATE - The endpoint address is a duplicate of another endpoint address. Amazon Pinpoint won't attempt to send the message again.

  • OPT_OUT - The user who's associated with the endpoint address has opted out of receiving messages from you. Amazon Pinpoint won't attempt to send the message again.

  • PERMANENT_FAILURE - An error occurred when delivering the message to the endpoint address. Amazon Pinpoint won't attempt to send the message again.

  • SUCCESSFUL - The message was successfully delivered to the endpoint address.

  • TEMPORARY_FAILURE - A temporary error occurred. Amazon Pinpoint won't attempt to send the message again.

  • THROTTLED - Amazon Pinpoint throttled the operation to send the message to the endpoint address.

  • TIMEOUT - The message couldn't be sent within the timeout period.

  • UNKNOWN_FAILURE - An unknown error occurred.

\n */\n DeliveryStatus: DeliveryStatus | string | undefined;\n\n /**\n *

The unique identifier for the message that was sent.

\n */\n MessageId?: string;\n\n /**\n *

The downstream service status code for delivering the message.

\n */\n StatusCode: number | undefined;\n\n /**\n *

The status message for delivering the message.

\n */\n StatusMessage?: string;\n\n /**\n *

For push notifications that are sent through the GCM channel, specifies whether the endpoint's device registration token was updated as part of delivering the message.

\n */\n UpdatedToken?: string;\n}\n\nexport namespace MessageResult {\n export const filterSensitiveLog = (obj: MessageResult): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies the configuration and other settings for a message.

\n */\nexport interface MessageRequest {\n /**\n *

A map of key-value pairs, where each key is an address and each value is an AddressConfiguration object. An address can be a push notification token, a phone number, or an email address. You can use an AddressConfiguration object to tailor the message for an address by specifying settings such as content overrides and message variables.

\n */\n Addresses?: { [key: string]: AddressConfiguration };\n\n /**\n *

A map of custom attributes to attach to the message. For a push notification, this payload is added to the data.pinpoint object. For an email or text message, this payload is added to email/SMS delivery receipt event attributes.

\n */\n Context?: { [key: string]: string };\n\n /**\n *

A map of key-value pairs, where each key is an endpoint ID and each value is an EndpointSendConfiguration object. You can use an EndpointSendConfiguration object to tailor the message for an endpoint by specifying settings such as content overrides and message variables.

\n */\n Endpoints?: { [key: string]: EndpointSendConfiguration };\n\n /**\n *

The settings and content for the default message and any default messages that you defined for specific channels.

\n */\n MessageConfiguration: DirectMessageConfiguration | undefined;\n\n /**\n *

The message template to use for the message.

\n */\n TemplateConfiguration?: TemplateConfiguration;\n\n /**\n *

The unique identifier for tracing the message. This identifier is visible to message recipients.

\n */\n TraceId?: string;\n}\n\nexport namespace MessageRequest {\n export const filterSensitiveLog = (obj: MessageRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Provides information about the results of a request to send a message to an endpoint address.

\n */\nexport interface MessageResponse {\n /**\n *

The unique identifier for the application that was used to send the message.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

A map that contains a multipart response for each address that the message was sent to. In the map, the endpoint ID is the key and the result is the value.

\n */\n EndpointResult?: { [key: string]: EndpointMessageResult };\n\n /**\n *

The identifier for the original request that the message was delivered for.

\n */\n RequestId?: string;\n\n /**\n *

A map that contains a multipart response for each address (email address, phone number, or push notification token) that the message was sent to. In the map, the address is the key and the result is the value.

\n */\n Result?: { [key: string]: MessageResult };\n}\n\nexport namespace MessageResponse {\n export const filterSensitiveLog = (obj: MessageResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies a phone number to validate and retrieve information about.

\n */\nexport interface NumberValidateRequest {\n /**\n *

The two-character code, in ISO 3166-1 alpha-2 format, for the country or region where the phone number was originally registered.

\n */\n IsoCountryCode?: string;\n\n /**\n *

The phone number to retrieve information about. The phone number that you provide should include a valid numeric country code. Otherwise, the operation might result in an error.

\n */\n PhoneNumber?: string;\n}\n\nexport namespace NumberValidateRequest {\n export const filterSensitiveLog = (obj: NumberValidateRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Provides information about a phone number.

\n */\nexport interface NumberValidateResponse {\n /**\n *

The carrier or service provider that the phone number is currently registered with. In some countries and regions, this value may be the carrier or service provider that the phone number was originally registered with.

\n */\n Carrier?: string;\n\n /**\n *

The name of the city where the phone number was originally registered.

\n */\n City?: string;\n\n /**\n *

The cleansed phone number, in E.164 format, for the location where the phone number was originally registered.

\n */\n CleansedPhoneNumberE164?: string;\n\n /**\n *

The cleansed phone number, in the format for the location where the phone number was originally registered.

\n */\n CleansedPhoneNumberNational?: string;\n\n /**\n *

The name of the country or region where the phone number was originally registered.

\n */\n Country?: string;\n\n /**\n *

The two-character code, in ISO 3166-1 alpha-2 format, for the country or region where the phone number was originally registered.

\n */\n CountryCodeIso2?: string;\n\n /**\n *

The numeric code for the country or region where the phone number was originally registered.

\n */\n CountryCodeNumeric?: string;\n\n /**\n *

The name of the county where the phone number was originally registered.

\n */\n County?: string;\n\n /**\n *

The two-character code, in ISO 3166-1 alpha-2 format, that was sent in the request body.

\n */\n OriginalCountryCodeIso2?: string;\n\n /**\n *

The phone number that was sent in the request body.

\n */\n OriginalPhoneNumber?: string;\n\n /**\n *

The description of the phone type. Valid values are: MOBILE, LANDLINE, VOIP,\n * INVALID, PREPAID, and OTHER.

\n */\n PhoneType?: string;\n\n /**\n *

The phone type, represented by an integer. Valid values are: 0 (mobile), 1 (landline), 2 (VoIP), 3 (invalid), 4 (other), and 5 (prepaid).

\n */\n PhoneTypeCode?: number;\n\n /**\n *

The time zone for the location where the phone number was originally registered.

\n */\n Timezone?: string;\n\n /**\n *

The postal or ZIP code for the location where the phone number was originally registered.

\n */\n ZipCode?: string;\n}\n\nexport namespace NumberValidateResponse {\n export const filterSensitiveLog = (obj: NumberValidateResponse): any => ({\n ...obj,\n });\n}\n\nexport interface PhoneNumberValidateRequest {\n /**\n *

Specifies a phone number to validate and retrieve information about.

\n */\n NumberValidateRequest: NumberValidateRequest | undefined;\n}\n\nexport namespace PhoneNumberValidateRequest {\n export const filterSensitiveLog = (obj: PhoneNumberValidateRequest): any => ({\n ...obj,\n });\n}\n\nexport interface PhoneNumberValidateResponse {\n /**\n *

Provides information about a phone number.

\n */\n NumberValidateResponse: NumberValidateResponse | undefined;\n}\n\nexport namespace PhoneNumberValidateResponse {\n export const filterSensitiveLog = (obj: PhoneNumberValidateResponse): any => ({\n ...obj,\n });\n}\n\nexport interface PutEventsRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

Specifies a batch of events to process.

\n */\n EventsRequest: EventsRequest | undefined;\n}\n\nexport namespace PutEventsRequest {\n export const filterSensitiveLog = (obj: PutEventsRequest): any => ({\n ...obj,\n });\n}\n\nexport interface PutEventsResponse {\n /**\n *

Provides information about endpoints and the events that they're associated with.

\n */\n EventsResponse: EventsResponse | undefined;\n}\n\nexport namespace PutEventsResponse {\n export const filterSensitiveLog = (obj: PutEventsResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies the Amazon Resource Name (ARN) of an event stream to publish events to and the AWS Identity and Access Management (IAM) role to use when publishing those events.

\n */\nexport interface WriteEventStream {\n /**\n *

The Amazon Resource Name (ARN) of the Amazon Kinesis data stream or Amazon Kinesis Data Firehose delivery stream that you want to publish event data to.

For a Kinesis data stream, the ARN format is: arn:aws:kinesis:region:account-id:stream/stream_name\n *

For a Kinesis Data Firehose delivery stream, the ARN format is: arn:aws:firehose:region:account-id:deliverystream/stream_name\n *

\n */\n DestinationStreamArn: string | undefined;\n\n /**\n *

The AWS Identity and Access Management (IAM) role that authorizes Amazon Pinpoint to publish event data to the stream in your AWS account.

\n */\n RoleArn: string | undefined;\n}\n\nexport namespace WriteEventStream {\n export const filterSensitiveLog = (obj: WriteEventStream): any => ({\n ...obj,\n });\n}\n\nexport interface PutEventStreamRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

Specifies the Amazon Resource Name (ARN) of an event stream to publish events to and the AWS Identity and Access Management (IAM) role to use when publishing those events.

\n */\n WriteEventStream: WriteEventStream | undefined;\n}\n\nexport namespace PutEventStreamRequest {\n export const filterSensitiveLog = (obj: PutEventStreamRequest): any => ({\n ...obj,\n });\n}\n\nexport interface PutEventStreamResponse {\n /**\n *

Specifies settings for publishing event data to an Amazon Kinesis data stream or an Amazon Kinesis Data Firehose delivery stream.

\n */\n EventStream: EventStream | undefined;\n}\n\nexport namespace PutEventStreamResponse {\n export const filterSensitiveLog = (obj: PutEventStreamResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies one or more attributes to remove from all the endpoints that are associated with an application.

\n */\nexport interface UpdateAttributesRequest {\n /**\n *

An array of the attributes to remove from all the endpoints that are associated with the application. The array can specify the complete, exact name of each attribute to remove or it can specify a glob pattern that an attribute name must match in order for the attribute to be removed.

\n */\n Blacklist?: string[];\n}\n\nexport namespace UpdateAttributesRequest {\n export const filterSensitiveLog = (obj: UpdateAttributesRequest): any => ({\n ...obj,\n });\n}\n\nexport interface RemoveAttributesRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The type of attribute or attributes to remove. Valid values are:

  • endpoint-custom-attributes - Custom attributes that describe endpoints, such as the date when an associated user opted in or out of receiving communications from you through a specific type of channel.

  • endpoint-metric-attributes - Custom metrics that your app reports to Amazon Pinpoint for endpoints, such as the number of app sessions or the number of items left in a cart.

  • endpoint-user-attributes - Custom attributes that describe users, such as first name, last name, and age.

\n */\n AttributeType: string | undefined;\n\n /**\n *

Specifies one or more attributes to remove from all the endpoints that are associated with an application.

\n */\n UpdateAttributesRequest: UpdateAttributesRequest | undefined;\n}\n\nexport namespace RemoveAttributesRequest {\n export const filterSensitiveLog = (obj: RemoveAttributesRequest): any => ({\n ...obj,\n });\n}\n\nexport interface RemoveAttributesResponse {\n /**\n *

Provides information about the type and the names of attributes that were removed from all the endpoints that are associated with an application.

\n */\n AttributesResource: AttributesResource | undefined;\n}\n\nexport namespace RemoveAttributesResponse {\n export const filterSensitiveLog = (obj: RemoveAttributesResponse): any => ({\n ...obj,\n });\n}\n\nexport interface SendMessagesRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

Specifies the configuration and other settings for a message.

\n */\n MessageRequest: MessageRequest | undefined;\n}\n\nexport namespace SendMessagesRequest {\n export const filterSensitiveLog = (obj: SendMessagesRequest): any => ({\n ...obj,\n });\n}\n\nexport interface SendMessagesResponse {\n /**\n *

Provides information about the results of a request to send a message to an endpoint address.

\n */\n MessageResponse: MessageResponse | undefined;\n}\n\nexport namespace SendMessagesResponse {\n export const filterSensitiveLog = (obj: SendMessagesResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies the configuration and other settings for a message to send to all the endpoints that are associated with a list of users.

\n */\nexport interface SendUsersMessageRequest {\n /**\n *

A map of custom attribute-value pairs. For a push notification, Amazon Pinpoint adds these attributes to the data.pinpoint object in the body of the notification payload. Amazon Pinpoint also provides these attributes in the events that it generates for users-messages deliveries.

\n */\n Context?: { [key: string]: string };\n\n /**\n *

The settings and content for the default message and any default messages that you defined for specific channels.

\n */\n MessageConfiguration: DirectMessageConfiguration | undefined;\n\n /**\n *

The message template to use for the message.

\n */\n TemplateConfiguration?: TemplateConfiguration;\n\n /**\n *

The unique identifier for tracing the message. This identifier is visible to message recipients.

\n */\n TraceId?: string;\n\n /**\n *

A map that associates user IDs with EndpointSendConfiguration objects. You can use an EndpointSendConfiguration object to tailor the message for a user by specifying settings such as content overrides and message variables.

\n */\n Users: { [key: string]: EndpointSendConfiguration } | undefined;\n}\n\nexport namespace SendUsersMessageRequest {\n export const filterSensitiveLog = (obj: SendUsersMessageRequest): any => ({\n ...obj,\n });\n}\n\nexport interface SendUsersMessagesRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

Specifies the configuration and other settings for a message to send to all the endpoints that are associated with a list of users.

\n */\n SendUsersMessageRequest: SendUsersMessageRequest | undefined;\n}\n\nexport namespace SendUsersMessagesRequest {\n export const filterSensitiveLog = (obj: SendUsersMessagesRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Provides information about which users and endpoints a message was sent to.

\n */\nexport interface SendUsersMessageResponse {\n /**\n *

The unique identifier for the application that was used to send the message.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The unique identifier that was assigned to the message request.

\n */\n RequestId?: string;\n\n /**\n *

An object that indicates which endpoints the message was sent to, for each user. The object lists user IDs and, for each user ID, provides the endpoint IDs that the message was sent to. For each endpoint ID, it provides an EndpointMessageResult object.

\n */\n Result?: { [key: string]: { [key: string]: EndpointMessageResult } };\n}\n\nexport namespace SendUsersMessageResponse {\n export const filterSensitiveLog = (obj: SendUsersMessageResponse): any => ({\n ...obj,\n });\n}\n\nexport interface SendUsersMessagesResponse {\n /**\n *

Provides information about which users and endpoints a message was sent to.

\n */\n SendUsersMessageResponse: SendUsersMessageResponse | undefined;\n}\n\nexport namespace SendUsersMessagesResponse {\n export const filterSensitiveLog = (obj: SendUsersMessagesResponse): any => ({\n ...obj,\n });\n}\n\nexport interface TagResourceRequest {\n /**\n *

The Amazon Resource Name (ARN) of the resource.

\n */\n ResourceArn: string | undefined;\n\n /**\n *

Specifies the tags (keys and values) for an application, campaign, message template, or segment.

\n */\n TagsModel: TagsModel | undefined;\n}\n\nexport namespace TagResourceRequest {\n export const filterSensitiveLog = (obj: TagResourceRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UntagResourceRequest {\n /**\n *

The Amazon Resource Name (ARN) of the resource.

\n */\n ResourceArn: string | undefined;\n\n /**\n *

The key of the tag to remove from the resource. To remove multiple tags, append the tagKeys parameter and argument for each additional tag to remove, separated by an ampersand (&).

\n */\n TagKeys: string[] | undefined;\n}\n\nexport namespace UntagResourceRequest {\n export const filterSensitiveLog = (obj: UntagResourceRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateAdmChannelRequest {\n /**\n *

Specifies the status and settings of the ADM (Amazon Device Messaging) channel for an application.

\n */\n ADMChannelRequest: ADMChannelRequest | undefined;\n\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n}\n\nexport namespace UpdateAdmChannelRequest {\n export const filterSensitiveLog = (obj: UpdateAdmChannelRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateAdmChannelResponse {\n /**\n *

Provides information about the status and settings of the ADM (Amazon Device Messaging) channel for an application.

\n */\n ADMChannelResponse: ADMChannelResponse | undefined;\n}\n\nexport namespace UpdateAdmChannelResponse {\n export const filterSensitiveLog = (obj: UpdateAdmChannelResponse): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateApnsChannelRequest {\n /**\n *

Specifies the status and settings of the APNs (Apple Push Notification service) channel for an application.

\n */\n APNSChannelRequest: APNSChannelRequest | undefined;\n\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n}\n\nexport namespace UpdateApnsChannelRequest {\n export const filterSensitiveLog = (obj: UpdateApnsChannelRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateApnsChannelResponse {\n /**\n *

Provides information about the status and settings of the APNs (Apple Push Notification service) channel for an application.

\n */\n APNSChannelResponse: APNSChannelResponse | undefined;\n}\n\nexport namespace UpdateApnsChannelResponse {\n export const filterSensitiveLog = (obj: UpdateApnsChannelResponse): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateApnsSandboxChannelRequest {\n /**\n *

Specifies the status and settings of the APNs (Apple Push Notification service) sandbox channel for an application.

\n */\n APNSSandboxChannelRequest: APNSSandboxChannelRequest | undefined;\n\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n}\n\nexport namespace UpdateApnsSandboxChannelRequest {\n export const filterSensitiveLog = (obj: UpdateApnsSandboxChannelRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateApnsSandboxChannelResponse {\n /**\n *

Provides information about the status and settings of the APNs (Apple Push Notification service) sandbox channel for an application.

\n */\n APNSSandboxChannelResponse: APNSSandboxChannelResponse | undefined;\n}\n\nexport namespace UpdateApnsSandboxChannelResponse {\n export const filterSensitiveLog = (obj: UpdateApnsSandboxChannelResponse): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateApnsVoipChannelRequest {\n /**\n *

Specifies the status and settings of the APNs (Apple Push Notification service) VoIP channel for an application.

\n */\n APNSVoipChannelRequest: APNSVoipChannelRequest | undefined;\n\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n}\n\nexport namespace UpdateApnsVoipChannelRequest {\n export const filterSensitiveLog = (obj: UpdateApnsVoipChannelRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateApnsVoipChannelResponse {\n /**\n *

Provides information about the status and settings of the APNs (Apple Push Notification service) VoIP channel for an application.

\n */\n APNSVoipChannelResponse: APNSVoipChannelResponse | undefined;\n}\n\nexport namespace UpdateApnsVoipChannelResponse {\n export const filterSensitiveLog = (obj: UpdateApnsVoipChannelResponse): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateApnsVoipSandboxChannelRequest {\n /**\n *

Specifies the status and settings of the APNs (Apple Push Notification service) VoIP sandbox channel for an application.

\n */\n APNSVoipSandboxChannelRequest: APNSVoipSandboxChannelRequest | undefined;\n\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n}\n\nexport namespace UpdateApnsVoipSandboxChannelRequest {\n export const filterSensitiveLog = (obj: UpdateApnsVoipSandboxChannelRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateApnsVoipSandboxChannelResponse {\n /**\n *

Provides information about the status and settings of the APNs (Apple Push Notification service) VoIP sandbox channel for an application.

\n */\n APNSVoipSandboxChannelResponse: APNSVoipSandboxChannelResponse | undefined;\n}\n\nexport namespace UpdateApnsVoipSandboxChannelResponse {\n export const filterSensitiveLog = (obj: UpdateApnsVoipSandboxChannelResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies the default settings for an application.

\n */\nexport interface WriteApplicationSettingsRequest {\n /**\n *

The settings for the AWS Lambda function to invoke by default as a code hook for campaigns in the application. You can use this hook to customize segments that are used by campaigns in the application.

To override these settings and define custom settings for a specific campaign, use the CampaignHook object of the Campaign resource.

\n */\n CampaignHook?: CampaignHook;\n\n /**\n *

Specifies whether to enable application-related alarms in Amazon CloudWatch.

\n */\n CloudWatchMetricsEnabled?: boolean;\n\n EventTaggingEnabled?: boolean;\n /**\n *

The default sending limits for campaigns in the application. To override these limits and define custom limits for a specific campaign or journey, use the Campaign resource or the Journey resource, respectively.

\n */\n Limits?: CampaignLimits;\n\n /**\n *

The default quiet time for campaigns in the application. Quiet time is a specific time range when messages aren't sent to endpoints, if all the following conditions are met:

  • The EndpointDemographic.Timezone property of the endpoint is set to a valid value.

  • The current time in the endpoint's time zone is later than or equal to the time specified by the QuietTime.Start property for the application (or a campaign or journey that has custom quiet time settings).

  • The current time in the endpoint's time zone is earlier than or equal to the time specified by the QuietTime.End property for the application (or a campaign or journey that has custom quiet time settings).

If any of the preceding conditions isn't met, the endpoint will receive messages from a campaign or journey, even if quiet time is enabled.

To override the default quiet time settings for a specific campaign or journey, use the Campaign resource or the Journey resource to define a custom quiet time for the campaign or journey.

\n */\n QuietTime?: QuietTime;\n}\n\nexport namespace WriteApplicationSettingsRequest {\n export const filterSensitiveLog = (obj: WriteApplicationSettingsRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateApplicationSettingsRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

Specifies the default settings for an application.

\n */\n WriteApplicationSettingsRequest: WriteApplicationSettingsRequest | undefined;\n}\n\nexport namespace UpdateApplicationSettingsRequest {\n export const filterSensitiveLog = (obj: UpdateApplicationSettingsRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateApplicationSettingsResponse {\n /**\n *

Provides information about an application, including the default settings for an application.

\n */\n ApplicationSettingsResource: ApplicationSettingsResource | undefined;\n}\n\nexport namespace UpdateApplicationSettingsResponse {\n export const filterSensitiveLog = (obj: UpdateApplicationSettingsResponse): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateBaiduChannelRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

Specifies the status and settings of the Baidu (Baidu Cloud Push) channel for an application.

\n */\n BaiduChannelRequest: BaiduChannelRequest | undefined;\n}\n\nexport namespace UpdateBaiduChannelRequest {\n export const filterSensitiveLog = (obj: UpdateBaiduChannelRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateBaiduChannelResponse {\n /**\n *

Provides information about the status and settings of the Baidu (Baidu Cloud Push) channel for an application.

\n */\n BaiduChannelResponse: BaiduChannelResponse | undefined;\n}\n\nexport namespace UpdateBaiduChannelResponse {\n export const filterSensitiveLog = (obj: UpdateBaiduChannelResponse): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateCampaignRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The unique identifier for the campaign.

\n */\n CampaignId: string | undefined;\n\n /**\n *

Specifies the configuration and other settings for a campaign.

\n */\n WriteCampaignRequest: WriteCampaignRequest | undefined;\n}\n\nexport namespace UpdateCampaignRequest {\n export const filterSensitiveLog = (obj: UpdateCampaignRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateCampaignResponse {\n /**\n *

Provides information about the status, configuration, and other settings for a campaign.

\n */\n CampaignResponse: CampaignResponse | undefined;\n}\n\nexport namespace UpdateCampaignResponse {\n export const filterSensitiveLog = (obj: UpdateCampaignResponse): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateEmailChannelRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

Specifies the status and settings of the email channel for an application.

\n */\n EmailChannelRequest: EmailChannelRequest | undefined;\n}\n\nexport namespace UpdateEmailChannelRequest {\n export const filterSensitiveLog = (obj: UpdateEmailChannelRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateEmailChannelResponse {\n /**\n *

Provides information about the status and settings of the email channel for an application.

\n */\n EmailChannelResponse: EmailChannelResponse | undefined;\n}\n\nexport namespace UpdateEmailChannelResponse {\n export const filterSensitiveLog = (obj: UpdateEmailChannelResponse): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateEmailTemplateRequest {\n /**\n *

Specifies whether to save the updates as a new version of the message template. Valid values are: true, save the updates as a new version; and, false, save the updates to (overwrite) the latest existing version of the template.

If you don't specify a value for this parameter, Amazon Pinpoint saves the updates to (overwrites) the latest existing version of the template. If you specify a value of true for this parameter, don't specify a value for the version parameter. Otherwise, an error will occur.

\n */\n CreateNewVersion?: boolean;\n\n /**\n *

Specifies the content and settings for a message template that can be used in messages that are sent through the email channel.

\n */\n EmailTemplateRequest: EmailTemplateRequest | undefined;\n\n /**\n *

The name of the message template. A template name must start with an alphanumeric character and can contain a maximum of 128 characters. The characters can be alphanumeric characters, underscores (_), or hyphens (-). Template names are case sensitive.

\n */\n TemplateName: string | undefined;\n\n /**\n *

The unique identifier for the version of the message template to update, retrieve information about, or delete. To retrieve identifiers and other information for all the versions of a template, use the Template Versions resource.

If specified, this value must match the identifier for an existing template version. If specified for an update operation, this value must match the identifier for the latest existing version of the template. This restriction helps ensure that race conditions don't occur.

If you don't specify a value for this parameter, Amazon Pinpoint does the following:

  • For a get operation, retrieves information about the active version of the template.

  • For an update operation, saves the updates to (overwrites) the latest existing version of the template, if the create-new-version parameter isn't used or is set to false.

  • For a delete operation, deletes the template, including all versions of the template.

\n */\n Version?: string;\n}\n\nexport namespace UpdateEmailTemplateRequest {\n export const filterSensitiveLog = (obj: UpdateEmailTemplateRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateEmailTemplateResponse {\n /**\n *

Provides information about an API request or response.

\n */\n MessageBody: MessageBody | undefined;\n}\n\nexport namespace UpdateEmailTemplateResponse {\n export const filterSensitiveLog = (obj: UpdateEmailTemplateResponse): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateEndpointRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The unique identifier for the endpoint.

\n */\n EndpointId: string | undefined;\n\n /**\n *

Specifies the channel type and other settings for an endpoint.

\n */\n EndpointRequest: EndpointRequest | undefined;\n}\n\nexport namespace UpdateEndpointRequest {\n export const filterSensitiveLog = (obj: UpdateEndpointRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateEndpointResponse {\n /**\n *

Provides information about an API request or response.

\n */\n MessageBody: MessageBody | undefined;\n}\n\nexport namespace UpdateEndpointResponse {\n export const filterSensitiveLog = (obj: UpdateEndpointResponse): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateEndpointsBatchRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

Specifies a batch of endpoints to create or update and the settings and attributes to set or change for each endpoint.

\n */\n EndpointBatchRequest: EndpointBatchRequest | undefined;\n}\n\nexport namespace UpdateEndpointsBatchRequest {\n export const filterSensitiveLog = (obj: UpdateEndpointsBatchRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateEndpointsBatchResponse {\n /**\n *

Provides information about an API request or response.

\n */\n MessageBody: MessageBody | undefined;\n}\n\nexport namespace UpdateEndpointsBatchResponse {\n export const filterSensitiveLog = (obj: UpdateEndpointsBatchResponse): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateGcmChannelRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

Specifies the status and settings of the GCM channel for an application. This channel enables Amazon Pinpoint to send push notifications through the Firebase Cloud Messaging (FCM), formerly Google Cloud Messaging (GCM), service.

\n */\n GCMChannelRequest: GCMChannelRequest | undefined;\n}\n\nexport namespace UpdateGcmChannelRequest {\n export const filterSensitiveLog = (obj: UpdateGcmChannelRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateGcmChannelResponse {\n /**\n *

Provides information about the status and settings of the GCM channel for an application. The GCM channel enables Amazon Pinpoint to send push notifications through the Firebase Cloud Messaging (FCM), formerly Google Cloud Messaging (GCM), service.

\n */\n GCMChannelResponse: GCMChannelResponse | undefined;\n}\n\nexport namespace UpdateGcmChannelResponse {\n export const filterSensitiveLog = (obj: UpdateGcmChannelResponse): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateJourneyRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The unique identifier for the journey.

\n */\n JourneyId: string | undefined;\n\n /**\n *

Specifies the configuration and other settings for a journey.

\n */\n WriteJourneyRequest: WriteJourneyRequest | undefined;\n}\n\nexport namespace UpdateJourneyRequest {\n export const filterSensitiveLog = (obj: UpdateJourneyRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateJourneyResponse {\n /**\n *

Provides information about the status, configuration, and other settings for a journey.

\n */\n JourneyResponse: JourneyResponse | undefined;\n}\n\nexport namespace UpdateJourneyResponse {\n export const filterSensitiveLog = (obj: UpdateJourneyResponse): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateJourneyStateRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The unique identifier for the journey.

\n */\n JourneyId: string | undefined;\n\n /**\n *

Changes the status of a journey.

\n */\n JourneyStateRequest: JourneyStateRequest | undefined;\n}\n\nexport namespace UpdateJourneyStateRequest {\n export const filterSensitiveLog = (obj: UpdateJourneyStateRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateJourneyStateResponse {\n /**\n *

Provides information about the status, configuration, and other settings for a journey.

\n */\n JourneyResponse: JourneyResponse | undefined;\n}\n\nexport namespace UpdateJourneyStateResponse {\n export const filterSensitiveLog = (obj: UpdateJourneyStateResponse): any => ({\n ...obj,\n });\n}\n\nexport interface UpdatePushTemplateRequest {\n /**\n *

Specifies whether to save the updates as a new version of the message template. Valid values are: true, save the updates as a new version; and, false, save the updates to (overwrite) the latest existing version of the template.

If you don't specify a value for this parameter, Amazon Pinpoint saves the updates to (overwrites) the latest existing version of the template. If you specify a value of true for this parameter, don't specify a value for the version parameter. Otherwise, an error will occur.

\n */\n CreateNewVersion?: boolean;\n\n /**\n *

Specifies the content and settings for a message template that can be used in messages that are sent through a push notification channel.

\n */\n PushNotificationTemplateRequest: PushNotificationTemplateRequest | undefined;\n\n /**\n *

The name of the message template. A template name must start with an alphanumeric character and can contain a maximum of 128 characters. The characters can be alphanumeric characters, underscores (_), or hyphens (-). Template names are case sensitive.

\n */\n TemplateName: string | undefined;\n\n /**\n *

The unique identifier for the version of the message template to update, retrieve information about, or delete. To retrieve identifiers and other information for all the versions of a template, use the Template Versions resource.

If specified, this value must match the identifier for an existing template version. If specified for an update operation, this value must match the identifier for the latest existing version of the template. This restriction helps ensure that race conditions don't occur.

If you don't specify a value for this parameter, Amazon Pinpoint does the following:

  • For a get operation, retrieves information about the active version of the template.

  • For an update operation, saves the updates to (overwrites) the latest existing version of the template, if the create-new-version parameter isn't used or is set to false.

  • For a delete operation, deletes the template, including all versions of the template.

\n */\n Version?: string;\n}\n\nexport namespace UpdatePushTemplateRequest {\n export const filterSensitiveLog = (obj: UpdatePushTemplateRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdatePushTemplateResponse {\n /**\n *

Provides information about an API request or response.

\n */\n MessageBody: MessageBody | undefined;\n}\n\nexport namespace UpdatePushTemplateResponse {\n export const filterSensitiveLog = (obj: UpdatePushTemplateResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies Amazon Pinpoint configuration settings for retrieving and processing recommendation data from a recommender model.

\n */\nexport interface UpdateRecommenderConfigurationShape {\n /**\n *

A map of key-value pairs that defines 1-10 custom endpoint or user attributes, depending on the value for the RecommendationProviderIdType property. Each of these attributes temporarily stores a recommended item that's retrieved from the recommender model and sent to an AWS Lambda function for additional processing. Each attribute can be used as a message variable in a message template.

In the map, the key is the name of a custom attribute and the value is a custom display name for that attribute. The display name appears in the Attribute finder of the template editor on the Amazon Pinpoint console. The following restrictions apply to these names:

  • An attribute name must start with a letter or number and it can contain up to 50 characters. The characters can be letters, numbers, underscores (_), or hyphens (-). Attribute names are case sensitive and must be unique.

  • An attribute display name must start with a letter or number and it can contain up to 25 characters. The characters can be letters, numbers, spaces, underscores (_), or hyphens (-).

This object is required if the configuration invokes an AWS Lambda function (RecommendationTransformerUri) to process recommendation data. Otherwise, don't include this object in your request.

\n */\n Attributes?: { [key: string]: string };\n\n /**\n *

A custom description of the configuration for the recommender model. The description can contain up to 128 characters. The characters can be letters, numbers, spaces, or the following symbols: _ ; () , ‐.

\n */\n Description?: string;\n\n /**\n *

A custom name of the configuration for the recommender model. The name must start with a letter or number and it can contain up to 128 characters. The characters can be letters, numbers, spaces, underscores (_), or hyphens (-).

\n */\n Name?: string;\n\n /**\n *

The type of Amazon Pinpoint ID to associate with unique user IDs in the recommender model. This value enables the model to use attribute and event data that’s specific to a particular endpoint or user in an Amazon Pinpoint application. Valid values are:

  • PINPOINT_ENDPOINT_ID - Associate each user in the model with a particular endpoint in Amazon Pinpoint. The data is correlated based on endpoint IDs in Amazon Pinpoint. This is the default value.

  • PINPOINT_USER_ID - Associate each user in the model with a particular user and endpoint in Amazon Pinpoint. The data is correlated based on user IDs in Amazon Pinpoint. If you specify this value, an endpoint definition in Amazon Pinpoint has to specify both a user ID (UserId) and an endpoint ID. Otherwise, messages won’t be sent to the user's endpoint.

\n */\n RecommendationProviderIdType?: string;\n\n /**\n *

The Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role that authorizes Amazon Pinpoint to retrieve recommendation data from the recommender model.

\n */\n RecommendationProviderRoleArn: string | undefined;\n\n /**\n *

The Amazon Resource Name (ARN) of the recommender model to retrieve recommendation data from. This value must match the ARN of an Amazon Personalize campaign.

\n */\n RecommendationProviderUri: string | undefined;\n\n /**\n *

The name or Amazon Resource Name (ARN) of the AWS Lambda function to invoke for additional processing of recommendation data that's retrieved from the recommender model.

\n */\n RecommendationTransformerUri?: string;\n\n /**\n *

A custom display name for the standard endpoint or user attribute (RecommendationItems) that temporarily stores recommended items for each endpoint or user, depending on the value for the RecommendationProviderIdType property. This value is required if the configuration doesn't invoke an AWS Lambda function (RecommendationTransformerUri) to perform additional processing of recommendation data.

This name appears in the Attribute finder of the template editor on the Amazon Pinpoint console. The name can contain up to 25 characters. The characters can be letters, numbers, spaces, underscores (_), or hyphens (-). These restrictions don't apply to attribute values.

\n */\n RecommendationsDisplayName?: string;\n\n /**\n *

The number of recommended items to retrieve from the model for each endpoint or user, depending on the value for the RecommendationProviderIdType property. This number determines how many recommended items are available for use in message variables. The minimum value is 1. The maximum value is 5. The default value is 5.

To use multiple recommended items and custom attributes with message variables, you have to use an AWS Lambda function (RecommendationTransformerUri) to perform additional processing of recommendation data.

\n */\n RecommendationsPerMessage?: number;\n}\n\nexport namespace UpdateRecommenderConfigurationShape {\n export const filterSensitiveLog = (obj: UpdateRecommenderConfigurationShape): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateRecommenderConfigurationRequest {\n /**\n *

The unique identifier for the recommender model configuration. This identifier is displayed as the Recommender ID on the Amazon Pinpoint console.

\n */\n RecommenderId: string | undefined;\n\n /**\n *

Specifies Amazon Pinpoint configuration settings for retrieving and processing recommendation data from a recommender model.

\n */\n UpdateRecommenderConfiguration: UpdateRecommenderConfigurationShape | undefined;\n}\n\nexport namespace UpdateRecommenderConfigurationRequest {\n export const filterSensitiveLog = (obj: UpdateRecommenderConfigurationRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateRecommenderConfigurationResponse {\n /**\n *

Provides information about Amazon Pinpoint configuration settings for retrieving and processing data from a recommender model.

\n */\n RecommenderConfigurationResponse: RecommenderConfigurationResponse | undefined;\n}\n\nexport namespace UpdateRecommenderConfigurationResponse {\n export const filterSensitiveLog = (obj: UpdateRecommenderConfigurationResponse): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateSegmentRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

The unique identifier for the segment.

\n */\n SegmentId: string | undefined;\n\n /**\n *

Specifies the configuration, dimension, and other settings for a segment. A WriteSegmentRequest object can include a Dimensions object or a SegmentGroups object, but not both.

\n */\n WriteSegmentRequest: WriteSegmentRequest | undefined;\n}\n\nexport namespace UpdateSegmentRequest {\n export const filterSensitiveLog = (obj: UpdateSegmentRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateSegmentResponse {\n /**\n *

Provides information about the configuration, dimension, and other settings for a segment.

\n */\n SegmentResponse: SegmentResponse | undefined;\n}\n\nexport namespace UpdateSegmentResponse {\n export const filterSensitiveLog = (obj: UpdateSegmentResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies the status and settings of the SMS channel for an application.

\n */\nexport interface SMSChannelRequest {\n /**\n *

Specifies whether to enable the SMS channel for the application.

\n */\n Enabled?: boolean;\n\n /**\n *

The identity that you want to display on recipients' devices when they receive messages from the SMS channel.

\n */\n SenderId?: string;\n\n /**\n *

The registered short code that you want to use when you send messages through the SMS channel.

\n */\n ShortCode?: string;\n}\n\nexport namespace SMSChannelRequest {\n export const filterSensitiveLog = (obj: SMSChannelRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateSmsChannelRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

Specifies the status and settings of the SMS channel for an application.

\n */\n SMSChannelRequest: SMSChannelRequest | undefined;\n}\n\nexport namespace UpdateSmsChannelRequest {\n export const filterSensitiveLog = (obj: UpdateSmsChannelRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateSmsChannelResponse {\n /**\n *

Provides information about the status and settings of the SMS channel for an application.

\n */\n SMSChannelResponse: SMSChannelResponse | undefined;\n}\n\nexport namespace UpdateSmsChannelResponse {\n export const filterSensitiveLog = (obj: UpdateSmsChannelResponse): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateSmsTemplateRequest {\n /**\n *

Specifies whether to save the updates as a new version of the message template. Valid values are: true, save the updates as a new version; and, false, save the updates to (overwrite) the latest existing version of the template.

If you don't specify a value for this parameter, Amazon Pinpoint saves the updates to (overwrites) the latest existing version of the template. If you specify a value of true for this parameter, don't specify a value for the version parameter. Otherwise, an error will occur.

\n */\n CreateNewVersion?: boolean;\n\n /**\n *

Specifies the content and settings for a message template that can be used in text messages that are sent through the SMS channel.

\n */\n SMSTemplateRequest: SMSTemplateRequest | undefined;\n\n /**\n *

The name of the message template. A template name must start with an alphanumeric character and can contain a maximum of 128 characters. The characters can be alphanumeric characters, underscores (_), or hyphens (-). Template names are case sensitive.

\n */\n TemplateName: string | undefined;\n\n /**\n *

The unique identifier for the version of the message template to update, retrieve information about, or delete. To retrieve identifiers and other information for all the versions of a template, use the Template Versions resource.

If specified, this value must match the identifier for an existing template version. If specified for an update operation, this value must match the identifier for the latest existing version of the template. This restriction helps ensure that race conditions don't occur.

If you don't specify a value for this parameter, Amazon Pinpoint does the following:

  • For a get operation, retrieves information about the active version of the template.

  • For an update operation, saves the updates to (overwrites) the latest existing version of the template, if the create-new-version parameter isn't used or is set to false.

  • For a delete operation, deletes the template, including all versions of the template.

\n */\n Version?: string;\n}\n\nexport namespace UpdateSmsTemplateRequest {\n export const filterSensitiveLog = (obj: UpdateSmsTemplateRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateSmsTemplateResponse {\n /**\n *

Provides information about an API request or response.

\n */\n MessageBody: MessageBody | undefined;\n}\n\nexport namespace UpdateSmsTemplateResponse {\n export const filterSensitiveLog = (obj: UpdateSmsTemplateResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies which version of a message template to use as the active version of the template.

\n */\nexport interface TemplateActiveVersionRequest {\n /**\n *

The version of the message template to use as the active version of the template. Valid values are: latest, for the most recent version of the template; or, the unique identifier for any existing version of the template. If you specify an identifier, the value must match the identifier for an existing template version. To retrieve a list of versions and version identifiers for a template, use the Template Versions resource.

\n */\n Version?: string;\n}\n\nexport namespace TemplateActiveVersionRequest {\n export const filterSensitiveLog = (obj: TemplateActiveVersionRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateTemplateActiveVersionRequest {\n /**\n *

Specifies which version of a message template to use as the active version of the template.

\n */\n TemplateActiveVersionRequest: TemplateActiveVersionRequest | undefined;\n\n /**\n *

The name of the message template. A template name must start with an alphanumeric character and can contain a maximum of 128 characters. The characters can be alphanumeric characters, underscores (_), or hyphens (-). Template names are case sensitive.

\n */\n TemplateName: string | undefined;\n\n /**\n *

The type of channel that the message template is designed for. Valid values are: EMAIL, PUSH, SMS, and VOICE.

\n */\n TemplateType: string | undefined;\n}\n\nexport namespace UpdateTemplateActiveVersionRequest {\n export const filterSensitiveLog = (obj: UpdateTemplateActiveVersionRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateTemplateActiveVersionResponse {\n /**\n *

Provides information about an API request or response.

\n */\n MessageBody: MessageBody | undefined;\n}\n\nexport namespace UpdateTemplateActiveVersionResponse {\n export const filterSensitiveLog = (obj: UpdateTemplateActiveVersionResponse): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies the status and settings of the voice channel for an application.

\n */\nexport interface VoiceChannelRequest {\n /**\n *

Specifies whether to enable the voice channel for the application.

\n */\n Enabled?: boolean;\n}\n\nexport namespace VoiceChannelRequest {\n export const filterSensitiveLog = (obj: VoiceChannelRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateVoiceChannelRequest {\n /**\n *

The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console.

\n */\n ApplicationId: string | undefined;\n\n /**\n *

Specifies the status and settings of the voice channel for an application.

\n */\n VoiceChannelRequest: VoiceChannelRequest | undefined;\n}\n\nexport namespace UpdateVoiceChannelRequest {\n export const filterSensitiveLog = (obj: UpdateVoiceChannelRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateVoiceChannelResponse {\n /**\n *

Provides information about the status and settings of the voice channel for an application.

\n */\n VoiceChannelResponse: VoiceChannelResponse | undefined;\n}\n\nexport namespace UpdateVoiceChannelResponse {\n export const filterSensitiveLog = (obj: UpdateVoiceChannelResponse): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateVoiceTemplateRequest {\n /**\n *

Specifies whether to save the updates as a new version of the message template. Valid values are: true, save the updates as a new version; and, false, save the updates to (overwrite) the latest existing version of the template.

If you don't specify a value for this parameter, Amazon Pinpoint saves the updates to (overwrites) the latest existing version of the template. If you specify a value of true for this parameter, don't specify a value for the version parameter. Otherwise, an error will occur.

\n */\n CreateNewVersion?: boolean;\n\n /**\n *

The name of the message template. A template name must start with an alphanumeric character and can contain a maximum of 128 characters. The characters can be alphanumeric characters, underscores (_), or hyphens (-). Template names are case sensitive.

\n */\n TemplateName: string | undefined;\n\n /**\n *

The unique identifier for the version of the message template to update, retrieve information about, or delete. To retrieve identifiers and other information for all the versions of a template, use the Template Versions resource.

If specified, this value must match the identifier for an existing template version. If specified for an update operation, this value must match the identifier for the latest existing version of the template. This restriction helps ensure that race conditions don't occur.

If you don't specify a value for this parameter, Amazon Pinpoint does the following:

  • For a get operation, retrieves information about the active version of the template.

  • For an update operation, saves the updates to (overwrites) the latest existing version of the template, if the create-new-version parameter isn't used or is set to false.

  • For a delete operation, deletes the template, including all versions of the template.

\n */\n Version?: string;\n\n /**\n *

Specifies the content and settings for a message template that can be used in messages that are sent through the voice channel.

\n */\n VoiceTemplateRequest: VoiceTemplateRequest | undefined;\n}\n\nexport namespace UpdateVoiceTemplateRequest {\n export const filterSensitiveLog = (obj: UpdateVoiceTemplateRequest): any => ({\n ...obj,\n });\n}\n\nexport interface UpdateVoiceTemplateResponse {\n /**\n *

Provides information about an API request or response.

\n */\n MessageBody: MessageBody | undefined;\n}\n\nexport namespace UpdateVoiceTemplateResponse {\n export const filterSensitiveLog = (obj: UpdateVoiceTemplateResponse): any => ({\n ...obj,\n });\n}\n","import { CreateAppCommandInput, CreateAppCommandOutput } from \"../commands/CreateAppCommand\";\nimport { CreateCampaignCommandInput, CreateCampaignCommandOutput } from \"../commands/CreateCampaignCommand\";\nimport {\n CreateEmailTemplateCommandInput,\n CreateEmailTemplateCommandOutput,\n} from \"../commands/CreateEmailTemplateCommand\";\nimport { CreateExportJobCommandInput, CreateExportJobCommandOutput } from \"../commands/CreateExportJobCommand\";\nimport { CreateImportJobCommandInput, CreateImportJobCommandOutput } from \"../commands/CreateImportJobCommand\";\nimport { CreateJourneyCommandInput, CreateJourneyCommandOutput } from \"../commands/CreateJourneyCommand\";\nimport { CreatePushTemplateCommandInput, CreatePushTemplateCommandOutput } from \"../commands/CreatePushTemplateCommand\";\nimport {\n CreateRecommenderConfigurationCommandInput,\n CreateRecommenderConfigurationCommandOutput,\n} from \"../commands/CreateRecommenderConfigurationCommand\";\nimport { CreateSegmentCommandInput, CreateSegmentCommandOutput } from \"../commands/CreateSegmentCommand\";\nimport { CreateSmsTemplateCommandInput, CreateSmsTemplateCommandOutput } from \"../commands/CreateSmsTemplateCommand\";\nimport {\n CreateVoiceTemplateCommandInput,\n CreateVoiceTemplateCommandOutput,\n} from \"../commands/CreateVoiceTemplateCommand\";\nimport { DeleteAdmChannelCommandInput, DeleteAdmChannelCommandOutput } from \"../commands/DeleteAdmChannelCommand\";\nimport { DeleteApnsChannelCommandInput, DeleteApnsChannelCommandOutput } from \"../commands/DeleteApnsChannelCommand\";\nimport {\n DeleteApnsSandboxChannelCommandInput,\n DeleteApnsSandboxChannelCommandOutput,\n} from \"../commands/DeleteApnsSandboxChannelCommand\";\nimport {\n DeleteApnsVoipChannelCommandInput,\n DeleteApnsVoipChannelCommandOutput,\n} from \"../commands/DeleteApnsVoipChannelCommand\";\nimport {\n DeleteApnsVoipSandboxChannelCommandInput,\n DeleteApnsVoipSandboxChannelCommandOutput,\n} from \"../commands/DeleteApnsVoipSandboxChannelCommand\";\nimport { DeleteAppCommandInput, DeleteAppCommandOutput } from \"../commands/DeleteAppCommand\";\nimport { DeleteBaiduChannelCommandInput, DeleteBaiduChannelCommandOutput } from \"../commands/DeleteBaiduChannelCommand\";\nimport { DeleteCampaignCommandInput, DeleteCampaignCommandOutput } from \"../commands/DeleteCampaignCommand\";\nimport { DeleteEmailChannelCommandInput, DeleteEmailChannelCommandOutput } from \"../commands/DeleteEmailChannelCommand\";\nimport {\n DeleteEmailTemplateCommandInput,\n DeleteEmailTemplateCommandOutput,\n} from \"../commands/DeleteEmailTemplateCommand\";\nimport { DeleteEndpointCommandInput, DeleteEndpointCommandOutput } from \"../commands/DeleteEndpointCommand\";\nimport { DeleteEventStreamCommandInput, DeleteEventStreamCommandOutput } from \"../commands/DeleteEventStreamCommand\";\nimport { DeleteGcmChannelCommandInput, DeleteGcmChannelCommandOutput } from \"../commands/DeleteGcmChannelCommand\";\nimport { DeleteJourneyCommandInput, DeleteJourneyCommandOutput } from \"../commands/DeleteJourneyCommand\";\nimport { DeletePushTemplateCommandInput, DeletePushTemplateCommandOutput } from \"../commands/DeletePushTemplateCommand\";\nimport {\n DeleteRecommenderConfigurationCommandInput,\n DeleteRecommenderConfigurationCommandOutput,\n} from \"../commands/DeleteRecommenderConfigurationCommand\";\nimport { DeleteSegmentCommandInput, DeleteSegmentCommandOutput } from \"../commands/DeleteSegmentCommand\";\nimport { DeleteSmsChannelCommandInput, DeleteSmsChannelCommandOutput } from \"../commands/DeleteSmsChannelCommand\";\nimport { DeleteSmsTemplateCommandInput, DeleteSmsTemplateCommandOutput } from \"../commands/DeleteSmsTemplateCommand\";\nimport {\n DeleteUserEndpointsCommandInput,\n DeleteUserEndpointsCommandOutput,\n} from \"../commands/DeleteUserEndpointsCommand\";\nimport { DeleteVoiceChannelCommandInput, DeleteVoiceChannelCommandOutput } from \"../commands/DeleteVoiceChannelCommand\";\nimport {\n DeleteVoiceTemplateCommandInput,\n DeleteVoiceTemplateCommandOutput,\n} from \"../commands/DeleteVoiceTemplateCommand\";\nimport { GetAdmChannelCommandInput, GetAdmChannelCommandOutput } from \"../commands/GetAdmChannelCommand\";\nimport { GetApnsChannelCommandInput, GetApnsChannelCommandOutput } from \"../commands/GetApnsChannelCommand\";\nimport {\n GetApnsSandboxChannelCommandInput,\n GetApnsSandboxChannelCommandOutput,\n} from \"../commands/GetApnsSandboxChannelCommand\";\nimport { GetApnsVoipChannelCommandInput, GetApnsVoipChannelCommandOutput } from \"../commands/GetApnsVoipChannelCommand\";\nimport {\n GetApnsVoipSandboxChannelCommandInput,\n GetApnsVoipSandboxChannelCommandOutput,\n} from \"../commands/GetApnsVoipSandboxChannelCommand\";\nimport { GetAppCommandInput, GetAppCommandOutput } from \"../commands/GetAppCommand\";\nimport {\n GetApplicationDateRangeKpiCommandInput,\n GetApplicationDateRangeKpiCommandOutput,\n} from \"../commands/GetApplicationDateRangeKpiCommand\";\nimport {\n GetApplicationSettingsCommandInput,\n GetApplicationSettingsCommandOutput,\n} from \"../commands/GetApplicationSettingsCommand\";\nimport { GetAppsCommandInput, GetAppsCommandOutput } from \"../commands/GetAppsCommand\";\nimport { GetBaiduChannelCommandInput, GetBaiduChannelCommandOutput } from \"../commands/GetBaiduChannelCommand\";\nimport {\n GetCampaignActivitiesCommandInput,\n GetCampaignActivitiesCommandOutput,\n} from \"../commands/GetCampaignActivitiesCommand\";\nimport { GetCampaignCommandInput, GetCampaignCommandOutput } from \"../commands/GetCampaignCommand\";\nimport {\n GetCampaignDateRangeKpiCommandInput,\n GetCampaignDateRangeKpiCommandOutput,\n} from \"../commands/GetCampaignDateRangeKpiCommand\";\nimport { GetCampaignVersionCommandInput, GetCampaignVersionCommandOutput } from \"../commands/GetCampaignVersionCommand\";\nimport {\n GetCampaignVersionsCommandInput,\n GetCampaignVersionsCommandOutput,\n} from \"../commands/GetCampaignVersionsCommand\";\nimport { GetCampaignsCommandInput, GetCampaignsCommandOutput } from \"../commands/GetCampaignsCommand\";\nimport { GetChannelsCommandInput, GetChannelsCommandOutput } from \"../commands/GetChannelsCommand\";\nimport { GetEmailChannelCommandInput, GetEmailChannelCommandOutput } from \"../commands/GetEmailChannelCommand\";\nimport { GetEmailTemplateCommandInput, GetEmailTemplateCommandOutput } from \"../commands/GetEmailTemplateCommand\";\nimport { GetEndpointCommandInput, GetEndpointCommandOutput } from \"../commands/GetEndpointCommand\";\nimport { GetEventStreamCommandInput, GetEventStreamCommandOutput } from \"../commands/GetEventStreamCommand\";\nimport { GetExportJobCommandInput, GetExportJobCommandOutput } from \"../commands/GetExportJobCommand\";\nimport { GetExportJobsCommandInput, GetExportJobsCommandOutput } from \"../commands/GetExportJobsCommand\";\nimport { GetGcmChannelCommandInput, GetGcmChannelCommandOutput } from \"../commands/GetGcmChannelCommand\";\nimport { GetImportJobCommandInput, GetImportJobCommandOutput } from \"../commands/GetImportJobCommand\";\nimport { GetImportJobsCommandInput, GetImportJobsCommandOutput } from \"../commands/GetImportJobsCommand\";\nimport { GetJourneyCommandInput, GetJourneyCommandOutput } from \"../commands/GetJourneyCommand\";\nimport {\n GetJourneyDateRangeKpiCommandInput,\n GetJourneyDateRangeKpiCommandOutput,\n} from \"../commands/GetJourneyDateRangeKpiCommand\";\nimport {\n GetJourneyExecutionActivityMetricsCommandInput,\n GetJourneyExecutionActivityMetricsCommandOutput,\n} from \"../commands/GetJourneyExecutionActivityMetricsCommand\";\nimport {\n GetJourneyExecutionMetricsCommandInput,\n GetJourneyExecutionMetricsCommandOutput,\n} from \"../commands/GetJourneyExecutionMetricsCommand\";\nimport { GetPushTemplateCommandInput, GetPushTemplateCommandOutput } from \"../commands/GetPushTemplateCommand\";\nimport {\n GetRecommenderConfigurationCommandInput,\n GetRecommenderConfigurationCommandOutput,\n} from \"../commands/GetRecommenderConfigurationCommand\";\nimport {\n GetRecommenderConfigurationsCommandInput,\n GetRecommenderConfigurationsCommandOutput,\n} from \"../commands/GetRecommenderConfigurationsCommand\";\nimport { GetSegmentCommandInput, GetSegmentCommandOutput } from \"../commands/GetSegmentCommand\";\nimport {\n GetSegmentExportJobsCommandInput,\n GetSegmentExportJobsCommandOutput,\n} from \"../commands/GetSegmentExportJobsCommand\";\nimport {\n GetSegmentImportJobsCommandInput,\n GetSegmentImportJobsCommandOutput,\n} from \"../commands/GetSegmentImportJobsCommand\";\nimport { GetSegmentVersionCommandInput, GetSegmentVersionCommandOutput } from \"../commands/GetSegmentVersionCommand\";\nimport { GetSegmentVersionsCommandInput, GetSegmentVersionsCommandOutput } from \"../commands/GetSegmentVersionsCommand\";\nimport { GetSegmentsCommandInput, GetSegmentsCommandOutput } from \"../commands/GetSegmentsCommand\";\nimport { GetSmsChannelCommandInput, GetSmsChannelCommandOutput } from \"../commands/GetSmsChannelCommand\";\nimport { GetSmsTemplateCommandInput, GetSmsTemplateCommandOutput } from \"../commands/GetSmsTemplateCommand\";\nimport { GetUserEndpointsCommandInput, GetUserEndpointsCommandOutput } from \"../commands/GetUserEndpointsCommand\";\nimport { GetVoiceChannelCommandInput, GetVoiceChannelCommandOutput } from \"../commands/GetVoiceChannelCommand\";\nimport { GetVoiceTemplateCommandInput, GetVoiceTemplateCommandOutput } from \"../commands/GetVoiceTemplateCommand\";\nimport { ListJourneysCommandInput, ListJourneysCommandOutput } from \"../commands/ListJourneysCommand\";\nimport {\n ListTagsForResourceCommandInput,\n ListTagsForResourceCommandOutput,\n} from \"../commands/ListTagsForResourceCommand\";\nimport {\n ListTemplateVersionsCommandInput,\n ListTemplateVersionsCommandOutput,\n} from \"../commands/ListTemplateVersionsCommand\";\nimport { ListTemplatesCommandInput, ListTemplatesCommandOutput } from \"../commands/ListTemplatesCommand\";\nimport {\n PhoneNumberValidateCommandInput,\n PhoneNumberValidateCommandOutput,\n} from \"../commands/PhoneNumberValidateCommand\";\nimport { PutEventStreamCommandInput, PutEventStreamCommandOutput } from \"../commands/PutEventStreamCommand\";\nimport { PutEventsCommandInput, PutEventsCommandOutput } from \"../commands/PutEventsCommand\";\nimport { RemoveAttributesCommandInput, RemoveAttributesCommandOutput } from \"../commands/RemoveAttributesCommand\";\nimport { SendMessagesCommandInput, SendMessagesCommandOutput } from \"../commands/SendMessagesCommand\";\nimport { SendUsersMessagesCommandInput, SendUsersMessagesCommandOutput } from \"../commands/SendUsersMessagesCommand\";\nimport { TagResourceCommandInput, TagResourceCommandOutput } from \"../commands/TagResourceCommand\";\nimport { UntagResourceCommandInput, UntagResourceCommandOutput } from \"../commands/UntagResourceCommand\";\nimport { UpdateAdmChannelCommandInput, UpdateAdmChannelCommandOutput } from \"../commands/UpdateAdmChannelCommand\";\nimport { UpdateApnsChannelCommandInput, UpdateApnsChannelCommandOutput } from \"../commands/UpdateApnsChannelCommand\";\nimport {\n UpdateApnsSandboxChannelCommandInput,\n UpdateApnsSandboxChannelCommandOutput,\n} from \"../commands/UpdateApnsSandboxChannelCommand\";\nimport {\n UpdateApnsVoipChannelCommandInput,\n UpdateApnsVoipChannelCommandOutput,\n} from \"../commands/UpdateApnsVoipChannelCommand\";\nimport {\n UpdateApnsVoipSandboxChannelCommandInput,\n UpdateApnsVoipSandboxChannelCommandOutput,\n} from \"../commands/UpdateApnsVoipSandboxChannelCommand\";\nimport {\n UpdateApplicationSettingsCommandInput,\n UpdateApplicationSettingsCommandOutput,\n} from \"../commands/UpdateApplicationSettingsCommand\";\nimport { UpdateBaiduChannelCommandInput, UpdateBaiduChannelCommandOutput } from \"../commands/UpdateBaiduChannelCommand\";\nimport { UpdateCampaignCommandInput, UpdateCampaignCommandOutput } from \"../commands/UpdateCampaignCommand\";\nimport { UpdateEmailChannelCommandInput, UpdateEmailChannelCommandOutput } from \"../commands/UpdateEmailChannelCommand\";\nimport {\n UpdateEmailTemplateCommandInput,\n UpdateEmailTemplateCommandOutput,\n} from \"../commands/UpdateEmailTemplateCommand\";\nimport { UpdateEndpointCommandInput, UpdateEndpointCommandOutput } from \"../commands/UpdateEndpointCommand\";\nimport {\n UpdateEndpointsBatchCommandInput,\n UpdateEndpointsBatchCommandOutput,\n} from \"../commands/UpdateEndpointsBatchCommand\";\nimport { UpdateGcmChannelCommandInput, UpdateGcmChannelCommandOutput } from \"../commands/UpdateGcmChannelCommand\";\nimport { UpdateJourneyCommandInput, UpdateJourneyCommandOutput } from \"../commands/UpdateJourneyCommand\";\nimport { UpdateJourneyStateCommandInput, UpdateJourneyStateCommandOutput } from \"../commands/UpdateJourneyStateCommand\";\nimport { UpdatePushTemplateCommandInput, UpdatePushTemplateCommandOutput } from \"../commands/UpdatePushTemplateCommand\";\nimport {\n UpdateRecommenderConfigurationCommandInput,\n UpdateRecommenderConfigurationCommandOutput,\n} from \"../commands/UpdateRecommenderConfigurationCommand\";\nimport { UpdateSegmentCommandInput, UpdateSegmentCommandOutput } from \"../commands/UpdateSegmentCommand\";\nimport { UpdateSmsChannelCommandInput, UpdateSmsChannelCommandOutput } from \"../commands/UpdateSmsChannelCommand\";\nimport { UpdateSmsTemplateCommandInput, UpdateSmsTemplateCommandOutput } from \"../commands/UpdateSmsTemplateCommand\";\nimport {\n UpdateTemplateActiveVersionCommandInput,\n UpdateTemplateActiveVersionCommandOutput,\n} from \"../commands/UpdateTemplateActiveVersionCommand\";\nimport { UpdateVoiceChannelCommandInput, UpdateVoiceChannelCommandOutput } from \"../commands/UpdateVoiceChannelCommand\";\nimport {\n UpdateVoiceTemplateCommandInput,\n UpdateVoiceTemplateCommandOutput,\n} from \"../commands/UpdateVoiceTemplateCommand\";\nimport {\n ADMChannelRequest,\n ADMChannelResponse,\n ADMMessage,\n APNSChannelRequest,\n APNSChannelResponse,\n APNSMessage,\n APNSPushNotificationTemplate,\n APNSSandboxChannelRequest,\n APNSSandboxChannelResponse,\n APNSVoipChannelRequest,\n APNSVoipChannelResponse,\n APNSVoipSandboxChannelRequest,\n APNSVoipSandboxChannelResponse,\n ActivitiesResponse,\n Activity,\n ActivityResponse,\n AddressConfiguration,\n AndroidPushNotificationTemplate,\n ApplicationDateRangeKpiResponse,\n ApplicationResponse,\n ApplicationSettingsResource,\n ApplicationsResponse,\n AttributeDimension,\n AttributesResource,\n BadRequestException,\n BaiduChannelRequest,\n BaiduChannelResponse,\n BaiduMessage,\n BaseKpiResult,\n CampaignCustomMessage,\n CampaignDateRangeKpiResponse,\n CampaignEmailMessage,\n CampaignEventFilter,\n CampaignHook,\n CampaignLimits,\n CampaignResponse,\n CampaignSmsMessage,\n CampaignState,\n CampaignsResponse,\n ChannelResponse,\n ChannelsResponse,\n Condition,\n ConditionalSplitActivity,\n ConflictException,\n CreateApplicationRequest,\n CreateRecommenderConfigurationShape,\n CreateTemplateMessageBody,\n CustomDeliveryConfiguration,\n CustomMessageActivity,\n DefaultMessage,\n DefaultPushNotificationMessage,\n DefaultPushNotificationTemplate,\n DirectMessageConfiguration,\n EmailChannelRequest,\n EmailChannelResponse,\n EmailMessage,\n EmailMessageActivity,\n EmailTemplateRequest,\n EmailTemplateResponse,\n EndpointBatchItem,\n EndpointBatchRequest,\n EndpointDemographic,\n EndpointItemResponse,\n EndpointLocation,\n EndpointMessageResult,\n EndpointRequest,\n EndpointResponse,\n EndpointSendConfiguration,\n EndpointUser,\n EndpointsResponse,\n Event,\n EventCondition,\n EventDimensions,\n EventFilter,\n EventItemResponse,\n EventStartCondition,\n EventStream,\n EventsBatch,\n EventsRequest,\n EventsResponse,\n ExportJobRequest,\n ExportJobResource,\n ExportJobResponse,\n ExportJobsResponse,\n ForbiddenException,\n GCMChannelRequest,\n GCMChannelResponse,\n GCMMessage,\n GPSCoordinates,\n GPSPointDimension,\n HoldoutActivity,\n ImportJobRequest,\n ImportJobResource,\n ImportJobResponse,\n ImportJobsResponse,\n InternalServerErrorException,\n ItemResponse,\n JourneyCustomMessage,\n JourneyEmailMessage,\n JourneyLimits,\n JourneyPushMessage,\n JourneyResponse,\n JourneySMSMessage,\n JourneySchedule,\n Message,\n MessageBody,\n MessageConfiguration,\n MethodNotAllowedException,\n MetricDimension,\n MultiConditionalBranch,\n MultiConditionalSplitActivity,\n NotFoundException,\n PayloadTooLargeException,\n PublicEndpoint,\n PushMessageActivity,\n PushNotificationTemplateRequest,\n QuietTime,\n RandomSplitActivity,\n RandomSplitEntry,\n RawEmail,\n RecencyDimension,\n RecommenderConfigurationResponse,\n ResultRow,\n ResultRowValue,\n SMSChannelResponse,\n SMSMessage,\n SMSMessageActivity,\n SMSTemplateRequest,\n Schedule,\n SegmentBehaviors,\n SegmentCondition,\n SegmentDemographics,\n SegmentDimensions,\n SegmentGroup,\n SegmentGroupList,\n SegmentImportResource,\n SegmentLocation,\n SegmentReference,\n SegmentResponse,\n Session,\n SetDimension,\n SimpleCondition,\n SimpleEmail,\n SimpleEmailPart,\n StartCondition,\n Template,\n TemplateConfiguration,\n TooManyRequestsException,\n TreatmentResource,\n VoiceChannelResponse,\n VoiceMessage,\n VoiceTemplateRequest,\n WaitActivity,\n WaitTime,\n WriteCampaignRequest,\n WriteJourneyRequest,\n WriteSegmentRequest,\n WriteTreatmentResource,\n __EndpointTypesElement,\n} from \"../models/models_0\";\nimport {\n JourneyDateRangeKpiResponse,\n JourneyExecutionActivityMetricsResponse,\n JourneyExecutionMetricsResponse,\n JourneyStateRequest,\n JourneysResponse,\n ListRecommenderConfigurationsResponse,\n MessageRequest,\n MessageResponse,\n MessageResult,\n NumberValidateRequest,\n NumberValidateResponse,\n PushNotificationTemplateResponse,\n SMSChannelRequest,\n SMSTemplateResponse,\n SegmentsResponse,\n SendUsersMessageRequest,\n SendUsersMessageResponse,\n TagsModel,\n TemplateActiveVersionRequest,\n TemplateResponse,\n TemplateVersionResponse,\n TemplateVersionsResponse,\n TemplatesResponse,\n UpdateAttributesRequest,\n UpdateRecommenderConfigurationShape,\n VoiceChannelRequest,\n VoiceTemplateResponse,\n WriteApplicationSettingsRequest,\n WriteEventStream,\n} from \"../models/models_1\";\nimport { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from \"@aws-sdk/protocol-http\";\nimport {\n SmithyException as __SmithyException,\n extendedEncodeURIComponent as __extendedEncodeURIComponent,\n} from \"@aws-sdk/smithy-client\";\nimport {\n Endpoint as __Endpoint,\n MetadataBearer as __MetadataBearer,\n ResponseMetadata as __ResponseMetadata,\n SerdeContext as __SerdeContext,\n} from \"@aws-sdk/types\";\n\nexport const serializeAws_restJson1CreateAppCommand = async (\n input: CreateAppCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps\";\n let body: any;\n if (input.CreateApplicationRequest !== undefined) {\n body = serializeAws_restJson1CreateApplicationRequest(input.CreateApplicationRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1CreateCampaignCommand = async (\n input: CreateCampaignCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/campaigns\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.WriteCampaignRequest !== undefined) {\n body = serializeAws_restJson1WriteCampaignRequest(input.WriteCampaignRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1CreateEmailTemplateCommand = async (\n input: CreateEmailTemplateCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/templates/{TemplateName}/email\";\n if (input.TemplateName !== undefined) {\n const labelValue: string = input.TemplateName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: TemplateName.\");\n }\n resolvedPath = resolvedPath.replace(\"{TemplateName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: TemplateName.\");\n }\n let body: any;\n if (input.EmailTemplateRequest !== undefined) {\n body = serializeAws_restJson1EmailTemplateRequest(input.EmailTemplateRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1CreateExportJobCommand = async (\n input: CreateExportJobCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/jobs/export\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.ExportJobRequest !== undefined) {\n body = serializeAws_restJson1ExportJobRequest(input.ExportJobRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1CreateImportJobCommand = async (\n input: CreateImportJobCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/jobs/import\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.ImportJobRequest !== undefined) {\n body = serializeAws_restJson1ImportJobRequest(input.ImportJobRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1CreateJourneyCommand = async (\n input: CreateJourneyCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/journeys\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.WriteJourneyRequest !== undefined) {\n body = serializeAws_restJson1WriteJourneyRequest(input.WriteJourneyRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1CreatePushTemplateCommand = async (\n input: CreatePushTemplateCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/templates/{TemplateName}/push\";\n if (input.TemplateName !== undefined) {\n const labelValue: string = input.TemplateName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: TemplateName.\");\n }\n resolvedPath = resolvedPath.replace(\"{TemplateName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: TemplateName.\");\n }\n let body: any;\n if (input.PushNotificationTemplateRequest !== undefined) {\n body = serializeAws_restJson1PushNotificationTemplateRequest(input.PushNotificationTemplateRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1CreateRecommenderConfigurationCommand = async (\n input: CreateRecommenderConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/recommenders\";\n let body: any;\n if (input.CreateRecommenderConfiguration !== undefined) {\n body = serializeAws_restJson1CreateRecommenderConfigurationShape(input.CreateRecommenderConfiguration, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1CreateSegmentCommand = async (\n input: CreateSegmentCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/segments\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.WriteSegmentRequest !== undefined) {\n body = serializeAws_restJson1WriteSegmentRequest(input.WriteSegmentRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1CreateSmsTemplateCommand = async (\n input: CreateSmsTemplateCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/templates/{TemplateName}/sms\";\n if (input.TemplateName !== undefined) {\n const labelValue: string = input.TemplateName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: TemplateName.\");\n }\n resolvedPath = resolvedPath.replace(\"{TemplateName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: TemplateName.\");\n }\n let body: any;\n if (input.SMSTemplateRequest !== undefined) {\n body = serializeAws_restJson1SMSTemplateRequest(input.SMSTemplateRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1CreateVoiceTemplateCommand = async (\n input: CreateVoiceTemplateCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/templates/{TemplateName}/voice\";\n if (input.TemplateName !== undefined) {\n const labelValue: string = input.TemplateName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: TemplateName.\");\n }\n resolvedPath = resolvedPath.replace(\"{TemplateName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: TemplateName.\");\n }\n let body: any;\n if (input.VoiceTemplateRequest !== undefined) {\n body = serializeAws_restJson1VoiceTemplateRequest(input.VoiceTemplateRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteAdmChannelCommand = async (\n input: DeleteAdmChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/adm\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteApnsChannelCommand = async (\n input: DeleteApnsChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/apns\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteApnsSandboxChannelCommand = async (\n input: DeleteApnsSandboxChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/apns_sandbox\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteApnsVoipChannelCommand = async (\n input: DeleteApnsVoipChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/apns_voip\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteApnsVoipSandboxChannelCommand = async (\n input: DeleteApnsVoipSandboxChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/apns_voip_sandbox\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteAppCommand = async (\n input: DeleteAppCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteBaiduChannelCommand = async (\n input: DeleteBaiduChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/baidu\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteCampaignCommand = async (\n input: DeleteCampaignCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/campaigns/{CampaignId}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.CampaignId !== undefined) {\n const labelValue: string = input.CampaignId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: CampaignId.\");\n }\n resolvedPath = resolvedPath.replace(\"{CampaignId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: CampaignId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteEmailChannelCommand = async (\n input: DeleteEmailChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/email\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteEmailTemplateCommand = async (\n input: DeleteEmailTemplateCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/templates/{TemplateName}/email\";\n if (input.TemplateName !== undefined) {\n const labelValue: string = input.TemplateName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: TemplateName.\");\n }\n resolvedPath = resolvedPath.replace(\"{TemplateName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: TemplateName.\");\n }\n const query: any = {\n ...(input.Version !== undefined && { version: input.Version }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteEndpointCommand = async (\n input: DeleteEndpointCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/endpoints/{EndpointId}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.EndpointId !== undefined) {\n const labelValue: string = input.EndpointId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: EndpointId.\");\n }\n resolvedPath = resolvedPath.replace(\"{EndpointId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: EndpointId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteEventStreamCommand = async (\n input: DeleteEventStreamCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/eventstream\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteGcmChannelCommand = async (\n input: DeleteGcmChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/gcm\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteJourneyCommand = async (\n input: DeleteJourneyCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/journeys/{JourneyId}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.JourneyId !== undefined) {\n const labelValue: string = input.JourneyId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: JourneyId.\");\n }\n resolvedPath = resolvedPath.replace(\"{JourneyId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: JourneyId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeletePushTemplateCommand = async (\n input: DeletePushTemplateCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/templates/{TemplateName}/push\";\n if (input.TemplateName !== undefined) {\n const labelValue: string = input.TemplateName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: TemplateName.\");\n }\n resolvedPath = resolvedPath.replace(\"{TemplateName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: TemplateName.\");\n }\n const query: any = {\n ...(input.Version !== undefined && { version: input.Version }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteRecommenderConfigurationCommand = async (\n input: DeleteRecommenderConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/recommenders/{RecommenderId}\";\n if (input.RecommenderId !== undefined) {\n const labelValue: string = input.RecommenderId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: RecommenderId.\");\n }\n resolvedPath = resolvedPath.replace(\"{RecommenderId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: RecommenderId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteSegmentCommand = async (\n input: DeleteSegmentCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/segments/{SegmentId}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.SegmentId !== undefined) {\n const labelValue: string = input.SegmentId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: SegmentId.\");\n }\n resolvedPath = resolvedPath.replace(\"{SegmentId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: SegmentId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteSmsChannelCommand = async (\n input: DeleteSmsChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/sms\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteSmsTemplateCommand = async (\n input: DeleteSmsTemplateCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/templates/{TemplateName}/sms\";\n if (input.TemplateName !== undefined) {\n const labelValue: string = input.TemplateName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: TemplateName.\");\n }\n resolvedPath = resolvedPath.replace(\"{TemplateName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: TemplateName.\");\n }\n const query: any = {\n ...(input.Version !== undefined && { version: input.Version }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteUserEndpointsCommand = async (\n input: DeleteUserEndpointsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/users/{UserId}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.UserId !== undefined) {\n const labelValue: string = input.UserId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: UserId.\");\n }\n resolvedPath = resolvedPath.replace(\"{UserId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: UserId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteVoiceChannelCommand = async (\n input: DeleteVoiceChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/voice\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1DeleteVoiceTemplateCommand = async (\n input: DeleteVoiceTemplateCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/templates/{TemplateName}/voice\";\n if (input.TemplateName !== undefined) {\n const labelValue: string = input.TemplateName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: TemplateName.\");\n }\n resolvedPath = resolvedPath.replace(\"{TemplateName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: TemplateName.\");\n }\n const query: any = {\n ...(input.Version !== undefined && { version: input.Version }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetAdmChannelCommand = async (\n input: GetAdmChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/adm\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetApnsChannelCommand = async (\n input: GetApnsChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/apns\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetApnsSandboxChannelCommand = async (\n input: GetApnsSandboxChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/apns_sandbox\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetApnsVoipChannelCommand = async (\n input: GetApnsVoipChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/apns_voip\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetApnsVoipSandboxChannelCommand = async (\n input: GetApnsVoipSandboxChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/apns_voip_sandbox\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetAppCommand = async (\n input: GetAppCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetApplicationDateRangeKpiCommand = async (\n input: GetApplicationDateRangeKpiCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/kpis/daterange/{KpiName}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.KpiName !== undefined) {\n const labelValue: string = input.KpiName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: KpiName.\");\n }\n resolvedPath = resolvedPath.replace(\"{KpiName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: KpiName.\");\n }\n const query: any = {\n ...(input.EndTime !== undefined && { \"end-time\": (input.EndTime.toISOString().split(\".\")[0] + \"Z\").toString() }),\n ...(input.NextToken !== undefined && { \"next-token\": input.NextToken }),\n ...(input.PageSize !== undefined && { \"page-size\": input.PageSize }),\n ...(input.StartTime !== undefined && {\n \"start-time\": (input.StartTime.toISOString().split(\".\")[0] + \"Z\").toString(),\n }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetApplicationSettingsCommand = async (\n input: GetApplicationSettingsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/settings\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetAppsCommand = async (\n input: GetAppsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps\";\n const query: any = {\n ...(input.PageSize !== undefined && { \"page-size\": input.PageSize }),\n ...(input.Token !== undefined && { token: input.Token }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetBaiduChannelCommand = async (\n input: GetBaiduChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/baidu\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetCampaignCommand = async (\n input: GetCampaignCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/campaigns/{CampaignId}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.CampaignId !== undefined) {\n const labelValue: string = input.CampaignId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: CampaignId.\");\n }\n resolvedPath = resolvedPath.replace(\"{CampaignId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: CampaignId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetCampaignActivitiesCommand = async (\n input: GetCampaignActivitiesCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/campaigns/{CampaignId}/activities\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.CampaignId !== undefined) {\n const labelValue: string = input.CampaignId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: CampaignId.\");\n }\n resolvedPath = resolvedPath.replace(\"{CampaignId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: CampaignId.\");\n }\n const query: any = {\n ...(input.PageSize !== undefined && { \"page-size\": input.PageSize }),\n ...(input.Token !== undefined && { token: input.Token }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetCampaignDateRangeKpiCommand = async (\n input: GetCampaignDateRangeKpiCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/campaigns/{CampaignId}/kpis/daterange/{KpiName}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.CampaignId !== undefined) {\n const labelValue: string = input.CampaignId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: CampaignId.\");\n }\n resolvedPath = resolvedPath.replace(\"{CampaignId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: CampaignId.\");\n }\n if (input.KpiName !== undefined) {\n const labelValue: string = input.KpiName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: KpiName.\");\n }\n resolvedPath = resolvedPath.replace(\"{KpiName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: KpiName.\");\n }\n const query: any = {\n ...(input.EndTime !== undefined && { \"end-time\": (input.EndTime.toISOString().split(\".\")[0] + \"Z\").toString() }),\n ...(input.NextToken !== undefined && { \"next-token\": input.NextToken }),\n ...(input.PageSize !== undefined && { \"page-size\": input.PageSize }),\n ...(input.StartTime !== undefined && {\n \"start-time\": (input.StartTime.toISOString().split(\".\")[0] + \"Z\").toString(),\n }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetCampaignsCommand = async (\n input: GetCampaignsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/campaigns\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n const query: any = {\n ...(input.PageSize !== undefined && { \"page-size\": input.PageSize }),\n ...(input.Token !== undefined && { token: input.Token }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetCampaignVersionCommand = async (\n input: GetCampaignVersionCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/campaigns/{CampaignId}/versions/{Version}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.CampaignId !== undefined) {\n const labelValue: string = input.CampaignId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: CampaignId.\");\n }\n resolvedPath = resolvedPath.replace(\"{CampaignId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: CampaignId.\");\n }\n if (input.Version !== undefined) {\n const labelValue: string = input.Version;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Version.\");\n }\n resolvedPath = resolvedPath.replace(\"{Version}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Version.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetCampaignVersionsCommand = async (\n input: GetCampaignVersionsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/campaigns/{CampaignId}/versions\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.CampaignId !== undefined) {\n const labelValue: string = input.CampaignId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: CampaignId.\");\n }\n resolvedPath = resolvedPath.replace(\"{CampaignId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: CampaignId.\");\n }\n const query: any = {\n ...(input.PageSize !== undefined && { \"page-size\": input.PageSize }),\n ...(input.Token !== undefined && { token: input.Token }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetChannelsCommand = async (\n input: GetChannelsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetEmailChannelCommand = async (\n input: GetEmailChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/email\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetEmailTemplateCommand = async (\n input: GetEmailTemplateCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/templates/{TemplateName}/email\";\n if (input.TemplateName !== undefined) {\n const labelValue: string = input.TemplateName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: TemplateName.\");\n }\n resolvedPath = resolvedPath.replace(\"{TemplateName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: TemplateName.\");\n }\n const query: any = {\n ...(input.Version !== undefined && { version: input.Version }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetEndpointCommand = async (\n input: GetEndpointCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/endpoints/{EndpointId}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.EndpointId !== undefined) {\n const labelValue: string = input.EndpointId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: EndpointId.\");\n }\n resolvedPath = resolvedPath.replace(\"{EndpointId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: EndpointId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetEventStreamCommand = async (\n input: GetEventStreamCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/eventstream\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetExportJobCommand = async (\n input: GetExportJobCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/jobs/export/{JobId}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.JobId !== undefined) {\n const labelValue: string = input.JobId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: JobId.\");\n }\n resolvedPath = resolvedPath.replace(\"{JobId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: JobId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetExportJobsCommand = async (\n input: GetExportJobsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/jobs/export\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n const query: any = {\n ...(input.PageSize !== undefined && { \"page-size\": input.PageSize }),\n ...(input.Token !== undefined && { token: input.Token }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetGcmChannelCommand = async (\n input: GetGcmChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/gcm\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetImportJobCommand = async (\n input: GetImportJobCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/jobs/import/{JobId}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.JobId !== undefined) {\n const labelValue: string = input.JobId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: JobId.\");\n }\n resolvedPath = resolvedPath.replace(\"{JobId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: JobId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetImportJobsCommand = async (\n input: GetImportJobsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/jobs/import\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n const query: any = {\n ...(input.PageSize !== undefined && { \"page-size\": input.PageSize }),\n ...(input.Token !== undefined && { token: input.Token }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetJourneyCommand = async (\n input: GetJourneyCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/journeys/{JourneyId}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.JourneyId !== undefined) {\n const labelValue: string = input.JourneyId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: JourneyId.\");\n }\n resolvedPath = resolvedPath.replace(\"{JourneyId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: JourneyId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetJourneyDateRangeKpiCommand = async (\n input: GetJourneyDateRangeKpiCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/journeys/{JourneyId}/kpis/daterange/{KpiName}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.JourneyId !== undefined) {\n const labelValue: string = input.JourneyId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: JourneyId.\");\n }\n resolvedPath = resolvedPath.replace(\"{JourneyId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: JourneyId.\");\n }\n if (input.KpiName !== undefined) {\n const labelValue: string = input.KpiName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: KpiName.\");\n }\n resolvedPath = resolvedPath.replace(\"{KpiName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: KpiName.\");\n }\n const query: any = {\n ...(input.EndTime !== undefined && { \"end-time\": (input.EndTime.toISOString().split(\".\")[0] + \"Z\").toString() }),\n ...(input.NextToken !== undefined && { \"next-token\": input.NextToken }),\n ...(input.PageSize !== undefined && { \"page-size\": input.PageSize }),\n ...(input.StartTime !== undefined && {\n \"start-time\": (input.StartTime.toISOString().split(\".\")[0] + \"Z\").toString(),\n }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetJourneyExecutionActivityMetricsCommand = async (\n input: GetJourneyExecutionActivityMetricsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/journeys/{JourneyId}/activities/{JourneyActivityId}/execution-metrics\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.JourneyActivityId !== undefined) {\n const labelValue: string = input.JourneyActivityId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: JourneyActivityId.\");\n }\n resolvedPath = resolvedPath.replace(\"{JourneyActivityId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: JourneyActivityId.\");\n }\n if (input.JourneyId !== undefined) {\n const labelValue: string = input.JourneyId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: JourneyId.\");\n }\n resolvedPath = resolvedPath.replace(\"{JourneyId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: JourneyId.\");\n }\n const query: any = {\n ...(input.NextToken !== undefined && { \"next-token\": input.NextToken }),\n ...(input.PageSize !== undefined && { \"page-size\": input.PageSize }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetJourneyExecutionMetricsCommand = async (\n input: GetJourneyExecutionMetricsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/journeys/{JourneyId}/execution-metrics\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.JourneyId !== undefined) {\n const labelValue: string = input.JourneyId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: JourneyId.\");\n }\n resolvedPath = resolvedPath.replace(\"{JourneyId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: JourneyId.\");\n }\n const query: any = {\n ...(input.NextToken !== undefined && { \"next-token\": input.NextToken }),\n ...(input.PageSize !== undefined && { \"page-size\": input.PageSize }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetPushTemplateCommand = async (\n input: GetPushTemplateCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/templates/{TemplateName}/push\";\n if (input.TemplateName !== undefined) {\n const labelValue: string = input.TemplateName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: TemplateName.\");\n }\n resolvedPath = resolvedPath.replace(\"{TemplateName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: TemplateName.\");\n }\n const query: any = {\n ...(input.Version !== undefined && { version: input.Version }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetRecommenderConfigurationCommand = async (\n input: GetRecommenderConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/recommenders/{RecommenderId}\";\n if (input.RecommenderId !== undefined) {\n const labelValue: string = input.RecommenderId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: RecommenderId.\");\n }\n resolvedPath = resolvedPath.replace(\"{RecommenderId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: RecommenderId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetRecommenderConfigurationsCommand = async (\n input: GetRecommenderConfigurationsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/recommenders\";\n const query: any = {\n ...(input.PageSize !== undefined && { \"page-size\": input.PageSize }),\n ...(input.Token !== undefined && { token: input.Token }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetSegmentCommand = async (\n input: GetSegmentCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/segments/{SegmentId}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.SegmentId !== undefined) {\n const labelValue: string = input.SegmentId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: SegmentId.\");\n }\n resolvedPath = resolvedPath.replace(\"{SegmentId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: SegmentId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetSegmentExportJobsCommand = async (\n input: GetSegmentExportJobsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/segments/{SegmentId}/jobs/export\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.SegmentId !== undefined) {\n const labelValue: string = input.SegmentId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: SegmentId.\");\n }\n resolvedPath = resolvedPath.replace(\"{SegmentId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: SegmentId.\");\n }\n const query: any = {\n ...(input.PageSize !== undefined && { \"page-size\": input.PageSize }),\n ...(input.Token !== undefined && { token: input.Token }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetSegmentImportJobsCommand = async (\n input: GetSegmentImportJobsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/segments/{SegmentId}/jobs/import\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.SegmentId !== undefined) {\n const labelValue: string = input.SegmentId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: SegmentId.\");\n }\n resolvedPath = resolvedPath.replace(\"{SegmentId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: SegmentId.\");\n }\n const query: any = {\n ...(input.PageSize !== undefined && { \"page-size\": input.PageSize }),\n ...(input.Token !== undefined && { token: input.Token }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetSegmentsCommand = async (\n input: GetSegmentsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/segments\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n const query: any = {\n ...(input.PageSize !== undefined && { \"page-size\": input.PageSize }),\n ...(input.Token !== undefined && { token: input.Token }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetSegmentVersionCommand = async (\n input: GetSegmentVersionCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/segments/{SegmentId}/versions/{Version}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.SegmentId !== undefined) {\n const labelValue: string = input.SegmentId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: SegmentId.\");\n }\n resolvedPath = resolvedPath.replace(\"{SegmentId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: SegmentId.\");\n }\n if (input.Version !== undefined) {\n const labelValue: string = input.Version;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Version.\");\n }\n resolvedPath = resolvedPath.replace(\"{Version}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Version.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetSegmentVersionsCommand = async (\n input: GetSegmentVersionsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/segments/{SegmentId}/versions\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.SegmentId !== undefined) {\n const labelValue: string = input.SegmentId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: SegmentId.\");\n }\n resolvedPath = resolvedPath.replace(\"{SegmentId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: SegmentId.\");\n }\n const query: any = {\n ...(input.PageSize !== undefined && { \"page-size\": input.PageSize }),\n ...(input.Token !== undefined && { token: input.Token }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetSmsChannelCommand = async (\n input: GetSmsChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/sms\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetSmsTemplateCommand = async (\n input: GetSmsTemplateCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/templates/{TemplateName}/sms\";\n if (input.TemplateName !== undefined) {\n const labelValue: string = input.TemplateName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: TemplateName.\");\n }\n resolvedPath = resolvedPath.replace(\"{TemplateName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: TemplateName.\");\n }\n const query: any = {\n ...(input.Version !== undefined && { version: input.Version }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetUserEndpointsCommand = async (\n input: GetUserEndpointsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/users/{UserId}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.UserId !== undefined) {\n const labelValue: string = input.UserId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: UserId.\");\n }\n resolvedPath = resolvedPath.replace(\"{UserId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: UserId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetVoiceChannelCommand = async (\n input: GetVoiceChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/voice\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1GetVoiceTemplateCommand = async (\n input: GetVoiceTemplateCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/templates/{TemplateName}/voice\";\n if (input.TemplateName !== undefined) {\n const labelValue: string = input.TemplateName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: TemplateName.\");\n }\n resolvedPath = resolvedPath.replace(\"{TemplateName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: TemplateName.\");\n }\n const query: any = {\n ...(input.Version !== undefined && { version: input.Version }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1ListJourneysCommand = async (\n input: ListJourneysCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/apps/{ApplicationId}/journeys\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n const query: any = {\n ...(input.PageSize !== undefined && { \"page-size\": input.PageSize }),\n ...(input.Token !== undefined && { token: input.Token }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1ListTagsForResourceCommand = async (\n input: ListTagsForResourceCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/tags/{ResourceArn}\";\n if (input.ResourceArn !== undefined) {\n const labelValue: string = input.ResourceArn;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ResourceArn.\");\n }\n resolvedPath = resolvedPath.replace(\"{ResourceArn}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ResourceArn.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1ListTemplatesCommand = async (\n input: ListTemplatesCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/templates\";\n const query: any = {\n ...(input.NextToken !== undefined && { \"next-token\": input.NextToken }),\n ...(input.PageSize !== undefined && { \"page-size\": input.PageSize }),\n ...(input.Prefix !== undefined && { prefix: input.Prefix }),\n ...(input.TemplateType !== undefined && { \"template-type\": input.TemplateType }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1ListTemplateVersionsCommand = async (\n input: ListTemplateVersionsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/templates/{TemplateName}/{TemplateType}/versions\";\n if (input.TemplateName !== undefined) {\n const labelValue: string = input.TemplateName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: TemplateName.\");\n }\n resolvedPath = resolvedPath.replace(\"{TemplateName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: TemplateName.\");\n }\n if (input.TemplateType !== undefined) {\n const labelValue: string = input.TemplateType;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: TemplateType.\");\n }\n resolvedPath = resolvedPath.replace(\"{TemplateType}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: TemplateType.\");\n }\n const query: any = {\n ...(input.NextToken !== undefined && { \"next-token\": input.NextToken }),\n ...(input.PageSize !== undefined && { \"page-size\": input.PageSize }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1PhoneNumberValidateCommand = async (\n input: PhoneNumberValidateCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/phone/number/validate\";\n let body: any;\n if (input.NumberValidateRequest !== undefined) {\n body = serializeAws_restJson1NumberValidateRequest(input.NumberValidateRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1PutEventsCommand = async (\n input: PutEventsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/events\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.EventsRequest !== undefined) {\n body = serializeAws_restJson1EventsRequest(input.EventsRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1PutEventStreamCommand = async (\n input: PutEventStreamCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/eventstream\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.WriteEventStream !== undefined) {\n body = serializeAws_restJson1WriteEventStream(input.WriteEventStream, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1RemoveAttributesCommand = async (\n input: RemoveAttributesCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/attributes/{AttributeType}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.AttributeType !== undefined) {\n const labelValue: string = input.AttributeType;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: AttributeType.\");\n }\n resolvedPath = resolvedPath.replace(\"{AttributeType}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: AttributeType.\");\n }\n let body: any;\n if (input.UpdateAttributesRequest !== undefined) {\n body = serializeAws_restJson1UpdateAttributesRequest(input.UpdateAttributesRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1SendMessagesCommand = async (\n input: SendMessagesCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/messages\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.MessageRequest !== undefined) {\n body = serializeAws_restJson1MessageRequest(input.MessageRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1SendUsersMessagesCommand = async (\n input: SendUsersMessagesCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/users-messages\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.SendUsersMessageRequest !== undefined) {\n body = serializeAws_restJson1SendUsersMessageRequest(input.SendUsersMessageRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1TagResourceCommand = async (\n input: TagResourceCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/tags/{ResourceArn}\";\n if (input.ResourceArn !== undefined) {\n const labelValue: string = input.ResourceArn;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ResourceArn.\");\n }\n resolvedPath = resolvedPath.replace(\"{ResourceArn}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ResourceArn.\");\n }\n let body: any;\n if (input.TagsModel !== undefined) {\n body = serializeAws_restJson1TagsModel(input.TagsModel, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1UntagResourceCommand = async (\n input: UntagResourceCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/v1/tags/{ResourceArn}\";\n if (input.ResourceArn !== undefined) {\n const labelValue: string = input.ResourceArn;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ResourceArn.\");\n }\n resolvedPath = resolvedPath.replace(\"{ResourceArn}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ResourceArn.\");\n }\n const query: any = {\n ...(input.TagKeys !== undefined && { tagKeys: (input.TagKeys || []).map((_entry) => _entry) }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateAdmChannelCommand = async (\n input: UpdateAdmChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/adm\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.ADMChannelRequest !== undefined) {\n body = serializeAws_restJson1ADMChannelRequest(input.ADMChannelRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateApnsChannelCommand = async (\n input: UpdateApnsChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/apns\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.APNSChannelRequest !== undefined) {\n body = serializeAws_restJson1APNSChannelRequest(input.APNSChannelRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateApnsSandboxChannelCommand = async (\n input: UpdateApnsSandboxChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/apns_sandbox\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.APNSSandboxChannelRequest !== undefined) {\n body = serializeAws_restJson1APNSSandboxChannelRequest(input.APNSSandboxChannelRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateApnsVoipChannelCommand = async (\n input: UpdateApnsVoipChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/apns_voip\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.APNSVoipChannelRequest !== undefined) {\n body = serializeAws_restJson1APNSVoipChannelRequest(input.APNSVoipChannelRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateApnsVoipSandboxChannelCommand = async (\n input: UpdateApnsVoipSandboxChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/apns_voip_sandbox\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.APNSVoipSandboxChannelRequest !== undefined) {\n body = serializeAws_restJson1APNSVoipSandboxChannelRequest(input.APNSVoipSandboxChannelRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateApplicationSettingsCommand = async (\n input: UpdateApplicationSettingsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/settings\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.WriteApplicationSettingsRequest !== undefined) {\n body = serializeAws_restJson1WriteApplicationSettingsRequest(input.WriteApplicationSettingsRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateBaiduChannelCommand = async (\n input: UpdateBaiduChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/baidu\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.BaiduChannelRequest !== undefined) {\n body = serializeAws_restJson1BaiduChannelRequest(input.BaiduChannelRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateCampaignCommand = async (\n input: UpdateCampaignCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/campaigns/{CampaignId}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.CampaignId !== undefined) {\n const labelValue: string = input.CampaignId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: CampaignId.\");\n }\n resolvedPath = resolvedPath.replace(\"{CampaignId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: CampaignId.\");\n }\n let body: any;\n if (input.WriteCampaignRequest !== undefined) {\n body = serializeAws_restJson1WriteCampaignRequest(input.WriteCampaignRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateEmailChannelCommand = async (\n input: UpdateEmailChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/email\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.EmailChannelRequest !== undefined) {\n body = serializeAws_restJson1EmailChannelRequest(input.EmailChannelRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateEmailTemplateCommand = async (\n input: UpdateEmailTemplateCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/templates/{TemplateName}/email\";\n if (input.TemplateName !== undefined) {\n const labelValue: string = input.TemplateName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: TemplateName.\");\n }\n resolvedPath = resolvedPath.replace(\"{TemplateName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: TemplateName.\");\n }\n const query: any = {\n ...(input.CreateNewVersion !== undefined && { \"create-new-version\": input.CreateNewVersion.toString() }),\n ...(input.Version !== undefined && { version: input.Version }),\n };\n let body: any;\n if (input.EmailTemplateRequest !== undefined) {\n body = serializeAws_restJson1EmailTemplateRequest(input.EmailTemplateRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateEndpointCommand = async (\n input: UpdateEndpointCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/endpoints/{EndpointId}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.EndpointId !== undefined) {\n const labelValue: string = input.EndpointId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: EndpointId.\");\n }\n resolvedPath = resolvedPath.replace(\"{EndpointId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: EndpointId.\");\n }\n let body: any;\n if (input.EndpointRequest !== undefined) {\n body = serializeAws_restJson1EndpointRequest(input.EndpointRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateEndpointsBatchCommand = async (\n input: UpdateEndpointsBatchCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/endpoints\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.EndpointBatchRequest !== undefined) {\n body = serializeAws_restJson1EndpointBatchRequest(input.EndpointBatchRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateGcmChannelCommand = async (\n input: UpdateGcmChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/gcm\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.GCMChannelRequest !== undefined) {\n body = serializeAws_restJson1GCMChannelRequest(input.GCMChannelRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateJourneyCommand = async (\n input: UpdateJourneyCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/journeys/{JourneyId}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.JourneyId !== undefined) {\n const labelValue: string = input.JourneyId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: JourneyId.\");\n }\n resolvedPath = resolvedPath.replace(\"{JourneyId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: JourneyId.\");\n }\n let body: any;\n if (input.WriteJourneyRequest !== undefined) {\n body = serializeAws_restJson1WriteJourneyRequest(input.WriteJourneyRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateJourneyStateCommand = async (\n input: UpdateJourneyStateCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/journeys/{JourneyId}/state\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.JourneyId !== undefined) {\n const labelValue: string = input.JourneyId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: JourneyId.\");\n }\n resolvedPath = resolvedPath.replace(\"{JourneyId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: JourneyId.\");\n }\n let body: any;\n if (input.JourneyStateRequest !== undefined) {\n body = serializeAws_restJson1JourneyStateRequest(input.JourneyStateRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdatePushTemplateCommand = async (\n input: UpdatePushTemplateCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/templates/{TemplateName}/push\";\n if (input.TemplateName !== undefined) {\n const labelValue: string = input.TemplateName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: TemplateName.\");\n }\n resolvedPath = resolvedPath.replace(\"{TemplateName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: TemplateName.\");\n }\n const query: any = {\n ...(input.CreateNewVersion !== undefined && { \"create-new-version\": input.CreateNewVersion.toString() }),\n ...(input.Version !== undefined && { version: input.Version }),\n };\n let body: any;\n if (input.PushNotificationTemplateRequest !== undefined) {\n body = serializeAws_restJson1PushNotificationTemplateRequest(input.PushNotificationTemplateRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateRecommenderConfigurationCommand = async (\n input: UpdateRecommenderConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/recommenders/{RecommenderId}\";\n if (input.RecommenderId !== undefined) {\n const labelValue: string = input.RecommenderId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: RecommenderId.\");\n }\n resolvedPath = resolvedPath.replace(\"{RecommenderId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: RecommenderId.\");\n }\n let body: any;\n if (input.UpdateRecommenderConfiguration !== undefined) {\n body = serializeAws_restJson1UpdateRecommenderConfigurationShape(input.UpdateRecommenderConfiguration, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateSegmentCommand = async (\n input: UpdateSegmentCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/segments/{SegmentId}\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n if (input.SegmentId !== undefined) {\n const labelValue: string = input.SegmentId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: SegmentId.\");\n }\n resolvedPath = resolvedPath.replace(\"{SegmentId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: SegmentId.\");\n }\n let body: any;\n if (input.WriteSegmentRequest !== undefined) {\n body = serializeAws_restJson1WriteSegmentRequest(input.WriteSegmentRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateSmsChannelCommand = async (\n input: UpdateSmsChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/sms\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.SMSChannelRequest !== undefined) {\n body = serializeAws_restJson1SMSChannelRequest(input.SMSChannelRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateSmsTemplateCommand = async (\n input: UpdateSmsTemplateCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/templates/{TemplateName}/sms\";\n if (input.TemplateName !== undefined) {\n const labelValue: string = input.TemplateName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: TemplateName.\");\n }\n resolvedPath = resolvedPath.replace(\"{TemplateName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: TemplateName.\");\n }\n const query: any = {\n ...(input.CreateNewVersion !== undefined && { \"create-new-version\": input.CreateNewVersion.toString() }),\n ...(input.Version !== undefined && { version: input.Version }),\n };\n let body: any;\n if (input.SMSTemplateRequest !== undefined) {\n body = serializeAws_restJson1SMSTemplateRequest(input.SMSTemplateRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateTemplateActiveVersionCommand = async (\n input: UpdateTemplateActiveVersionCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/templates/{TemplateName}/{TemplateType}/active-version\";\n if (input.TemplateName !== undefined) {\n const labelValue: string = input.TemplateName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: TemplateName.\");\n }\n resolvedPath = resolvedPath.replace(\"{TemplateName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: TemplateName.\");\n }\n if (input.TemplateType !== undefined) {\n const labelValue: string = input.TemplateType;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: TemplateType.\");\n }\n resolvedPath = resolvedPath.replace(\"{TemplateType}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: TemplateType.\");\n }\n let body: any;\n if (input.TemplateActiveVersionRequest !== undefined) {\n body = serializeAws_restJson1TemplateActiveVersionRequest(input.TemplateActiveVersionRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateVoiceChannelCommand = async (\n input: UpdateVoiceChannelCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/apps/{ApplicationId}/channels/voice\";\n if (input.ApplicationId !== undefined) {\n const labelValue: string = input.ApplicationId;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: ApplicationId.\");\n }\n resolvedPath = resolvedPath.replace(\"{ApplicationId}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: ApplicationId.\");\n }\n let body: any;\n if (input.VoiceChannelRequest !== undefined) {\n body = serializeAws_restJson1VoiceChannelRequest(input.VoiceChannelRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restJson1UpdateVoiceTemplateCommand = async (\n input: UpdateVoiceTemplateCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/json\",\n };\n let resolvedPath = \"/v1/templates/{TemplateName}/voice\";\n if (input.TemplateName !== undefined) {\n const labelValue: string = input.TemplateName;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: TemplateName.\");\n }\n resolvedPath = resolvedPath.replace(\"{TemplateName}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: TemplateName.\");\n }\n const query: any = {\n ...(input.CreateNewVersion !== undefined && { \"create-new-version\": input.CreateNewVersion.toString() }),\n ...(input.Version !== undefined && { version: input.Version }),\n };\n let body: any;\n if (input.VoiceTemplateRequest !== undefined) {\n body = serializeAws_restJson1VoiceTemplateRequest(input.VoiceTemplateRequest, context);\n }\n if (body === undefined) {\n body = {};\n }\n body = JSON.stringify(body);\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const deserializeAws_restJson1CreateAppCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 201 && output.statusCode >= 300) {\n return deserializeAws_restJson1CreateAppCommandError(output, context);\n }\n const contents: CreateAppCommandOutput = {\n $metadata: deserializeMetadata(output),\n ApplicationResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ApplicationResponse = deserializeAws_restJson1ApplicationResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1CreateAppCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1CreateCampaignCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 201 && output.statusCode >= 300) {\n return deserializeAws_restJson1CreateCampaignCommandError(output, context);\n }\n const contents: CreateCampaignCommandOutput = {\n $metadata: deserializeMetadata(output),\n CampaignResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.CampaignResponse = deserializeAws_restJson1CampaignResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1CreateCampaignCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1CreateEmailTemplateCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 201 && output.statusCode >= 300) {\n return deserializeAws_restJson1CreateEmailTemplateCommandError(output, context);\n }\n const contents: CreateEmailTemplateCommandOutput = {\n $metadata: deserializeMetadata(output),\n CreateTemplateMessageBody: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.CreateTemplateMessageBody = deserializeAws_restJson1CreateTemplateMessageBody(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1CreateEmailTemplateCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1CreateExportJobCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 202 && output.statusCode >= 300) {\n return deserializeAws_restJson1CreateExportJobCommandError(output, context);\n }\n const contents: CreateExportJobCommandOutput = {\n $metadata: deserializeMetadata(output),\n ExportJobResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ExportJobResponse = deserializeAws_restJson1ExportJobResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1CreateExportJobCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1CreateImportJobCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 201 && output.statusCode >= 300) {\n return deserializeAws_restJson1CreateImportJobCommandError(output, context);\n }\n const contents: CreateImportJobCommandOutput = {\n $metadata: deserializeMetadata(output),\n ImportJobResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ImportJobResponse = deserializeAws_restJson1ImportJobResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1CreateImportJobCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1CreateJourneyCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 201 && output.statusCode >= 300) {\n return deserializeAws_restJson1CreateJourneyCommandError(output, context);\n }\n const contents: CreateJourneyCommandOutput = {\n $metadata: deserializeMetadata(output),\n JourneyResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.JourneyResponse = deserializeAws_restJson1JourneyResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1CreateJourneyCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1CreatePushTemplateCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 201 && output.statusCode >= 300) {\n return deserializeAws_restJson1CreatePushTemplateCommandError(output, context);\n }\n const contents: CreatePushTemplateCommandOutput = {\n $metadata: deserializeMetadata(output),\n CreateTemplateMessageBody: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.CreateTemplateMessageBody = deserializeAws_restJson1CreateTemplateMessageBody(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1CreatePushTemplateCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1CreateRecommenderConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 201 && output.statusCode >= 300) {\n return deserializeAws_restJson1CreateRecommenderConfigurationCommandError(output, context);\n }\n const contents: CreateRecommenderConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n RecommenderConfigurationResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.RecommenderConfigurationResponse = deserializeAws_restJson1RecommenderConfigurationResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1CreateRecommenderConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1CreateSegmentCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 201 && output.statusCode >= 300) {\n return deserializeAws_restJson1CreateSegmentCommandError(output, context);\n }\n const contents: CreateSegmentCommandOutput = {\n $metadata: deserializeMetadata(output),\n SegmentResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.SegmentResponse = deserializeAws_restJson1SegmentResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1CreateSegmentCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1CreateSmsTemplateCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 201 && output.statusCode >= 300) {\n return deserializeAws_restJson1CreateSmsTemplateCommandError(output, context);\n }\n const contents: CreateSmsTemplateCommandOutput = {\n $metadata: deserializeMetadata(output),\n CreateTemplateMessageBody: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.CreateTemplateMessageBody = deserializeAws_restJson1CreateTemplateMessageBody(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1CreateSmsTemplateCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1CreateVoiceTemplateCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 201 && output.statusCode >= 300) {\n return deserializeAws_restJson1CreateVoiceTemplateCommandError(output, context);\n }\n const contents: CreateVoiceTemplateCommandOutput = {\n $metadata: deserializeMetadata(output),\n CreateTemplateMessageBody: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.CreateTemplateMessageBody = deserializeAws_restJson1CreateTemplateMessageBody(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1CreateVoiceTemplateCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteAdmChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteAdmChannelCommandError(output, context);\n }\n const contents: DeleteAdmChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n ADMChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ADMChannelResponse = deserializeAws_restJson1ADMChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteAdmChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteApnsChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteApnsChannelCommandError(output, context);\n }\n const contents: DeleteApnsChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n APNSChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.APNSChannelResponse = deserializeAws_restJson1APNSChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteApnsChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteApnsSandboxChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteApnsSandboxChannelCommandError(output, context);\n }\n const contents: DeleteApnsSandboxChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n APNSSandboxChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.APNSSandboxChannelResponse = deserializeAws_restJson1APNSSandboxChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteApnsSandboxChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteApnsVoipChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteApnsVoipChannelCommandError(output, context);\n }\n const contents: DeleteApnsVoipChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n APNSVoipChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.APNSVoipChannelResponse = deserializeAws_restJson1APNSVoipChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteApnsVoipChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteApnsVoipSandboxChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteApnsVoipSandboxChannelCommandError(output, context);\n }\n const contents: DeleteApnsVoipSandboxChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n APNSVoipSandboxChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.APNSVoipSandboxChannelResponse = deserializeAws_restJson1APNSVoipSandboxChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteApnsVoipSandboxChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteAppCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteAppCommandError(output, context);\n }\n const contents: DeleteAppCommandOutput = {\n $metadata: deserializeMetadata(output),\n ApplicationResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ApplicationResponse = deserializeAws_restJson1ApplicationResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteAppCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteBaiduChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteBaiduChannelCommandError(output, context);\n }\n const contents: DeleteBaiduChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n BaiduChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.BaiduChannelResponse = deserializeAws_restJson1BaiduChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteBaiduChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteCampaignCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteCampaignCommandError(output, context);\n }\n const contents: DeleteCampaignCommandOutput = {\n $metadata: deserializeMetadata(output),\n CampaignResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.CampaignResponse = deserializeAws_restJson1CampaignResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteCampaignCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteEmailChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteEmailChannelCommandError(output, context);\n }\n const contents: DeleteEmailChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n EmailChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.EmailChannelResponse = deserializeAws_restJson1EmailChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteEmailChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteEmailTemplateCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 202 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteEmailTemplateCommandError(output, context);\n }\n const contents: DeleteEmailTemplateCommandOutput = {\n $metadata: deserializeMetadata(output),\n MessageBody: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.MessageBody = deserializeAws_restJson1MessageBody(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteEmailTemplateCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteEndpointCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 202 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteEndpointCommandError(output, context);\n }\n const contents: DeleteEndpointCommandOutput = {\n $metadata: deserializeMetadata(output),\n EndpointResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.EndpointResponse = deserializeAws_restJson1EndpointResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteEndpointCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteEventStreamCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteEventStreamCommandError(output, context);\n }\n const contents: DeleteEventStreamCommandOutput = {\n $metadata: deserializeMetadata(output),\n EventStream: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.EventStream = deserializeAws_restJson1EventStream(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteEventStreamCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteGcmChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteGcmChannelCommandError(output, context);\n }\n const contents: DeleteGcmChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n GCMChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.GCMChannelResponse = deserializeAws_restJson1GCMChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteGcmChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteJourneyCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteJourneyCommandError(output, context);\n }\n const contents: DeleteJourneyCommandOutput = {\n $metadata: deserializeMetadata(output),\n JourneyResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.JourneyResponse = deserializeAws_restJson1JourneyResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteJourneyCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeletePushTemplateCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 202 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeletePushTemplateCommandError(output, context);\n }\n const contents: DeletePushTemplateCommandOutput = {\n $metadata: deserializeMetadata(output),\n MessageBody: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.MessageBody = deserializeAws_restJson1MessageBody(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeletePushTemplateCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteRecommenderConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteRecommenderConfigurationCommandError(output, context);\n }\n const contents: DeleteRecommenderConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n RecommenderConfigurationResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.RecommenderConfigurationResponse = deserializeAws_restJson1RecommenderConfigurationResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteRecommenderConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteSegmentCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteSegmentCommandError(output, context);\n }\n const contents: DeleteSegmentCommandOutput = {\n $metadata: deserializeMetadata(output),\n SegmentResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.SegmentResponse = deserializeAws_restJson1SegmentResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteSegmentCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteSmsChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteSmsChannelCommandError(output, context);\n }\n const contents: DeleteSmsChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n SMSChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.SMSChannelResponse = deserializeAws_restJson1SMSChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteSmsChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteSmsTemplateCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 202 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteSmsTemplateCommandError(output, context);\n }\n const contents: DeleteSmsTemplateCommandOutput = {\n $metadata: deserializeMetadata(output),\n MessageBody: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.MessageBody = deserializeAws_restJson1MessageBody(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteSmsTemplateCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteUserEndpointsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 202 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteUserEndpointsCommandError(output, context);\n }\n const contents: DeleteUserEndpointsCommandOutput = {\n $metadata: deserializeMetadata(output),\n EndpointsResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.EndpointsResponse = deserializeAws_restJson1EndpointsResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteUserEndpointsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteVoiceChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteVoiceChannelCommandError(output, context);\n }\n const contents: DeleteVoiceChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n VoiceChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.VoiceChannelResponse = deserializeAws_restJson1VoiceChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteVoiceChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1DeleteVoiceTemplateCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 202 && output.statusCode >= 300) {\n return deserializeAws_restJson1DeleteVoiceTemplateCommandError(output, context);\n }\n const contents: DeleteVoiceTemplateCommandOutput = {\n $metadata: deserializeMetadata(output),\n MessageBody: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.MessageBody = deserializeAws_restJson1MessageBody(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1DeleteVoiceTemplateCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetAdmChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetAdmChannelCommandError(output, context);\n }\n const contents: GetAdmChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n ADMChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ADMChannelResponse = deserializeAws_restJson1ADMChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetAdmChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetApnsChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetApnsChannelCommandError(output, context);\n }\n const contents: GetApnsChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n APNSChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.APNSChannelResponse = deserializeAws_restJson1APNSChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetApnsChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetApnsSandboxChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetApnsSandboxChannelCommandError(output, context);\n }\n const contents: GetApnsSandboxChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n APNSSandboxChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.APNSSandboxChannelResponse = deserializeAws_restJson1APNSSandboxChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetApnsSandboxChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetApnsVoipChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetApnsVoipChannelCommandError(output, context);\n }\n const contents: GetApnsVoipChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n APNSVoipChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.APNSVoipChannelResponse = deserializeAws_restJson1APNSVoipChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetApnsVoipChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetApnsVoipSandboxChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetApnsVoipSandboxChannelCommandError(output, context);\n }\n const contents: GetApnsVoipSandboxChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n APNSVoipSandboxChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.APNSVoipSandboxChannelResponse = deserializeAws_restJson1APNSVoipSandboxChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetApnsVoipSandboxChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetAppCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetAppCommandError(output, context);\n }\n const contents: GetAppCommandOutput = {\n $metadata: deserializeMetadata(output),\n ApplicationResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ApplicationResponse = deserializeAws_restJson1ApplicationResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetAppCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetApplicationDateRangeKpiCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetApplicationDateRangeKpiCommandError(output, context);\n }\n const contents: GetApplicationDateRangeKpiCommandOutput = {\n $metadata: deserializeMetadata(output),\n ApplicationDateRangeKpiResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ApplicationDateRangeKpiResponse = deserializeAws_restJson1ApplicationDateRangeKpiResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetApplicationDateRangeKpiCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetApplicationSettingsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetApplicationSettingsCommandError(output, context);\n }\n const contents: GetApplicationSettingsCommandOutput = {\n $metadata: deserializeMetadata(output),\n ApplicationSettingsResource: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ApplicationSettingsResource = deserializeAws_restJson1ApplicationSettingsResource(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetApplicationSettingsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetAppsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetAppsCommandError(output, context);\n }\n const contents: GetAppsCommandOutput = {\n $metadata: deserializeMetadata(output),\n ApplicationsResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ApplicationsResponse = deserializeAws_restJson1ApplicationsResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetAppsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetBaiduChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetBaiduChannelCommandError(output, context);\n }\n const contents: GetBaiduChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n BaiduChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.BaiduChannelResponse = deserializeAws_restJson1BaiduChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetBaiduChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetCampaignCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetCampaignCommandError(output, context);\n }\n const contents: GetCampaignCommandOutput = {\n $metadata: deserializeMetadata(output),\n CampaignResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.CampaignResponse = deserializeAws_restJson1CampaignResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetCampaignCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetCampaignActivitiesCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetCampaignActivitiesCommandError(output, context);\n }\n const contents: GetCampaignActivitiesCommandOutput = {\n $metadata: deserializeMetadata(output),\n ActivitiesResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ActivitiesResponse = deserializeAws_restJson1ActivitiesResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetCampaignActivitiesCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetCampaignDateRangeKpiCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetCampaignDateRangeKpiCommandError(output, context);\n }\n const contents: GetCampaignDateRangeKpiCommandOutput = {\n $metadata: deserializeMetadata(output),\n CampaignDateRangeKpiResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.CampaignDateRangeKpiResponse = deserializeAws_restJson1CampaignDateRangeKpiResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetCampaignDateRangeKpiCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetCampaignsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetCampaignsCommandError(output, context);\n }\n const contents: GetCampaignsCommandOutput = {\n $metadata: deserializeMetadata(output),\n CampaignsResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.CampaignsResponse = deserializeAws_restJson1CampaignsResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetCampaignsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetCampaignVersionCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetCampaignVersionCommandError(output, context);\n }\n const contents: GetCampaignVersionCommandOutput = {\n $metadata: deserializeMetadata(output),\n CampaignResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.CampaignResponse = deserializeAws_restJson1CampaignResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetCampaignVersionCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetCampaignVersionsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetCampaignVersionsCommandError(output, context);\n }\n const contents: GetCampaignVersionsCommandOutput = {\n $metadata: deserializeMetadata(output),\n CampaignsResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.CampaignsResponse = deserializeAws_restJson1CampaignsResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetCampaignVersionsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetChannelsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetChannelsCommandError(output, context);\n }\n const contents: GetChannelsCommandOutput = {\n $metadata: deserializeMetadata(output),\n ChannelsResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ChannelsResponse = deserializeAws_restJson1ChannelsResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetChannelsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetEmailChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetEmailChannelCommandError(output, context);\n }\n const contents: GetEmailChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n EmailChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.EmailChannelResponse = deserializeAws_restJson1EmailChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetEmailChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetEmailTemplateCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetEmailTemplateCommandError(output, context);\n }\n const contents: GetEmailTemplateCommandOutput = {\n $metadata: deserializeMetadata(output),\n EmailTemplateResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.EmailTemplateResponse = deserializeAws_restJson1EmailTemplateResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetEmailTemplateCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetEndpointCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetEndpointCommandError(output, context);\n }\n const contents: GetEndpointCommandOutput = {\n $metadata: deserializeMetadata(output),\n EndpointResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.EndpointResponse = deserializeAws_restJson1EndpointResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetEndpointCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetEventStreamCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetEventStreamCommandError(output, context);\n }\n const contents: GetEventStreamCommandOutput = {\n $metadata: deserializeMetadata(output),\n EventStream: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.EventStream = deserializeAws_restJson1EventStream(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetEventStreamCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetExportJobCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetExportJobCommandError(output, context);\n }\n const contents: GetExportJobCommandOutput = {\n $metadata: deserializeMetadata(output),\n ExportJobResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ExportJobResponse = deserializeAws_restJson1ExportJobResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetExportJobCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetExportJobsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetExportJobsCommandError(output, context);\n }\n const contents: GetExportJobsCommandOutput = {\n $metadata: deserializeMetadata(output),\n ExportJobsResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ExportJobsResponse = deserializeAws_restJson1ExportJobsResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetExportJobsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetGcmChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetGcmChannelCommandError(output, context);\n }\n const contents: GetGcmChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n GCMChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.GCMChannelResponse = deserializeAws_restJson1GCMChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetGcmChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetImportJobCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetImportJobCommandError(output, context);\n }\n const contents: GetImportJobCommandOutput = {\n $metadata: deserializeMetadata(output),\n ImportJobResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ImportJobResponse = deserializeAws_restJson1ImportJobResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetImportJobCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetImportJobsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetImportJobsCommandError(output, context);\n }\n const contents: GetImportJobsCommandOutput = {\n $metadata: deserializeMetadata(output),\n ImportJobsResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ImportJobsResponse = deserializeAws_restJson1ImportJobsResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetImportJobsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetJourneyCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetJourneyCommandError(output, context);\n }\n const contents: GetJourneyCommandOutput = {\n $metadata: deserializeMetadata(output),\n JourneyResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.JourneyResponse = deserializeAws_restJson1JourneyResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetJourneyCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetJourneyDateRangeKpiCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetJourneyDateRangeKpiCommandError(output, context);\n }\n const contents: GetJourneyDateRangeKpiCommandOutput = {\n $metadata: deserializeMetadata(output),\n JourneyDateRangeKpiResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.JourneyDateRangeKpiResponse = deserializeAws_restJson1JourneyDateRangeKpiResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetJourneyDateRangeKpiCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetJourneyExecutionActivityMetricsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetJourneyExecutionActivityMetricsCommandError(output, context);\n }\n const contents: GetJourneyExecutionActivityMetricsCommandOutput = {\n $metadata: deserializeMetadata(output),\n JourneyExecutionActivityMetricsResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.JourneyExecutionActivityMetricsResponse = deserializeAws_restJson1JourneyExecutionActivityMetricsResponse(\n data,\n context\n );\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetJourneyExecutionActivityMetricsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetJourneyExecutionMetricsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetJourneyExecutionMetricsCommandError(output, context);\n }\n const contents: GetJourneyExecutionMetricsCommandOutput = {\n $metadata: deserializeMetadata(output),\n JourneyExecutionMetricsResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.JourneyExecutionMetricsResponse = deserializeAws_restJson1JourneyExecutionMetricsResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetJourneyExecutionMetricsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetPushTemplateCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetPushTemplateCommandError(output, context);\n }\n const contents: GetPushTemplateCommandOutput = {\n $metadata: deserializeMetadata(output),\n PushNotificationTemplateResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.PushNotificationTemplateResponse = deserializeAws_restJson1PushNotificationTemplateResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetPushTemplateCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetRecommenderConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetRecommenderConfigurationCommandError(output, context);\n }\n const contents: GetRecommenderConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n RecommenderConfigurationResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.RecommenderConfigurationResponse = deserializeAws_restJson1RecommenderConfigurationResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetRecommenderConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetRecommenderConfigurationsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetRecommenderConfigurationsCommandError(output, context);\n }\n const contents: GetRecommenderConfigurationsCommandOutput = {\n $metadata: deserializeMetadata(output),\n ListRecommenderConfigurationsResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ListRecommenderConfigurationsResponse = deserializeAws_restJson1ListRecommenderConfigurationsResponse(\n data,\n context\n );\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetRecommenderConfigurationsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetSegmentCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetSegmentCommandError(output, context);\n }\n const contents: GetSegmentCommandOutput = {\n $metadata: deserializeMetadata(output),\n SegmentResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.SegmentResponse = deserializeAws_restJson1SegmentResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetSegmentCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetSegmentExportJobsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetSegmentExportJobsCommandError(output, context);\n }\n const contents: GetSegmentExportJobsCommandOutput = {\n $metadata: deserializeMetadata(output),\n ExportJobsResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ExportJobsResponse = deserializeAws_restJson1ExportJobsResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetSegmentExportJobsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetSegmentImportJobsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetSegmentImportJobsCommandError(output, context);\n }\n const contents: GetSegmentImportJobsCommandOutput = {\n $metadata: deserializeMetadata(output),\n ImportJobsResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ImportJobsResponse = deserializeAws_restJson1ImportJobsResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetSegmentImportJobsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetSegmentsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetSegmentsCommandError(output, context);\n }\n const contents: GetSegmentsCommandOutput = {\n $metadata: deserializeMetadata(output),\n SegmentsResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.SegmentsResponse = deserializeAws_restJson1SegmentsResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetSegmentsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetSegmentVersionCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetSegmentVersionCommandError(output, context);\n }\n const contents: GetSegmentVersionCommandOutput = {\n $metadata: deserializeMetadata(output),\n SegmentResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.SegmentResponse = deserializeAws_restJson1SegmentResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetSegmentVersionCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetSegmentVersionsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetSegmentVersionsCommandError(output, context);\n }\n const contents: GetSegmentVersionsCommandOutput = {\n $metadata: deserializeMetadata(output),\n SegmentsResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.SegmentsResponse = deserializeAws_restJson1SegmentsResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetSegmentVersionsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetSmsChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetSmsChannelCommandError(output, context);\n }\n const contents: GetSmsChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n SMSChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.SMSChannelResponse = deserializeAws_restJson1SMSChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetSmsChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetSmsTemplateCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetSmsTemplateCommandError(output, context);\n }\n const contents: GetSmsTemplateCommandOutput = {\n $metadata: deserializeMetadata(output),\n SMSTemplateResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.SMSTemplateResponse = deserializeAws_restJson1SMSTemplateResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetSmsTemplateCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetUserEndpointsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetUserEndpointsCommandError(output, context);\n }\n const contents: GetUserEndpointsCommandOutput = {\n $metadata: deserializeMetadata(output),\n EndpointsResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.EndpointsResponse = deserializeAws_restJson1EndpointsResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetUserEndpointsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetVoiceChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetVoiceChannelCommandError(output, context);\n }\n const contents: GetVoiceChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n VoiceChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.VoiceChannelResponse = deserializeAws_restJson1VoiceChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetVoiceChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1GetVoiceTemplateCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetVoiceTemplateCommandError(output, context);\n }\n const contents: GetVoiceTemplateCommandOutput = {\n $metadata: deserializeMetadata(output),\n VoiceTemplateResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.VoiceTemplateResponse = deserializeAws_restJson1VoiceTemplateResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1GetVoiceTemplateCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1ListJourneysCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1ListJourneysCommandError(output, context);\n }\n const contents: ListJourneysCommandOutput = {\n $metadata: deserializeMetadata(output),\n JourneysResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.JourneysResponse = deserializeAws_restJson1JourneysResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1ListJourneysCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1ListTagsForResourceCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1ListTagsForResourceCommandError(output, context);\n }\n const contents: ListTagsForResourceCommandOutput = {\n $metadata: deserializeMetadata(output),\n TagsModel: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.TagsModel = deserializeAws_restJson1TagsModel(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1ListTagsForResourceCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1ListTemplatesCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1ListTemplatesCommandError(output, context);\n }\n const contents: ListTemplatesCommandOutput = {\n $metadata: deserializeMetadata(output),\n TemplatesResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.TemplatesResponse = deserializeAws_restJson1TemplatesResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1ListTemplatesCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1ListTemplateVersionsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1ListTemplateVersionsCommandError(output, context);\n }\n const contents: ListTemplateVersionsCommandOutput = {\n $metadata: deserializeMetadata(output),\n TemplateVersionsResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.TemplateVersionsResponse = deserializeAws_restJson1TemplateVersionsResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1ListTemplateVersionsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1PhoneNumberValidateCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1PhoneNumberValidateCommandError(output, context);\n }\n const contents: PhoneNumberValidateCommandOutput = {\n $metadata: deserializeMetadata(output),\n NumberValidateResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.NumberValidateResponse = deserializeAws_restJson1NumberValidateResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1PhoneNumberValidateCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1PutEventsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 202 && output.statusCode >= 300) {\n return deserializeAws_restJson1PutEventsCommandError(output, context);\n }\n const contents: PutEventsCommandOutput = {\n $metadata: deserializeMetadata(output),\n EventsResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.EventsResponse = deserializeAws_restJson1EventsResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1PutEventsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1PutEventStreamCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1PutEventStreamCommandError(output, context);\n }\n const contents: PutEventStreamCommandOutput = {\n $metadata: deserializeMetadata(output),\n EventStream: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.EventStream = deserializeAws_restJson1EventStream(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1PutEventStreamCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1RemoveAttributesCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1RemoveAttributesCommandError(output, context);\n }\n const contents: RemoveAttributesCommandOutput = {\n $metadata: deserializeMetadata(output),\n AttributesResource: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.AttributesResource = deserializeAws_restJson1AttributesResource(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1RemoveAttributesCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1SendMessagesCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1SendMessagesCommandError(output, context);\n }\n const contents: SendMessagesCommandOutput = {\n $metadata: deserializeMetadata(output),\n MessageResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.MessageResponse = deserializeAws_restJson1MessageResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1SendMessagesCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1SendUsersMessagesCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1SendUsersMessagesCommandError(output, context);\n }\n const contents: SendUsersMessagesCommandOutput = {\n $metadata: deserializeMetadata(output),\n SendUsersMessageResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.SendUsersMessageResponse = deserializeAws_restJson1SendUsersMessageResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1SendUsersMessagesCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1TagResourceCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return deserializeAws_restJson1TagResourceCommandError(output, context);\n }\n const contents: TagResourceCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1TagResourceCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UntagResourceCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return deserializeAws_restJson1UntagResourceCommandError(output, context);\n }\n const contents: UntagResourceCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UntagResourceCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateAdmChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateAdmChannelCommandError(output, context);\n }\n const contents: UpdateAdmChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n ADMChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ADMChannelResponse = deserializeAws_restJson1ADMChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateAdmChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateApnsChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateApnsChannelCommandError(output, context);\n }\n const contents: UpdateApnsChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n APNSChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.APNSChannelResponse = deserializeAws_restJson1APNSChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateApnsChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateApnsSandboxChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateApnsSandboxChannelCommandError(output, context);\n }\n const contents: UpdateApnsSandboxChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n APNSSandboxChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.APNSSandboxChannelResponse = deserializeAws_restJson1APNSSandboxChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateApnsSandboxChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateApnsVoipChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateApnsVoipChannelCommandError(output, context);\n }\n const contents: UpdateApnsVoipChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n APNSVoipChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.APNSVoipChannelResponse = deserializeAws_restJson1APNSVoipChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateApnsVoipChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateApnsVoipSandboxChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateApnsVoipSandboxChannelCommandError(output, context);\n }\n const contents: UpdateApnsVoipSandboxChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n APNSVoipSandboxChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.APNSVoipSandboxChannelResponse = deserializeAws_restJson1APNSVoipSandboxChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateApnsVoipSandboxChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateApplicationSettingsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateApplicationSettingsCommandError(output, context);\n }\n const contents: UpdateApplicationSettingsCommandOutput = {\n $metadata: deserializeMetadata(output),\n ApplicationSettingsResource: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ApplicationSettingsResource = deserializeAws_restJson1ApplicationSettingsResource(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateApplicationSettingsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateBaiduChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateBaiduChannelCommandError(output, context);\n }\n const contents: UpdateBaiduChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n BaiduChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.BaiduChannelResponse = deserializeAws_restJson1BaiduChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateBaiduChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateCampaignCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateCampaignCommandError(output, context);\n }\n const contents: UpdateCampaignCommandOutput = {\n $metadata: deserializeMetadata(output),\n CampaignResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.CampaignResponse = deserializeAws_restJson1CampaignResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateCampaignCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateEmailChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateEmailChannelCommandError(output, context);\n }\n const contents: UpdateEmailChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n EmailChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.EmailChannelResponse = deserializeAws_restJson1EmailChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateEmailChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateEmailTemplateCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 202 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateEmailTemplateCommandError(output, context);\n }\n const contents: UpdateEmailTemplateCommandOutput = {\n $metadata: deserializeMetadata(output),\n MessageBody: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.MessageBody = deserializeAws_restJson1MessageBody(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateEmailTemplateCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateEndpointCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 202 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateEndpointCommandError(output, context);\n }\n const contents: UpdateEndpointCommandOutput = {\n $metadata: deserializeMetadata(output),\n MessageBody: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.MessageBody = deserializeAws_restJson1MessageBody(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateEndpointCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateEndpointsBatchCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 202 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateEndpointsBatchCommandError(output, context);\n }\n const contents: UpdateEndpointsBatchCommandOutput = {\n $metadata: deserializeMetadata(output),\n MessageBody: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.MessageBody = deserializeAws_restJson1MessageBody(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateEndpointsBatchCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateGcmChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateGcmChannelCommandError(output, context);\n }\n const contents: UpdateGcmChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n GCMChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.GCMChannelResponse = deserializeAws_restJson1GCMChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateGcmChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateJourneyCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateJourneyCommandError(output, context);\n }\n const contents: UpdateJourneyCommandOutput = {\n $metadata: deserializeMetadata(output),\n JourneyResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.JourneyResponse = deserializeAws_restJson1JourneyResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateJourneyCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ConflictException\":\n case \"com.amazonaws.pinpoint#ConflictException\":\n response = {\n ...(await deserializeAws_restJson1ConflictExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateJourneyStateCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateJourneyStateCommandError(output, context);\n }\n const contents: UpdateJourneyStateCommandOutput = {\n $metadata: deserializeMetadata(output),\n JourneyResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.JourneyResponse = deserializeAws_restJson1JourneyResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateJourneyStateCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdatePushTemplateCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 202 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdatePushTemplateCommandError(output, context);\n }\n const contents: UpdatePushTemplateCommandOutput = {\n $metadata: deserializeMetadata(output),\n MessageBody: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.MessageBody = deserializeAws_restJson1MessageBody(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdatePushTemplateCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateRecommenderConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateRecommenderConfigurationCommandError(output, context);\n }\n const contents: UpdateRecommenderConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n RecommenderConfigurationResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.RecommenderConfigurationResponse = deserializeAws_restJson1RecommenderConfigurationResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateRecommenderConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateSegmentCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateSegmentCommandError(output, context);\n }\n const contents: UpdateSegmentCommandOutput = {\n $metadata: deserializeMetadata(output),\n SegmentResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.SegmentResponse = deserializeAws_restJson1SegmentResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateSegmentCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateSmsChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateSmsChannelCommandError(output, context);\n }\n const contents: UpdateSmsChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n SMSChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.SMSChannelResponse = deserializeAws_restJson1SMSChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateSmsChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateSmsTemplateCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 202 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateSmsTemplateCommandError(output, context);\n }\n const contents: UpdateSmsTemplateCommandOutput = {\n $metadata: deserializeMetadata(output),\n MessageBody: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.MessageBody = deserializeAws_restJson1MessageBody(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateSmsTemplateCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateTemplateActiveVersionCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateTemplateActiveVersionCommandError(output, context);\n }\n const contents: UpdateTemplateActiveVersionCommandOutput = {\n $metadata: deserializeMetadata(output),\n MessageBody: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.MessageBody = deserializeAws_restJson1MessageBody(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateTemplateActiveVersionCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateVoiceChannelCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateVoiceChannelCommandError(output, context);\n }\n const contents: UpdateVoiceChannelCommandOutput = {\n $metadata: deserializeMetadata(output),\n VoiceChannelResponse: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.VoiceChannelResponse = deserializeAws_restJson1VoiceChannelResponse(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateVoiceChannelCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restJson1UpdateVoiceTemplateCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 202 && output.statusCode >= 300) {\n return deserializeAws_restJson1UpdateVoiceTemplateCommandError(output, context);\n }\n const contents: UpdateVoiceTemplateCommandOutput = {\n $metadata: deserializeMetadata(output),\n MessageBody: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.MessageBody = deserializeAws_restJson1MessageBody(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restJson1UpdateVoiceTemplateCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.pinpoint#BadRequestException\":\n response = {\n ...(await deserializeAws_restJson1BadRequestExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"ForbiddenException\":\n case \"com.amazonaws.pinpoint#ForbiddenException\":\n response = {\n ...(await deserializeAws_restJson1ForbiddenExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"InternalServerErrorException\":\n case \"com.amazonaws.pinpoint#InternalServerErrorException\":\n response = {\n ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"MethodNotAllowedException\":\n case \"com.amazonaws.pinpoint#MethodNotAllowedException\":\n response = {\n ...(await deserializeAws_restJson1MethodNotAllowedExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NotFoundException\":\n case \"com.amazonaws.pinpoint#NotFoundException\":\n response = {\n ...(await deserializeAws_restJson1NotFoundExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"PayloadTooLargeException\":\n case \"com.amazonaws.pinpoint#PayloadTooLargeException\":\n response = {\n ...(await deserializeAws_restJson1PayloadTooLargeExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"TooManyRequestsException\":\n case \"com.amazonaws.pinpoint#TooManyRequestsException\":\n response = {\n ...(await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nconst deserializeAws_restJson1BadRequestExceptionResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const contents: BadRequestException = {\n name: \"BadRequestException\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n Message: undefined,\n RequestID: undefined,\n };\n const data: any = parsedOutput.body;\n if (data.Message !== undefined && data.Message !== null) {\n contents.Message = data.Message;\n }\n if (data.RequestID !== undefined && data.RequestID !== null) {\n contents.RequestID = data.RequestID;\n }\n return contents;\n};\n\nconst deserializeAws_restJson1ConflictExceptionResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const contents: ConflictException = {\n name: \"ConflictException\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n Message: undefined,\n RequestID: undefined,\n };\n const data: any = parsedOutput.body;\n if (data.Message !== undefined && data.Message !== null) {\n contents.Message = data.Message;\n }\n if (data.RequestID !== undefined && data.RequestID !== null) {\n contents.RequestID = data.RequestID;\n }\n return contents;\n};\n\nconst deserializeAws_restJson1ForbiddenExceptionResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const contents: ForbiddenException = {\n name: \"ForbiddenException\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n Message: undefined,\n RequestID: undefined,\n };\n const data: any = parsedOutput.body;\n if (data.Message !== undefined && data.Message !== null) {\n contents.Message = data.Message;\n }\n if (data.RequestID !== undefined && data.RequestID !== null) {\n contents.RequestID = data.RequestID;\n }\n return contents;\n};\n\nconst deserializeAws_restJson1InternalServerErrorExceptionResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const contents: InternalServerErrorException = {\n name: \"InternalServerErrorException\",\n $fault: \"server\",\n $metadata: deserializeMetadata(parsedOutput),\n Message: undefined,\n RequestID: undefined,\n };\n const data: any = parsedOutput.body;\n if (data.Message !== undefined && data.Message !== null) {\n contents.Message = data.Message;\n }\n if (data.RequestID !== undefined && data.RequestID !== null) {\n contents.RequestID = data.RequestID;\n }\n return contents;\n};\n\nconst deserializeAws_restJson1MethodNotAllowedExceptionResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const contents: MethodNotAllowedException = {\n name: \"MethodNotAllowedException\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n Message: undefined,\n RequestID: undefined,\n };\n const data: any = parsedOutput.body;\n if (data.Message !== undefined && data.Message !== null) {\n contents.Message = data.Message;\n }\n if (data.RequestID !== undefined && data.RequestID !== null) {\n contents.RequestID = data.RequestID;\n }\n return contents;\n};\n\nconst deserializeAws_restJson1NotFoundExceptionResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const contents: NotFoundException = {\n name: \"NotFoundException\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n Message: undefined,\n RequestID: undefined,\n };\n const data: any = parsedOutput.body;\n if (data.Message !== undefined && data.Message !== null) {\n contents.Message = data.Message;\n }\n if (data.RequestID !== undefined && data.RequestID !== null) {\n contents.RequestID = data.RequestID;\n }\n return contents;\n};\n\nconst deserializeAws_restJson1PayloadTooLargeExceptionResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const contents: PayloadTooLargeException = {\n name: \"PayloadTooLargeException\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n Message: undefined,\n RequestID: undefined,\n };\n const data: any = parsedOutput.body;\n if (data.Message !== undefined && data.Message !== null) {\n contents.Message = data.Message;\n }\n if (data.RequestID !== undefined && data.RequestID !== null) {\n contents.RequestID = data.RequestID;\n }\n return contents;\n};\n\nconst deserializeAws_restJson1TooManyRequestsExceptionResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const contents: TooManyRequestsException = {\n name: \"TooManyRequestsException\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n Message: undefined,\n RequestID: undefined,\n };\n const data: any = parsedOutput.body;\n if (data.Message !== undefined && data.Message !== null) {\n contents.Message = data.Message;\n }\n if (data.RequestID !== undefined && data.RequestID !== null) {\n contents.RequestID = data.RequestID;\n }\n return contents;\n};\n\nconst serializeAws_restJson1Activity = (input: Activity, context: __SerdeContext): any => {\n return {\n ...(input.CUSTOM !== undefined &&\n input.CUSTOM !== null && { CUSTOM: serializeAws_restJson1CustomMessageActivity(input.CUSTOM, context) }),\n ...(input.ConditionalSplit !== undefined &&\n input.ConditionalSplit !== null && {\n ConditionalSplit: serializeAws_restJson1ConditionalSplitActivity(input.ConditionalSplit, context),\n }),\n ...(input.Description !== undefined && input.Description !== null && { Description: input.Description }),\n ...(input.EMAIL !== undefined &&\n input.EMAIL !== null && { EMAIL: serializeAws_restJson1EmailMessageActivity(input.EMAIL, context) }),\n ...(input.Holdout !== undefined &&\n input.Holdout !== null && { Holdout: serializeAws_restJson1HoldoutActivity(input.Holdout, context) }),\n ...(input.MultiCondition !== undefined &&\n input.MultiCondition !== null && {\n MultiCondition: serializeAws_restJson1MultiConditionalSplitActivity(input.MultiCondition, context),\n }),\n ...(input.PUSH !== undefined &&\n input.PUSH !== null && { PUSH: serializeAws_restJson1PushMessageActivity(input.PUSH, context) }),\n ...(input.RandomSplit !== undefined &&\n input.RandomSplit !== null && {\n RandomSplit: serializeAws_restJson1RandomSplitActivity(input.RandomSplit, context),\n }),\n ...(input.SMS !== undefined &&\n input.SMS !== null && { SMS: serializeAws_restJson1SMSMessageActivity(input.SMS, context) }),\n ...(input.Wait !== undefined &&\n input.Wait !== null && { Wait: serializeAws_restJson1WaitActivity(input.Wait, context) }),\n };\n};\n\nconst serializeAws_restJson1AddressConfiguration = (input: AddressConfiguration, context: __SerdeContext): any => {\n return {\n ...(input.BodyOverride !== undefined && input.BodyOverride !== null && { BodyOverride: input.BodyOverride }),\n ...(input.ChannelType !== undefined && input.ChannelType !== null && { ChannelType: input.ChannelType }),\n ...(input.Context !== undefined &&\n input.Context !== null && { Context: serializeAws_restJson1MapOf__string(input.Context, context) }),\n ...(input.RawContent !== undefined && input.RawContent !== null && { RawContent: input.RawContent }),\n ...(input.Substitutions !== undefined &&\n input.Substitutions !== null && {\n Substitutions: serializeAws_restJson1MapOfListOf__string(input.Substitutions, context),\n }),\n ...(input.TitleOverride !== undefined && input.TitleOverride !== null && { TitleOverride: input.TitleOverride }),\n };\n};\n\nconst serializeAws_restJson1ADMChannelRequest = (input: ADMChannelRequest, context: __SerdeContext): any => {\n return {\n ...(input.ClientId !== undefined && input.ClientId !== null && { ClientId: input.ClientId }),\n ...(input.ClientSecret !== undefined && input.ClientSecret !== null && { ClientSecret: input.ClientSecret }),\n ...(input.Enabled !== undefined && input.Enabled !== null && { Enabled: input.Enabled }),\n };\n};\n\nconst serializeAws_restJson1ADMMessage = (input: ADMMessage, context: __SerdeContext): any => {\n return {\n ...(input.Action !== undefined && input.Action !== null && { Action: input.Action }),\n ...(input.Body !== undefined && input.Body !== null && { Body: input.Body }),\n ...(input.ConsolidationKey !== undefined &&\n input.ConsolidationKey !== null && { ConsolidationKey: input.ConsolidationKey }),\n ...(input.Data !== undefined &&\n input.Data !== null && { Data: serializeAws_restJson1MapOf__string(input.Data, context) }),\n ...(input.ExpiresAfter !== undefined && input.ExpiresAfter !== null && { ExpiresAfter: input.ExpiresAfter }),\n ...(input.IconReference !== undefined && input.IconReference !== null && { IconReference: input.IconReference }),\n ...(input.ImageIconUrl !== undefined && input.ImageIconUrl !== null && { ImageIconUrl: input.ImageIconUrl }),\n ...(input.ImageUrl !== undefined && input.ImageUrl !== null && { ImageUrl: input.ImageUrl }),\n ...(input.MD5 !== undefined && input.MD5 !== null && { MD5: input.MD5 }),\n ...(input.RawContent !== undefined && input.RawContent !== null && { RawContent: input.RawContent }),\n ...(input.SilentPush !== undefined && input.SilentPush !== null && { SilentPush: input.SilentPush }),\n ...(input.SmallImageIconUrl !== undefined &&\n input.SmallImageIconUrl !== null && { SmallImageIconUrl: input.SmallImageIconUrl }),\n ...(input.Sound !== undefined && input.Sound !== null && { Sound: input.Sound }),\n ...(input.Substitutions !== undefined &&\n input.Substitutions !== null && {\n Substitutions: serializeAws_restJson1MapOfListOf__string(input.Substitutions, context),\n }),\n ...(input.Title !== undefined && input.Title !== null && { Title: input.Title }),\n ...(input.Url !== undefined && input.Url !== null && { Url: input.Url }),\n };\n};\n\nconst serializeAws_restJson1AndroidPushNotificationTemplate = (\n input: AndroidPushNotificationTemplate,\n context: __SerdeContext\n): any => {\n return {\n ...(input.Action !== undefined && input.Action !== null && { Action: input.Action }),\n ...(input.Body !== undefined && input.Body !== null && { Body: input.Body }),\n ...(input.ImageIconUrl !== undefined && input.ImageIconUrl !== null && { ImageIconUrl: input.ImageIconUrl }),\n ...(input.ImageUrl !== undefined && input.ImageUrl !== null && { ImageUrl: input.ImageUrl }),\n ...(input.RawContent !== undefined && input.RawContent !== null && { RawContent: input.RawContent }),\n ...(input.SmallImageIconUrl !== undefined &&\n input.SmallImageIconUrl !== null && { SmallImageIconUrl: input.SmallImageIconUrl }),\n ...(input.Sound !== undefined && input.Sound !== null && { Sound: input.Sound }),\n ...(input.Title !== undefined && input.Title !== null && { Title: input.Title }),\n ...(input.Url !== undefined && input.Url !== null && { Url: input.Url }),\n };\n};\n\nconst serializeAws_restJson1APNSChannelRequest = (input: APNSChannelRequest, context: __SerdeContext): any => {\n return {\n ...(input.BundleId !== undefined && input.BundleId !== null && { BundleId: input.BundleId }),\n ...(input.Certificate !== undefined && input.Certificate !== null && { Certificate: input.Certificate }),\n ...(input.DefaultAuthenticationMethod !== undefined &&\n input.DefaultAuthenticationMethod !== null && { DefaultAuthenticationMethod: input.DefaultAuthenticationMethod }),\n ...(input.Enabled !== undefined && input.Enabled !== null && { Enabled: input.Enabled }),\n ...(input.PrivateKey !== undefined && input.PrivateKey !== null && { PrivateKey: input.PrivateKey }),\n ...(input.TeamId !== undefined && input.TeamId !== null && { TeamId: input.TeamId }),\n ...(input.TokenKey !== undefined && input.TokenKey !== null && { TokenKey: input.TokenKey }),\n ...(input.TokenKeyId !== undefined && input.TokenKeyId !== null && { TokenKeyId: input.TokenKeyId }),\n };\n};\n\nconst serializeAws_restJson1APNSMessage = (input: APNSMessage, context: __SerdeContext): any => {\n return {\n ...(input.APNSPushType !== undefined && input.APNSPushType !== null && { APNSPushType: input.APNSPushType }),\n ...(input.Action !== undefined && input.Action !== null && { Action: input.Action }),\n ...(input.Badge !== undefined && input.Badge !== null && { Badge: input.Badge }),\n ...(input.Body !== undefined && input.Body !== null && { Body: input.Body }),\n ...(input.Category !== undefined && input.Category !== null && { Category: input.Category }),\n ...(input.CollapseId !== undefined && input.CollapseId !== null && { CollapseId: input.CollapseId }),\n ...(input.Data !== undefined &&\n input.Data !== null && { Data: serializeAws_restJson1MapOf__string(input.Data, context) }),\n ...(input.MediaUrl !== undefined && input.MediaUrl !== null && { MediaUrl: input.MediaUrl }),\n ...(input.PreferredAuthenticationMethod !== undefined &&\n input.PreferredAuthenticationMethod !== null && {\n PreferredAuthenticationMethod: input.PreferredAuthenticationMethod,\n }),\n ...(input.Priority !== undefined && input.Priority !== null && { Priority: input.Priority }),\n ...(input.RawContent !== undefined && input.RawContent !== null && { RawContent: input.RawContent }),\n ...(input.SilentPush !== undefined && input.SilentPush !== null && { SilentPush: input.SilentPush }),\n ...(input.Sound !== undefined && input.Sound !== null && { Sound: input.Sound }),\n ...(input.Substitutions !== undefined &&\n input.Substitutions !== null && {\n Substitutions: serializeAws_restJson1MapOfListOf__string(input.Substitutions, context),\n }),\n ...(input.ThreadId !== undefined && input.ThreadId !== null && { ThreadId: input.ThreadId }),\n ...(input.TimeToLive !== undefined && input.TimeToLive !== null && { TimeToLive: input.TimeToLive }),\n ...(input.Title !== undefined && input.Title !== null && { Title: input.Title }),\n ...(input.Url !== undefined && input.Url !== null && { Url: input.Url }),\n };\n};\n\nconst serializeAws_restJson1APNSPushNotificationTemplate = (\n input: APNSPushNotificationTemplate,\n context: __SerdeContext\n): any => {\n return {\n ...(input.Action !== undefined && input.Action !== null && { Action: input.Action }),\n ...(input.Body !== undefined && input.Body !== null && { Body: input.Body }),\n ...(input.MediaUrl !== undefined && input.MediaUrl !== null && { MediaUrl: input.MediaUrl }),\n ...(input.RawContent !== undefined && input.RawContent !== null && { RawContent: input.RawContent }),\n ...(input.Sound !== undefined && input.Sound !== null && { Sound: input.Sound }),\n ...(input.Title !== undefined && input.Title !== null && { Title: input.Title }),\n ...(input.Url !== undefined && input.Url !== null && { Url: input.Url }),\n };\n};\n\nconst serializeAws_restJson1APNSSandboxChannelRequest = (\n input: APNSSandboxChannelRequest,\n context: __SerdeContext\n): any => {\n return {\n ...(input.BundleId !== undefined && input.BundleId !== null && { BundleId: input.BundleId }),\n ...(input.Certificate !== undefined && input.Certificate !== null && { Certificate: input.Certificate }),\n ...(input.DefaultAuthenticationMethod !== undefined &&\n input.DefaultAuthenticationMethod !== null && { DefaultAuthenticationMethod: input.DefaultAuthenticationMethod }),\n ...(input.Enabled !== undefined && input.Enabled !== null && { Enabled: input.Enabled }),\n ...(input.PrivateKey !== undefined && input.PrivateKey !== null && { PrivateKey: input.PrivateKey }),\n ...(input.TeamId !== undefined && input.TeamId !== null && { TeamId: input.TeamId }),\n ...(input.TokenKey !== undefined && input.TokenKey !== null && { TokenKey: input.TokenKey }),\n ...(input.TokenKeyId !== undefined && input.TokenKeyId !== null && { TokenKeyId: input.TokenKeyId }),\n };\n};\n\nconst serializeAws_restJson1APNSVoipChannelRequest = (input: APNSVoipChannelRequest, context: __SerdeContext): any => {\n return {\n ...(input.BundleId !== undefined && input.BundleId !== null && { BundleId: input.BundleId }),\n ...(input.Certificate !== undefined && input.Certificate !== null && { Certificate: input.Certificate }),\n ...(input.DefaultAuthenticationMethod !== undefined &&\n input.DefaultAuthenticationMethod !== null && { DefaultAuthenticationMethod: input.DefaultAuthenticationMethod }),\n ...(input.Enabled !== undefined && input.Enabled !== null && { Enabled: input.Enabled }),\n ...(input.PrivateKey !== undefined && input.PrivateKey !== null && { PrivateKey: input.PrivateKey }),\n ...(input.TeamId !== undefined && input.TeamId !== null && { TeamId: input.TeamId }),\n ...(input.TokenKey !== undefined && input.TokenKey !== null && { TokenKey: input.TokenKey }),\n ...(input.TokenKeyId !== undefined && input.TokenKeyId !== null && { TokenKeyId: input.TokenKeyId }),\n };\n};\n\nconst serializeAws_restJson1APNSVoipSandboxChannelRequest = (\n input: APNSVoipSandboxChannelRequest,\n context: __SerdeContext\n): any => {\n return {\n ...(input.BundleId !== undefined && input.BundleId !== null && { BundleId: input.BundleId }),\n ...(input.Certificate !== undefined && input.Certificate !== null && { Certificate: input.Certificate }),\n ...(input.DefaultAuthenticationMethod !== undefined &&\n input.DefaultAuthenticationMethod !== null && { DefaultAuthenticationMethod: input.DefaultAuthenticationMethod }),\n ...(input.Enabled !== undefined && input.Enabled !== null && { Enabled: input.Enabled }),\n ...(input.PrivateKey !== undefined && input.PrivateKey !== null && { PrivateKey: input.PrivateKey }),\n ...(input.TeamId !== undefined && input.TeamId !== null && { TeamId: input.TeamId }),\n ...(input.TokenKey !== undefined && input.TokenKey !== null && { TokenKey: input.TokenKey }),\n ...(input.TokenKeyId !== undefined && input.TokenKeyId !== null && { TokenKeyId: input.TokenKeyId }),\n };\n};\n\nconst serializeAws_restJson1AttributeDimension = (input: AttributeDimension, context: __SerdeContext): any => {\n return {\n ...(input.AttributeType !== undefined && input.AttributeType !== null && { AttributeType: input.AttributeType }),\n ...(input.Values !== undefined &&\n input.Values !== null && { Values: serializeAws_restJson1ListOf__string(input.Values, context) }),\n };\n};\n\nconst serializeAws_restJson1BaiduChannelRequest = (input: BaiduChannelRequest, context: __SerdeContext): any => {\n return {\n ...(input.ApiKey !== undefined && input.ApiKey !== null && { ApiKey: input.ApiKey }),\n ...(input.Enabled !== undefined && input.Enabled !== null && { Enabled: input.Enabled }),\n ...(input.SecretKey !== undefined && input.SecretKey !== null && { SecretKey: input.SecretKey }),\n };\n};\n\nconst serializeAws_restJson1BaiduMessage = (input: BaiduMessage, context: __SerdeContext): any => {\n return {\n ...(input.Action !== undefined && input.Action !== null && { Action: input.Action }),\n ...(input.Body !== undefined && input.Body !== null && { Body: input.Body }),\n ...(input.Data !== undefined &&\n input.Data !== null && { Data: serializeAws_restJson1MapOf__string(input.Data, context) }),\n ...(input.IconReference !== undefined && input.IconReference !== null && { IconReference: input.IconReference }),\n ...(input.ImageIconUrl !== undefined && input.ImageIconUrl !== null && { ImageIconUrl: input.ImageIconUrl }),\n ...(input.ImageUrl !== undefined && input.ImageUrl !== null && { ImageUrl: input.ImageUrl }),\n ...(input.RawContent !== undefined && input.RawContent !== null && { RawContent: input.RawContent }),\n ...(input.SilentPush !== undefined && input.SilentPush !== null && { SilentPush: input.SilentPush }),\n ...(input.SmallImageIconUrl !== undefined &&\n input.SmallImageIconUrl !== null && { SmallImageIconUrl: input.SmallImageIconUrl }),\n ...(input.Sound !== undefined && input.Sound !== null && { Sound: input.Sound }),\n ...(input.Substitutions !== undefined &&\n input.Substitutions !== null && {\n Substitutions: serializeAws_restJson1MapOfListOf__string(input.Substitutions, context),\n }),\n ...(input.TimeToLive !== undefined && input.TimeToLive !== null && { TimeToLive: input.TimeToLive }),\n ...(input.Title !== undefined && input.Title !== null && { Title: input.Title }),\n ...(input.Url !== undefined && input.Url !== null && { Url: input.Url }),\n };\n};\n\nconst serializeAws_restJson1CampaignCustomMessage = (input: CampaignCustomMessage, context: __SerdeContext): any => {\n return {\n ...(input.Data !== undefined && input.Data !== null && { Data: input.Data }),\n };\n};\n\nconst serializeAws_restJson1CampaignEmailMessage = (input: CampaignEmailMessage, context: __SerdeContext): any => {\n return {\n ...(input.Body !== undefined && input.Body !== null && { Body: input.Body }),\n ...(input.FromAddress !== undefined && input.FromAddress !== null && { FromAddress: input.FromAddress }),\n ...(input.HtmlBody !== undefined && input.HtmlBody !== null && { HtmlBody: input.HtmlBody }),\n ...(input.Title !== undefined && input.Title !== null && { Title: input.Title }),\n };\n};\n\nconst serializeAws_restJson1CampaignEventFilter = (input: CampaignEventFilter, context: __SerdeContext): any => {\n return {\n ...(input.Dimensions !== undefined &&\n input.Dimensions !== null && { Dimensions: serializeAws_restJson1EventDimensions(input.Dimensions, context) }),\n ...(input.FilterType !== undefined && input.FilterType !== null && { FilterType: input.FilterType }),\n };\n};\n\nconst serializeAws_restJson1CampaignHook = (input: CampaignHook, context: __SerdeContext): any => {\n return {\n ...(input.LambdaFunctionName !== undefined &&\n input.LambdaFunctionName !== null && { LambdaFunctionName: input.LambdaFunctionName }),\n ...(input.Mode !== undefined && input.Mode !== null && { Mode: input.Mode }),\n ...(input.WebUrl !== undefined && input.WebUrl !== null && { WebUrl: input.WebUrl }),\n };\n};\n\nconst serializeAws_restJson1CampaignLimits = (input: CampaignLimits, context: __SerdeContext): any => {\n return {\n ...(input.Daily !== undefined && input.Daily !== null && { Daily: input.Daily }),\n ...(input.MaximumDuration !== undefined &&\n input.MaximumDuration !== null && { MaximumDuration: input.MaximumDuration }),\n ...(input.MessagesPerSecond !== undefined &&\n input.MessagesPerSecond !== null && { MessagesPerSecond: input.MessagesPerSecond }),\n ...(input.Total !== undefined && input.Total !== null && { Total: input.Total }),\n };\n};\n\nconst serializeAws_restJson1CampaignSmsMessage = (input: CampaignSmsMessage, context: __SerdeContext): any => {\n return {\n ...(input.Body !== undefined && input.Body !== null && { Body: input.Body }),\n ...(input.MessageType !== undefined && input.MessageType !== null && { MessageType: input.MessageType }),\n ...(input.SenderId !== undefined && input.SenderId !== null && { SenderId: input.SenderId }),\n };\n};\n\nconst serializeAws_restJson1Condition = (input: Condition, context: __SerdeContext): any => {\n return {\n ...(input.Conditions !== undefined &&\n input.Conditions !== null && {\n Conditions: serializeAws_restJson1ListOfSimpleCondition(input.Conditions, context),\n }),\n ...(input.Operator !== undefined && input.Operator !== null && { Operator: input.Operator }),\n };\n};\n\nconst serializeAws_restJson1ConditionalSplitActivity = (\n input: ConditionalSplitActivity,\n context: __SerdeContext\n): any => {\n return {\n ...(input.Condition !== undefined &&\n input.Condition !== null && { Condition: serializeAws_restJson1Condition(input.Condition, context) }),\n ...(input.EvaluationWaitTime !== undefined &&\n input.EvaluationWaitTime !== null && {\n EvaluationWaitTime: serializeAws_restJson1WaitTime(input.EvaluationWaitTime, context),\n }),\n ...(input.FalseActivity !== undefined && input.FalseActivity !== null && { FalseActivity: input.FalseActivity }),\n ...(input.TrueActivity !== undefined && input.TrueActivity !== null && { TrueActivity: input.TrueActivity }),\n };\n};\n\nconst serializeAws_restJson1CreateApplicationRequest = (\n input: CreateApplicationRequest,\n context: __SerdeContext\n): any => {\n return {\n ...(input.Name !== undefined && input.Name !== null && { Name: input.Name }),\n ...(input.tags !== undefined &&\n input.tags !== null && { tags: serializeAws_restJson1MapOf__string(input.tags, context) }),\n };\n};\n\nconst serializeAws_restJson1CreateRecommenderConfigurationShape = (\n input: CreateRecommenderConfigurationShape,\n context: __SerdeContext\n): any => {\n return {\n ...(input.Attributes !== undefined &&\n input.Attributes !== null && { Attributes: serializeAws_restJson1MapOf__string(input.Attributes, context) }),\n ...(input.Description !== undefined && input.Description !== null && { Description: input.Description }),\n ...(input.Name !== undefined && input.Name !== null && { Name: input.Name }),\n ...(input.RecommendationProviderIdType !== undefined &&\n input.RecommendationProviderIdType !== null && {\n RecommendationProviderIdType: input.RecommendationProviderIdType,\n }),\n ...(input.RecommendationProviderRoleArn !== undefined &&\n input.RecommendationProviderRoleArn !== null && {\n RecommendationProviderRoleArn: input.RecommendationProviderRoleArn,\n }),\n ...(input.RecommendationProviderUri !== undefined &&\n input.RecommendationProviderUri !== null && { RecommendationProviderUri: input.RecommendationProviderUri }),\n ...(input.RecommendationTransformerUri !== undefined &&\n input.RecommendationTransformerUri !== null && {\n RecommendationTransformerUri: input.RecommendationTransformerUri,\n }),\n ...(input.RecommendationsDisplayName !== undefined &&\n input.RecommendationsDisplayName !== null && { RecommendationsDisplayName: input.RecommendationsDisplayName }),\n ...(input.RecommendationsPerMessage !== undefined &&\n input.RecommendationsPerMessage !== null && { RecommendationsPerMessage: input.RecommendationsPerMessage }),\n };\n};\n\nconst serializeAws_restJson1CustomDeliveryConfiguration = (\n input: CustomDeliveryConfiguration,\n context: __SerdeContext\n): any => {\n return {\n ...(input.DeliveryUri !== undefined && input.DeliveryUri !== null && { DeliveryUri: input.DeliveryUri }),\n ...(input.EndpointTypes !== undefined &&\n input.EndpointTypes !== null && {\n EndpointTypes: serializeAws_restJson1ListOf__EndpointTypesElement(input.EndpointTypes, context),\n }),\n };\n};\n\nconst serializeAws_restJson1CustomMessageActivity = (input: CustomMessageActivity, context: __SerdeContext): any => {\n return {\n ...(input.DeliveryUri !== undefined && input.DeliveryUri !== null && { DeliveryUri: input.DeliveryUri }),\n ...(input.EndpointTypes !== undefined &&\n input.EndpointTypes !== null && {\n EndpointTypes: serializeAws_restJson1ListOf__EndpointTypesElement(input.EndpointTypes, context),\n }),\n ...(input.MessageConfig !== undefined &&\n input.MessageConfig !== null && {\n MessageConfig: serializeAws_restJson1JourneyCustomMessage(input.MessageConfig, context),\n }),\n ...(input.NextActivity !== undefined && input.NextActivity !== null && { NextActivity: input.NextActivity }),\n ...(input.TemplateName !== undefined && input.TemplateName !== null && { TemplateName: input.TemplateName }),\n ...(input.TemplateVersion !== undefined &&\n input.TemplateVersion !== null && { TemplateVersion: input.TemplateVersion }),\n };\n};\n\nconst serializeAws_restJson1DefaultMessage = (input: DefaultMessage, context: __SerdeContext): any => {\n return {\n ...(input.Body !== undefined && input.Body !== null && { Body: input.Body }),\n ...(input.Substitutions !== undefined &&\n input.Substitutions !== null && {\n Substitutions: serializeAws_restJson1MapOfListOf__string(input.Substitutions, context),\n }),\n };\n};\n\nconst serializeAws_restJson1DefaultPushNotificationMessage = (\n input: DefaultPushNotificationMessage,\n context: __SerdeContext\n): any => {\n return {\n ...(input.Action !== undefined && input.Action !== null && { Action: input.Action }),\n ...(input.Body !== undefined && input.Body !== null && { Body: input.Body }),\n ...(input.Data !== undefined &&\n input.Data !== null && { Data: serializeAws_restJson1MapOf__string(input.Data, context) }),\n ...(input.SilentPush !== undefined && input.SilentPush !== null && { SilentPush: input.SilentPush }),\n ...(input.Substitutions !== undefined &&\n input.Substitutions !== null && {\n Substitutions: serializeAws_restJson1MapOfListOf__string(input.Substitutions, context),\n }),\n ...(input.Title !== undefined && input.Title !== null && { Title: input.Title }),\n ...(input.Url !== undefined && input.Url !== null && { Url: input.Url }),\n };\n};\n\nconst serializeAws_restJson1DefaultPushNotificationTemplate = (\n input: DefaultPushNotificationTemplate,\n context: __SerdeContext\n): any => {\n return {\n ...(input.Action !== undefined && input.Action !== null && { Action: input.Action }),\n ...(input.Body !== undefined && input.Body !== null && { Body: input.Body }),\n ...(input.Sound !== undefined && input.Sound !== null && { Sound: input.Sound }),\n ...(input.Title !== undefined && input.Title !== null && { Title: input.Title }),\n ...(input.Url !== undefined && input.Url !== null && { Url: input.Url }),\n };\n};\n\nconst serializeAws_restJson1DirectMessageConfiguration = (\n input: DirectMessageConfiguration,\n context: __SerdeContext\n): any => {\n return {\n ...(input.ADMMessage !== undefined &&\n input.ADMMessage !== null && { ADMMessage: serializeAws_restJson1ADMMessage(input.ADMMessage, context) }),\n ...(input.APNSMessage !== undefined &&\n input.APNSMessage !== null && { APNSMessage: serializeAws_restJson1APNSMessage(input.APNSMessage, context) }),\n ...(input.BaiduMessage !== undefined &&\n input.BaiduMessage !== null && { BaiduMessage: serializeAws_restJson1BaiduMessage(input.BaiduMessage, context) }),\n ...(input.DefaultMessage !== undefined &&\n input.DefaultMessage !== null && {\n DefaultMessage: serializeAws_restJson1DefaultMessage(input.DefaultMessage, context),\n }),\n ...(input.DefaultPushNotificationMessage !== undefined &&\n input.DefaultPushNotificationMessage !== null && {\n DefaultPushNotificationMessage: serializeAws_restJson1DefaultPushNotificationMessage(\n input.DefaultPushNotificationMessage,\n context\n ),\n }),\n ...(input.EmailMessage !== undefined &&\n input.EmailMessage !== null && { EmailMessage: serializeAws_restJson1EmailMessage(input.EmailMessage, context) }),\n ...(input.GCMMessage !== undefined &&\n input.GCMMessage !== null && { GCMMessage: serializeAws_restJson1GCMMessage(input.GCMMessage, context) }),\n ...(input.SMSMessage !== undefined &&\n input.SMSMessage !== null && { SMSMessage: serializeAws_restJson1SMSMessage(input.SMSMessage, context) }),\n ...(input.VoiceMessage !== undefined &&\n input.VoiceMessage !== null && { VoiceMessage: serializeAws_restJson1VoiceMessage(input.VoiceMessage, context) }),\n };\n};\n\nconst serializeAws_restJson1EmailChannelRequest = (input: EmailChannelRequest, context: __SerdeContext): any => {\n return {\n ...(input.ConfigurationSet !== undefined &&\n input.ConfigurationSet !== null && { ConfigurationSet: input.ConfigurationSet }),\n ...(input.Enabled !== undefined && input.Enabled !== null && { Enabled: input.Enabled }),\n ...(input.FromAddress !== undefined && input.FromAddress !== null && { FromAddress: input.FromAddress }),\n ...(input.Identity !== undefined && input.Identity !== null && { Identity: input.Identity }),\n ...(input.RoleArn !== undefined && input.RoleArn !== null && { RoleArn: input.RoleArn }),\n };\n};\n\nconst serializeAws_restJson1EmailMessage = (input: EmailMessage, context: __SerdeContext): any => {\n return {\n ...(input.Body !== undefined && input.Body !== null && { Body: input.Body }),\n ...(input.FeedbackForwardingAddress !== undefined &&\n input.FeedbackForwardingAddress !== null && { FeedbackForwardingAddress: input.FeedbackForwardingAddress }),\n ...(input.FromAddress !== undefined && input.FromAddress !== null && { FromAddress: input.FromAddress }),\n ...(input.RawEmail !== undefined &&\n input.RawEmail !== null && { RawEmail: serializeAws_restJson1RawEmail(input.RawEmail, context) }),\n ...(input.ReplyToAddresses !== undefined &&\n input.ReplyToAddresses !== null && {\n ReplyToAddresses: serializeAws_restJson1ListOf__string(input.ReplyToAddresses, context),\n }),\n ...(input.SimpleEmail !== undefined &&\n input.SimpleEmail !== null && { SimpleEmail: serializeAws_restJson1SimpleEmail(input.SimpleEmail, context) }),\n ...(input.Substitutions !== undefined &&\n input.Substitutions !== null && {\n Substitutions: serializeAws_restJson1MapOfListOf__string(input.Substitutions, context),\n }),\n };\n};\n\nconst serializeAws_restJson1EmailMessageActivity = (input: EmailMessageActivity, context: __SerdeContext): any => {\n return {\n ...(input.MessageConfig !== undefined &&\n input.MessageConfig !== null && {\n MessageConfig: serializeAws_restJson1JourneyEmailMessage(input.MessageConfig, context),\n }),\n ...(input.NextActivity !== undefined && input.NextActivity !== null && { NextActivity: input.NextActivity }),\n ...(input.TemplateName !== undefined && input.TemplateName !== null && { TemplateName: input.TemplateName }),\n ...(input.TemplateVersion !== undefined &&\n input.TemplateVersion !== null && { TemplateVersion: input.TemplateVersion }),\n };\n};\n\nconst serializeAws_restJson1EmailTemplateRequest = (input: EmailTemplateRequest, context: __SerdeContext): any => {\n return {\n ...(input.DefaultSubstitutions !== undefined &&\n input.DefaultSubstitutions !== null && { DefaultSubstitutions: input.DefaultSubstitutions }),\n ...(input.HtmlPart !== undefined && input.HtmlPart !== null && { HtmlPart: input.HtmlPart }),\n ...(input.RecommenderId !== undefined && input.RecommenderId !== null && { RecommenderId: input.RecommenderId }),\n ...(input.Subject !== undefined && input.Subject !== null && { Subject: input.Subject }),\n ...(input.TemplateDescription !== undefined &&\n input.TemplateDescription !== null && { TemplateDescription: input.TemplateDescription }),\n ...(input.TextPart !== undefined && input.TextPart !== null && { TextPart: input.TextPart }),\n ...(input.tags !== undefined &&\n input.tags !== null && { tags: serializeAws_restJson1MapOf__string(input.tags, context) }),\n };\n};\n\nconst serializeAws_restJson1EndpointBatchItem = (input: EndpointBatchItem, context: __SerdeContext): any => {\n return {\n ...(input.Address !== undefined && input.Address !== null && { Address: input.Address }),\n ...(input.Attributes !== undefined &&\n input.Attributes !== null && {\n Attributes: serializeAws_restJson1MapOfListOf__string(input.Attributes, context),\n }),\n ...(input.ChannelType !== undefined && input.ChannelType !== null && { ChannelType: input.ChannelType }),\n ...(input.Demographic !== undefined &&\n input.Demographic !== null && {\n Demographic: serializeAws_restJson1EndpointDemographic(input.Demographic, context),\n }),\n ...(input.EffectiveDate !== undefined && input.EffectiveDate !== null && { EffectiveDate: input.EffectiveDate }),\n ...(input.EndpointStatus !== undefined &&\n input.EndpointStatus !== null && { EndpointStatus: input.EndpointStatus }),\n ...(input.Id !== undefined && input.Id !== null && { Id: input.Id }),\n ...(input.Location !== undefined &&\n input.Location !== null && { Location: serializeAws_restJson1EndpointLocation(input.Location, context) }),\n ...(input.Metrics !== undefined &&\n input.Metrics !== null && { Metrics: serializeAws_restJson1MapOf__double(input.Metrics, context) }),\n ...(input.OptOut !== undefined && input.OptOut !== null && { OptOut: input.OptOut }),\n ...(input.RequestId !== undefined && input.RequestId !== null && { RequestId: input.RequestId }),\n ...(input.User !== undefined &&\n input.User !== null && { User: serializeAws_restJson1EndpointUser(input.User, context) }),\n };\n};\n\nconst serializeAws_restJson1EndpointBatchRequest = (input: EndpointBatchRequest, context: __SerdeContext): any => {\n return {\n ...(input.Item !== undefined &&\n input.Item !== null && { Item: serializeAws_restJson1ListOfEndpointBatchItem(input.Item, context) }),\n };\n};\n\nconst serializeAws_restJson1EndpointDemographic = (input: EndpointDemographic, context: __SerdeContext): any => {\n return {\n ...(input.AppVersion !== undefined && input.AppVersion !== null && { AppVersion: input.AppVersion }),\n ...(input.Locale !== undefined && input.Locale !== null && { Locale: input.Locale }),\n ...(input.Make !== undefined && input.Make !== null && { Make: input.Make }),\n ...(input.Model !== undefined && input.Model !== null && { Model: input.Model }),\n ...(input.ModelVersion !== undefined && input.ModelVersion !== null && { ModelVersion: input.ModelVersion }),\n ...(input.Platform !== undefined && input.Platform !== null && { Platform: input.Platform }),\n ...(input.PlatformVersion !== undefined &&\n input.PlatformVersion !== null && { PlatformVersion: input.PlatformVersion }),\n ...(input.Timezone !== undefined && input.Timezone !== null && { Timezone: input.Timezone }),\n };\n};\n\nconst serializeAws_restJson1EndpointLocation = (input: EndpointLocation, context: __SerdeContext): any => {\n return {\n ...(input.City !== undefined && input.City !== null && { City: input.City }),\n ...(input.Country !== undefined && input.Country !== null && { Country: input.Country }),\n ...(input.Latitude !== undefined && input.Latitude !== null && { Latitude: input.Latitude }),\n ...(input.Longitude !== undefined && input.Longitude !== null && { Longitude: input.Longitude }),\n ...(input.PostalCode !== undefined && input.PostalCode !== null && { PostalCode: input.PostalCode }),\n ...(input.Region !== undefined && input.Region !== null && { Region: input.Region }),\n };\n};\n\nconst serializeAws_restJson1EndpointRequest = (input: EndpointRequest, context: __SerdeContext): any => {\n return {\n ...(input.Address !== undefined && input.Address !== null && { Address: input.Address }),\n ...(input.Attributes !== undefined &&\n input.Attributes !== null && {\n Attributes: serializeAws_restJson1MapOfListOf__string(input.Attributes, context),\n }),\n ...(input.ChannelType !== undefined && input.ChannelType !== null && { ChannelType: input.ChannelType }),\n ...(input.Demographic !== undefined &&\n input.Demographic !== null && {\n Demographic: serializeAws_restJson1EndpointDemographic(input.Demographic, context),\n }),\n ...(input.EffectiveDate !== undefined && input.EffectiveDate !== null && { EffectiveDate: input.EffectiveDate }),\n ...(input.EndpointStatus !== undefined &&\n input.EndpointStatus !== null && { EndpointStatus: input.EndpointStatus }),\n ...(input.Location !== undefined &&\n input.Location !== null && { Location: serializeAws_restJson1EndpointLocation(input.Location, context) }),\n ...(input.Metrics !== undefined &&\n input.Metrics !== null && { Metrics: serializeAws_restJson1MapOf__double(input.Metrics, context) }),\n ...(input.OptOut !== undefined && input.OptOut !== null && { OptOut: input.OptOut }),\n ...(input.RequestId !== undefined && input.RequestId !== null && { RequestId: input.RequestId }),\n ...(input.User !== undefined &&\n input.User !== null && { User: serializeAws_restJson1EndpointUser(input.User, context) }),\n };\n};\n\nconst serializeAws_restJson1EndpointSendConfiguration = (\n input: EndpointSendConfiguration,\n context: __SerdeContext\n): any => {\n return {\n ...(input.BodyOverride !== undefined && input.BodyOverride !== null && { BodyOverride: input.BodyOverride }),\n ...(input.Context !== undefined &&\n input.Context !== null && { Context: serializeAws_restJson1MapOf__string(input.Context, context) }),\n ...(input.RawContent !== undefined && input.RawContent !== null && { RawContent: input.RawContent }),\n ...(input.Substitutions !== undefined &&\n input.Substitutions !== null && {\n Substitutions: serializeAws_restJson1MapOfListOf__string(input.Substitutions, context),\n }),\n ...(input.TitleOverride !== undefined && input.TitleOverride !== null && { TitleOverride: input.TitleOverride }),\n };\n};\n\nconst serializeAws_restJson1EndpointUser = (input: EndpointUser, context: __SerdeContext): any => {\n return {\n ...(input.UserAttributes !== undefined &&\n input.UserAttributes !== null && {\n UserAttributes: serializeAws_restJson1MapOfListOf__string(input.UserAttributes, context),\n }),\n ...(input.UserId !== undefined && input.UserId !== null && { UserId: input.UserId }),\n };\n};\n\nconst serializeAws_restJson1Event = (input: Event, context: __SerdeContext): any => {\n return {\n ...(input.AppPackageName !== undefined &&\n input.AppPackageName !== null && { AppPackageName: input.AppPackageName }),\n ...(input.AppTitle !== undefined && input.AppTitle !== null && { AppTitle: input.AppTitle }),\n ...(input.AppVersionCode !== undefined &&\n input.AppVersionCode !== null && { AppVersionCode: input.AppVersionCode }),\n ...(input.Attributes !== undefined &&\n input.Attributes !== null && { Attributes: serializeAws_restJson1MapOf__string(input.Attributes, context) }),\n ...(input.ClientSdkVersion !== undefined &&\n input.ClientSdkVersion !== null && { ClientSdkVersion: input.ClientSdkVersion }),\n ...(input.EventType !== undefined && input.EventType !== null && { EventType: input.EventType }),\n ...(input.Metrics !== undefined &&\n input.Metrics !== null && { Metrics: serializeAws_restJson1MapOf__double(input.Metrics, context) }),\n ...(input.SdkName !== undefined && input.SdkName !== null && { SdkName: input.SdkName }),\n ...(input.Session !== undefined &&\n input.Session !== null && { Session: serializeAws_restJson1Session(input.Session, context) }),\n ...(input.Timestamp !== undefined && input.Timestamp !== null && { Timestamp: input.Timestamp }),\n };\n};\n\nconst serializeAws_restJson1EventCondition = (input: EventCondition, context: __SerdeContext): any => {\n return {\n ...(input.Dimensions !== undefined &&\n input.Dimensions !== null && { Dimensions: serializeAws_restJson1EventDimensions(input.Dimensions, context) }),\n ...(input.MessageActivity !== undefined &&\n input.MessageActivity !== null && { MessageActivity: input.MessageActivity }),\n };\n};\n\nconst serializeAws_restJson1EventDimensions = (input: EventDimensions, context: __SerdeContext): any => {\n return {\n ...(input.Attributes !== undefined &&\n input.Attributes !== null && {\n Attributes: serializeAws_restJson1MapOfAttributeDimension(input.Attributes, context),\n }),\n ...(input.EventType !== undefined &&\n input.EventType !== null && { EventType: serializeAws_restJson1SetDimension(input.EventType, context) }),\n ...(input.Metrics !== undefined &&\n input.Metrics !== null && { Metrics: serializeAws_restJson1MapOfMetricDimension(input.Metrics, context) }),\n };\n};\n\nconst serializeAws_restJson1EventFilter = (input: EventFilter, context: __SerdeContext): any => {\n return {\n ...(input.Dimensions !== undefined &&\n input.Dimensions !== null && { Dimensions: serializeAws_restJson1EventDimensions(input.Dimensions, context) }),\n ...(input.FilterType !== undefined && input.FilterType !== null && { FilterType: input.FilterType }),\n };\n};\n\nconst serializeAws_restJson1EventsBatch = (input: EventsBatch, context: __SerdeContext): any => {\n return {\n ...(input.Endpoint !== undefined &&\n input.Endpoint !== null && { Endpoint: serializeAws_restJson1PublicEndpoint(input.Endpoint, context) }),\n ...(input.Events !== undefined &&\n input.Events !== null && { Events: serializeAws_restJson1MapOfEvent(input.Events, context) }),\n };\n};\n\nconst serializeAws_restJson1EventsRequest = (input: EventsRequest, context: __SerdeContext): any => {\n return {\n ...(input.BatchItem !== undefined &&\n input.BatchItem !== null && { BatchItem: serializeAws_restJson1MapOfEventsBatch(input.BatchItem, context) }),\n };\n};\n\nconst serializeAws_restJson1EventStartCondition = (input: EventStartCondition, context: __SerdeContext): any => {\n return {\n ...(input.EventFilter !== undefined &&\n input.EventFilter !== null && { EventFilter: serializeAws_restJson1EventFilter(input.EventFilter, context) }),\n ...(input.SegmentId !== undefined && input.SegmentId !== null && { SegmentId: input.SegmentId }),\n };\n};\n\nconst serializeAws_restJson1ExportJobRequest = (input: ExportJobRequest, context: __SerdeContext): any => {\n return {\n ...(input.RoleArn !== undefined && input.RoleArn !== null && { RoleArn: input.RoleArn }),\n ...(input.S3UrlPrefix !== undefined && input.S3UrlPrefix !== null && { S3UrlPrefix: input.S3UrlPrefix }),\n ...(input.SegmentId !== undefined && input.SegmentId !== null && { SegmentId: input.SegmentId }),\n ...(input.SegmentVersion !== undefined &&\n input.SegmentVersion !== null && { SegmentVersion: input.SegmentVersion }),\n };\n};\n\nconst serializeAws_restJson1GCMChannelRequest = (input: GCMChannelRequest, context: __SerdeContext): any => {\n return {\n ...(input.ApiKey !== undefined && input.ApiKey !== null && { ApiKey: input.ApiKey }),\n ...(input.Enabled !== undefined && input.Enabled !== null && { Enabled: input.Enabled }),\n };\n};\n\nconst serializeAws_restJson1GCMMessage = (input: GCMMessage, context: __SerdeContext): any => {\n return {\n ...(input.Action !== undefined && input.Action !== null && { Action: input.Action }),\n ...(input.Body !== undefined && input.Body !== null && { Body: input.Body }),\n ...(input.CollapseKey !== undefined && input.CollapseKey !== null && { CollapseKey: input.CollapseKey }),\n ...(input.Data !== undefined &&\n input.Data !== null && { Data: serializeAws_restJson1MapOf__string(input.Data, context) }),\n ...(input.IconReference !== undefined && input.IconReference !== null && { IconReference: input.IconReference }),\n ...(input.ImageIconUrl !== undefined && input.ImageIconUrl !== null && { ImageIconUrl: input.ImageIconUrl }),\n ...(input.ImageUrl !== undefined && input.ImageUrl !== null && { ImageUrl: input.ImageUrl }),\n ...(input.Priority !== undefined && input.Priority !== null && { Priority: input.Priority }),\n ...(input.RawContent !== undefined && input.RawContent !== null && { RawContent: input.RawContent }),\n ...(input.RestrictedPackageName !== undefined &&\n input.RestrictedPackageName !== null && { RestrictedPackageName: input.RestrictedPackageName }),\n ...(input.SilentPush !== undefined && input.SilentPush !== null && { SilentPush: input.SilentPush }),\n ...(input.SmallImageIconUrl !== undefined &&\n input.SmallImageIconUrl !== null && { SmallImageIconUrl: input.SmallImageIconUrl }),\n ...(input.Sound !== undefined && input.Sound !== null && { Sound: input.Sound }),\n ...(input.Substitutions !== undefined &&\n input.Substitutions !== null && {\n Substitutions: serializeAws_restJson1MapOfListOf__string(input.Substitutions, context),\n }),\n ...(input.TimeToLive !== undefined && input.TimeToLive !== null && { TimeToLive: input.TimeToLive }),\n ...(input.Title !== undefined && input.Title !== null && { Title: input.Title }),\n ...(input.Url !== undefined && input.Url !== null && { Url: input.Url }),\n };\n};\n\nconst serializeAws_restJson1GPSCoordinates = (input: GPSCoordinates, context: __SerdeContext): any => {\n return {\n ...(input.Latitude !== undefined && input.Latitude !== null && { Latitude: input.Latitude }),\n ...(input.Longitude !== undefined && input.Longitude !== null && { Longitude: input.Longitude }),\n };\n};\n\nconst serializeAws_restJson1GPSPointDimension = (input: GPSPointDimension, context: __SerdeContext): any => {\n return {\n ...(input.Coordinates !== undefined &&\n input.Coordinates !== null && { Coordinates: serializeAws_restJson1GPSCoordinates(input.Coordinates, context) }),\n ...(input.RangeInKilometers !== undefined &&\n input.RangeInKilometers !== null && { RangeInKilometers: input.RangeInKilometers }),\n };\n};\n\nconst serializeAws_restJson1HoldoutActivity = (input: HoldoutActivity, context: __SerdeContext): any => {\n return {\n ...(input.NextActivity !== undefined && input.NextActivity !== null && { NextActivity: input.NextActivity }),\n ...(input.Percentage !== undefined && input.Percentage !== null && { Percentage: input.Percentage }),\n };\n};\n\nconst serializeAws_restJson1ImportJobRequest = (input: ImportJobRequest, context: __SerdeContext): any => {\n return {\n ...(input.DefineSegment !== undefined && input.DefineSegment !== null && { DefineSegment: input.DefineSegment }),\n ...(input.ExternalId !== undefined && input.ExternalId !== null && { ExternalId: input.ExternalId }),\n ...(input.Format !== undefined && input.Format !== null && { Format: input.Format }),\n ...(input.RegisterEndpoints !== undefined &&\n input.RegisterEndpoints !== null && { RegisterEndpoints: input.RegisterEndpoints }),\n ...(input.RoleArn !== undefined && input.RoleArn !== null && { RoleArn: input.RoleArn }),\n ...(input.S3Url !== undefined && input.S3Url !== null && { S3Url: input.S3Url }),\n ...(input.SegmentId !== undefined && input.SegmentId !== null && { SegmentId: input.SegmentId }),\n ...(input.SegmentName !== undefined && input.SegmentName !== null && { SegmentName: input.SegmentName }),\n };\n};\n\nconst serializeAws_restJson1JourneyCustomMessage = (input: JourneyCustomMessage, context: __SerdeContext): any => {\n return {\n ...(input.Data !== undefined && input.Data !== null && { Data: input.Data }),\n };\n};\n\nconst serializeAws_restJson1JourneyEmailMessage = (input: JourneyEmailMessage, context: __SerdeContext): any => {\n return {\n ...(input.FromAddress !== undefined && input.FromAddress !== null && { FromAddress: input.FromAddress }),\n };\n};\n\nconst serializeAws_restJson1JourneyLimits = (input: JourneyLimits, context: __SerdeContext): any => {\n return {\n ...(input.DailyCap !== undefined && input.DailyCap !== null && { DailyCap: input.DailyCap }),\n ...(input.EndpointReentryCap !== undefined &&\n input.EndpointReentryCap !== null && { EndpointReentryCap: input.EndpointReentryCap }),\n ...(input.MessagesPerSecond !== undefined &&\n input.MessagesPerSecond !== null && { MessagesPerSecond: input.MessagesPerSecond }),\n };\n};\n\nconst serializeAws_restJson1JourneyPushMessage = (input: JourneyPushMessage, context: __SerdeContext): any => {\n return {\n ...(input.TimeToLive !== undefined && input.TimeToLive !== null && { TimeToLive: input.TimeToLive }),\n };\n};\n\nconst serializeAws_restJson1JourneySchedule = (input: JourneySchedule, context: __SerdeContext): any => {\n return {\n ...(input.EndTime !== undefined &&\n input.EndTime !== null && { EndTime: input.EndTime.toISOString().split(\".\")[0] + \"Z\" }),\n ...(input.StartTime !== undefined &&\n input.StartTime !== null && { StartTime: input.StartTime.toISOString().split(\".\")[0] + \"Z\" }),\n ...(input.Timezone !== undefined && input.Timezone !== null && { Timezone: input.Timezone }),\n };\n};\n\nconst serializeAws_restJson1JourneySMSMessage = (input: JourneySMSMessage, context: __SerdeContext): any => {\n return {\n ...(input.MessageType !== undefined && input.MessageType !== null && { MessageType: input.MessageType }),\n ...(input.SenderId !== undefined && input.SenderId !== null && { SenderId: input.SenderId }),\n };\n};\n\nconst serializeAws_restJson1JourneyStateRequest = (input: JourneyStateRequest, context: __SerdeContext): any => {\n return {\n ...(input.State !== undefined && input.State !== null && { State: input.State }),\n };\n};\n\nconst serializeAws_restJson1ListOf__EndpointTypesElement = (\n input: (__EndpointTypesElement | string)[],\n context: __SerdeContext\n): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n return entry;\n });\n};\n\nconst serializeAws_restJson1ListOf__string = (input: string[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n return entry;\n });\n};\n\nconst serializeAws_restJson1ListOfEndpointBatchItem = (input: EndpointBatchItem[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n return serializeAws_restJson1EndpointBatchItem(entry, context);\n });\n};\n\nconst serializeAws_restJson1ListOfMultiConditionalBranch = (\n input: MultiConditionalBranch[],\n context: __SerdeContext\n): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n return serializeAws_restJson1MultiConditionalBranch(entry, context);\n });\n};\n\nconst serializeAws_restJson1ListOfRandomSplitEntry = (input: RandomSplitEntry[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n return serializeAws_restJson1RandomSplitEntry(entry, context);\n });\n};\n\nconst serializeAws_restJson1ListOfSegmentDimensions = (input: SegmentDimensions[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n return serializeAws_restJson1SegmentDimensions(entry, context);\n });\n};\n\nconst serializeAws_restJson1ListOfSegmentGroup = (input: SegmentGroup[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n return serializeAws_restJson1SegmentGroup(entry, context);\n });\n};\n\nconst serializeAws_restJson1ListOfSegmentReference = (input: SegmentReference[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n return serializeAws_restJson1SegmentReference(entry, context);\n });\n};\n\nconst serializeAws_restJson1ListOfSimpleCondition = (input: SimpleCondition[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n return serializeAws_restJson1SimpleCondition(entry, context);\n });\n};\n\nconst serializeAws_restJson1ListOfWriteTreatmentResource = (\n input: WriteTreatmentResource[],\n context: __SerdeContext\n): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n return serializeAws_restJson1WriteTreatmentResource(entry, context);\n });\n};\n\nconst serializeAws_restJson1MapOf__double = (input: { [key: string]: number }, context: __SerdeContext): any => {\n return Object.entries(input).reduce((acc: { [key: string]: number }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n};\n\nconst serializeAws_restJson1MapOf__string = (input: { [key: string]: string }, context: __SerdeContext): any => {\n return Object.entries(input).reduce((acc: { [key: string]: string }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n};\n\nconst serializeAws_restJson1MapOfActivity = (input: { [key: string]: Activity }, context: __SerdeContext): any => {\n return Object.entries(input).reduce((acc: { [key: string]: Activity }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: serializeAws_restJson1Activity(value, context),\n };\n }, {});\n};\n\nconst serializeAws_restJson1MapOfAddressConfiguration = (\n input: { [key: string]: AddressConfiguration },\n context: __SerdeContext\n): any => {\n return Object.entries(input).reduce((acc: { [key: string]: AddressConfiguration }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: serializeAws_restJson1AddressConfiguration(value, context),\n };\n }, {});\n};\n\nconst serializeAws_restJson1MapOfAttributeDimension = (\n input: { [key: string]: AttributeDimension },\n context: __SerdeContext\n): any => {\n return Object.entries(input).reduce((acc: { [key: string]: AttributeDimension }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: serializeAws_restJson1AttributeDimension(value, context),\n };\n }, {});\n};\n\nconst serializeAws_restJson1MapOfEndpointSendConfiguration = (\n input: { [key: string]: EndpointSendConfiguration },\n context: __SerdeContext\n): any => {\n return Object.entries(input).reduce(\n (acc: { [key: string]: EndpointSendConfiguration }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: serializeAws_restJson1EndpointSendConfiguration(value, context),\n };\n },\n {}\n );\n};\n\nconst serializeAws_restJson1MapOfEvent = (input: { [key: string]: Event }, context: __SerdeContext): any => {\n return Object.entries(input).reduce((acc: { [key: string]: Event }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: serializeAws_restJson1Event(value, context),\n };\n }, {});\n};\n\nconst serializeAws_restJson1MapOfEventsBatch = (\n input: { [key: string]: EventsBatch },\n context: __SerdeContext\n): any => {\n return Object.entries(input).reduce((acc: { [key: string]: EventsBatch }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: serializeAws_restJson1EventsBatch(value, context),\n };\n }, {});\n};\n\nconst serializeAws_restJson1MapOfListOf__string = (\n input: { [key: string]: string[] },\n context: __SerdeContext\n): any => {\n return Object.entries(input).reduce((acc: { [key: string]: string[] }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: serializeAws_restJson1ListOf__string(value, context),\n };\n }, {});\n};\n\nconst serializeAws_restJson1MapOfMetricDimension = (\n input: { [key: string]: MetricDimension },\n context: __SerdeContext\n): any => {\n return Object.entries(input).reduce((acc: { [key: string]: MetricDimension }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: serializeAws_restJson1MetricDimension(value, context),\n };\n }, {});\n};\n\nconst serializeAws_restJson1Message = (input: Message, context: __SerdeContext): any => {\n return {\n ...(input.Action !== undefined && input.Action !== null && { Action: input.Action }),\n ...(input.Body !== undefined && input.Body !== null && { Body: input.Body }),\n ...(input.ImageIconUrl !== undefined && input.ImageIconUrl !== null && { ImageIconUrl: input.ImageIconUrl }),\n ...(input.ImageSmallIconUrl !== undefined &&\n input.ImageSmallIconUrl !== null && { ImageSmallIconUrl: input.ImageSmallIconUrl }),\n ...(input.ImageUrl !== undefined && input.ImageUrl !== null && { ImageUrl: input.ImageUrl }),\n ...(input.JsonBody !== undefined && input.JsonBody !== null && { JsonBody: input.JsonBody }),\n ...(input.MediaUrl !== undefined && input.MediaUrl !== null && { MediaUrl: input.MediaUrl }),\n ...(input.RawContent !== undefined && input.RawContent !== null && { RawContent: input.RawContent }),\n ...(input.SilentPush !== undefined && input.SilentPush !== null && { SilentPush: input.SilentPush }),\n ...(input.TimeToLive !== undefined && input.TimeToLive !== null && { TimeToLive: input.TimeToLive }),\n ...(input.Title !== undefined && input.Title !== null && { Title: input.Title }),\n ...(input.Url !== undefined && input.Url !== null && { Url: input.Url }),\n };\n};\n\nconst serializeAws_restJson1MessageConfiguration = (input: MessageConfiguration, context: __SerdeContext): any => {\n return {\n ...(input.ADMMessage !== undefined &&\n input.ADMMessage !== null && { ADMMessage: serializeAws_restJson1Message(input.ADMMessage, context) }),\n ...(input.APNSMessage !== undefined &&\n input.APNSMessage !== null && { APNSMessage: serializeAws_restJson1Message(input.APNSMessage, context) }),\n ...(input.BaiduMessage !== undefined &&\n input.BaiduMessage !== null && { BaiduMessage: serializeAws_restJson1Message(input.BaiduMessage, context) }),\n ...(input.CustomMessage !== undefined &&\n input.CustomMessage !== null && {\n CustomMessage: serializeAws_restJson1CampaignCustomMessage(input.CustomMessage, context),\n }),\n ...(input.DefaultMessage !== undefined &&\n input.DefaultMessage !== null && {\n DefaultMessage: serializeAws_restJson1Message(input.DefaultMessage, context),\n }),\n ...(input.EmailMessage !== undefined &&\n input.EmailMessage !== null && {\n EmailMessage: serializeAws_restJson1CampaignEmailMessage(input.EmailMessage, context),\n }),\n ...(input.GCMMessage !== undefined &&\n input.GCMMessage !== null && { GCMMessage: serializeAws_restJson1Message(input.GCMMessage, context) }),\n ...(input.SMSMessage !== undefined &&\n input.SMSMessage !== null && { SMSMessage: serializeAws_restJson1CampaignSmsMessage(input.SMSMessage, context) }),\n };\n};\n\nconst serializeAws_restJson1MessageRequest = (input: MessageRequest, context: __SerdeContext): any => {\n return {\n ...(input.Addresses !== undefined &&\n input.Addresses !== null && {\n Addresses: serializeAws_restJson1MapOfAddressConfiguration(input.Addresses, context),\n }),\n ...(input.Context !== undefined &&\n input.Context !== null && { Context: serializeAws_restJson1MapOf__string(input.Context, context) }),\n ...(input.Endpoints !== undefined &&\n input.Endpoints !== null && {\n Endpoints: serializeAws_restJson1MapOfEndpointSendConfiguration(input.Endpoints, context),\n }),\n ...(input.MessageConfiguration !== undefined &&\n input.MessageConfiguration !== null && {\n MessageConfiguration: serializeAws_restJson1DirectMessageConfiguration(input.MessageConfiguration, context),\n }),\n ...(input.TemplateConfiguration !== undefined &&\n input.TemplateConfiguration !== null && {\n TemplateConfiguration: serializeAws_restJson1TemplateConfiguration(input.TemplateConfiguration, context),\n }),\n ...(input.TraceId !== undefined && input.TraceId !== null && { TraceId: input.TraceId }),\n };\n};\n\nconst serializeAws_restJson1MetricDimension = (input: MetricDimension, context: __SerdeContext): any => {\n return {\n ...(input.ComparisonOperator !== undefined &&\n input.ComparisonOperator !== null && { ComparisonOperator: input.ComparisonOperator }),\n ...(input.Value !== undefined && input.Value !== null && { Value: input.Value }),\n };\n};\n\nconst serializeAws_restJson1MultiConditionalBranch = (input: MultiConditionalBranch, context: __SerdeContext): any => {\n return {\n ...(input.Condition !== undefined &&\n input.Condition !== null && { Condition: serializeAws_restJson1SimpleCondition(input.Condition, context) }),\n ...(input.NextActivity !== undefined && input.NextActivity !== null && { NextActivity: input.NextActivity }),\n };\n};\n\nconst serializeAws_restJson1MultiConditionalSplitActivity = (\n input: MultiConditionalSplitActivity,\n context: __SerdeContext\n): any => {\n return {\n ...(input.Branches !== undefined &&\n input.Branches !== null && {\n Branches: serializeAws_restJson1ListOfMultiConditionalBranch(input.Branches, context),\n }),\n ...(input.DefaultActivity !== undefined &&\n input.DefaultActivity !== null && { DefaultActivity: input.DefaultActivity }),\n ...(input.EvaluationWaitTime !== undefined &&\n input.EvaluationWaitTime !== null && {\n EvaluationWaitTime: serializeAws_restJson1WaitTime(input.EvaluationWaitTime, context),\n }),\n };\n};\n\nconst serializeAws_restJson1NumberValidateRequest = (input: NumberValidateRequest, context: __SerdeContext): any => {\n return {\n ...(input.IsoCountryCode !== undefined &&\n input.IsoCountryCode !== null && { IsoCountryCode: input.IsoCountryCode }),\n ...(input.PhoneNumber !== undefined && input.PhoneNumber !== null && { PhoneNumber: input.PhoneNumber }),\n };\n};\n\nconst serializeAws_restJson1PublicEndpoint = (input: PublicEndpoint, context: __SerdeContext): any => {\n return {\n ...(input.Address !== undefined && input.Address !== null && { Address: input.Address }),\n ...(input.Attributes !== undefined &&\n input.Attributes !== null && {\n Attributes: serializeAws_restJson1MapOfListOf__string(input.Attributes, context),\n }),\n ...(input.ChannelType !== undefined && input.ChannelType !== null && { ChannelType: input.ChannelType }),\n ...(input.Demographic !== undefined &&\n input.Demographic !== null && {\n Demographic: serializeAws_restJson1EndpointDemographic(input.Demographic, context),\n }),\n ...(input.EffectiveDate !== undefined && input.EffectiveDate !== null && { EffectiveDate: input.EffectiveDate }),\n ...(input.EndpointStatus !== undefined &&\n input.EndpointStatus !== null && { EndpointStatus: input.EndpointStatus }),\n ...(input.Location !== undefined &&\n input.Location !== null && { Location: serializeAws_restJson1EndpointLocation(input.Location, context) }),\n ...(input.Metrics !== undefined &&\n input.Metrics !== null && { Metrics: serializeAws_restJson1MapOf__double(input.Metrics, context) }),\n ...(input.OptOut !== undefined && input.OptOut !== null && { OptOut: input.OptOut }),\n ...(input.RequestId !== undefined && input.RequestId !== null && { RequestId: input.RequestId }),\n ...(input.User !== undefined &&\n input.User !== null && { User: serializeAws_restJson1EndpointUser(input.User, context) }),\n };\n};\n\nconst serializeAws_restJson1PushMessageActivity = (input: PushMessageActivity, context: __SerdeContext): any => {\n return {\n ...(input.MessageConfig !== undefined &&\n input.MessageConfig !== null && {\n MessageConfig: serializeAws_restJson1JourneyPushMessage(input.MessageConfig, context),\n }),\n ...(input.NextActivity !== undefined && input.NextActivity !== null && { NextActivity: input.NextActivity }),\n ...(input.TemplateName !== undefined && input.TemplateName !== null && { TemplateName: input.TemplateName }),\n ...(input.TemplateVersion !== undefined &&\n input.TemplateVersion !== null && { TemplateVersion: input.TemplateVersion }),\n };\n};\n\nconst serializeAws_restJson1PushNotificationTemplateRequest = (\n input: PushNotificationTemplateRequest,\n context: __SerdeContext\n): any => {\n return {\n ...(input.ADM !== undefined &&\n input.ADM !== null && { ADM: serializeAws_restJson1AndroidPushNotificationTemplate(input.ADM, context) }),\n ...(input.APNS !== undefined &&\n input.APNS !== null && { APNS: serializeAws_restJson1APNSPushNotificationTemplate(input.APNS, context) }),\n ...(input.Baidu !== undefined &&\n input.Baidu !== null && { Baidu: serializeAws_restJson1AndroidPushNotificationTemplate(input.Baidu, context) }),\n ...(input.Default !== undefined &&\n input.Default !== null && {\n Default: serializeAws_restJson1DefaultPushNotificationTemplate(input.Default, context),\n }),\n ...(input.DefaultSubstitutions !== undefined &&\n input.DefaultSubstitutions !== null && { DefaultSubstitutions: input.DefaultSubstitutions }),\n ...(input.GCM !== undefined &&\n input.GCM !== null && { GCM: serializeAws_restJson1AndroidPushNotificationTemplate(input.GCM, context) }),\n ...(input.RecommenderId !== undefined && input.RecommenderId !== null && { RecommenderId: input.RecommenderId }),\n ...(input.TemplateDescription !== undefined &&\n input.TemplateDescription !== null && { TemplateDescription: input.TemplateDescription }),\n ...(input.tags !== undefined &&\n input.tags !== null && { tags: serializeAws_restJson1MapOf__string(input.tags, context) }),\n };\n};\n\nconst serializeAws_restJson1QuietTime = (input: QuietTime, context: __SerdeContext): any => {\n return {\n ...(input.End !== undefined && input.End !== null && { End: input.End }),\n ...(input.Start !== undefined && input.Start !== null && { Start: input.Start }),\n };\n};\n\nconst serializeAws_restJson1RandomSplitActivity = (input: RandomSplitActivity, context: __SerdeContext): any => {\n return {\n ...(input.Branches !== undefined &&\n input.Branches !== null && { Branches: serializeAws_restJson1ListOfRandomSplitEntry(input.Branches, context) }),\n };\n};\n\nconst serializeAws_restJson1RandomSplitEntry = (input: RandomSplitEntry, context: __SerdeContext): any => {\n return {\n ...(input.NextActivity !== undefined && input.NextActivity !== null && { NextActivity: input.NextActivity }),\n ...(input.Percentage !== undefined && input.Percentage !== null && { Percentage: input.Percentage }),\n };\n};\n\nconst serializeAws_restJson1RawEmail = (input: RawEmail, context: __SerdeContext): any => {\n return {\n ...(input.Data !== undefined && input.Data !== null && { Data: context.base64Encoder(input.Data) }),\n };\n};\n\nconst serializeAws_restJson1RecencyDimension = (input: RecencyDimension, context: __SerdeContext): any => {\n return {\n ...(input.Duration !== undefined && input.Duration !== null && { Duration: input.Duration }),\n ...(input.RecencyType !== undefined && input.RecencyType !== null && { RecencyType: input.RecencyType }),\n };\n};\n\nconst serializeAws_restJson1Schedule = (input: Schedule, context: __SerdeContext): any => {\n return {\n ...(input.EndTime !== undefined && input.EndTime !== null && { EndTime: input.EndTime }),\n ...(input.EventFilter !== undefined &&\n input.EventFilter !== null && {\n EventFilter: serializeAws_restJson1CampaignEventFilter(input.EventFilter, context),\n }),\n ...(input.Frequency !== undefined && input.Frequency !== null && { Frequency: input.Frequency }),\n ...(input.IsLocalTime !== undefined && input.IsLocalTime !== null && { IsLocalTime: input.IsLocalTime }),\n ...(input.QuietTime !== undefined &&\n input.QuietTime !== null && { QuietTime: serializeAws_restJson1QuietTime(input.QuietTime, context) }),\n ...(input.StartTime !== undefined && input.StartTime !== null && { StartTime: input.StartTime }),\n ...(input.Timezone !== undefined && input.Timezone !== null && { Timezone: input.Timezone }),\n };\n};\n\nconst serializeAws_restJson1SegmentBehaviors = (input: SegmentBehaviors, context: __SerdeContext): any => {\n return {\n ...(input.Recency !== undefined &&\n input.Recency !== null && { Recency: serializeAws_restJson1RecencyDimension(input.Recency, context) }),\n };\n};\n\nconst serializeAws_restJson1SegmentCondition = (input: SegmentCondition, context: __SerdeContext): any => {\n return {\n ...(input.SegmentId !== undefined && input.SegmentId !== null && { SegmentId: input.SegmentId }),\n };\n};\n\nconst serializeAws_restJson1SegmentDemographics = (input: SegmentDemographics, context: __SerdeContext): any => {\n return {\n ...(input.AppVersion !== undefined &&\n input.AppVersion !== null && { AppVersion: serializeAws_restJson1SetDimension(input.AppVersion, context) }),\n ...(input.Channel !== undefined &&\n input.Channel !== null && { Channel: serializeAws_restJson1SetDimension(input.Channel, context) }),\n ...(input.DeviceType !== undefined &&\n input.DeviceType !== null && { DeviceType: serializeAws_restJson1SetDimension(input.DeviceType, context) }),\n ...(input.Make !== undefined &&\n input.Make !== null && { Make: serializeAws_restJson1SetDimension(input.Make, context) }),\n ...(input.Model !== undefined &&\n input.Model !== null && { Model: serializeAws_restJson1SetDimension(input.Model, context) }),\n ...(input.Platform !== undefined &&\n input.Platform !== null && { Platform: serializeAws_restJson1SetDimension(input.Platform, context) }),\n };\n};\n\nconst serializeAws_restJson1SegmentDimensions = (input: SegmentDimensions, context: __SerdeContext): any => {\n return {\n ...(input.Attributes !== undefined &&\n input.Attributes !== null && {\n Attributes: serializeAws_restJson1MapOfAttributeDimension(input.Attributes, context),\n }),\n ...(input.Behavior !== undefined &&\n input.Behavior !== null && { Behavior: serializeAws_restJson1SegmentBehaviors(input.Behavior, context) }),\n ...(input.Demographic !== undefined &&\n input.Demographic !== null && {\n Demographic: serializeAws_restJson1SegmentDemographics(input.Demographic, context),\n }),\n ...(input.Location !== undefined &&\n input.Location !== null && { Location: serializeAws_restJson1SegmentLocation(input.Location, context) }),\n ...(input.Metrics !== undefined &&\n input.Metrics !== null && { Metrics: serializeAws_restJson1MapOfMetricDimension(input.Metrics, context) }),\n ...(input.UserAttributes !== undefined &&\n input.UserAttributes !== null && {\n UserAttributes: serializeAws_restJson1MapOfAttributeDimension(input.UserAttributes, context),\n }),\n };\n};\n\nconst serializeAws_restJson1SegmentGroup = (input: SegmentGroup, context: __SerdeContext): any => {\n return {\n ...(input.Dimensions !== undefined &&\n input.Dimensions !== null && {\n Dimensions: serializeAws_restJson1ListOfSegmentDimensions(input.Dimensions, context),\n }),\n ...(input.SourceSegments !== undefined &&\n input.SourceSegments !== null && {\n SourceSegments: serializeAws_restJson1ListOfSegmentReference(input.SourceSegments, context),\n }),\n ...(input.SourceType !== undefined && input.SourceType !== null && { SourceType: input.SourceType }),\n ...(input.Type !== undefined && input.Type !== null && { Type: input.Type }),\n };\n};\n\nconst serializeAws_restJson1SegmentGroupList = (input: SegmentGroupList, context: __SerdeContext): any => {\n return {\n ...(input.Groups !== undefined &&\n input.Groups !== null && { Groups: serializeAws_restJson1ListOfSegmentGroup(input.Groups, context) }),\n ...(input.Include !== undefined && input.Include !== null && { Include: input.Include }),\n };\n};\n\nconst serializeAws_restJson1SegmentLocation = (input: SegmentLocation, context: __SerdeContext): any => {\n return {\n ...(input.Country !== undefined &&\n input.Country !== null && { Country: serializeAws_restJson1SetDimension(input.Country, context) }),\n ...(input.GPSPoint !== undefined &&\n input.GPSPoint !== null && { GPSPoint: serializeAws_restJson1GPSPointDimension(input.GPSPoint, context) }),\n };\n};\n\nconst serializeAws_restJson1SegmentReference = (input: SegmentReference, context: __SerdeContext): any => {\n return {\n ...(input.Id !== undefined && input.Id !== null && { Id: input.Id }),\n ...(input.Version !== undefined && input.Version !== null && { Version: input.Version }),\n };\n};\n\nconst serializeAws_restJson1SendUsersMessageRequest = (\n input: SendUsersMessageRequest,\n context: __SerdeContext\n): any => {\n return {\n ...(input.Context !== undefined &&\n input.Context !== null && { Context: serializeAws_restJson1MapOf__string(input.Context, context) }),\n ...(input.MessageConfiguration !== undefined &&\n input.MessageConfiguration !== null && {\n MessageConfiguration: serializeAws_restJson1DirectMessageConfiguration(input.MessageConfiguration, context),\n }),\n ...(input.TemplateConfiguration !== undefined &&\n input.TemplateConfiguration !== null && {\n TemplateConfiguration: serializeAws_restJson1TemplateConfiguration(input.TemplateConfiguration, context),\n }),\n ...(input.TraceId !== undefined && input.TraceId !== null && { TraceId: input.TraceId }),\n ...(input.Users !== undefined &&\n input.Users !== null && { Users: serializeAws_restJson1MapOfEndpointSendConfiguration(input.Users, context) }),\n };\n};\n\nconst serializeAws_restJson1Session = (input: Session, context: __SerdeContext): any => {\n return {\n ...(input.Duration !== undefined && input.Duration !== null && { Duration: input.Duration }),\n ...(input.Id !== undefined && input.Id !== null && { Id: input.Id }),\n ...(input.StartTimestamp !== undefined &&\n input.StartTimestamp !== null && { StartTimestamp: input.StartTimestamp }),\n ...(input.StopTimestamp !== undefined && input.StopTimestamp !== null && { StopTimestamp: input.StopTimestamp }),\n };\n};\n\nconst serializeAws_restJson1SetDimension = (input: SetDimension, context: __SerdeContext): any => {\n return {\n ...(input.DimensionType !== undefined && input.DimensionType !== null && { DimensionType: input.DimensionType }),\n ...(input.Values !== undefined &&\n input.Values !== null && { Values: serializeAws_restJson1ListOf__string(input.Values, context) }),\n };\n};\n\nconst serializeAws_restJson1SimpleCondition = (input: SimpleCondition, context: __SerdeContext): any => {\n return {\n ...(input.EventCondition !== undefined &&\n input.EventCondition !== null && {\n EventCondition: serializeAws_restJson1EventCondition(input.EventCondition, context),\n }),\n ...(input.SegmentCondition !== undefined &&\n input.SegmentCondition !== null && {\n SegmentCondition: serializeAws_restJson1SegmentCondition(input.SegmentCondition, context),\n }),\n ...(input.SegmentDimensions !== undefined &&\n input.SegmentDimensions !== null && {\n segmentDimensions: serializeAws_restJson1SegmentDimensions(input.SegmentDimensions, context),\n }),\n };\n};\n\nconst serializeAws_restJson1SimpleEmail = (input: SimpleEmail, context: __SerdeContext): any => {\n return {\n ...(input.HtmlPart !== undefined &&\n input.HtmlPart !== null && { HtmlPart: serializeAws_restJson1SimpleEmailPart(input.HtmlPart, context) }),\n ...(input.Subject !== undefined &&\n input.Subject !== null && { Subject: serializeAws_restJson1SimpleEmailPart(input.Subject, context) }),\n ...(input.TextPart !== undefined &&\n input.TextPart !== null && { TextPart: serializeAws_restJson1SimpleEmailPart(input.TextPart, context) }),\n };\n};\n\nconst serializeAws_restJson1SimpleEmailPart = (input: SimpleEmailPart, context: __SerdeContext): any => {\n return {\n ...(input.Charset !== undefined && input.Charset !== null && { Charset: input.Charset }),\n ...(input.Data !== undefined && input.Data !== null && { Data: input.Data }),\n };\n};\n\nconst serializeAws_restJson1SMSChannelRequest = (input: SMSChannelRequest, context: __SerdeContext): any => {\n return {\n ...(input.Enabled !== undefined && input.Enabled !== null && { Enabled: input.Enabled }),\n ...(input.SenderId !== undefined && input.SenderId !== null && { SenderId: input.SenderId }),\n ...(input.ShortCode !== undefined && input.ShortCode !== null && { ShortCode: input.ShortCode }),\n };\n};\n\nconst serializeAws_restJson1SMSMessage = (input: SMSMessage, context: __SerdeContext): any => {\n return {\n ...(input.Body !== undefined && input.Body !== null && { Body: input.Body }),\n ...(input.Keyword !== undefined && input.Keyword !== null && { Keyword: input.Keyword }),\n ...(input.MediaUrl !== undefined && input.MediaUrl !== null && { MediaUrl: input.MediaUrl }),\n ...(input.MessageType !== undefined && input.MessageType !== null && { MessageType: input.MessageType }),\n ...(input.OriginationNumber !== undefined &&\n input.OriginationNumber !== null && { OriginationNumber: input.OriginationNumber }),\n ...(input.SenderId !== undefined && input.SenderId !== null && { SenderId: input.SenderId }),\n ...(input.Substitutions !== undefined &&\n input.Substitutions !== null && {\n Substitutions: serializeAws_restJson1MapOfListOf__string(input.Substitutions, context),\n }),\n };\n};\n\nconst serializeAws_restJson1SMSMessageActivity = (input: SMSMessageActivity, context: __SerdeContext): any => {\n return {\n ...(input.MessageConfig !== undefined &&\n input.MessageConfig !== null && {\n MessageConfig: serializeAws_restJson1JourneySMSMessage(input.MessageConfig, context),\n }),\n ...(input.NextActivity !== undefined && input.NextActivity !== null && { NextActivity: input.NextActivity }),\n ...(input.TemplateName !== undefined && input.TemplateName !== null && { TemplateName: input.TemplateName }),\n ...(input.TemplateVersion !== undefined &&\n input.TemplateVersion !== null && { TemplateVersion: input.TemplateVersion }),\n };\n};\n\nconst serializeAws_restJson1SMSTemplateRequest = (input: SMSTemplateRequest, context: __SerdeContext): any => {\n return {\n ...(input.Body !== undefined && input.Body !== null && { Body: input.Body }),\n ...(input.DefaultSubstitutions !== undefined &&\n input.DefaultSubstitutions !== null && { DefaultSubstitutions: input.DefaultSubstitutions }),\n ...(input.RecommenderId !== undefined && input.RecommenderId !== null && { RecommenderId: input.RecommenderId }),\n ...(input.TemplateDescription !== undefined &&\n input.TemplateDescription !== null && { TemplateDescription: input.TemplateDescription }),\n ...(input.tags !== undefined &&\n input.tags !== null && { tags: serializeAws_restJson1MapOf__string(input.tags, context) }),\n };\n};\n\nconst serializeAws_restJson1StartCondition = (input: StartCondition, context: __SerdeContext): any => {\n return {\n ...(input.Description !== undefined && input.Description !== null && { Description: input.Description }),\n ...(input.EventStartCondition !== undefined &&\n input.EventStartCondition !== null && {\n EventStartCondition: serializeAws_restJson1EventStartCondition(input.EventStartCondition, context),\n }),\n ...(input.SegmentStartCondition !== undefined &&\n input.SegmentStartCondition !== null && {\n SegmentStartCondition: serializeAws_restJson1SegmentCondition(input.SegmentStartCondition, context),\n }),\n };\n};\n\nconst serializeAws_restJson1TagsModel = (input: TagsModel, context: __SerdeContext): any => {\n return {\n ...(input.tags !== undefined &&\n input.tags !== null && { tags: serializeAws_restJson1MapOf__string(input.tags, context) }),\n };\n};\n\nconst serializeAws_restJson1Template = (input: Template, context: __SerdeContext): any => {\n return {\n ...(input.Name !== undefined && input.Name !== null && { Name: input.Name }),\n ...(input.Version !== undefined && input.Version !== null && { Version: input.Version }),\n };\n};\n\nconst serializeAws_restJson1TemplateActiveVersionRequest = (\n input: TemplateActiveVersionRequest,\n context: __SerdeContext\n): any => {\n return {\n ...(input.Version !== undefined && input.Version !== null && { Version: input.Version }),\n };\n};\n\nconst serializeAws_restJson1TemplateConfiguration = (input: TemplateConfiguration, context: __SerdeContext): any => {\n return {\n ...(input.EmailTemplate !== undefined &&\n input.EmailTemplate !== null && { EmailTemplate: serializeAws_restJson1Template(input.EmailTemplate, context) }),\n ...(input.PushTemplate !== undefined &&\n input.PushTemplate !== null && { PushTemplate: serializeAws_restJson1Template(input.PushTemplate, context) }),\n ...(input.SMSTemplate !== undefined &&\n input.SMSTemplate !== null && { SMSTemplate: serializeAws_restJson1Template(input.SMSTemplate, context) }),\n ...(input.VoiceTemplate !== undefined &&\n input.VoiceTemplate !== null && { VoiceTemplate: serializeAws_restJson1Template(input.VoiceTemplate, context) }),\n };\n};\n\nconst serializeAws_restJson1UpdateAttributesRequest = (\n input: UpdateAttributesRequest,\n context: __SerdeContext\n): any => {\n return {\n ...(input.Blacklist !== undefined &&\n input.Blacklist !== null && { Blacklist: serializeAws_restJson1ListOf__string(input.Blacklist, context) }),\n };\n};\n\nconst serializeAws_restJson1UpdateRecommenderConfigurationShape = (\n input: UpdateRecommenderConfigurationShape,\n context: __SerdeContext\n): any => {\n return {\n ...(input.Attributes !== undefined &&\n input.Attributes !== null && { Attributes: serializeAws_restJson1MapOf__string(input.Attributes, context) }),\n ...(input.Description !== undefined && input.Description !== null && { Description: input.Description }),\n ...(input.Name !== undefined && input.Name !== null && { Name: input.Name }),\n ...(input.RecommendationProviderIdType !== undefined &&\n input.RecommendationProviderIdType !== null && {\n RecommendationProviderIdType: input.RecommendationProviderIdType,\n }),\n ...(input.RecommendationProviderRoleArn !== undefined &&\n input.RecommendationProviderRoleArn !== null && {\n RecommendationProviderRoleArn: input.RecommendationProviderRoleArn,\n }),\n ...(input.RecommendationProviderUri !== undefined &&\n input.RecommendationProviderUri !== null && { RecommendationProviderUri: input.RecommendationProviderUri }),\n ...(input.RecommendationTransformerUri !== undefined &&\n input.RecommendationTransformerUri !== null && {\n RecommendationTransformerUri: input.RecommendationTransformerUri,\n }),\n ...(input.RecommendationsDisplayName !== undefined &&\n input.RecommendationsDisplayName !== null && { RecommendationsDisplayName: input.RecommendationsDisplayName }),\n ...(input.RecommendationsPerMessage !== undefined &&\n input.RecommendationsPerMessage !== null && { RecommendationsPerMessage: input.RecommendationsPerMessage }),\n };\n};\n\nconst serializeAws_restJson1VoiceChannelRequest = (input: VoiceChannelRequest, context: __SerdeContext): any => {\n return {\n ...(input.Enabled !== undefined && input.Enabled !== null && { Enabled: input.Enabled }),\n };\n};\n\nconst serializeAws_restJson1VoiceMessage = (input: VoiceMessage, context: __SerdeContext): any => {\n return {\n ...(input.Body !== undefined && input.Body !== null && { Body: input.Body }),\n ...(input.LanguageCode !== undefined && input.LanguageCode !== null && { LanguageCode: input.LanguageCode }),\n ...(input.OriginationNumber !== undefined &&\n input.OriginationNumber !== null && { OriginationNumber: input.OriginationNumber }),\n ...(input.Substitutions !== undefined &&\n input.Substitutions !== null && {\n Substitutions: serializeAws_restJson1MapOfListOf__string(input.Substitutions, context),\n }),\n ...(input.VoiceId !== undefined && input.VoiceId !== null && { VoiceId: input.VoiceId }),\n };\n};\n\nconst serializeAws_restJson1VoiceTemplateRequest = (input: VoiceTemplateRequest, context: __SerdeContext): any => {\n return {\n ...(input.Body !== undefined && input.Body !== null && { Body: input.Body }),\n ...(input.DefaultSubstitutions !== undefined &&\n input.DefaultSubstitutions !== null && { DefaultSubstitutions: input.DefaultSubstitutions }),\n ...(input.LanguageCode !== undefined && input.LanguageCode !== null && { LanguageCode: input.LanguageCode }),\n ...(input.TemplateDescription !== undefined &&\n input.TemplateDescription !== null && { TemplateDescription: input.TemplateDescription }),\n ...(input.VoiceId !== undefined && input.VoiceId !== null && { VoiceId: input.VoiceId }),\n ...(input.tags !== undefined &&\n input.tags !== null && { tags: serializeAws_restJson1MapOf__string(input.tags, context) }),\n };\n};\n\nconst serializeAws_restJson1WaitActivity = (input: WaitActivity, context: __SerdeContext): any => {\n return {\n ...(input.NextActivity !== undefined && input.NextActivity !== null && { NextActivity: input.NextActivity }),\n ...(input.WaitTime !== undefined &&\n input.WaitTime !== null && { WaitTime: serializeAws_restJson1WaitTime(input.WaitTime, context) }),\n };\n};\n\nconst serializeAws_restJson1WaitTime = (input: WaitTime, context: __SerdeContext): any => {\n return {\n ...(input.WaitFor !== undefined && input.WaitFor !== null && { WaitFor: input.WaitFor }),\n ...(input.WaitUntil !== undefined && input.WaitUntil !== null && { WaitUntil: input.WaitUntil }),\n };\n};\n\nconst serializeAws_restJson1WriteApplicationSettingsRequest = (\n input: WriteApplicationSettingsRequest,\n context: __SerdeContext\n): any => {\n return {\n ...(input.CampaignHook !== undefined &&\n input.CampaignHook !== null && { CampaignHook: serializeAws_restJson1CampaignHook(input.CampaignHook, context) }),\n ...(input.CloudWatchMetricsEnabled !== undefined &&\n input.CloudWatchMetricsEnabled !== null && { CloudWatchMetricsEnabled: input.CloudWatchMetricsEnabled }),\n ...(input.EventTaggingEnabled !== undefined &&\n input.EventTaggingEnabled !== null && { EventTaggingEnabled: input.EventTaggingEnabled }),\n ...(input.Limits !== undefined &&\n input.Limits !== null && { Limits: serializeAws_restJson1CampaignLimits(input.Limits, context) }),\n ...(input.QuietTime !== undefined &&\n input.QuietTime !== null && { QuietTime: serializeAws_restJson1QuietTime(input.QuietTime, context) }),\n };\n};\n\nconst serializeAws_restJson1WriteCampaignRequest = (input: WriteCampaignRequest, context: __SerdeContext): any => {\n return {\n ...(input.AdditionalTreatments !== undefined &&\n input.AdditionalTreatments !== null && {\n AdditionalTreatments: serializeAws_restJson1ListOfWriteTreatmentResource(input.AdditionalTreatments, context),\n }),\n ...(input.CustomDeliveryConfiguration !== undefined &&\n input.CustomDeliveryConfiguration !== null && {\n CustomDeliveryConfiguration: serializeAws_restJson1CustomDeliveryConfiguration(\n input.CustomDeliveryConfiguration,\n context\n ),\n }),\n ...(input.Description !== undefined && input.Description !== null && { Description: input.Description }),\n ...(input.HoldoutPercent !== undefined &&\n input.HoldoutPercent !== null && { HoldoutPercent: input.HoldoutPercent }),\n ...(input.Hook !== undefined &&\n input.Hook !== null && { Hook: serializeAws_restJson1CampaignHook(input.Hook, context) }),\n ...(input.IsPaused !== undefined && input.IsPaused !== null && { IsPaused: input.IsPaused }),\n ...(input.Limits !== undefined &&\n input.Limits !== null && { Limits: serializeAws_restJson1CampaignLimits(input.Limits, context) }),\n ...(input.MessageConfiguration !== undefined &&\n input.MessageConfiguration !== null && {\n MessageConfiguration: serializeAws_restJson1MessageConfiguration(input.MessageConfiguration, context),\n }),\n ...(input.Name !== undefined && input.Name !== null && { Name: input.Name }),\n ...(input.Schedule !== undefined &&\n input.Schedule !== null && { Schedule: serializeAws_restJson1Schedule(input.Schedule, context) }),\n ...(input.SegmentId !== undefined && input.SegmentId !== null && { SegmentId: input.SegmentId }),\n ...(input.SegmentVersion !== undefined &&\n input.SegmentVersion !== null && { SegmentVersion: input.SegmentVersion }),\n ...(input.TemplateConfiguration !== undefined &&\n input.TemplateConfiguration !== null && {\n TemplateConfiguration: serializeAws_restJson1TemplateConfiguration(input.TemplateConfiguration, context),\n }),\n ...(input.TreatmentDescription !== undefined &&\n input.TreatmentDescription !== null && { TreatmentDescription: input.TreatmentDescription }),\n ...(input.TreatmentName !== undefined && input.TreatmentName !== null && { TreatmentName: input.TreatmentName }),\n ...(input.tags !== undefined &&\n input.tags !== null && { tags: serializeAws_restJson1MapOf__string(input.tags, context) }),\n };\n};\n\nconst serializeAws_restJson1WriteEventStream = (input: WriteEventStream, context: __SerdeContext): any => {\n return {\n ...(input.DestinationStreamArn !== undefined &&\n input.DestinationStreamArn !== null && { DestinationStreamArn: input.DestinationStreamArn }),\n ...(input.RoleArn !== undefined && input.RoleArn !== null && { RoleArn: input.RoleArn }),\n };\n};\n\nconst serializeAws_restJson1WriteJourneyRequest = (input: WriteJourneyRequest, context: __SerdeContext): any => {\n return {\n ...(input.Activities !== undefined &&\n input.Activities !== null && { Activities: serializeAws_restJson1MapOfActivity(input.Activities, context) }),\n ...(input.CreationDate !== undefined && input.CreationDate !== null && { CreationDate: input.CreationDate }),\n ...(input.LastModifiedDate !== undefined &&\n input.LastModifiedDate !== null && { LastModifiedDate: input.LastModifiedDate }),\n ...(input.Limits !== undefined &&\n input.Limits !== null && { Limits: serializeAws_restJson1JourneyLimits(input.Limits, context) }),\n ...(input.LocalTime !== undefined && input.LocalTime !== null && { LocalTime: input.LocalTime }),\n ...(input.Name !== undefined && input.Name !== null && { Name: input.Name }),\n ...(input.QuietTime !== undefined &&\n input.QuietTime !== null && { QuietTime: serializeAws_restJson1QuietTime(input.QuietTime, context) }),\n ...(input.RefreshFrequency !== undefined &&\n input.RefreshFrequency !== null && { RefreshFrequency: input.RefreshFrequency }),\n ...(input.Schedule !== undefined &&\n input.Schedule !== null && { Schedule: serializeAws_restJson1JourneySchedule(input.Schedule, context) }),\n ...(input.StartActivity !== undefined && input.StartActivity !== null && { StartActivity: input.StartActivity }),\n ...(input.StartCondition !== undefined &&\n input.StartCondition !== null && {\n StartCondition: serializeAws_restJson1StartCondition(input.StartCondition, context),\n }),\n ...(input.State !== undefined && input.State !== null && { State: input.State }),\n };\n};\n\nconst serializeAws_restJson1WriteSegmentRequest = (input: WriteSegmentRequest, context: __SerdeContext): any => {\n return {\n ...(input.Dimensions !== undefined &&\n input.Dimensions !== null && { Dimensions: serializeAws_restJson1SegmentDimensions(input.Dimensions, context) }),\n ...(input.Name !== undefined && input.Name !== null && { Name: input.Name }),\n ...(input.SegmentGroups !== undefined &&\n input.SegmentGroups !== null && {\n SegmentGroups: serializeAws_restJson1SegmentGroupList(input.SegmentGroups, context),\n }),\n ...(input.tags !== undefined &&\n input.tags !== null && { tags: serializeAws_restJson1MapOf__string(input.tags, context) }),\n };\n};\n\nconst serializeAws_restJson1WriteTreatmentResource = (input: WriteTreatmentResource, context: __SerdeContext): any => {\n return {\n ...(input.CustomDeliveryConfiguration !== undefined &&\n input.CustomDeliveryConfiguration !== null && {\n CustomDeliveryConfiguration: serializeAws_restJson1CustomDeliveryConfiguration(\n input.CustomDeliveryConfiguration,\n context\n ),\n }),\n ...(input.MessageConfiguration !== undefined &&\n input.MessageConfiguration !== null && {\n MessageConfiguration: serializeAws_restJson1MessageConfiguration(input.MessageConfiguration, context),\n }),\n ...(input.Schedule !== undefined &&\n input.Schedule !== null && { Schedule: serializeAws_restJson1Schedule(input.Schedule, context) }),\n ...(input.SizePercent !== undefined && input.SizePercent !== null && { SizePercent: input.SizePercent }),\n ...(input.TemplateConfiguration !== undefined &&\n input.TemplateConfiguration !== null && {\n TemplateConfiguration: serializeAws_restJson1TemplateConfiguration(input.TemplateConfiguration, context),\n }),\n ...(input.TreatmentDescription !== undefined &&\n input.TreatmentDescription !== null && { TreatmentDescription: input.TreatmentDescription }),\n ...(input.TreatmentName !== undefined && input.TreatmentName !== null && { TreatmentName: input.TreatmentName }),\n };\n};\n\nconst deserializeAws_restJson1ActivitiesResponse = (output: any, context: __SerdeContext): ActivitiesResponse => {\n return {\n Item:\n output.Item !== undefined && output.Item !== null\n ? deserializeAws_restJson1ListOfActivityResponse(output.Item, context)\n : undefined,\n NextToken: output.NextToken !== undefined && output.NextToken !== null ? output.NextToken : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1Activity = (output: any, context: __SerdeContext): Activity => {\n return {\n CUSTOM:\n output.CUSTOM !== undefined && output.CUSTOM !== null\n ? deserializeAws_restJson1CustomMessageActivity(output.CUSTOM, context)\n : undefined,\n ConditionalSplit:\n output.ConditionalSplit !== undefined && output.ConditionalSplit !== null\n ? deserializeAws_restJson1ConditionalSplitActivity(output.ConditionalSplit, context)\n : undefined,\n Description: output.Description !== undefined && output.Description !== null ? output.Description : undefined,\n EMAIL:\n output.EMAIL !== undefined && output.EMAIL !== null\n ? deserializeAws_restJson1EmailMessageActivity(output.EMAIL, context)\n : undefined,\n Holdout:\n output.Holdout !== undefined && output.Holdout !== null\n ? deserializeAws_restJson1HoldoutActivity(output.Holdout, context)\n : undefined,\n MultiCondition:\n output.MultiCondition !== undefined && output.MultiCondition !== null\n ? deserializeAws_restJson1MultiConditionalSplitActivity(output.MultiCondition, context)\n : undefined,\n PUSH:\n output.PUSH !== undefined && output.PUSH !== null\n ? deserializeAws_restJson1PushMessageActivity(output.PUSH, context)\n : undefined,\n RandomSplit:\n output.RandomSplit !== undefined && output.RandomSplit !== null\n ? deserializeAws_restJson1RandomSplitActivity(output.RandomSplit, context)\n : undefined,\n SMS:\n output.SMS !== undefined && output.SMS !== null\n ? deserializeAws_restJson1SMSMessageActivity(output.SMS, context)\n : undefined,\n Wait:\n output.Wait !== undefined && output.Wait !== null\n ? deserializeAws_restJson1WaitActivity(output.Wait, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1ActivityResponse = (output: any, context: __SerdeContext): ActivityResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n CampaignId: output.CampaignId !== undefined && output.CampaignId !== null ? output.CampaignId : undefined,\n End: output.End !== undefined && output.End !== null ? output.End : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n Result: output.Result !== undefined && output.Result !== null ? output.Result : undefined,\n ScheduledStart:\n output.ScheduledStart !== undefined && output.ScheduledStart !== null ? output.ScheduledStart : undefined,\n Start: output.Start !== undefined && output.Start !== null ? output.Start : undefined,\n State: output.State !== undefined && output.State !== null ? output.State : undefined,\n SuccessfulEndpointCount:\n output.SuccessfulEndpointCount !== undefined && output.SuccessfulEndpointCount !== null\n ? output.SuccessfulEndpointCount\n : undefined,\n TimezonesCompletedCount:\n output.TimezonesCompletedCount !== undefined && output.TimezonesCompletedCount !== null\n ? output.TimezonesCompletedCount\n : undefined,\n TimezonesTotalCount:\n output.TimezonesTotalCount !== undefined && output.TimezonesTotalCount !== null\n ? output.TimezonesTotalCount\n : undefined,\n TotalEndpointCount:\n output.TotalEndpointCount !== undefined && output.TotalEndpointCount !== null\n ? output.TotalEndpointCount\n : undefined,\n TreatmentId: output.TreatmentId !== undefined && output.TreatmentId !== null ? output.TreatmentId : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1ADMChannelResponse = (output: any, context: __SerdeContext): ADMChannelResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n Enabled: output.Enabled !== undefined && output.Enabled !== null ? output.Enabled : undefined,\n HasCredential:\n output.HasCredential !== undefined && output.HasCredential !== null ? output.HasCredential : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n IsArchived: output.IsArchived !== undefined && output.IsArchived !== null ? output.IsArchived : undefined,\n LastModifiedBy:\n output.LastModifiedBy !== undefined && output.LastModifiedBy !== null ? output.LastModifiedBy : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n Platform: output.Platform !== undefined && output.Platform !== null ? output.Platform : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1AndroidPushNotificationTemplate = (\n output: any,\n context: __SerdeContext\n): AndroidPushNotificationTemplate => {\n return {\n Action: output.Action !== undefined && output.Action !== null ? output.Action : undefined,\n Body: output.Body !== undefined && output.Body !== null ? output.Body : undefined,\n ImageIconUrl: output.ImageIconUrl !== undefined && output.ImageIconUrl !== null ? output.ImageIconUrl : undefined,\n ImageUrl: output.ImageUrl !== undefined && output.ImageUrl !== null ? output.ImageUrl : undefined,\n RawContent: output.RawContent !== undefined && output.RawContent !== null ? output.RawContent : undefined,\n SmallImageIconUrl:\n output.SmallImageIconUrl !== undefined && output.SmallImageIconUrl !== null\n ? output.SmallImageIconUrl\n : undefined,\n Sound: output.Sound !== undefined && output.Sound !== null ? output.Sound : undefined,\n Title: output.Title !== undefined && output.Title !== null ? output.Title : undefined,\n Url: output.Url !== undefined && output.Url !== null ? output.Url : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1APNSChannelResponse = (output: any, context: __SerdeContext): APNSChannelResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n DefaultAuthenticationMethod:\n output.DefaultAuthenticationMethod !== undefined && output.DefaultAuthenticationMethod !== null\n ? output.DefaultAuthenticationMethod\n : undefined,\n Enabled: output.Enabled !== undefined && output.Enabled !== null ? output.Enabled : undefined,\n HasCredential:\n output.HasCredential !== undefined && output.HasCredential !== null ? output.HasCredential : undefined,\n HasTokenKey: output.HasTokenKey !== undefined && output.HasTokenKey !== null ? output.HasTokenKey : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n IsArchived: output.IsArchived !== undefined && output.IsArchived !== null ? output.IsArchived : undefined,\n LastModifiedBy:\n output.LastModifiedBy !== undefined && output.LastModifiedBy !== null ? output.LastModifiedBy : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n Platform: output.Platform !== undefined && output.Platform !== null ? output.Platform : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1APNSPushNotificationTemplate = (\n output: any,\n context: __SerdeContext\n): APNSPushNotificationTemplate => {\n return {\n Action: output.Action !== undefined && output.Action !== null ? output.Action : undefined,\n Body: output.Body !== undefined && output.Body !== null ? output.Body : undefined,\n MediaUrl: output.MediaUrl !== undefined && output.MediaUrl !== null ? output.MediaUrl : undefined,\n RawContent: output.RawContent !== undefined && output.RawContent !== null ? output.RawContent : undefined,\n Sound: output.Sound !== undefined && output.Sound !== null ? output.Sound : undefined,\n Title: output.Title !== undefined && output.Title !== null ? output.Title : undefined,\n Url: output.Url !== undefined && output.Url !== null ? output.Url : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1APNSSandboxChannelResponse = (\n output: any,\n context: __SerdeContext\n): APNSSandboxChannelResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n DefaultAuthenticationMethod:\n output.DefaultAuthenticationMethod !== undefined && output.DefaultAuthenticationMethod !== null\n ? output.DefaultAuthenticationMethod\n : undefined,\n Enabled: output.Enabled !== undefined && output.Enabled !== null ? output.Enabled : undefined,\n HasCredential:\n output.HasCredential !== undefined && output.HasCredential !== null ? output.HasCredential : undefined,\n HasTokenKey: output.HasTokenKey !== undefined && output.HasTokenKey !== null ? output.HasTokenKey : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n IsArchived: output.IsArchived !== undefined && output.IsArchived !== null ? output.IsArchived : undefined,\n LastModifiedBy:\n output.LastModifiedBy !== undefined && output.LastModifiedBy !== null ? output.LastModifiedBy : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n Platform: output.Platform !== undefined && output.Platform !== null ? output.Platform : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1APNSVoipChannelResponse = (\n output: any,\n context: __SerdeContext\n): APNSVoipChannelResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n DefaultAuthenticationMethod:\n output.DefaultAuthenticationMethod !== undefined && output.DefaultAuthenticationMethod !== null\n ? output.DefaultAuthenticationMethod\n : undefined,\n Enabled: output.Enabled !== undefined && output.Enabled !== null ? output.Enabled : undefined,\n HasCredential:\n output.HasCredential !== undefined && output.HasCredential !== null ? output.HasCredential : undefined,\n HasTokenKey: output.HasTokenKey !== undefined && output.HasTokenKey !== null ? output.HasTokenKey : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n IsArchived: output.IsArchived !== undefined && output.IsArchived !== null ? output.IsArchived : undefined,\n LastModifiedBy:\n output.LastModifiedBy !== undefined && output.LastModifiedBy !== null ? output.LastModifiedBy : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n Platform: output.Platform !== undefined && output.Platform !== null ? output.Platform : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1APNSVoipSandboxChannelResponse = (\n output: any,\n context: __SerdeContext\n): APNSVoipSandboxChannelResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n DefaultAuthenticationMethod:\n output.DefaultAuthenticationMethod !== undefined && output.DefaultAuthenticationMethod !== null\n ? output.DefaultAuthenticationMethod\n : undefined,\n Enabled: output.Enabled !== undefined && output.Enabled !== null ? output.Enabled : undefined,\n HasCredential:\n output.HasCredential !== undefined && output.HasCredential !== null ? output.HasCredential : undefined,\n HasTokenKey: output.HasTokenKey !== undefined && output.HasTokenKey !== null ? output.HasTokenKey : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n IsArchived: output.IsArchived !== undefined && output.IsArchived !== null ? output.IsArchived : undefined,\n LastModifiedBy:\n output.LastModifiedBy !== undefined && output.LastModifiedBy !== null ? output.LastModifiedBy : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n Platform: output.Platform !== undefined && output.Platform !== null ? output.Platform : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1ApplicationDateRangeKpiResponse = (\n output: any,\n context: __SerdeContext\n): ApplicationDateRangeKpiResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n EndTime: output.EndTime !== undefined && output.EndTime !== null ? new Date(output.EndTime) : undefined,\n KpiName: output.KpiName !== undefined && output.KpiName !== null ? output.KpiName : undefined,\n KpiResult:\n output.KpiResult !== undefined && output.KpiResult !== null\n ? deserializeAws_restJson1BaseKpiResult(output.KpiResult, context)\n : undefined,\n NextToken: output.NextToken !== undefined && output.NextToken !== null ? output.NextToken : undefined,\n StartTime: output.StartTime !== undefined && output.StartTime !== null ? new Date(output.StartTime) : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1ApplicationResponse = (output: any, context: __SerdeContext): ApplicationResponse => {\n return {\n Arn: output.Arn !== undefined && output.Arn !== null ? output.Arn : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n Name: output.Name !== undefined && output.Name !== null ? output.Name : undefined,\n tags:\n output.tags !== undefined && output.tags !== null\n ? deserializeAws_restJson1MapOf__string(output.tags, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1ApplicationSettingsResource = (\n output: any,\n context: __SerdeContext\n): ApplicationSettingsResource => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n CampaignHook:\n output.CampaignHook !== undefined && output.CampaignHook !== null\n ? deserializeAws_restJson1CampaignHook(output.CampaignHook, context)\n : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n Limits:\n output.Limits !== undefined && output.Limits !== null\n ? deserializeAws_restJson1CampaignLimits(output.Limits, context)\n : undefined,\n QuietTime:\n output.QuietTime !== undefined && output.QuietTime !== null\n ? deserializeAws_restJson1QuietTime(output.QuietTime, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1ApplicationsResponse = (output: any, context: __SerdeContext): ApplicationsResponse => {\n return {\n Item:\n output.Item !== undefined && output.Item !== null\n ? deserializeAws_restJson1ListOfApplicationResponse(output.Item, context)\n : undefined,\n NextToken: output.NextToken !== undefined && output.NextToken !== null ? output.NextToken : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1AttributeDimension = (output: any, context: __SerdeContext): AttributeDimension => {\n return {\n AttributeType:\n output.AttributeType !== undefined && output.AttributeType !== null ? output.AttributeType : undefined,\n Values:\n output.Values !== undefined && output.Values !== null\n ? deserializeAws_restJson1ListOf__string(output.Values, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1AttributesResource = (output: any, context: __SerdeContext): AttributesResource => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n AttributeType:\n output.AttributeType !== undefined && output.AttributeType !== null ? output.AttributeType : undefined,\n Attributes:\n output.Attributes !== undefined && output.Attributes !== null\n ? deserializeAws_restJson1ListOf__string(output.Attributes, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1BaiduChannelResponse = (output: any, context: __SerdeContext): BaiduChannelResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n Credential: output.Credential !== undefined && output.Credential !== null ? output.Credential : undefined,\n Enabled: output.Enabled !== undefined && output.Enabled !== null ? output.Enabled : undefined,\n HasCredential:\n output.HasCredential !== undefined && output.HasCredential !== null ? output.HasCredential : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n IsArchived: output.IsArchived !== undefined && output.IsArchived !== null ? output.IsArchived : undefined,\n LastModifiedBy:\n output.LastModifiedBy !== undefined && output.LastModifiedBy !== null ? output.LastModifiedBy : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n Platform: output.Platform !== undefined && output.Platform !== null ? output.Platform : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1BaseKpiResult = (output: any, context: __SerdeContext): BaseKpiResult => {\n return {\n Rows:\n output.Rows !== undefined && output.Rows !== null\n ? deserializeAws_restJson1ListOfResultRow(output.Rows, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1CampaignCustomMessage = (output: any, context: __SerdeContext): CampaignCustomMessage => {\n return {\n Data: output.Data !== undefined && output.Data !== null ? output.Data : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1CampaignDateRangeKpiResponse = (\n output: any,\n context: __SerdeContext\n): CampaignDateRangeKpiResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n CampaignId: output.CampaignId !== undefined && output.CampaignId !== null ? output.CampaignId : undefined,\n EndTime: output.EndTime !== undefined && output.EndTime !== null ? new Date(output.EndTime) : undefined,\n KpiName: output.KpiName !== undefined && output.KpiName !== null ? output.KpiName : undefined,\n KpiResult:\n output.KpiResult !== undefined && output.KpiResult !== null\n ? deserializeAws_restJson1BaseKpiResult(output.KpiResult, context)\n : undefined,\n NextToken: output.NextToken !== undefined && output.NextToken !== null ? output.NextToken : undefined,\n StartTime: output.StartTime !== undefined && output.StartTime !== null ? new Date(output.StartTime) : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1CampaignEmailMessage = (output: any, context: __SerdeContext): CampaignEmailMessage => {\n return {\n Body: output.Body !== undefined && output.Body !== null ? output.Body : undefined,\n FromAddress: output.FromAddress !== undefined && output.FromAddress !== null ? output.FromAddress : undefined,\n HtmlBody: output.HtmlBody !== undefined && output.HtmlBody !== null ? output.HtmlBody : undefined,\n Title: output.Title !== undefined && output.Title !== null ? output.Title : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1CampaignEventFilter = (output: any, context: __SerdeContext): CampaignEventFilter => {\n return {\n Dimensions:\n output.Dimensions !== undefined && output.Dimensions !== null\n ? deserializeAws_restJson1EventDimensions(output.Dimensions, context)\n : undefined,\n FilterType: output.FilterType !== undefined && output.FilterType !== null ? output.FilterType : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1CampaignHook = (output: any, context: __SerdeContext): CampaignHook => {\n return {\n LambdaFunctionName:\n output.LambdaFunctionName !== undefined && output.LambdaFunctionName !== null\n ? output.LambdaFunctionName\n : undefined,\n Mode: output.Mode !== undefined && output.Mode !== null ? output.Mode : undefined,\n WebUrl: output.WebUrl !== undefined && output.WebUrl !== null ? output.WebUrl : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1CampaignLimits = (output: any, context: __SerdeContext): CampaignLimits => {\n return {\n Daily: output.Daily !== undefined && output.Daily !== null ? output.Daily : undefined,\n MaximumDuration:\n output.MaximumDuration !== undefined && output.MaximumDuration !== null ? output.MaximumDuration : undefined,\n MessagesPerSecond:\n output.MessagesPerSecond !== undefined && output.MessagesPerSecond !== null\n ? output.MessagesPerSecond\n : undefined,\n Total: output.Total !== undefined && output.Total !== null ? output.Total : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1CampaignResponse = (output: any, context: __SerdeContext): CampaignResponse => {\n return {\n AdditionalTreatments:\n output.AdditionalTreatments !== undefined && output.AdditionalTreatments !== null\n ? deserializeAws_restJson1ListOfTreatmentResource(output.AdditionalTreatments, context)\n : undefined,\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n Arn: output.Arn !== undefined && output.Arn !== null ? output.Arn : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n CustomDeliveryConfiguration:\n output.CustomDeliveryConfiguration !== undefined && output.CustomDeliveryConfiguration !== null\n ? deserializeAws_restJson1CustomDeliveryConfiguration(output.CustomDeliveryConfiguration, context)\n : undefined,\n DefaultState:\n output.DefaultState !== undefined && output.DefaultState !== null\n ? deserializeAws_restJson1CampaignState(output.DefaultState, context)\n : undefined,\n Description: output.Description !== undefined && output.Description !== null ? output.Description : undefined,\n HoldoutPercent:\n output.HoldoutPercent !== undefined && output.HoldoutPercent !== null ? output.HoldoutPercent : undefined,\n Hook:\n output.Hook !== undefined && output.Hook !== null\n ? deserializeAws_restJson1CampaignHook(output.Hook, context)\n : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n IsPaused: output.IsPaused !== undefined && output.IsPaused !== null ? output.IsPaused : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n Limits:\n output.Limits !== undefined && output.Limits !== null\n ? deserializeAws_restJson1CampaignLimits(output.Limits, context)\n : undefined,\n MessageConfiguration:\n output.MessageConfiguration !== undefined && output.MessageConfiguration !== null\n ? deserializeAws_restJson1MessageConfiguration(output.MessageConfiguration, context)\n : undefined,\n Name: output.Name !== undefined && output.Name !== null ? output.Name : undefined,\n Schedule:\n output.Schedule !== undefined && output.Schedule !== null\n ? deserializeAws_restJson1Schedule(output.Schedule, context)\n : undefined,\n SegmentId: output.SegmentId !== undefined && output.SegmentId !== null ? output.SegmentId : undefined,\n SegmentVersion:\n output.SegmentVersion !== undefined && output.SegmentVersion !== null ? output.SegmentVersion : undefined,\n State:\n output.State !== undefined && output.State !== null\n ? deserializeAws_restJson1CampaignState(output.State, context)\n : undefined,\n TemplateConfiguration:\n output.TemplateConfiguration !== undefined && output.TemplateConfiguration !== null\n ? deserializeAws_restJson1TemplateConfiguration(output.TemplateConfiguration, context)\n : undefined,\n TreatmentDescription:\n output.TreatmentDescription !== undefined && output.TreatmentDescription !== null\n ? output.TreatmentDescription\n : undefined,\n TreatmentName:\n output.TreatmentName !== undefined && output.TreatmentName !== null ? output.TreatmentName : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n tags:\n output.tags !== undefined && output.tags !== null\n ? deserializeAws_restJson1MapOf__string(output.tags, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1CampaignSmsMessage = (output: any, context: __SerdeContext): CampaignSmsMessage => {\n return {\n Body: output.Body !== undefined && output.Body !== null ? output.Body : undefined,\n MessageType: output.MessageType !== undefined && output.MessageType !== null ? output.MessageType : undefined,\n SenderId: output.SenderId !== undefined && output.SenderId !== null ? output.SenderId : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1CampaignsResponse = (output: any, context: __SerdeContext): CampaignsResponse => {\n return {\n Item:\n output.Item !== undefined && output.Item !== null\n ? deserializeAws_restJson1ListOfCampaignResponse(output.Item, context)\n : undefined,\n NextToken: output.NextToken !== undefined && output.NextToken !== null ? output.NextToken : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1CampaignState = (output: any, context: __SerdeContext): CampaignState => {\n return {\n CampaignStatus:\n output.CampaignStatus !== undefined && output.CampaignStatus !== null ? output.CampaignStatus : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1ChannelResponse = (output: any, context: __SerdeContext): ChannelResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n Enabled: output.Enabled !== undefined && output.Enabled !== null ? output.Enabled : undefined,\n HasCredential:\n output.HasCredential !== undefined && output.HasCredential !== null ? output.HasCredential : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n IsArchived: output.IsArchived !== undefined && output.IsArchived !== null ? output.IsArchived : undefined,\n LastModifiedBy:\n output.LastModifiedBy !== undefined && output.LastModifiedBy !== null ? output.LastModifiedBy : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1ChannelsResponse = (output: any, context: __SerdeContext): ChannelsResponse => {\n return {\n Channels:\n output.Channels !== undefined && output.Channels !== null\n ? deserializeAws_restJson1MapOfChannelResponse(output.Channels, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1Condition = (output: any, context: __SerdeContext): Condition => {\n return {\n Conditions:\n output.Conditions !== undefined && output.Conditions !== null\n ? deserializeAws_restJson1ListOfSimpleCondition(output.Conditions, context)\n : undefined,\n Operator: output.Operator !== undefined && output.Operator !== null ? output.Operator : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1ConditionalSplitActivity = (\n output: any,\n context: __SerdeContext\n): ConditionalSplitActivity => {\n return {\n Condition:\n output.Condition !== undefined && output.Condition !== null\n ? deserializeAws_restJson1Condition(output.Condition, context)\n : undefined,\n EvaluationWaitTime:\n output.EvaluationWaitTime !== undefined && output.EvaluationWaitTime !== null\n ? deserializeAws_restJson1WaitTime(output.EvaluationWaitTime, context)\n : undefined,\n FalseActivity:\n output.FalseActivity !== undefined && output.FalseActivity !== null ? output.FalseActivity : undefined,\n TrueActivity: output.TrueActivity !== undefined && output.TrueActivity !== null ? output.TrueActivity : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1CreateTemplateMessageBody = (\n output: any,\n context: __SerdeContext\n): CreateTemplateMessageBody => {\n return {\n Arn: output.Arn !== undefined && output.Arn !== null ? output.Arn : undefined,\n Message: output.Message !== undefined && output.Message !== null ? output.Message : undefined,\n RequestID: output.RequestID !== undefined && output.RequestID !== null ? output.RequestID : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1CustomDeliveryConfiguration = (\n output: any,\n context: __SerdeContext\n): CustomDeliveryConfiguration => {\n return {\n DeliveryUri: output.DeliveryUri !== undefined && output.DeliveryUri !== null ? output.DeliveryUri : undefined,\n EndpointTypes:\n output.EndpointTypes !== undefined && output.EndpointTypes !== null\n ? deserializeAws_restJson1ListOf__EndpointTypesElement(output.EndpointTypes, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1CustomMessageActivity = (output: any, context: __SerdeContext): CustomMessageActivity => {\n return {\n DeliveryUri: output.DeliveryUri !== undefined && output.DeliveryUri !== null ? output.DeliveryUri : undefined,\n EndpointTypes:\n output.EndpointTypes !== undefined && output.EndpointTypes !== null\n ? deserializeAws_restJson1ListOf__EndpointTypesElement(output.EndpointTypes, context)\n : undefined,\n MessageConfig:\n output.MessageConfig !== undefined && output.MessageConfig !== null\n ? deserializeAws_restJson1JourneyCustomMessage(output.MessageConfig, context)\n : undefined,\n NextActivity: output.NextActivity !== undefined && output.NextActivity !== null ? output.NextActivity : undefined,\n TemplateName: output.TemplateName !== undefined && output.TemplateName !== null ? output.TemplateName : undefined,\n TemplateVersion:\n output.TemplateVersion !== undefined && output.TemplateVersion !== null ? output.TemplateVersion : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1DefaultPushNotificationTemplate = (\n output: any,\n context: __SerdeContext\n): DefaultPushNotificationTemplate => {\n return {\n Action: output.Action !== undefined && output.Action !== null ? output.Action : undefined,\n Body: output.Body !== undefined && output.Body !== null ? output.Body : undefined,\n Sound: output.Sound !== undefined && output.Sound !== null ? output.Sound : undefined,\n Title: output.Title !== undefined && output.Title !== null ? output.Title : undefined,\n Url: output.Url !== undefined && output.Url !== null ? output.Url : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1EmailChannelResponse = (output: any, context: __SerdeContext): EmailChannelResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n ConfigurationSet:\n output.ConfigurationSet !== undefined && output.ConfigurationSet !== null ? output.ConfigurationSet : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n Enabled: output.Enabled !== undefined && output.Enabled !== null ? output.Enabled : undefined,\n FromAddress: output.FromAddress !== undefined && output.FromAddress !== null ? output.FromAddress : undefined,\n HasCredential:\n output.HasCredential !== undefined && output.HasCredential !== null ? output.HasCredential : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n Identity: output.Identity !== undefined && output.Identity !== null ? output.Identity : undefined,\n IsArchived: output.IsArchived !== undefined && output.IsArchived !== null ? output.IsArchived : undefined,\n LastModifiedBy:\n output.LastModifiedBy !== undefined && output.LastModifiedBy !== null ? output.LastModifiedBy : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n MessagesPerSecond:\n output.MessagesPerSecond !== undefined && output.MessagesPerSecond !== null\n ? output.MessagesPerSecond\n : undefined,\n Platform: output.Platform !== undefined && output.Platform !== null ? output.Platform : undefined,\n RoleArn: output.RoleArn !== undefined && output.RoleArn !== null ? output.RoleArn : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1EmailMessageActivity = (output: any, context: __SerdeContext): EmailMessageActivity => {\n return {\n MessageConfig:\n output.MessageConfig !== undefined && output.MessageConfig !== null\n ? deserializeAws_restJson1JourneyEmailMessage(output.MessageConfig, context)\n : undefined,\n NextActivity: output.NextActivity !== undefined && output.NextActivity !== null ? output.NextActivity : undefined,\n TemplateName: output.TemplateName !== undefined && output.TemplateName !== null ? output.TemplateName : undefined,\n TemplateVersion:\n output.TemplateVersion !== undefined && output.TemplateVersion !== null ? output.TemplateVersion : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1EmailTemplateResponse = (output: any, context: __SerdeContext): EmailTemplateResponse => {\n return {\n Arn: output.Arn !== undefined && output.Arn !== null ? output.Arn : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n DefaultSubstitutions:\n output.DefaultSubstitutions !== undefined && output.DefaultSubstitutions !== null\n ? output.DefaultSubstitutions\n : undefined,\n HtmlPart: output.HtmlPart !== undefined && output.HtmlPart !== null ? output.HtmlPart : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n RecommenderId:\n output.RecommenderId !== undefined && output.RecommenderId !== null ? output.RecommenderId : undefined,\n Subject: output.Subject !== undefined && output.Subject !== null ? output.Subject : undefined,\n TemplateDescription:\n output.TemplateDescription !== undefined && output.TemplateDescription !== null\n ? output.TemplateDescription\n : undefined,\n TemplateName: output.TemplateName !== undefined && output.TemplateName !== null ? output.TemplateName : undefined,\n TemplateType: output.TemplateType !== undefined && output.TemplateType !== null ? output.TemplateType : undefined,\n TextPart: output.TextPart !== undefined && output.TextPart !== null ? output.TextPart : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n tags:\n output.tags !== undefined && output.tags !== null\n ? deserializeAws_restJson1MapOf__string(output.tags, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1EndpointDemographic = (output: any, context: __SerdeContext): EndpointDemographic => {\n return {\n AppVersion: output.AppVersion !== undefined && output.AppVersion !== null ? output.AppVersion : undefined,\n Locale: output.Locale !== undefined && output.Locale !== null ? output.Locale : undefined,\n Make: output.Make !== undefined && output.Make !== null ? output.Make : undefined,\n Model: output.Model !== undefined && output.Model !== null ? output.Model : undefined,\n ModelVersion: output.ModelVersion !== undefined && output.ModelVersion !== null ? output.ModelVersion : undefined,\n Platform: output.Platform !== undefined && output.Platform !== null ? output.Platform : undefined,\n PlatformVersion:\n output.PlatformVersion !== undefined && output.PlatformVersion !== null ? output.PlatformVersion : undefined,\n Timezone: output.Timezone !== undefined && output.Timezone !== null ? output.Timezone : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1EndpointItemResponse = (output: any, context: __SerdeContext): EndpointItemResponse => {\n return {\n Message: output.Message !== undefined && output.Message !== null ? output.Message : undefined,\n StatusCode: output.StatusCode !== undefined && output.StatusCode !== null ? output.StatusCode : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1EndpointLocation = (output: any, context: __SerdeContext): EndpointLocation => {\n return {\n City: output.City !== undefined && output.City !== null ? output.City : undefined,\n Country: output.Country !== undefined && output.Country !== null ? output.Country : undefined,\n Latitude: output.Latitude !== undefined && output.Latitude !== null ? output.Latitude : undefined,\n Longitude: output.Longitude !== undefined && output.Longitude !== null ? output.Longitude : undefined,\n PostalCode: output.PostalCode !== undefined && output.PostalCode !== null ? output.PostalCode : undefined,\n Region: output.Region !== undefined && output.Region !== null ? output.Region : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1EndpointMessageResult = (output: any, context: __SerdeContext): EndpointMessageResult => {\n return {\n Address: output.Address !== undefined && output.Address !== null ? output.Address : undefined,\n DeliveryStatus:\n output.DeliveryStatus !== undefined && output.DeliveryStatus !== null ? output.DeliveryStatus : undefined,\n MessageId: output.MessageId !== undefined && output.MessageId !== null ? output.MessageId : undefined,\n StatusCode: output.StatusCode !== undefined && output.StatusCode !== null ? output.StatusCode : undefined,\n StatusMessage:\n output.StatusMessage !== undefined && output.StatusMessage !== null ? output.StatusMessage : undefined,\n UpdatedToken: output.UpdatedToken !== undefined && output.UpdatedToken !== null ? output.UpdatedToken : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1EndpointResponse = (output: any, context: __SerdeContext): EndpointResponse => {\n return {\n Address: output.Address !== undefined && output.Address !== null ? output.Address : undefined,\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n Attributes:\n output.Attributes !== undefined && output.Attributes !== null\n ? deserializeAws_restJson1MapOfListOf__string(output.Attributes, context)\n : undefined,\n ChannelType: output.ChannelType !== undefined && output.ChannelType !== null ? output.ChannelType : undefined,\n CohortId: output.CohortId !== undefined && output.CohortId !== null ? output.CohortId : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n Demographic:\n output.Demographic !== undefined && output.Demographic !== null\n ? deserializeAws_restJson1EndpointDemographic(output.Demographic, context)\n : undefined,\n EffectiveDate:\n output.EffectiveDate !== undefined && output.EffectiveDate !== null ? output.EffectiveDate : undefined,\n EndpointStatus:\n output.EndpointStatus !== undefined && output.EndpointStatus !== null ? output.EndpointStatus : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n Location:\n output.Location !== undefined && output.Location !== null\n ? deserializeAws_restJson1EndpointLocation(output.Location, context)\n : undefined,\n Metrics:\n output.Metrics !== undefined && output.Metrics !== null\n ? deserializeAws_restJson1MapOf__double(output.Metrics, context)\n : undefined,\n OptOut: output.OptOut !== undefined && output.OptOut !== null ? output.OptOut : undefined,\n RequestId: output.RequestId !== undefined && output.RequestId !== null ? output.RequestId : undefined,\n User:\n output.User !== undefined && output.User !== null\n ? deserializeAws_restJson1EndpointUser(output.User, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1EndpointsResponse = (output: any, context: __SerdeContext): EndpointsResponse => {\n return {\n Item:\n output.Item !== undefined && output.Item !== null\n ? deserializeAws_restJson1ListOfEndpointResponse(output.Item, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1EndpointUser = (output: any, context: __SerdeContext): EndpointUser => {\n return {\n UserAttributes:\n output.UserAttributes !== undefined && output.UserAttributes !== null\n ? deserializeAws_restJson1MapOfListOf__string(output.UserAttributes, context)\n : undefined,\n UserId: output.UserId !== undefined && output.UserId !== null ? output.UserId : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1EventCondition = (output: any, context: __SerdeContext): EventCondition => {\n return {\n Dimensions:\n output.Dimensions !== undefined && output.Dimensions !== null\n ? deserializeAws_restJson1EventDimensions(output.Dimensions, context)\n : undefined,\n MessageActivity:\n output.MessageActivity !== undefined && output.MessageActivity !== null ? output.MessageActivity : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1EventDimensions = (output: any, context: __SerdeContext): EventDimensions => {\n return {\n Attributes:\n output.Attributes !== undefined && output.Attributes !== null\n ? deserializeAws_restJson1MapOfAttributeDimension(output.Attributes, context)\n : undefined,\n EventType:\n output.EventType !== undefined && output.EventType !== null\n ? deserializeAws_restJson1SetDimension(output.EventType, context)\n : undefined,\n Metrics:\n output.Metrics !== undefined && output.Metrics !== null\n ? deserializeAws_restJson1MapOfMetricDimension(output.Metrics, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1EventFilter = (output: any, context: __SerdeContext): EventFilter => {\n return {\n Dimensions:\n output.Dimensions !== undefined && output.Dimensions !== null\n ? deserializeAws_restJson1EventDimensions(output.Dimensions, context)\n : undefined,\n FilterType: output.FilterType !== undefined && output.FilterType !== null ? output.FilterType : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1EventItemResponse = (output: any, context: __SerdeContext): EventItemResponse => {\n return {\n Message: output.Message !== undefined && output.Message !== null ? output.Message : undefined,\n StatusCode: output.StatusCode !== undefined && output.StatusCode !== null ? output.StatusCode : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1EventsResponse = (output: any, context: __SerdeContext): EventsResponse => {\n return {\n Results:\n output.Results !== undefined && output.Results !== null\n ? deserializeAws_restJson1MapOfItemResponse(output.Results, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1EventStartCondition = (output: any, context: __SerdeContext): EventStartCondition => {\n return {\n EventFilter:\n output.EventFilter !== undefined && output.EventFilter !== null\n ? deserializeAws_restJson1EventFilter(output.EventFilter, context)\n : undefined,\n SegmentId: output.SegmentId !== undefined && output.SegmentId !== null ? output.SegmentId : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1EventStream = (output: any, context: __SerdeContext): EventStream => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n DestinationStreamArn:\n output.DestinationStreamArn !== undefined && output.DestinationStreamArn !== null\n ? output.DestinationStreamArn\n : undefined,\n ExternalId: output.ExternalId !== undefined && output.ExternalId !== null ? output.ExternalId : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n LastUpdatedBy:\n output.LastUpdatedBy !== undefined && output.LastUpdatedBy !== null ? output.LastUpdatedBy : undefined,\n RoleArn: output.RoleArn !== undefined && output.RoleArn !== null ? output.RoleArn : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1ExportJobResource = (output: any, context: __SerdeContext): ExportJobResource => {\n return {\n RoleArn: output.RoleArn !== undefined && output.RoleArn !== null ? output.RoleArn : undefined,\n S3UrlPrefix: output.S3UrlPrefix !== undefined && output.S3UrlPrefix !== null ? output.S3UrlPrefix : undefined,\n SegmentId: output.SegmentId !== undefined && output.SegmentId !== null ? output.SegmentId : undefined,\n SegmentVersion:\n output.SegmentVersion !== undefined && output.SegmentVersion !== null ? output.SegmentVersion : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1ExportJobResponse = (output: any, context: __SerdeContext): ExportJobResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n CompletedPieces:\n output.CompletedPieces !== undefined && output.CompletedPieces !== null ? output.CompletedPieces : undefined,\n CompletionDate:\n output.CompletionDate !== undefined && output.CompletionDate !== null ? output.CompletionDate : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n Definition:\n output.Definition !== undefined && output.Definition !== null\n ? deserializeAws_restJson1ExportJobResource(output.Definition, context)\n : undefined,\n FailedPieces: output.FailedPieces !== undefined && output.FailedPieces !== null ? output.FailedPieces : undefined,\n Failures:\n output.Failures !== undefined && output.Failures !== null\n ? deserializeAws_restJson1ListOf__string(output.Failures, context)\n : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n JobStatus: output.JobStatus !== undefined && output.JobStatus !== null ? output.JobStatus : undefined,\n TotalFailures:\n output.TotalFailures !== undefined && output.TotalFailures !== null ? output.TotalFailures : undefined,\n TotalPieces: output.TotalPieces !== undefined && output.TotalPieces !== null ? output.TotalPieces : undefined,\n TotalProcessed:\n output.TotalProcessed !== undefined && output.TotalProcessed !== null ? output.TotalProcessed : undefined,\n Type: output.Type !== undefined && output.Type !== null ? output.Type : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1ExportJobsResponse = (output: any, context: __SerdeContext): ExportJobsResponse => {\n return {\n Item:\n output.Item !== undefined && output.Item !== null\n ? deserializeAws_restJson1ListOfExportJobResponse(output.Item, context)\n : undefined,\n NextToken: output.NextToken !== undefined && output.NextToken !== null ? output.NextToken : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1GCMChannelResponse = (output: any, context: __SerdeContext): GCMChannelResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n Credential: output.Credential !== undefined && output.Credential !== null ? output.Credential : undefined,\n Enabled: output.Enabled !== undefined && output.Enabled !== null ? output.Enabled : undefined,\n HasCredential:\n output.HasCredential !== undefined && output.HasCredential !== null ? output.HasCredential : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n IsArchived: output.IsArchived !== undefined && output.IsArchived !== null ? output.IsArchived : undefined,\n LastModifiedBy:\n output.LastModifiedBy !== undefined && output.LastModifiedBy !== null ? output.LastModifiedBy : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n Platform: output.Platform !== undefined && output.Platform !== null ? output.Platform : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1GPSCoordinates = (output: any, context: __SerdeContext): GPSCoordinates => {\n return {\n Latitude: output.Latitude !== undefined && output.Latitude !== null ? output.Latitude : undefined,\n Longitude: output.Longitude !== undefined && output.Longitude !== null ? output.Longitude : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1GPSPointDimension = (output: any, context: __SerdeContext): GPSPointDimension => {\n return {\n Coordinates:\n output.Coordinates !== undefined && output.Coordinates !== null\n ? deserializeAws_restJson1GPSCoordinates(output.Coordinates, context)\n : undefined,\n RangeInKilometers:\n output.RangeInKilometers !== undefined && output.RangeInKilometers !== null\n ? output.RangeInKilometers\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1HoldoutActivity = (output: any, context: __SerdeContext): HoldoutActivity => {\n return {\n NextActivity: output.NextActivity !== undefined && output.NextActivity !== null ? output.NextActivity : undefined,\n Percentage: output.Percentage !== undefined && output.Percentage !== null ? output.Percentage : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1ImportJobResource = (output: any, context: __SerdeContext): ImportJobResource => {\n return {\n DefineSegment:\n output.DefineSegment !== undefined && output.DefineSegment !== null ? output.DefineSegment : undefined,\n ExternalId: output.ExternalId !== undefined && output.ExternalId !== null ? output.ExternalId : undefined,\n Format: output.Format !== undefined && output.Format !== null ? output.Format : undefined,\n RegisterEndpoints:\n output.RegisterEndpoints !== undefined && output.RegisterEndpoints !== null\n ? output.RegisterEndpoints\n : undefined,\n RoleArn: output.RoleArn !== undefined && output.RoleArn !== null ? output.RoleArn : undefined,\n S3Url: output.S3Url !== undefined && output.S3Url !== null ? output.S3Url : undefined,\n SegmentId: output.SegmentId !== undefined && output.SegmentId !== null ? output.SegmentId : undefined,\n SegmentName: output.SegmentName !== undefined && output.SegmentName !== null ? output.SegmentName : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1ImportJobResponse = (output: any, context: __SerdeContext): ImportJobResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n CompletedPieces:\n output.CompletedPieces !== undefined && output.CompletedPieces !== null ? output.CompletedPieces : undefined,\n CompletionDate:\n output.CompletionDate !== undefined && output.CompletionDate !== null ? output.CompletionDate : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n Definition:\n output.Definition !== undefined && output.Definition !== null\n ? deserializeAws_restJson1ImportJobResource(output.Definition, context)\n : undefined,\n FailedPieces: output.FailedPieces !== undefined && output.FailedPieces !== null ? output.FailedPieces : undefined,\n Failures:\n output.Failures !== undefined && output.Failures !== null\n ? deserializeAws_restJson1ListOf__string(output.Failures, context)\n : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n JobStatus: output.JobStatus !== undefined && output.JobStatus !== null ? output.JobStatus : undefined,\n TotalFailures:\n output.TotalFailures !== undefined && output.TotalFailures !== null ? output.TotalFailures : undefined,\n TotalPieces: output.TotalPieces !== undefined && output.TotalPieces !== null ? output.TotalPieces : undefined,\n TotalProcessed:\n output.TotalProcessed !== undefined && output.TotalProcessed !== null ? output.TotalProcessed : undefined,\n Type: output.Type !== undefined && output.Type !== null ? output.Type : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1ImportJobsResponse = (output: any, context: __SerdeContext): ImportJobsResponse => {\n return {\n Item:\n output.Item !== undefined && output.Item !== null\n ? deserializeAws_restJson1ListOfImportJobResponse(output.Item, context)\n : undefined,\n NextToken: output.NextToken !== undefined && output.NextToken !== null ? output.NextToken : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1ItemResponse = (output: any, context: __SerdeContext): ItemResponse => {\n return {\n EndpointItemResponse:\n output.EndpointItemResponse !== undefined && output.EndpointItemResponse !== null\n ? deserializeAws_restJson1EndpointItemResponse(output.EndpointItemResponse, context)\n : undefined,\n EventsItemResponse:\n output.EventsItemResponse !== undefined && output.EventsItemResponse !== null\n ? deserializeAws_restJson1MapOfEventItemResponse(output.EventsItemResponse, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1JourneyCustomMessage = (output: any, context: __SerdeContext): JourneyCustomMessage => {\n return {\n Data: output.Data !== undefined && output.Data !== null ? output.Data : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1JourneyDateRangeKpiResponse = (\n output: any,\n context: __SerdeContext\n): JourneyDateRangeKpiResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n EndTime: output.EndTime !== undefined && output.EndTime !== null ? new Date(output.EndTime) : undefined,\n JourneyId: output.JourneyId !== undefined && output.JourneyId !== null ? output.JourneyId : undefined,\n KpiName: output.KpiName !== undefined && output.KpiName !== null ? output.KpiName : undefined,\n KpiResult:\n output.KpiResult !== undefined && output.KpiResult !== null\n ? deserializeAws_restJson1BaseKpiResult(output.KpiResult, context)\n : undefined,\n NextToken: output.NextToken !== undefined && output.NextToken !== null ? output.NextToken : undefined,\n StartTime: output.StartTime !== undefined && output.StartTime !== null ? new Date(output.StartTime) : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1JourneyEmailMessage = (output: any, context: __SerdeContext): JourneyEmailMessage => {\n return {\n FromAddress: output.FromAddress !== undefined && output.FromAddress !== null ? output.FromAddress : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1JourneyExecutionActivityMetricsResponse = (\n output: any,\n context: __SerdeContext\n): JourneyExecutionActivityMetricsResponse => {\n return {\n ActivityType: output.ActivityType !== undefined && output.ActivityType !== null ? output.ActivityType : undefined,\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n JourneyActivityId:\n output.JourneyActivityId !== undefined && output.JourneyActivityId !== null\n ? output.JourneyActivityId\n : undefined,\n JourneyId: output.JourneyId !== undefined && output.JourneyId !== null ? output.JourneyId : undefined,\n LastEvaluatedTime:\n output.LastEvaluatedTime !== undefined && output.LastEvaluatedTime !== null\n ? output.LastEvaluatedTime\n : undefined,\n Metrics:\n output.Metrics !== undefined && output.Metrics !== null\n ? deserializeAws_restJson1MapOf__string(output.Metrics, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1JourneyExecutionMetricsResponse = (\n output: any,\n context: __SerdeContext\n): JourneyExecutionMetricsResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n JourneyId: output.JourneyId !== undefined && output.JourneyId !== null ? output.JourneyId : undefined,\n LastEvaluatedTime:\n output.LastEvaluatedTime !== undefined && output.LastEvaluatedTime !== null\n ? output.LastEvaluatedTime\n : undefined,\n Metrics:\n output.Metrics !== undefined && output.Metrics !== null\n ? deserializeAws_restJson1MapOf__string(output.Metrics, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1JourneyLimits = (output: any, context: __SerdeContext): JourneyLimits => {\n return {\n DailyCap: output.DailyCap !== undefined && output.DailyCap !== null ? output.DailyCap : undefined,\n EndpointReentryCap:\n output.EndpointReentryCap !== undefined && output.EndpointReentryCap !== null\n ? output.EndpointReentryCap\n : undefined,\n MessagesPerSecond:\n output.MessagesPerSecond !== undefined && output.MessagesPerSecond !== null\n ? output.MessagesPerSecond\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1JourneyPushMessage = (output: any, context: __SerdeContext): JourneyPushMessage => {\n return {\n TimeToLive: output.TimeToLive !== undefined && output.TimeToLive !== null ? output.TimeToLive : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1JourneyResponse = (output: any, context: __SerdeContext): JourneyResponse => {\n return {\n Activities:\n output.Activities !== undefined && output.Activities !== null\n ? deserializeAws_restJson1MapOfActivity(output.Activities, context)\n : undefined,\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n Limits:\n output.Limits !== undefined && output.Limits !== null\n ? deserializeAws_restJson1JourneyLimits(output.Limits, context)\n : undefined,\n LocalTime: output.LocalTime !== undefined && output.LocalTime !== null ? output.LocalTime : undefined,\n Name: output.Name !== undefined && output.Name !== null ? output.Name : undefined,\n QuietTime:\n output.QuietTime !== undefined && output.QuietTime !== null\n ? deserializeAws_restJson1QuietTime(output.QuietTime, context)\n : undefined,\n RefreshFrequency:\n output.RefreshFrequency !== undefined && output.RefreshFrequency !== null ? output.RefreshFrequency : undefined,\n Schedule:\n output.Schedule !== undefined && output.Schedule !== null\n ? deserializeAws_restJson1JourneySchedule(output.Schedule, context)\n : undefined,\n StartActivity:\n output.StartActivity !== undefined && output.StartActivity !== null ? output.StartActivity : undefined,\n StartCondition:\n output.StartCondition !== undefined && output.StartCondition !== null\n ? deserializeAws_restJson1StartCondition(output.StartCondition, context)\n : undefined,\n State: output.State !== undefined && output.State !== null ? output.State : undefined,\n tags:\n output.tags !== undefined && output.tags !== null\n ? deserializeAws_restJson1MapOf__string(output.tags, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1JourneySchedule = (output: any, context: __SerdeContext): JourneySchedule => {\n return {\n EndTime: output.EndTime !== undefined && output.EndTime !== null ? new Date(output.EndTime) : undefined,\n StartTime: output.StartTime !== undefined && output.StartTime !== null ? new Date(output.StartTime) : undefined,\n Timezone: output.Timezone !== undefined && output.Timezone !== null ? output.Timezone : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1JourneySMSMessage = (output: any, context: __SerdeContext): JourneySMSMessage => {\n return {\n MessageType: output.MessageType !== undefined && output.MessageType !== null ? output.MessageType : undefined,\n SenderId: output.SenderId !== undefined && output.SenderId !== null ? output.SenderId : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1JourneysResponse = (output: any, context: __SerdeContext): JourneysResponse => {\n return {\n Item:\n output.Item !== undefined && output.Item !== null\n ? deserializeAws_restJson1ListOfJourneyResponse(output.Item, context)\n : undefined,\n NextToken: output.NextToken !== undefined && output.NextToken !== null ? output.NextToken : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1ListOf__EndpointTypesElement = (\n output: any,\n context: __SerdeContext\n): (__EndpointTypesElement | string)[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return entry;\n });\n};\n\nconst deserializeAws_restJson1ListOf__string = (output: any, context: __SerdeContext): string[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return entry;\n });\n};\n\nconst deserializeAws_restJson1ListOfActivityResponse = (output: any, context: __SerdeContext): ActivityResponse[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restJson1ActivityResponse(entry, context);\n });\n};\n\nconst deserializeAws_restJson1ListOfApplicationResponse = (\n output: any,\n context: __SerdeContext\n): ApplicationResponse[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restJson1ApplicationResponse(entry, context);\n });\n};\n\nconst deserializeAws_restJson1ListOfCampaignResponse = (output: any, context: __SerdeContext): CampaignResponse[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restJson1CampaignResponse(entry, context);\n });\n};\n\nconst deserializeAws_restJson1ListOfEndpointResponse = (output: any, context: __SerdeContext): EndpointResponse[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restJson1EndpointResponse(entry, context);\n });\n};\n\nconst deserializeAws_restJson1ListOfExportJobResponse = (output: any, context: __SerdeContext): ExportJobResponse[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restJson1ExportJobResponse(entry, context);\n });\n};\n\nconst deserializeAws_restJson1ListOfImportJobResponse = (output: any, context: __SerdeContext): ImportJobResponse[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restJson1ImportJobResponse(entry, context);\n });\n};\n\nconst deserializeAws_restJson1ListOfJourneyResponse = (output: any, context: __SerdeContext): JourneyResponse[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restJson1JourneyResponse(entry, context);\n });\n};\n\nconst deserializeAws_restJson1ListOfMultiConditionalBranch = (\n output: any,\n context: __SerdeContext\n): MultiConditionalBranch[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restJson1MultiConditionalBranch(entry, context);\n });\n};\n\nconst deserializeAws_restJson1ListOfRandomSplitEntry = (output: any, context: __SerdeContext): RandomSplitEntry[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restJson1RandomSplitEntry(entry, context);\n });\n};\n\nconst deserializeAws_restJson1ListOfRecommenderConfigurationResponse = (\n output: any,\n context: __SerdeContext\n): RecommenderConfigurationResponse[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restJson1RecommenderConfigurationResponse(entry, context);\n });\n};\n\nconst deserializeAws_restJson1ListOfResultRow = (output: any, context: __SerdeContext): ResultRow[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restJson1ResultRow(entry, context);\n });\n};\n\nconst deserializeAws_restJson1ListOfResultRowValue = (output: any, context: __SerdeContext): ResultRowValue[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restJson1ResultRowValue(entry, context);\n });\n};\n\nconst deserializeAws_restJson1ListOfSegmentDimensions = (output: any, context: __SerdeContext): SegmentDimensions[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restJson1SegmentDimensions(entry, context);\n });\n};\n\nconst deserializeAws_restJson1ListOfSegmentGroup = (output: any, context: __SerdeContext): SegmentGroup[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restJson1SegmentGroup(entry, context);\n });\n};\n\nconst deserializeAws_restJson1ListOfSegmentReference = (output: any, context: __SerdeContext): SegmentReference[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restJson1SegmentReference(entry, context);\n });\n};\n\nconst deserializeAws_restJson1ListOfSegmentResponse = (output: any, context: __SerdeContext): SegmentResponse[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restJson1SegmentResponse(entry, context);\n });\n};\n\nconst deserializeAws_restJson1ListOfSimpleCondition = (output: any, context: __SerdeContext): SimpleCondition[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restJson1SimpleCondition(entry, context);\n });\n};\n\nconst deserializeAws_restJson1ListOfTemplateResponse = (output: any, context: __SerdeContext): TemplateResponse[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restJson1TemplateResponse(entry, context);\n });\n};\n\nconst deserializeAws_restJson1ListOfTemplateVersionResponse = (\n output: any,\n context: __SerdeContext\n): TemplateVersionResponse[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restJson1TemplateVersionResponse(entry, context);\n });\n};\n\nconst deserializeAws_restJson1ListOfTreatmentResource = (output: any, context: __SerdeContext): TreatmentResource[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restJson1TreatmentResource(entry, context);\n });\n};\n\nconst deserializeAws_restJson1ListRecommenderConfigurationsResponse = (\n output: any,\n context: __SerdeContext\n): ListRecommenderConfigurationsResponse => {\n return {\n Item:\n output.Item !== undefined && output.Item !== null\n ? deserializeAws_restJson1ListOfRecommenderConfigurationResponse(output.Item, context)\n : undefined,\n NextToken: output.NextToken !== undefined && output.NextToken !== null ? output.NextToken : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1MapOf__double = (output: any, context: __SerdeContext): { [key: string]: number } => {\n return Object.entries(output).reduce((acc: { [key: string]: number }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n};\n\nconst deserializeAws_restJson1MapOf__integer = (output: any, context: __SerdeContext): { [key: string]: number } => {\n return Object.entries(output).reduce((acc: { [key: string]: number }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n};\n\nconst deserializeAws_restJson1MapOf__string = (output: any, context: __SerdeContext): { [key: string]: string } => {\n return Object.entries(output).reduce((acc: { [key: string]: string }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n};\n\nconst deserializeAws_restJson1MapOfActivity = (output: any, context: __SerdeContext): { [key: string]: Activity } => {\n return Object.entries(output).reduce((acc: { [key: string]: Activity }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: deserializeAws_restJson1Activity(value, context),\n };\n }, {});\n};\n\nconst deserializeAws_restJson1MapOfAttributeDimension = (\n output: any,\n context: __SerdeContext\n): { [key: string]: AttributeDimension } => {\n return Object.entries(output).reduce((acc: { [key: string]: AttributeDimension }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: deserializeAws_restJson1AttributeDimension(value, context),\n };\n }, {});\n};\n\nconst deserializeAws_restJson1MapOfChannelResponse = (\n output: any,\n context: __SerdeContext\n): { [key: string]: ChannelResponse } => {\n return Object.entries(output).reduce((acc: { [key: string]: ChannelResponse }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: deserializeAws_restJson1ChannelResponse(value, context),\n };\n }, {});\n};\n\nconst deserializeAws_restJson1MapOfEndpointMessageResult = (\n output: any,\n context: __SerdeContext\n): { [key: string]: EndpointMessageResult } => {\n return Object.entries(output).reduce((acc: { [key: string]: EndpointMessageResult }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: deserializeAws_restJson1EndpointMessageResult(value, context),\n };\n }, {});\n};\n\nconst deserializeAws_restJson1MapOfEventItemResponse = (\n output: any,\n context: __SerdeContext\n): { [key: string]: EventItemResponse } => {\n return Object.entries(output).reduce((acc: { [key: string]: EventItemResponse }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: deserializeAws_restJson1EventItemResponse(value, context),\n };\n }, {});\n};\n\nconst deserializeAws_restJson1MapOfItemResponse = (\n output: any,\n context: __SerdeContext\n): { [key: string]: ItemResponse } => {\n return Object.entries(output).reduce((acc: { [key: string]: ItemResponse }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: deserializeAws_restJson1ItemResponse(value, context),\n };\n }, {});\n};\n\nconst deserializeAws_restJson1MapOfListOf__string = (\n output: any,\n context: __SerdeContext\n): { [key: string]: string[] } => {\n return Object.entries(output).reduce((acc: { [key: string]: string[] }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: deserializeAws_restJson1ListOf__string(value, context),\n };\n }, {});\n};\n\nconst deserializeAws_restJson1MapOfMapOfEndpointMessageResult = (\n output: any,\n context: __SerdeContext\n): { [key: string]: { [key: string]: EndpointMessageResult } } => {\n return Object.entries(output).reduce(\n (acc: { [key: string]: { [key: string]: EndpointMessageResult } }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: deserializeAws_restJson1MapOfEndpointMessageResult(value, context),\n };\n },\n {}\n );\n};\n\nconst deserializeAws_restJson1MapOfMessageResult = (\n output: any,\n context: __SerdeContext\n): { [key: string]: MessageResult } => {\n return Object.entries(output).reduce((acc: { [key: string]: MessageResult }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: deserializeAws_restJson1MessageResult(value, context),\n };\n }, {});\n};\n\nconst deserializeAws_restJson1MapOfMetricDimension = (\n output: any,\n context: __SerdeContext\n): { [key: string]: MetricDimension } => {\n return Object.entries(output).reduce((acc: { [key: string]: MetricDimension }, [key, value]: [string, any]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: deserializeAws_restJson1MetricDimension(value, context),\n };\n }, {});\n};\n\nconst deserializeAws_restJson1Message = (output: any, context: __SerdeContext): Message => {\n return {\n Action: output.Action !== undefined && output.Action !== null ? output.Action : undefined,\n Body: output.Body !== undefined && output.Body !== null ? output.Body : undefined,\n ImageIconUrl: output.ImageIconUrl !== undefined && output.ImageIconUrl !== null ? output.ImageIconUrl : undefined,\n ImageSmallIconUrl:\n output.ImageSmallIconUrl !== undefined && output.ImageSmallIconUrl !== null\n ? output.ImageSmallIconUrl\n : undefined,\n ImageUrl: output.ImageUrl !== undefined && output.ImageUrl !== null ? output.ImageUrl : undefined,\n JsonBody: output.JsonBody !== undefined && output.JsonBody !== null ? output.JsonBody : undefined,\n MediaUrl: output.MediaUrl !== undefined && output.MediaUrl !== null ? output.MediaUrl : undefined,\n RawContent: output.RawContent !== undefined && output.RawContent !== null ? output.RawContent : undefined,\n SilentPush: output.SilentPush !== undefined && output.SilentPush !== null ? output.SilentPush : undefined,\n TimeToLive: output.TimeToLive !== undefined && output.TimeToLive !== null ? output.TimeToLive : undefined,\n Title: output.Title !== undefined && output.Title !== null ? output.Title : undefined,\n Url: output.Url !== undefined && output.Url !== null ? output.Url : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1MessageBody = (output: any, context: __SerdeContext): MessageBody => {\n return {\n Message: output.Message !== undefined && output.Message !== null ? output.Message : undefined,\n RequestID: output.RequestID !== undefined && output.RequestID !== null ? output.RequestID : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1MessageConfiguration = (output: any, context: __SerdeContext): MessageConfiguration => {\n return {\n ADMMessage:\n output.ADMMessage !== undefined && output.ADMMessage !== null\n ? deserializeAws_restJson1Message(output.ADMMessage, context)\n : undefined,\n APNSMessage:\n output.APNSMessage !== undefined && output.APNSMessage !== null\n ? deserializeAws_restJson1Message(output.APNSMessage, context)\n : undefined,\n BaiduMessage:\n output.BaiduMessage !== undefined && output.BaiduMessage !== null\n ? deserializeAws_restJson1Message(output.BaiduMessage, context)\n : undefined,\n CustomMessage:\n output.CustomMessage !== undefined && output.CustomMessage !== null\n ? deserializeAws_restJson1CampaignCustomMessage(output.CustomMessage, context)\n : undefined,\n DefaultMessage:\n output.DefaultMessage !== undefined && output.DefaultMessage !== null\n ? deserializeAws_restJson1Message(output.DefaultMessage, context)\n : undefined,\n EmailMessage:\n output.EmailMessage !== undefined && output.EmailMessage !== null\n ? deserializeAws_restJson1CampaignEmailMessage(output.EmailMessage, context)\n : undefined,\n GCMMessage:\n output.GCMMessage !== undefined && output.GCMMessage !== null\n ? deserializeAws_restJson1Message(output.GCMMessage, context)\n : undefined,\n SMSMessage:\n output.SMSMessage !== undefined && output.SMSMessage !== null\n ? deserializeAws_restJson1CampaignSmsMessage(output.SMSMessage, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1MessageResponse = (output: any, context: __SerdeContext): MessageResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n EndpointResult:\n output.EndpointResult !== undefined && output.EndpointResult !== null\n ? deserializeAws_restJson1MapOfEndpointMessageResult(output.EndpointResult, context)\n : undefined,\n RequestId: output.RequestId !== undefined && output.RequestId !== null ? output.RequestId : undefined,\n Result:\n output.Result !== undefined && output.Result !== null\n ? deserializeAws_restJson1MapOfMessageResult(output.Result, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1MessageResult = (output: any, context: __SerdeContext): MessageResult => {\n return {\n DeliveryStatus:\n output.DeliveryStatus !== undefined && output.DeliveryStatus !== null ? output.DeliveryStatus : undefined,\n MessageId: output.MessageId !== undefined && output.MessageId !== null ? output.MessageId : undefined,\n StatusCode: output.StatusCode !== undefined && output.StatusCode !== null ? output.StatusCode : undefined,\n StatusMessage:\n output.StatusMessage !== undefined && output.StatusMessage !== null ? output.StatusMessage : undefined,\n UpdatedToken: output.UpdatedToken !== undefined && output.UpdatedToken !== null ? output.UpdatedToken : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1MetricDimension = (output: any, context: __SerdeContext): MetricDimension => {\n return {\n ComparisonOperator:\n output.ComparisonOperator !== undefined && output.ComparisonOperator !== null\n ? output.ComparisonOperator\n : undefined,\n Value: output.Value !== undefined && output.Value !== null ? output.Value : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1MultiConditionalBranch = (\n output: any,\n context: __SerdeContext\n): MultiConditionalBranch => {\n return {\n Condition:\n output.Condition !== undefined && output.Condition !== null\n ? deserializeAws_restJson1SimpleCondition(output.Condition, context)\n : undefined,\n NextActivity: output.NextActivity !== undefined && output.NextActivity !== null ? output.NextActivity : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1MultiConditionalSplitActivity = (\n output: any,\n context: __SerdeContext\n): MultiConditionalSplitActivity => {\n return {\n Branches:\n output.Branches !== undefined && output.Branches !== null\n ? deserializeAws_restJson1ListOfMultiConditionalBranch(output.Branches, context)\n : undefined,\n DefaultActivity:\n output.DefaultActivity !== undefined && output.DefaultActivity !== null ? output.DefaultActivity : undefined,\n EvaluationWaitTime:\n output.EvaluationWaitTime !== undefined && output.EvaluationWaitTime !== null\n ? deserializeAws_restJson1WaitTime(output.EvaluationWaitTime, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1NumberValidateResponse = (\n output: any,\n context: __SerdeContext\n): NumberValidateResponse => {\n return {\n Carrier: output.Carrier !== undefined && output.Carrier !== null ? output.Carrier : undefined,\n City: output.City !== undefined && output.City !== null ? output.City : undefined,\n CleansedPhoneNumberE164:\n output.CleansedPhoneNumberE164 !== undefined && output.CleansedPhoneNumberE164 !== null\n ? output.CleansedPhoneNumberE164\n : undefined,\n CleansedPhoneNumberNational:\n output.CleansedPhoneNumberNational !== undefined && output.CleansedPhoneNumberNational !== null\n ? output.CleansedPhoneNumberNational\n : undefined,\n Country: output.Country !== undefined && output.Country !== null ? output.Country : undefined,\n CountryCodeIso2:\n output.CountryCodeIso2 !== undefined && output.CountryCodeIso2 !== null ? output.CountryCodeIso2 : undefined,\n CountryCodeNumeric:\n output.CountryCodeNumeric !== undefined && output.CountryCodeNumeric !== null\n ? output.CountryCodeNumeric\n : undefined,\n County: output.County !== undefined && output.County !== null ? output.County : undefined,\n OriginalCountryCodeIso2:\n output.OriginalCountryCodeIso2 !== undefined && output.OriginalCountryCodeIso2 !== null\n ? output.OriginalCountryCodeIso2\n : undefined,\n OriginalPhoneNumber:\n output.OriginalPhoneNumber !== undefined && output.OriginalPhoneNumber !== null\n ? output.OriginalPhoneNumber\n : undefined,\n PhoneType: output.PhoneType !== undefined && output.PhoneType !== null ? output.PhoneType : undefined,\n PhoneTypeCode:\n output.PhoneTypeCode !== undefined && output.PhoneTypeCode !== null ? output.PhoneTypeCode : undefined,\n Timezone: output.Timezone !== undefined && output.Timezone !== null ? output.Timezone : undefined,\n ZipCode: output.ZipCode !== undefined && output.ZipCode !== null ? output.ZipCode : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1PushMessageActivity = (output: any, context: __SerdeContext): PushMessageActivity => {\n return {\n MessageConfig:\n output.MessageConfig !== undefined && output.MessageConfig !== null\n ? deserializeAws_restJson1JourneyPushMessage(output.MessageConfig, context)\n : undefined,\n NextActivity: output.NextActivity !== undefined && output.NextActivity !== null ? output.NextActivity : undefined,\n TemplateName: output.TemplateName !== undefined && output.TemplateName !== null ? output.TemplateName : undefined,\n TemplateVersion:\n output.TemplateVersion !== undefined && output.TemplateVersion !== null ? output.TemplateVersion : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1PushNotificationTemplateResponse = (\n output: any,\n context: __SerdeContext\n): PushNotificationTemplateResponse => {\n return {\n ADM:\n output.ADM !== undefined && output.ADM !== null\n ? deserializeAws_restJson1AndroidPushNotificationTemplate(output.ADM, context)\n : undefined,\n APNS:\n output.APNS !== undefined && output.APNS !== null\n ? deserializeAws_restJson1APNSPushNotificationTemplate(output.APNS, context)\n : undefined,\n Arn: output.Arn !== undefined && output.Arn !== null ? output.Arn : undefined,\n Baidu:\n output.Baidu !== undefined && output.Baidu !== null\n ? deserializeAws_restJson1AndroidPushNotificationTemplate(output.Baidu, context)\n : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n Default:\n output.Default !== undefined && output.Default !== null\n ? deserializeAws_restJson1DefaultPushNotificationTemplate(output.Default, context)\n : undefined,\n DefaultSubstitutions:\n output.DefaultSubstitutions !== undefined && output.DefaultSubstitutions !== null\n ? output.DefaultSubstitutions\n : undefined,\n GCM:\n output.GCM !== undefined && output.GCM !== null\n ? deserializeAws_restJson1AndroidPushNotificationTemplate(output.GCM, context)\n : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n RecommenderId:\n output.RecommenderId !== undefined && output.RecommenderId !== null ? output.RecommenderId : undefined,\n TemplateDescription:\n output.TemplateDescription !== undefined && output.TemplateDescription !== null\n ? output.TemplateDescription\n : undefined,\n TemplateName: output.TemplateName !== undefined && output.TemplateName !== null ? output.TemplateName : undefined,\n TemplateType: output.TemplateType !== undefined && output.TemplateType !== null ? output.TemplateType : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n tags:\n output.tags !== undefined && output.tags !== null\n ? deserializeAws_restJson1MapOf__string(output.tags, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1QuietTime = (output: any, context: __SerdeContext): QuietTime => {\n return {\n End: output.End !== undefined && output.End !== null ? output.End : undefined,\n Start: output.Start !== undefined && output.Start !== null ? output.Start : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1RandomSplitActivity = (output: any, context: __SerdeContext): RandomSplitActivity => {\n return {\n Branches:\n output.Branches !== undefined && output.Branches !== null\n ? deserializeAws_restJson1ListOfRandomSplitEntry(output.Branches, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1RandomSplitEntry = (output: any, context: __SerdeContext): RandomSplitEntry => {\n return {\n NextActivity: output.NextActivity !== undefined && output.NextActivity !== null ? output.NextActivity : undefined,\n Percentage: output.Percentage !== undefined && output.Percentage !== null ? output.Percentage : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1RecencyDimension = (output: any, context: __SerdeContext): RecencyDimension => {\n return {\n Duration: output.Duration !== undefined && output.Duration !== null ? output.Duration : undefined,\n RecencyType: output.RecencyType !== undefined && output.RecencyType !== null ? output.RecencyType : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1RecommenderConfigurationResponse = (\n output: any,\n context: __SerdeContext\n): RecommenderConfigurationResponse => {\n return {\n Attributes:\n output.Attributes !== undefined && output.Attributes !== null\n ? deserializeAws_restJson1MapOf__string(output.Attributes, context)\n : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n Description: output.Description !== undefined && output.Description !== null ? output.Description : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n Name: output.Name !== undefined && output.Name !== null ? output.Name : undefined,\n RecommendationProviderIdType:\n output.RecommendationProviderIdType !== undefined && output.RecommendationProviderIdType !== null\n ? output.RecommendationProviderIdType\n : undefined,\n RecommendationProviderRoleArn:\n output.RecommendationProviderRoleArn !== undefined && output.RecommendationProviderRoleArn !== null\n ? output.RecommendationProviderRoleArn\n : undefined,\n RecommendationProviderUri:\n output.RecommendationProviderUri !== undefined && output.RecommendationProviderUri !== null\n ? output.RecommendationProviderUri\n : undefined,\n RecommendationTransformerUri:\n output.RecommendationTransformerUri !== undefined && output.RecommendationTransformerUri !== null\n ? output.RecommendationTransformerUri\n : undefined,\n RecommendationsDisplayName:\n output.RecommendationsDisplayName !== undefined && output.RecommendationsDisplayName !== null\n ? output.RecommendationsDisplayName\n : undefined,\n RecommendationsPerMessage:\n output.RecommendationsPerMessage !== undefined && output.RecommendationsPerMessage !== null\n ? output.RecommendationsPerMessage\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1ResultRow = (output: any, context: __SerdeContext): ResultRow => {\n return {\n GroupedBys:\n output.GroupedBys !== undefined && output.GroupedBys !== null\n ? deserializeAws_restJson1ListOfResultRowValue(output.GroupedBys, context)\n : undefined,\n Values:\n output.Values !== undefined && output.Values !== null\n ? deserializeAws_restJson1ListOfResultRowValue(output.Values, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1ResultRowValue = (output: any, context: __SerdeContext): ResultRowValue => {\n return {\n Key: output.Key !== undefined && output.Key !== null ? output.Key : undefined,\n Type: output.Type !== undefined && output.Type !== null ? output.Type : undefined,\n Value: output.Value !== undefined && output.Value !== null ? output.Value : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1Schedule = (output: any, context: __SerdeContext): Schedule => {\n return {\n EndTime: output.EndTime !== undefined && output.EndTime !== null ? output.EndTime : undefined,\n EventFilter:\n output.EventFilter !== undefined && output.EventFilter !== null\n ? deserializeAws_restJson1CampaignEventFilter(output.EventFilter, context)\n : undefined,\n Frequency: output.Frequency !== undefined && output.Frequency !== null ? output.Frequency : undefined,\n IsLocalTime: output.IsLocalTime !== undefined && output.IsLocalTime !== null ? output.IsLocalTime : undefined,\n QuietTime:\n output.QuietTime !== undefined && output.QuietTime !== null\n ? deserializeAws_restJson1QuietTime(output.QuietTime, context)\n : undefined,\n StartTime: output.StartTime !== undefined && output.StartTime !== null ? output.StartTime : undefined,\n Timezone: output.Timezone !== undefined && output.Timezone !== null ? output.Timezone : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1SegmentBehaviors = (output: any, context: __SerdeContext): SegmentBehaviors => {\n return {\n Recency:\n output.Recency !== undefined && output.Recency !== null\n ? deserializeAws_restJson1RecencyDimension(output.Recency, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1SegmentCondition = (output: any, context: __SerdeContext): SegmentCondition => {\n return {\n SegmentId: output.SegmentId !== undefined && output.SegmentId !== null ? output.SegmentId : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1SegmentDemographics = (output: any, context: __SerdeContext): SegmentDemographics => {\n return {\n AppVersion:\n output.AppVersion !== undefined && output.AppVersion !== null\n ? deserializeAws_restJson1SetDimension(output.AppVersion, context)\n : undefined,\n Channel:\n output.Channel !== undefined && output.Channel !== null\n ? deserializeAws_restJson1SetDimension(output.Channel, context)\n : undefined,\n DeviceType:\n output.DeviceType !== undefined && output.DeviceType !== null\n ? deserializeAws_restJson1SetDimension(output.DeviceType, context)\n : undefined,\n Make:\n output.Make !== undefined && output.Make !== null\n ? deserializeAws_restJson1SetDimension(output.Make, context)\n : undefined,\n Model:\n output.Model !== undefined && output.Model !== null\n ? deserializeAws_restJson1SetDimension(output.Model, context)\n : undefined,\n Platform:\n output.Platform !== undefined && output.Platform !== null\n ? deserializeAws_restJson1SetDimension(output.Platform, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1SegmentDimensions = (output: any, context: __SerdeContext): SegmentDimensions => {\n return {\n Attributes:\n output.Attributes !== undefined && output.Attributes !== null\n ? deserializeAws_restJson1MapOfAttributeDimension(output.Attributes, context)\n : undefined,\n Behavior:\n output.Behavior !== undefined && output.Behavior !== null\n ? deserializeAws_restJson1SegmentBehaviors(output.Behavior, context)\n : undefined,\n Demographic:\n output.Demographic !== undefined && output.Demographic !== null\n ? deserializeAws_restJson1SegmentDemographics(output.Demographic, context)\n : undefined,\n Location:\n output.Location !== undefined && output.Location !== null\n ? deserializeAws_restJson1SegmentLocation(output.Location, context)\n : undefined,\n Metrics:\n output.Metrics !== undefined && output.Metrics !== null\n ? deserializeAws_restJson1MapOfMetricDimension(output.Metrics, context)\n : undefined,\n UserAttributes:\n output.UserAttributes !== undefined && output.UserAttributes !== null\n ? deserializeAws_restJson1MapOfAttributeDimension(output.UserAttributes, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1SegmentGroup = (output: any, context: __SerdeContext): SegmentGroup => {\n return {\n Dimensions:\n output.Dimensions !== undefined && output.Dimensions !== null\n ? deserializeAws_restJson1ListOfSegmentDimensions(output.Dimensions, context)\n : undefined,\n SourceSegments:\n output.SourceSegments !== undefined && output.SourceSegments !== null\n ? deserializeAws_restJson1ListOfSegmentReference(output.SourceSegments, context)\n : undefined,\n SourceType: output.SourceType !== undefined && output.SourceType !== null ? output.SourceType : undefined,\n Type: output.Type !== undefined && output.Type !== null ? output.Type : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1SegmentGroupList = (output: any, context: __SerdeContext): SegmentGroupList => {\n return {\n Groups:\n output.Groups !== undefined && output.Groups !== null\n ? deserializeAws_restJson1ListOfSegmentGroup(output.Groups, context)\n : undefined,\n Include: output.Include !== undefined && output.Include !== null ? output.Include : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1SegmentImportResource = (output: any, context: __SerdeContext): SegmentImportResource => {\n return {\n ChannelCounts:\n output.ChannelCounts !== undefined && output.ChannelCounts !== null\n ? deserializeAws_restJson1MapOf__integer(output.ChannelCounts, context)\n : undefined,\n ExternalId: output.ExternalId !== undefined && output.ExternalId !== null ? output.ExternalId : undefined,\n Format: output.Format !== undefined && output.Format !== null ? output.Format : undefined,\n RoleArn: output.RoleArn !== undefined && output.RoleArn !== null ? output.RoleArn : undefined,\n S3Url: output.S3Url !== undefined && output.S3Url !== null ? output.S3Url : undefined,\n Size: output.Size !== undefined && output.Size !== null ? output.Size : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1SegmentLocation = (output: any, context: __SerdeContext): SegmentLocation => {\n return {\n Country:\n output.Country !== undefined && output.Country !== null\n ? deserializeAws_restJson1SetDimension(output.Country, context)\n : undefined,\n GPSPoint:\n output.GPSPoint !== undefined && output.GPSPoint !== null\n ? deserializeAws_restJson1GPSPointDimension(output.GPSPoint, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1SegmentReference = (output: any, context: __SerdeContext): SegmentReference => {\n return {\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1SegmentResponse = (output: any, context: __SerdeContext): SegmentResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n Arn: output.Arn !== undefined && output.Arn !== null ? output.Arn : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n Dimensions:\n output.Dimensions !== undefined && output.Dimensions !== null\n ? deserializeAws_restJson1SegmentDimensions(output.Dimensions, context)\n : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n ImportDefinition:\n output.ImportDefinition !== undefined && output.ImportDefinition !== null\n ? deserializeAws_restJson1SegmentImportResource(output.ImportDefinition, context)\n : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n Name: output.Name !== undefined && output.Name !== null ? output.Name : undefined,\n SegmentGroups:\n output.SegmentGroups !== undefined && output.SegmentGroups !== null\n ? deserializeAws_restJson1SegmentGroupList(output.SegmentGroups, context)\n : undefined,\n SegmentType: output.SegmentType !== undefined && output.SegmentType !== null ? output.SegmentType : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n tags:\n output.tags !== undefined && output.tags !== null\n ? deserializeAws_restJson1MapOf__string(output.tags, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1SegmentsResponse = (output: any, context: __SerdeContext): SegmentsResponse => {\n return {\n Item:\n output.Item !== undefined && output.Item !== null\n ? deserializeAws_restJson1ListOfSegmentResponse(output.Item, context)\n : undefined,\n NextToken: output.NextToken !== undefined && output.NextToken !== null ? output.NextToken : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1SendUsersMessageResponse = (\n output: any,\n context: __SerdeContext\n): SendUsersMessageResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n RequestId: output.RequestId !== undefined && output.RequestId !== null ? output.RequestId : undefined,\n Result:\n output.Result !== undefined && output.Result !== null\n ? deserializeAws_restJson1MapOfMapOfEndpointMessageResult(output.Result, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1SetDimension = (output: any, context: __SerdeContext): SetDimension => {\n return {\n DimensionType:\n output.DimensionType !== undefined && output.DimensionType !== null ? output.DimensionType : undefined,\n Values:\n output.Values !== undefined && output.Values !== null\n ? deserializeAws_restJson1ListOf__string(output.Values, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1SimpleCondition = (output: any, context: __SerdeContext): SimpleCondition => {\n return {\n EventCondition:\n output.EventCondition !== undefined && output.EventCondition !== null\n ? deserializeAws_restJson1EventCondition(output.EventCondition, context)\n : undefined,\n SegmentCondition:\n output.SegmentCondition !== undefined && output.SegmentCondition !== null\n ? deserializeAws_restJson1SegmentCondition(output.SegmentCondition, context)\n : undefined,\n SegmentDimensions:\n output.segmentDimensions !== undefined && output.segmentDimensions !== null\n ? deserializeAws_restJson1SegmentDimensions(output.segmentDimensions, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1SMSChannelResponse = (output: any, context: __SerdeContext): SMSChannelResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n Enabled: output.Enabled !== undefined && output.Enabled !== null ? output.Enabled : undefined,\n HasCredential:\n output.HasCredential !== undefined && output.HasCredential !== null ? output.HasCredential : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n IsArchived: output.IsArchived !== undefined && output.IsArchived !== null ? output.IsArchived : undefined,\n LastModifiedBy:\n output.LastModifiedBy !== undefined && output.LastModifiedBy !== null ? output.LastModifiedBy : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n Platform: output.Platform !== undefined && output.Platform !== null ? output.Platform : undefined,\n PromotionalMessagesPerSecond:\n output.PromotionalMessagesPerSecond !== undefined && output.PromotionalMessagesPerSecond !== null\n ? output.PromotionalMessagesPerSecond\n : undefined,\n SenderId: output.SenderId !== undefined && output.SenderId !== null ? output.SenderId : undefined,\n ShortCode: output.ShortCode !== undefined && output.ShortCode !== null ? output.ShortCode : undefined,\n TransactionalMessagesPerSecond:\n output.TransactionalMessagesPerSecond !== undefined && output.TransactionalMessagesPerSecond !== null\n ? output.TransactionalMessagesPerSecond\n : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1SMSMessageActivity = (output: any, context: __SerdeContext): SMSMessageActivity => {\n return {\n MessageConfig:\n output.MessageConfig !== undefined && output.MessageConfig !== null\n ? deserializeAws_restJson1JourneySMSMessage(output.MessageConfig, context)\n : undefined,\n NextActivity: output.NextActivity !== undefined && output.NextActivity !== null ? output.NextActivity : undefined,\n TemplateName: output.TemplateName !== undefined && output.TemplateName !== null ? output.TemplateName : undefined,\n TemplateVersion:\n output.TemplateVersion !== undefined && output.TemplateVersion !== null ? output.TemplateVersion : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1SMSTemplateResponse = (output: any, context: __SerdeContext): SMSTemplateResponse => {\n return {\n Arn: output.Arn !== undefined && output.Arn !== null ? output.Arn : undefined,\n Body: output.Body !== undefined && output.Body !== null ? output.Body : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n DefaultSubstitutions:\n output.DefaultSubstitutions !== undefined && output.DefaultSubstitutions !== null\n ? output.DefaultSubstitutions\n : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n RecommenderId:\n output.RecommenderId !== undefined && output.RecommenderId !== null ? output.RecommenderId : undefined,\n TemplateDescription:\n output.TemplateDescription !== undefined && output.TemplateDescription !== null\n ? output.TemplateDescription\n : undefined,\n TemplateName: output.TemplateName !== undefined && output.TemplateName !== null ? output.TemplateName : undefined,\n TemplateType: output.TemplateType !== undefined && output.TemplateType !== null ? output.TemplateType : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n tags:\n output.tags !== undefined && output.tags !== null\n ? deserializeAws_restJson1MapOf__string(output.tags, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1StartCondition = (output: any, context: __SerdeContext): StartCondition => {\n return {\n Description: output.Description !== undefined && output.Description !== null ? output.Description : undefined,\n EventStartCondition:\n output.EventStartCondition !== undefined && output.EventStartCondition !== null\n ? deserializeAws_restJson1EventStartCondition(output.EventStartCondition, context)\n : undefined,\n SegmentStartCondition:\n output.SegmentStartCondition !== undefined && output.SegmentStartCondition !== null\n ? deserializeAws_restJson1SegmentCondition(output.SegmentStartCondition, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1TagsModel = (output: any, context: __SerdeContext): TagsModel => {\n return {\n tags:\n output.tags !== undefined && output.tags !== null\n ? deserializeAws_restJson1MapOf__string(output.tags, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1Template = (output: any, context: __SerdeContext): Template => {\n return {\n Name: output.Name !== undefined && output.Name !== null ? output.Name : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1TemplateConfiguration = (output: any, context: __SerdeContext): TemplateConfiguration => {\n return {\n EmailTemplate:\n output.EmailTemplate !== undefined && output.EmailTemplate !== null\n ? deserializeAws_restJson1Template(output.EmailTemplate, context)\n : undefined,\n PushTemplate:\n output.PushTemplate !== undefined && output.PushTemplate !== null\n ? deserializeAws_restJson1Template(output.PushTemplate, context)\n : undefined,\n SMSTemplate:\n output.SMSTemplate !== undefined && output.SMSTemplate !== null\n ? deserializeAws_restJson1Template(output.SMSTemplate, context)\n : undefined,\n VoiceTemplate:\n output.VoiceTemplate !== undefined && output.VoiceTemplate !== null\n ? deserializeAws_restJson1Template(output.VoiceTemplate, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1TemplateResponse = (output: any, context: __SerdeContext): TemplateResponse => {\n return {\n Arn: output.Arn !== undefined && output.Arn !== null ? output.Arn : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n DefaultSubstitutions:\n output.DefaultSubstitutions !== undefined && output.DefaultSubstitutions !== null\n ? output.DefaultSubstitutions\n : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n TemplateDescription:\n output.TemplateDescription !== undefined && output.TemplateDescription !== null\n ? output.TemplateDescription\n : undefined,\n TemplateName: output.TemplateName !== undefined && output.TemplateName !== null ? output.TemplateName : undefined,\n TemplateType: output.TemplateType !== undefined && output.TemplateType !== null ? output.TemplateType : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n tags:\n output.tags !== undefined && output.tags !== null\n ? deserializeAws_restJson1MapOf__string(output.tags, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1TemplatesResponse = (output: any, context: __SerdeContext): TemplatesResponse => {\n return {\n Item:\n output.Item !== undefined && output.Item !== null\n ? deserializeAws_restJson1ListOfTemplateResponse(output.Item, context)\n : undefined,\n NextToken: output.NextToken !== undefined && output.NextToken !== null ? output.NextToken : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1TemplateVersionResponse = (\n output: any,\n context: __SerdeContext\n): TemplateVersionResponse => {\n return {\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n DefaultSubstitutions:\n output.DefaultSubstitutions !== undefined && output.DefaultSubstitutions !== null\n ? output.DefaultSubstitutions\n : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n TemplateDescription:\n output.TemplateDescription !== undefined && output.TemplateDescription !== null\n ? output.TemplateDescription\n : undefined,\n TemplateName: output.TemplateName !== undefined && output.TemplateName !== null ? output.TemplateName : undefined,\n TemplateType: output.TemplateType !== undefined && output.TemplateType !== null ? output.TemplateType : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1TemplateVersionsResponse = (\n output: any,\n context: __SerdeContext\n): TemplateVersionsResponse => {\n return {\n Item:\n output.Item !== undefined && output.Item !== null\n ? deserializeAws_restJson1ListOfTemplateVersionResponse(output.Item, context)\n : undefined,\n Message: output.Message !== undefined && output.Message !== null ? output.Message : undefined,\n NextToken: output.NextToken !== undefined && output.NextToken !== null ? output.NextToken : undefined,\n RequestID: output.RequestID !== undefined && output.RequestID !== null ? output.RequestID : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1TreatmentResource = (output: any, context: __SerdeContext): TreatmentResource => {\n return {\n CustomDeliveryConfiguration:\n output.CustomDeliveryConfiguration !== undefined && output.CustomDeliveryConfiguration !== null\n ? deserializeAws_restJson1CustomDeliveryConfiguration(output.CustomDeliveryConfiguration, context)\n : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n MessageConfiguration:\n output.MessageConfiguration !== undefined && output.MessageConfiguration !== null\n ? deserializeAws_restJson1MessageConfiguration(output.MessageConfiguration, context)\n : undefined,\n Schedule:\n output.Schedule !== undefined && output.Schedule !== null\n ? deserializeAws_restJson1Schedule(output.Schedule, context)\n : undefined,\n SizePercent: output.SizePercent !== undefined && output.SizePercent !== null ? output.SizePercent : undefined,\n State:\n output.State !== undefined && output.State !== null\n ? deserializeAws_restJson1CampaignState(output.State, context)\n : undefined,\n TemplateConfiguration:\n output.TemplateConfiguration !== undefined && output.TemplateConfiguration !== null\n ? deserializeAws_restJson1TemplateConfiguration(output.TemplateConfiguration, context)\n : undefined,\n TreatmentDescription:\n output.TreatmentDescription !== undefined && output.TreatmentDescription !== null\n ? output.TreatmentDescription\n : undefined,\n TreatmentName:\n output.TreatmentName !== undefined && output.TreatmentName !== null ? output.TreatmentName : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1VoiceChannelResponse = (output: any, context: __SerdeContext): VoiceChannelResponse => {\n return {\n ApplicationId:\n output.ApplicationId !== undefined && output.ApplicationId !== null ? output.ApplicationId : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n Enabled: output.Enabled !== undefined && output.Enabled !== null ? output.Enabled : undefined,\n HasCredential:\n output.HasCredential !== undefined && output.HasCredential !== null ? output.HasCredential : undefined,\n Id: output.Id !== undefined && output.Id !== null ? output.Id : undefined,\n IsArchived: output.IsArchived !== undefined && output.IsArchived !== null ? output.IsArchived : undefined,\n LastModifiedBy:\n output.LastModifiedBy !== undefined && output.LastModifiedBy !== null ? output.LastModifiedBy : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n Platform: output.Platform !== undefined && output.Platform !== null ? output.Platform : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1VoiceTemplateResponse = (output: any, context: __SerdeContext): VoiceTemplateResponse => {\n return {\n Arn: output.Arn !== undefined && output.Arn !== null ? output.Arn : undefined,\n Body: output.Body !== undefined && output.Body !== null ? output.Body : undefined,\n CreationDate: output.CreationDate !== undefined && output.CreationDate !== null ? output.CreationDate : undefined,\n DefaultSubstitutions:\n output.DefaultSubstitutions !== undefined && output.DefaultSubstitutions !== null\n ? output.DefaultSubstitutions\n : undefined,\n LanguageCode: output.LanguageCode !== undefined && output.LanguageCode !== null ? output.LanguageCode : undefined,\n LastModifiedDate:\n output.LastModifiedDate !== undefined && output.LastModifiedDate !== null ? output.LastModifiedDate : undefined,\n TemplateDescription:\n output.TemplateDescription !== undefined && output.TemplateDescription !== null\n ? output.TemplateDescription\n : undefined,\n TemplateName: output.TemplateName !== undefined && output.TemplateName !== null ? output.TemplateName : undefined,\n TemplateType: output.TemplateType !== undefined && output.TemplateType !== null ? output.TemplateType : undefined,\n Version: output.Version !== undefined && output.Version !== null ? output.Version : undefined,\n VoiceId: output.VoiceId !== undefined && output.VoiceId !== null ? output.VoiceId : undefined,\n tags:\n output.tags !== undefined && output.tags !== null\n ? deserializeAws_restJson1MapOf__string(output.tags, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1WaitActivity = (output: any, context: __SerdeContext): WaitActivity => {\n return {\n NextActivity: output.NextActivity !== undefined && output.NextActivity !== null ? output.NextActivity : undefined,\n WaitTime:\n output.WaitTime !== undefined && output.WaitTime !== null\n ? deserializeAws_restJson1WaitTime(output.WaitTime, context)\n : undefined,\n } as any;\n};\n\nconst deserializeAws_restJson1WaitTime = (output: any, context: __SerdeContext): WaitTime => {\n return {\n WaitFor: output.WaitFor !== undefined && output.WaitFor !== null ? output.WaitFor : undefined,\n WaitUntil: output.WaitUntil !== undefined && output.WaitUntil !== null ? output.WaitUntil : undefined,\n } as any;\n};\n\nconst deserializeMetadata = (output: __HttpResponse): __ResponseMetadata => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"],\n});\n\n// Collect low-level response body stream to Uint8Array.\nconst collectBody = (streamBody: any = new Uint8Array(), context: __SerdeContext): Promise => {\n if (streamBody instanceof Uint8Array) {\n return Promise.resolve(streamBody);\n }\n return context.streamCollector(streamBody) || Promise.resolve(new Uint8Array());\n};\n\n// Encode Uint8Array data into string with utf-8.\nconst collectBodyString = (streamBody: any, context: __SerdeContext): Promise =>\n collectBody(streamBody, context).then((body) => context.utf8Encoder(body));\n\nconst isSerializableHeaderValue = (value: any): boolean =>\n value !== undefined &&\n value !== null &&\n value !== \"\" &&\n (!Object.getOwnPropertyNames(value).includes(\"length\") || value.length != 0) &&\n (!Object.getOwnPropertyNames(value).includes(\"size\") || value.size != 0);\n\nconst parseBody = (streamBody: any, context: __SerdeContext): any =>\n collectBodyString(streamBody, context).then((encoded) => {\n if (encoded.length) {\n return JSON.parse(encoded);\n }\n return {};\n });\n\n/**\n * Load an error code for the aws.rest-json-1.1 protocol.\n */\nconst loadRestJsonErrorCode = (output: __HttpResponse, data: any): string => {\n const findKey = (object: any, key: string) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase());\n\n const sanitizeErrorCode = (rawValue: string): string => {\n let cleanValue = rawValue;\n if (cleanValue.indexOf(\":\") >= 0) {\n cleanValue = cleanValue.split(\":\")[0];\n }\n if (cleanValue.indexOf(\"#\") >= 0) {\n cleanValue = cleanValue.split(\"#\")[1];\n }\n return cleanValue;\n };\n\n const headerKey = findKey(output.headers, \"x-amzn-errortype\");\n if (headerKey !== undefined) {\n return sanitizeErrorCode(output.headers[headerKey]);\n }\n\n if (data.code !== undefined) {\n return sanitizeErrorCode(data.code);\n }\n\n if (data[\"__type\"] !== undefined) {\n return sanitizeErrorCode(data[\"__type\"]);\n }\n\n return \"\";\n};\n","import { PinpointClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from \"../PinpointClient\";\nimport { PutEventsRequest, PutEventsResponse } from \"../models/models_1\";\nimport {\n deserializeAws_restJson1PutEventsCommand,\n serializeAws_restJson1PutEventsCommand,\n} from \"../protocols/Aws_restJson1\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from \"@aws-sdk/protocol-http\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nimport {\n FinalizeHandlerArguments,\n Handler,\n HandlerExecutionContext,\n MiddlewareStack,\n HttpHandlerOptions as __HttpHandlerOptions,\n MetadataBearer as __MetadataBearer,\n SerdeContext as __SerdeContext,\n} from \"@aws-sdk/types\";\n\nexport type PutEventsCommandInput = PutEventsRequest;\nexport type PutEventsCommandOutput = PutEventsResponse & __MetadataBearer;\n\n/**\n *

Creates a new event to record for endpoints, or creates or updates endpoint data that existing events are associated with.

\n */\nexport class PutEventsCommand extends $Command<\n PutEventsCommandInput,\n PutEventsCommandOutput,\n PinpointClientResolvedConfig\n> {\n // Start section: command_properties\n // End section: command_properties\n\n constructor(readonly input: PutEventsCommandInput) {\n // Start section: command_constructor\n super();\n // End section: command_constructor\n }\n\n /**\n * @internal\n */\n resolveMiddleware(\n clientStack: MiddlewareStack,\n configuration: PinpointClientResolvedConfig,\n options?: __HttpHandlerOptions\n ): Handler {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n\n const stack = clientStack.concat(this.middlewareStack);\n\n const { logger } = configuration;\n const clientName = \"PinpointClient\";\n const commandName = \"PutEventsCommand\";\n const handlerExecutionContext: HandlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: PutEventsRequest.filterSensitiveLog,\n outputFilterSensitiveLog: PutEventsResponse.filterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve(\n (request: FinalizeHandlerArguments) =>\n requestHandler.handle(request.request as __HttpRequest, options || {}),\n handlerExecutionContext\n );\n }\n\n private serialize(input: PutEventsCommandInput, context: __SerdeContext): Promise<__HttpRequest> {\n return serializeAws_restJson1PutEventsCommand(input, context);\n }\n\n private deserialize(output: __HttpResponse, context: __SerdeContext): Promise {\n return deserializeAws_restJson1PutEventsCommand(output, context);\n }\n\n // Start section: command_body_extra\n // End section: command_body_extra\n}\n","import { PinpointClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from \"../PinpointClient\";\nimport { UpdateEndpointRequest, UpdateEndpointResponse } from \"../models/models_1\";\nimport {\n deserializeAws_restJson1UpdateEndpointCommand,\n serializeAws_restJson1UpdateEndpointCommand,\n} from \"../protocols/Aws_restJson1\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from \"@aws-sdk/protocol-http\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nimport {\n FinalizeHandlerArguments,\n Handler,\n HandlerExecutionContext,\n MiddlewareStack,\n HttpHandlerOptions as __HttpHandlerOptions,\n MetadataBearer as __MetadataBearer,\n SerdeContext as __SerdeContext,\n} from \"@aws-sdk/types\";\n\nexport type UpdateEndpointCommandInput = UpdateEndpointRequest;\nexport type UpdateEndpointCommandOutput = UpdateEndpointResponse & __MetadataBearer;\n\n/**\n *

Creates a new endpoint for an application or updates the settings and attributes of an existing endpoint for an application. You can also use this operation to define custom attributes for an endpoint. If an update includes one or more values for a custom attribute, Amazon Pinpoint replaces (overwrites) any existing values with the new values.

\n */\nexport class UpdateEndpointCommand extends $Command<\n UpdateEndpointCommandInput,\n UpdateEndpointCommandOutput,\n PinpointClientResolvedConfig\n> {\n // Start section: command_properties\n // End section: command_properties\n\n constructor(readonly input: UpdateEndpointCommandInput) {\n // Start section: command_constructor\n super();\n // End section: command_constructor\n }\n\n /**\n * @internal\n */\n resolveMiddleware(\n clientStack: MiddlewareStack,\n configuration: PinpointClientResolvedConfig,\n options?: __HttpHandlerOptions\n ): Handler {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n\n const stack = clientStack.concat(this.middlewareStack);\n\n const { logger } = configuration;\n const clientName = \"PinpointClient\";\n const commandName = \"UpdateEndpointCommand\";\n const handlerExecutionContext: HandlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: UpdateEndpointRequest.filterSensitiveLog,\n outputFilterSensitiveLog: UpdateEndpointResponse.filterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve(\n (request: FinalizeHandlerArguments) =>\n requestHandler.handle(request.request as __HttpRequest, options || {}),\n handlerExecutionContext\n );\n }\n\n private serialize(input: UpdateEndpointCommandInput, context: __SerdeContext): Promise<__HttpRequest> {\n return serializeAws_restJson1UpdateEndpointCommand(input, context);\n }\n\n private deserialize(output: __HttpResponse, context: __SerdeContext): Promise {\n return deserializeAws_restJson1UpdateEndpointCommand(output, context);\n }\n\n // Start section: command_body_extra\n // End section: command_body_extra\n}\n","import { RegionInfo, RegionInfoProvider } from \"@aws-sdk/types\";\n\n// Partition default templates\nconst AWS_TEMPLATE = \"pinpoint.{region}.amazonaws.com\";\nconst AWS_CN_TEMPLATE = \"pinpoint.{region}.amazonaws.com.cn\";\nconst AWS_ISO_TEMPLATE = \"pinpoint.{region}.c2s.ic.gov\";\nconst AWS_ISO_B_TEMPLATE = \"pinpoint.{region}.sc2s.sgov.gov\";\nconst AWS_US_GOV_TEMPLATE = \"pinpoint.{region}.amazonaws.com\";\n\n// Partition regions\nconst AWS_REGIONS = new Set([\n \"af-south-1\",\n \"ap-east-1\",\n \"ap-northeast-1\",\n \"ap-northeast-2\",\n \"ap-south-1\",\n \"ap-southeast-1\",\n \"ap-southeast-2\",\n \"ca-central-1\",\n \"eu-central-1\",\n \"eu-north-1\",\n \"eu-south-1\",\n \"eu-west-1\",\n \"eu-west-2\",\n \"eu-west-3\",\n \"me-south-1\",\n \"sa-east-1\",\n \"us-east-1\",\n \"us-east-2\",\n \"us-west-1\",\n \"us-west-2\",\n]);\nconst AWS_CN_REGIONS = new Set([\"cn-north-1\", \"cn-northwest-1\"]);\nconst AWS_ISO_REGIONS = new Set([\"us-iso-east-1\"]);\nconst AWS_ISO_B_REGIONS = new Set([\"us-isob-east-1\"]);\nconst AWS_US_GOV_REGIONS = new Set([\"us-gov-east-1\", \"us-gov-west-1\"]);\n\nexport const defaultRegionInfoProvider: RegionInfoProvider = (region: string, options?: any) => {\n let regionInfo: RegionInfo | undefined = undefined;\n switch (region) {\n // First, try to match exact region names.\n case \"ap-northeast-1\":\n regionInfo = {\n hostname: \"pinpoint.ap-northeast-1.amazonaws.com\",\n partition: \"aws\",\n signingService: \"mobiletargeting\",\n };\n break;\n case \"ap-northeast-2\":\n regionInfo = {\n hostname: \"pinpoint.ap-northeast-2.amazonaws.com\",\n partition: \"aws\",\n signingService: \"mobiletargeting\",\n };\n break;\n case \"ap-south-1\":\n regionInfo = {\n hostname: \"pinpoint.ap-south-1.amazonaws.com\",\n partition: \"aws\",\n signingService: \"mobiletargeting\",\n };\n break;\n case \"ap-southeast-1\":\n regionInfo = {\n hostname: \"pinpoint.ap-southeast-1.amazonaws.com\",\n partition: \"aws\",\n signingService: \"mobiletargeting\",\n };\n break;\n case \"ap-southeast-2\":\n regionInfo = {\n hostname: \"pinpoint.ap-southeast-2.amazonaws.com\",\n partition: \"aws\",\n signingService: \"mobiletargeting\",\n };\n break;\n case \"ca-central-1\":\n regionInfo = {\n hostname: \"pinpoint.ca-central-1.amazonaws.com\",\n partition: \"aws\",\n signingService: \"mobiletargeting\",\n };\n break;\n case \"eu-central-1\":\n regionInfo = {\n hostname: \"pinpoint.eu-central-1.amazonaws.com\",\n partition: \"aws\",\n signingService: \"mobiletargeting\",\n };\n break;\n case \"eu-west-1\":\n regionInfo = {\n hostname: \"pinpoint.eu-west-1.amazonaws.com\",\n partition: \"aws\",\n signingService: \"mobiletargeting\",\n };\n break;\n case \"eu-west-2\":\n regionInfo = {\n hostname: \"pinpoint.eu-west-2.amazonaws.com\",\n partition: \"aws\",\n signingService: \"mobiletargeting\",\n };\n break;\n case \"fips-us-east-1\":\n regionInfo = {\n hostname: \"pinpoint-fips.us-east-1.amazonaws.com\",\n partition: \"aws\",\n signingRegion: \"us-east-1\",\n };\n break;\n case \"fips-us-gov-west-1\":\n regionInfo = {\n hostname: \"pinpoint-fips.us-gov-west-1.amazonaws.com\",\n partition: \"aws-us-gov\",\n signingRegion: \"us-gov-west-1\",\n };\n break;\n case \"fips-us-west-2\":\n regionInfo = {\n hostname: \"pinpoint-fips.us-west-2.amazonaws.com\",\n partition: \"aws\",\n signingRegion: \"us-west-2\",\n };\n break;\n case \"us-east-1\":\n regionInfo = {\n hostname: \"pinpoint.us-east-1.amazonaws.com\",\n partition: \"aws\",\n signingRegion: \"us-east-1\",\n };\n break;\n case \"us-gov-west-1\":\n regionInfo = {\n hostname: \"pinpoint.us-gov-west-1.amazonaws.com\",\n partition: \"aws-us-gov\",\n signingRegion: \"us-gov-west-1\",\n };\n break;\n case \"us-west-2\":\n regionInfo = {\n hostname: \"pinpoint.us-west-2.amazonaws.com\",\n partition: \"aws\",\n signingRegion: \"us-west-2\",\n };\n break;\n // Next, try to match partition endpoints.\n default:\n if (AWS_REGIONS.has(region)) {\n regionInfo = {\n hostname: AWS_TEMPLATE.replace(\"{region}\", region),\n partition: \"aws\",\n signingService: \"mobiletargeting\",\n };\n }\n if (AWS_CN_REGIONS.has(region)) {\n regionInfo = {\n hostname: AWS_CN_TEMPLATE.replace(\"{region}\", region),\n partition: \"aws-cn\",\n };\n }\n if (AWS_ISO_REGIONS.has(region)) {\n regionInfo = {\n hostname: AWS_ISO_TEMPLATE.replace(\"{region}\", region),\n partition: \"aws-iso\",\n };\n }\n if (AWS_ISO_B_REGIONS.has(region)) {\n regionInfo = {\n hostname: AWS_ISO_B_TEMPLATE.replace(\"{region}\", region),\n partition: \"aws-iso-b\",\n };\n }\n if (AWS_US_GOV_REGIONS.has(region)) {\n regionInfo = {\n hostname: AWS_US_GOV_TEMPLATE.replace(\"{region}\", region),\n partition: \"aws-us-gov\",\n signingService: \"mobiletargeting\",\n };\n }\n // Finally, assume it's an AWS partition endpoint.\n if (regionInfo === undefined) {\n regionInfo = {\n hostname: AWS_TEMPLATE.replace(\"{region}\", region),\n partition: \"aws\",\n signingService: \"mobiletargeting\",\n };\n }\n }\n return Promise.resolve({ signingService: \"mobiletargeting\", ...regionInfo });\n};\n","import { defaultRegionInfoProvider } from \"./endpoints\";\nimport { Logger as __Logger } from \"@aws-sdk/types\";\nimport { parseUrl } from \"@aws-sdk/url-parser\";\n\n/**\n * @internal\n */\nexport const ClientSharedValues = {\n apiVersion: \"2016-12-01\",\n disableHostPrefix: false,\n logger: {} as __Logger,\n regionInfoProvider: defaultRegionInfoProvider,\n serviceId: \"Pinpoint\",\n urlParser: parseUrl,\n};\n","import packageInfo from \"./package.json\";\n\nimport { Sha256 } from \"@aws-crypto/sha256-browser\";\nimport { FetchHttpHandler, streamCollector } from \"@aws-sdk/fetch-http-handler\";\nimport { invalidProvider } from \"@aws-sdk/invalid-dependency\";\nimport { DEFAULT_MAX_ATTEMPTS } from \"@aws-sdk/middleware-retry\";\nimport { fromBase64, toBase64 } from \"@aws-sdk/util-base64-browser\";\nimport { calculateBodyLength } from \"@aws-sdk/util-body-length-browser\";\nimport { defaultUserAgent } from \"@aws-sdk/util-user-agent-browser\";\nimport { fromUtf8, toUtf8 } from \"@aws-sdk/util-utf8-browser\";\nimport { ClientDefaults } from \"./PinpointClient\";\nimport { ClientSharedValues } from \"./runtimeConfig.shared\";\n\n/**\n * @internal\n */\nexport const ClientDefaultValues: Required = {\n ...ClientSharedValues,\n runtime: \"browser\",\n base64Decoder: fromBase64,\n base64Encoder: toBase64,\n bodyLengthChecker: calculateBodyLength,\n credentialDefaultProvider: (_: unknown) => () => Promise.reject(new Error(\"Credential is missing\")),\n defaultUserAgentProvider: defaultUserAgent({\n serviceId: ClientSharedValues.serviceId,\n clientVersion: packageInfo.version,\n }),\n maxAttempts: DEFAULT_MAX_ATTEMPTS,\n region: invalidProvider(\"Region is missing\"),\n requestHandler: new FetchHttpHandler(),\n sha256: Sha256,\n streamCollector,\n utf8Decoder: fromUtf8,\n utf8Encoder: toUtf8,\n};\n","import { CreateAppCommandInput, CreateAppCommandOutput } from \"./commands/CreateAppCommand\";\nimport { CreateCampaignCommandInput, CreateCampaignCommandOutput } from \"./commands/CreateCampaignCommand\";\nimport {\n CreateEmailTemplateCommandInput,\n CreateEmailTemplateCommandOutput,\n} from \"./commands/CreateEmailTemplateCommand\";\nimport { CreateExportJobCommandInput, CreateExportJobCommandOutput } from \"./commands/CreateExportJobCommand\";\nimport { CreateImportJobCommandInput, CreateImportJobCommandOutput } from \"./commands/CreateImportJobCommand\";\nimport { CreateJourneyCommandInput, CreateJourneyCommandOutput } from \"./commands/CreateJourneyCommand\";\nimport { CreatePushTemplateCommandInput, CreatePushTemplateCommandOutput } from \"./commands/CreatePushTemplateCommand\";\nimport {\n CreateRecommenderConfigurationCommandInput,\n CreateRecommenderConfigurationCommandOutput,\n} from \"./commands/CreateRecommenderConfigurationCommand\";\nimport { CreateSegmentCommandInput, CreateSegmentCommandOutput } from \"./commands/CreateSegmentCommand\";\nimport { CreateSmsTemplateCommandInput, CreateSmsTemplateCommandOutput } from \"./commands/CreateSmsTemplateCommand\";\nimport {\n CreateVoiceTemplateCommandInput,\n CreateVoiceTemplateCommandOutput,\n} from \"./commands/CreateVoiceTemplateCommand\";\nimport { DeleteAdmChannelCommandInput, DeleteAdmChannelCommandOutput } from \"./commands/DeleteAdmChannelCommand\";\nimport { DeleteApnsChannelCommandInput, DeleteApnsChannelCommandOutput } from \"./commands/DeleteApnsChannelCommand\";\nimport {\n DeleteApnsSandboxChannelCommandInput,\n DeleteApnsSandboxChannelCommandOutput,\n} from \"./commands/DeleteApnsSandboxChannelCommand\";\nimport {\n DeleteApnsVoipChannelCommandInput,\n DeleteApnsVoipChannelCommandOutput,\n} from \"./commands/DeleteApnsVoipChannelCommand\";\nimport {\n DeleteApnsVoipSandboxChannelCommandInput,\n DeleteApnsVoipSandboxChannelCommandOutput,\n} from \"./commands/DeleteApnsVoipSandboxChannelCommand\";\nimport { DeleteAppCommandInput, DeleteAppCommandOutput } from \"./commands/DeleteAppCommand\";\nimport { DeleteBaiduChannelCommandInput, DeleteBaiduChannelCommandOutput } from \"./commands/DeleteBaiduChannelCommand\";\nimport { DeleteCampaignCommandInput, DeleteCampaignCommandOutput } from \"./commands/DeleteCampaignCommand\";\nimport { DeleteEmailChannelCommandInput, DeleteEmailChannelCommandOutput } from \"./commands/DeleteEmailChannelCommand\";\nimport {\n DeleteEmailTemplateCommandInput,\n DeleteEmailTemplateCommandOutput,\n} from \"./commands/DeleteEmailTemplateCommand\";\nimport { DeleteEndpointCommandInput, DeleteEndpointCommandOutput } from \"./commands/DeleteEndpointCommand\";\nimport { DeleteEventStreamCommandInput, DeleteEventStreamCommandOutput } from \"./commands/DeleteEventStreamCommand\";\nimport { DeleteGcmChannelCommandInput, DeleteGcmChannelCommandOutput } from \"./commands/DeleteGcmChannelCommand\";\nimport { DeleteJourneyCommandInput, DeleteJourneyCommandOutput } from \"./commands/DeleteJourneyCommand\";\nimport { DeletePushTemplateCommandInput, DeletePushTemplateCommandOutput } from \"./commands/DeletePushTemplateCommand\";\nimport {\n DeleteRecommenderConfigurationCommandInput,\n DeleteRecommenderConfigurationCommandOutput,\n} from \"./commands/DeleteRecommenderConfigurationCommand\";\nimport { DeleteSegmentCommandInput, DeleteSegmentCommandOutput } from \"./commands/DeleteSegmentCommand\";\nimport { DeleteSmsChannelCommandInput, DeleteSmsChannelCommandOutput } from \"./commands/DeleteSmsChannelCommand\";\nimport { DeleteSmsTemplateCommandInput, DeleteSmsTemplateCommandOutput } from \"./commands/DeleteSmsTemplateCommand\";\nimport {\n DeleteUserEndpointsCommandInput,\n DeleteUserEndpointsCommandOutput,\n} from \"./commands/DeleteUserEndpointsCommand\";\nimport { DeleteVoiceChannelCommandInput, DeleteVoiceChannelCommandOutput } from \"./commands/DeleteVoiceChannelCommand\";\nimport {\n DeleteVoiceTemplateCommandInput,\n DeleteVoiceTemplateCommandOutput,\n} from \"./commands/DeleteVoiceTemplateCommand\";\nimport { GetAdmChannelCommandInput, GetAdmChannelCommandOutput } from \"./commands/GetAdmChannelCommand\";\nimport { GetApnsChannelCommandInput, GetApnsChannelCommandOutput } from \"./commands/GetApnsChannelCommand\";\nimport {\n GetApnsSandboxChannelCommandInput,\n GetApnsSandboxChannelCommandOutput,\n} from \"./commands/GetApnsSandboxChannelCommand\";\nimport { GetApnsVoipChannelCommandInput, GetApnsVoipChannelCommandOutput } from \"./commands/GetApnsVoipChannelCommand\";\nimport {\n GetApnsVoipSandboxChannelCommandInput,\n GetApnsVoipSandboxChannelCommandOutput,\n} from \"./commands/GetApnsVoipSandboxChannelCommand\";\nimport { GetAppCommandInput, GetAppCommandOutput } from \"./commands/GetAppCommand\";\nimport {\n GetApplicationDateRangeKpiCommandInput,\n GetApplicationDateRangeKpiCommandOutput,\n} from \"./commands/GetApplicationDateRangeKpiCommand\";\nimport {\n GetApplicationSettingsCommandInput,\n GetApplicationSettingsCommandOutput,\n} from \"./commands/GetApplicationSettingsCommand\";\nimport { GetAppsCommandInput, GetAppsCommandOutput } from \"./commands/GetAppsCommand\";\nimport { GetBaiduChannelCommandInput, GetBaiduChannelCommandOutput } from \"./commands/GetBaiduChannelCommand\";\nimport {\n GetCampaignActivitiesCommandInput,\n GetCampaignActivitiesCommandOutput,\n} from \"./commands/GetCampaignActivitiesCommand\";\nimport { GetCampaignCommandInput, GetCampaignCommandOutput } from \"./commands/GetCampaignCommand\";\nimport {\n GetCampaignDateRangeKpiCommandInput,\n GetCampaignDateRangeKpiCommandOutput,\n} from \"./commands/GetCampaignDateRangeKpiCommand\";\nimport { GetCampaignVersionCommandInput, GetCampaignVersionCommandOutput } from \"./commands/GetCampaignVersionCommand\";\nimport {\n GetCampaignVersionsCommandInput,\n GetCampaignVersionsCommandOutput,\n} from \"./commands/GetCampaignVersionsCommand\";\nimport { GetCampaignsCommandInput, GetCampaignsCommandOutput } from \"./commands/GetCampaignsCommand\";\nimport { GetChannelsCommandInput, GetChannelsCommandOutput } from \"./commands/GetChannelsCommand\";\nimport { GetEmailChannelCommandInput, GetEmailChannelCommandOutput } from \"./commands/GetEmailChannelCommand\";\nimport { GetEmailTemplateCommandInput, GetEmailTemplateCommandOutput } from \"./commands/GetEmailTemplateCommand\";\nimport { GetEndpointCommandInput, GetEndpointCommandOutput } from \"./commands/GetEndpointCommand\";\nimport { GetEventStreamCommandInput, GetEventStreamCommandOutput } from \"./commands/GetEventStreamCommand\";\nimport { GetExportJobCommandInput, GetExportJobCommandOutput } from \"./commands/GetExportJobCommand\";\nimport { GetExportJobsCommandInput, GetExportJobsCommandOutput } from \"./commands/GetExportJobsCommand\";\nimport { GetGcmChannelCommandInput, GetGcmChannelCommandOutput } from \"./commands/GetGcmChannelCommand\";\nimport { GetImportJobCommandInput, GetImportJobCommandOutput } from \"./commands/GetImportJobCommand\";\nimport { GetImportJobsCommandInput, GetImportJobsCommandOutput } from \"./commands/GetImportJobsCommand\";\nimport { GetJourneyCommandInput, GetJourneyCommandOutput } from \"./commands/GetJourneyCommand\";\nimport {\n GetJourneyDateRangeKpiCommandInput,\n GetJourneyDateRangeKpiCommandOutput,\n} from \"./commands/GetJourneyDateRangeKpiCommand\";\nimport {\n GetJourneyExecutionActivityMetricsCommandInput,\n GetJourneyExecutionActivityMetricsCommandOutput,\n} from \"./commands/GetJourneyExecutionActivityMetricsCommand\";\nimport {\n GetJourneyExecutionMetricsCommandInput,\n GetJourneyExecutionMetricsCommandOutput,\n} from \"./commands/GetJourneyExecutionMetricsCommand\";\nimport { GetPushTemplateCommandInput, GetPushTemplateCommandOutput } from \"./commands/GetPushTemplateCommand\";\nimport {\n GetRecommenderConfigurationCommandInput,\n GetRecommenderConfigurationCommandOutput,\n} from \"./commands/GetRecommenderConfigurationCommand\";\nimport {\n GetRecommenderConfigurationsCommandInput,\n GetRecommenderConfigurationsCommandOutput,\n} from \"./commands/GetRecommenderConfigurationsCommand\";\nimport { GetSegmentCommandInput, GetSegmentCommandOutput } from \"./commands/GetSegmentCommand\";\nimport {\n GetSegmentExportJobsCommandInput,\n GetSegmentExportJobsCommandOutput,\n} from \"./commands/GetSegmentExportJobsCommand\";\nimport {\n GetSegmentImportJobsCommandInput,\n GetSegmentImportJobsCommandOutput,\n} from \"./commands/GetSegmentImportJobsCommand\";\nimport { GetSegmentVersionCommandInput, GetSegmentVersionCommandOutput } from \"./commands/GetSegmentVersionCommand\";\nimport { GetSegmentVersionsCommandInput, GetSegmentVersionsCommandOutput } from \"./commands/GetSegmentVersionsCommand\";\nimport { GetSegmentsCommandInput, GetSegmentsCommandOutput } from \"./commands/GetSegmentsCommand\";\nimport { GetSmsChannelCommandInput, GetSmsChannelCommandOutput } from \"./commands/GetSmsChannelCommand\";\nimport { GetSmsTemplateCommandInput, GetSmsTemplateCommandOutput } from \"./commands/GetSmsTemplateCommand\";\nimport { GetUserEndpointsCommandInput, GetUserEndpointsCommandOutput } from \"./commands/GetUserEndpointsCommand\";\nimport { GetVoiceChannelCommandInput, GetVoiceChannelCommandOutput } from \"./commands/GetVoiceChannelCommand\";\nimport { GetVoiceTemplateCommandInput, GetVoiceTemplateCommandOutput } from \"./commands/GetVoiceTemplateCommand\";\nimport { ListJourneysCommandInput, ListJourneysCommandOutput } from \"./commands/ListJourneysCommand\";\nimport {\n ListTagsForResourceCommandInput,\n ListTagsForResourceCommandOutput,\n} from \"./commands/ListTagsForResourceCommand\";\nimport {\n ListTemplateVersionsCommandInput,\n ListTemplateVersionsCommandOutput,\n} from \"./commands/ListTemplateVersionsCommand\";\nimport { ListTemplatesCommandInput, ListTemplatesCommandOutput } from \"./commands/ListTemplatesCommand\";\nimport {\n PhoneNumberValidateCommandInput,\n PhoneNumberValidateCommandOutput,\n} from \"./commands/PhoneNumberValidateCommand\";\nimport { PutEventStreamCommandInput, PutEventStreamCommandOutput } from \"./commands/PutEventStreamCommand\";\nimport { PutEventsCommandInput, PutEventsCommandOutput } from \"./commands/PutEventsCommand\";\nimport { RemoveAttributesCommandInput, RemoveAttributesCommandOutput } from \"./commands/RemoveAttributesCommand\";\nimport { SendMessagesCommandInput, SendMessagesCommandOutput } from \"./commands/SendMessagesCommand\";\nimport { SendUsersMessagesCommandInput, SendUsersMessagesCommandOutput } from \"./commands/SendUsersMessagesCommand\";\nimport { TagResourceCommandInput, TagResourceCommandOutput } from \"./commands/TagResourceCommand\";\nimport { UntagResourceCommandInput, UntagResourceCommandOutput } from \"./commands/UntagResourceCommand\";\nimport { UpdateAdmChannelCommandInput, UpdateAdmChannelCommandOutput } from \"./commands/UpdateAdmChannelCommand\";\nimport { UpdateApnsChannelCommandInput, UpdateApnsChannelCommandOutput } from \"./commands/UpdateApnsChannelCommand\";\nimport {\n UpdateApnsSandboxChannelCommandInput,\n UpdateApnsSandboxChannelCommandOutput,\n} from \"./commands/UpdateApnsSandboxChannelCommand\";\nimport {\n UpdateApnsVoipChannelCommandInput,\n UpdateApnsVoipChannelCommandOutput,\n} from \"./commands/UpdateApnsVoipChannelCommand\";\nimport {\n UpdateApnsVoipSandboxChannelCommandInput,\n UpdateApnsVoipSandboxChannelCommandOutput,\n} from \"./commands/UpdateApnsVoipSandboxChannelCommand\";\nimport {\n UpdateApplicationSettingsCommandInput,\n UpdateApplicationSettingsCommandOutput,\n} from \"./commands/UpdateApplicationSettingsCommand\";\nimport { UpdateBaiduChannelCommandInput, UpdateBaiduChannelCommandOutput } from \"./commands/UpdateBaiduChannelCommand\";\nimport { UpdateCampaignCommandInput, UpdateCampaignCommandOutput } from \"./commands/UpdateCampaignCommand\";\nimport { UpdateEmailChannelCommandInput, UpdateEmailChannelCommandOutput } from \"./commands/UpdateEmailChannelCommand\";\nimport {\n UpdateEmailTemplateCommandInput,\n UpdateEmailTemplateCommandOutput,\n} from \"./commands/UpdateEmailTemplateCommand\";\nimport { UpdateEndpointCommandInput, UpdateEndpointCommandOutput } from \"./commands/UpdateEndpointCommand\";\nimport {\n UpdateEndpointsBatchCommandInput,\n UpdateEndpointsBatchCommandOutput,\n} from \"./commands/UpdateEndpointsBatchCommand\";\nimport { UpdateGcmChannelCommandInput, UpdateGcmChannelCommandOutput } from \"./commands/UpdateGcmChannelCommand\";\nimport { UpdateJourneyCommandInput, UpdateJourneyCommandOutput } from \"./commands/UpdateJourneyCommand\";\nimport { UpdateJourneyStateCommandInput, UpdateJourneyStateCommandOutput } from \"./commands/UpdateJourneyStateCommand\";\nimport { UpdatePushTemplateCommandInput, UpdatePushTemplateCommandOutput } from \"./commands/UpdatePushTemplateCommand\";\nimport {\n UpdateRecommenderConfigurationCommandInput,\n UpdateRecommenderConfigurationCommandOutput,\n} from \"./commands/UpdateRecommenderConfigurationCommand\";\nimport { UpdateSegmentCommandInput, UpdateSegmentCommandOutput } from \"./commands/UpdateSegmentCommand\";\nimport { UpdateSmsChannelCommandInput, UpdateSmsChannelCommandOutput } from \"./commands/UpdateSmsChannelCommand\";\nimport { UpdateSmsTemplateCommandInput, UpdateSmsTemplateCommandOutput } from \"./commands/UpdateSmsTemplateCommand\";\nimport {\n UpdateTemplateActiveVersionCommandInput,\n UpdateTemplateActiveVersionCommandOutput,\n} from \"./commands/UpdateTemplateActiveVersionCommand\";\nimport { UpdateVoiceChannelCommandInput, UpdateVoiceChannelCommandOutput } from \"./commands/UpdateVoiceChannelCommand\";\nimport {\n UpdateVoiceTemplateCommandInput,\n UpdateVoiceTemplateCommandOutput,\n} from \"./commands/UpdateVoiceTemplateCommand\";\nimport { ClientDefaultValues as __ClientDefaultValues } from \"./runtimeConfig\";\nimport {\n EndpointsInputConfig,\n EndpointsResolvedConfig,\n RegionInputConfig,\n RegionResolvedConfig,\n resolveEndpointsConfig,\n resolveRegionConfig,\n} from \"@aws-sdk/config-resolver\";\nimport { getContentLengthPlugin } from \"@aws-sdk/middleware-content-length\";\nimport {\n HostHeaderInputConfig,\n HostHeaderResolvedConfig,\n getHostHeaderPlugin,\n resolveHostHeaderConfig,\n} from \"@aws-sdk/middleware-host-header\";\nimport { getLoggerPlugin } from \"@aws-sdk/middleware-logger\";\nimport { RetryInputConfig, RetryResolvedConfig, getRetryPlugin, resolveRetryConfig } from \"@aws-sdk/middleware-retry\";\nimport {\n AwsAuthInputConfig,\n AwsAuthResolvedConfig,\n getAwsAuthPlugin,\n resolveAwsAuthConfig,\n} from \"@aws-sdk/middleware-signing\";\nimport {\n UserAgentInputConfig,\n UserAgentResolvedConfig,\n getUserAgentPlugin,\n resolveUserAgentConfig,\n} from \"@aws-sdk/middleware-user-agent\";\nimport { HttpHandler as __HttpHandler } from \"@aws-sdk/protocol-http\";\nimport {\n Client as __Client,\n SmithyConfiguration as __SmithyConfiguration,\n SmithyResolvedConfiguration as __SmithyResolvedConfiguration,\n} from \"@aws-sdk/smithy-client\";\nimport {\n Provider,\n RegionInfoProvider,\n Credentials as __Credentials,\n Decoder as __Decoder,\n Encoder as __Encoder,\n HashConstructor as __HashConstructor,\n HttpHandlerOptions as __HttpHandlerOptions,\n Logger as __Logger,\n Provider as __Provider,\n StreamCollector as __StreamCollector,\n UrlParser as __UrlParser,\n UserAgent as __UserAgent,\n} from \"@aws-sdk/types\";\n\nexport type ServiceInputTypes =\n | CreateAppCommandInput\n | CreateCampaignCommandInput\n | CreateEmailTemplateCommandInput\n | CreateExportJobCommandInput\n | CreateImportJobCommandInput\n | CreateJourneyCommandInput\n | CreatePushTemplateCommandInput\n | CreateRecommenderConfigurationCommandInput\n | CreateSegmentCommandInput\n | CreateSmsTemplateCommandInput\n | CreateVoiceTemplateCommandInput\n | DeleteAdmChannelCommandInput\n | DeleteApnsChannelCommandInput\n | DeleteApnsSandboxChannelCommandInput\n | DeleteApnsVoipChannelCommandInput\n | DeleteApnsVoipSandboxChannelCommandInput\n | DeleteAppCommandInput\n | DeleteBaiduChannelCommandInput\n | DeleteCampaignCommandInput\n | DeleteEmailChannelCommandInput\n | DeleteEmailTemplateCommandInput\n | DeleteEndpointCommandInput\n | DeleteEventStreamCommandInput\n | DeleteGcmChannelCommandInput\n | DeleteJourneyCommandInput\n | DeletePushTemplateCommandInput\n | DeleteRecommenderConfigurationCommandInput\n | DeleteSegmentCommandInput\n | DeleteSmsChannelCommandInput\n | DeleteSmsTemplateCommandInput\n | DeleteUserEndpointsCommandInput\n | DeleteVoiceChannelCommandInput\n | DeleteVoiceTemplateCommandInput\n | GetAdmChannelCommandInput\n | GetApnsChannelCommandInput\n | GetApnsSandboxChannelCommandInput\n | GetApnsVoipChannelCommandInput\n | GetApnsVoipSandboxChannelCommandInput\n | GetAppCommandInput\n | GetApplicationDateRangeKpiCommandInput\n | GetApplicationSettingsCommandInput\n | GetAppsCommandInput\n | GetBaiduChannelCommandInput\n | GetCampaignActivitiesCommandInput\n | GetCampaignCommandInput\n | GetCampaignDateRangeKpiCommandInput\n | GetCampaignVersionCommandInput\n | GetCampaignVersionsCommandInput\n | GetCampaignsCommandInput\n | GetChannelsCommandInput\n | GetEmailChannelCommandInput\n | GetEmailTemplateCommandInput\n | GetEndpointCommandInput\n | GetEventStreamCommandInput\n | GetExportJobCommandInput\n | GetExportJobsCommandInput\n | GetGcmChannelCommandInput\n | GetImportJobCommandInput\n | GetImportJobsCommandInput\n | GetJourneyCommandInput\n | GetJourneyDateRangeKpiCommandInput\n | GetJourneyExecutionActivityMetricsCommandInput\n | GetJourneyExecutionMetricsCommandInput\n | GetPushTemplateCommandInput\n | GetRecommenderConfigurationCommandInput\n | GetRecommenderConfigurationsCommandInput\n | GetSegmentCommandInput\n | GetSegmentExportJobsCommandInput\n | GetSegmentImportJobsCommandInput\n | GetSegmentVersionCommandInput\n | GetSegmentVersionsCommandInput\n | GetSegmentsCommandInput\n | GetSmsChannelCommandInput\n | GetSmsTemplateCommandInput\n | GetUserEndpointsCommandInput\n | GetVoiceChannelCommandInput\n | GetVoiceTemplateCommandInput\n | ListJourneysCommandInput\n | ListTagsForResourceCommandInput\n | ListTemplateVersionsCommandInput\n | ListTemplatesCommandInput\n | PhoneNumberValidateCommandInput\n | PutEventStreamCommandInput\n | PutEventsCommandInput\n | RemoveAttributesCommandInput\n | SendMessagesCommandInput\n | SendUsersMessagesCommandInput\n | TagResourceCommandInput\n | UntagResourceCommandInput\n | UpdateAdmChannelCommandInput\n | UpdateApnsChannelCommandInput\n | UpdateApnsSandboxChannelCommandInput\n | UpdateApnsVoipChannelCommandInput\n | UpdateApnsVoipSandboxChannelCommandInput\n | UpdateApplicationSettingsCommandInput\n | UpdateBaiduChannelCommandInput\n | UpdateCampaignCommandInput\n | UpdateEmailChannelCommandInput\n | UpdateEmailTemplateCommandInput\n | UpdateEndpointCommandInput\n | UpdateEndpointsBatchCommandInput\n | UpdateGcmChannelCommandInput\n | UpdateJourneyCommandInput\n | UpdateJourneyStateCommandInput\n | UpdatePushTemplateCommandInput\n | UpdateRecommenderConfigurationCommandInput\n | UpdateSegmentCommandInput\n | UpdateSmsChannelCommandInput\n | UpdateSmsTemplateCommandInput\n | UpdateTemplateActiveVersionCommandInput\n | UpdateVoiceChannelCommandInput\n | UpdateVoiceTemplateCommandInput;\n\nexport type ServiceOutputTypes =\n | CreateAppCommandOutput\n | CreateCampaignCommandOutput\n | CreateEmailTemplateCommandOutput\n | CreateExportJobCommandOutput\n | CreateImportJobCommandOutput\n | CreateJourneyCommandOutput\n | CreatePushTemplateCommandOutput\n | CreateRecommenderConfigurationCommandOutput\n | CreateSegmentCommandOutput\n | CreateSmsTemplateCommandOutput\n | CreateVoiceTemplateCommandOutput\n | DeleteAdmChannelCommandOutput\n | DeleteApnsChannelCommandOutput\n | DeleteApnsSandboxChannelCommandOutput\n | DeleteApnsVoipChannelCommandOutput\n | DeleteApnsVoipSandboxChannelCommandOutput\n | DeleteAppCommandOutput\n | DeleteBaiduChannelCommandOutput\n | DeleteCampaignCommandOutput\n | DeleteEmailChannelCommandOutput\n | DeleteEmailTemplateCommandOutput\n | DeleteEndpointCommandOutput\n | DeleteEventStreamCommandOutput\n | DeleteGcmChannelCommandOutput\n | DeleteJourneyCommandOutput\n | DeletePushTemplateCommandOutput\n | DeleteRecommenderConfigurationCommandOutput\n | DeleteSegmentCommandOutput\n | DeleteSmsChannelCommandOutput\n | DeleteSmsTemplateCommandOutput\n | DeleteUserEndpointsCommandOutput\n | DeleteVoiceChannelCommandOutput\n | DeleteVoiceTemplateCommandOutput\n | GetAdmChannelCommandOutput\n | GetApnsChannelCommandOutput\n | GetApnsSandboxChannelCommandOutput\n | GetApnsVoipChannelCommandOutput\n | GetApnsVoipSandboxChannelCommandOutput\n | GetAppCommandOutput\n | GetApplicationDateRangeKpiCommandOutput\n | GetApplicationSettingsCommandOutput\n | GetAppsCommandOutput\n | GetBaiduChannelCommandOutput\n | GetCampaignActivitiesCommandOutput\n | GetCampaignCommandOutput\n | GetCampaignDateRangeKpiCommandOutput\n | GetCampaignVersionCommandOutput\n | GetCampaignVersionsCommandOutput\n | GetCampaignsCommandOutput\n | GetChannelsCommandOutput\n | GetEmailChannelCommandOutput\n | GetEmailTemplateCommandOutput\n | GetEndpointCommandOutput\n | GetEventStreamCommandOutput\n | GetExportJobCommandOutput\n | GetExportJobsCommandOutput\n | GetGcmChannelCommandOutput\n | GetImportJobCommandOutput\n | GetImportJobsCommandOutput\n | GetJourneyCommandOutput\n | GetJourneyDateRangeKpiCommandOutput\n | GetJourneyExecutionActivityMetricsCommandOutput\n | GetJourneyExecutionMetricsCommandOutput\n | GetPushTemplateCommandOutput\n | GetRecommenderConfigurationCommandOutput\n | GetRecommenderConfigurationsCommandOutput\n | GetSegmentCommandOutput\n | GetSegmentExportJobsCommandOutput\n | GetSegmentImportJobsCommandOutput\n | GetSegmentVersionCommandOutput\n | GetSegmentVersionsCommandOutput\n | GetSegmentsCommandOutput\n | GetSmsChannelCommandOutput\n | GetSmsTemplateCommandOutput\n | GetUserEndpointsCommandOutput\n | GetVoiceChannelCommandOutput\n | GetVoiceTemplateCommandOutput\n | ListJourneysCommandOutput\n | ListTagsForResourceCommandOutput\n | ListTemplateVersionsCommandOutput\n | ListTemplatesCommandOutput\n | PhoneNumberValidateCommandOutput\n | PutEventStreamCommandOutput\n | PutEventsCommandOutput\n | RemoveAttributesCommandOutput\n | SendMessagesCommandOutput\n | SendUsersMessagesCommandOutput\n | TagResourceCommandOutput\n | UntagResourceCommandOutput\n | UpdateAdmChannelCommandOutput\n | UpdateApnsChannelCommandOutput\n | UpdateApnsSandboxChannelCommandOutput\n | UpdateApnsVoipChannelCommandOutput\n | UpdateApnsVoipSandboxChannelCommandOutput\n | UpdateApplicationSettingsCommandOutput\n | UpdateBaiduChannelCommandOutput\n | UpdateCampaignCommandOutput\n | UpdateEmailChannelCommandOutput\n | UpdateEmailTemplateCommandOutput\n | UpdateEndpointCommandOutput\n | UpdateEndpointsBatchCommandOutput\n | UpdateGcmChannelCommandOutput\n | UpdateJourneyCommandOutput\n | UpdateJourneyStateCommandOutput\n | UpdatePushTemplateCommandOutput\n | UpdateRecommenderConfigurationCommandOutput\n | UpdateSegmentCommandOutput\n | UpdateSmsChannelCommandOutput\n | UpdateSmsTemplateCommandOutput\n | UpdateTemplateActiveVersionCommandOutput\n | UpdateVoiceChannelCommandOutput\n | UpdateVoiceTemplateCommandOutput;\n\nexport interface ClientDefaults extends Partial<__SmithyResolvedConfiguration<__HttpHandlerOptions>> {\n /**\n * The HTTP handler to use. Fetch in browser and Https in Nodejs.\n */\n requestHandler?: __HttpHandler;\n\n /**\n * A constructor for a class implementing the @aws-sdk/types.Hash interface\n * that computes the SHA-256 HMAC or checksum of a string or binary buffer.\n */\n sha256?: __HashConstructor;\n\n /**\n * The function that will be used to convert strings into HTTP endpoints.\n */\n urlParser?: __UrlParser;\n\n /**\n * A function that can calculate the length of a request body.\n */\n bodyLengthChecker?: (body: any) => number | undefined;\n\n /**\n * A function that converts a stream into an array of bytes.\n */\n streamCollector?: __StreamCollector;\n\n /**\n * The function that will be used to convert a base64-encoded string to a byte array\n */\n base64Decoder?: __Decoder;\n\n /**\n * The function that will be used to convert binary data to a base64-encoded string\n */\n base64Encoder?: __Encoder;\n\n /**\n * The function that will be used to convert a UTF8-encoded string to a byte array\n */\n utf8Decoder?: __Decoder;\n\n /**\n * The function that will be used to convert binary data to a UTF-8 encoded string\n */\n utf8Encoder?: __Encoder;\n\n /**\n * The runtime environment\n */\n runtime?: string;\n\n /**\n * Disable dyanamically changing the endpoint of the client based on the hostPrefix\n * trait of an operation.\n */\n disableHostPrefix?: boolean;\n\n /**\n * Unique service identifier.\n * @internal\n */\n serviceId?: string;\n\n /**\n * Default credentials provider; Not available in browser runtime\n */\n credentialDefaultProvider?: (input: any) => __Provider<__Credentials>;\n\n /**\n * The AWS region to which this client will send requests\n */\n region?: string | __Provider;\n\n /**\n * Value for how many times a request will be made at most in case of retry.\n */\n maxAttempts?: number | __Provider;\n\n /**\n * Optional logger for logging debug/info/warn/error.\n */\n logger?: __Logger;\n\n /**\n * Fetch related hostname, signing name or signing region with given region.\n */\n regionInfoProvider?: RegionInfoProvider;\n\n /**\n * The provider populating default tracking information to be sent with `user-agent`, `x-amz-user-agent` header\n * @internal\n */\n defaultUserAgentProvider?: Provider<__UserAgent>;\n}\n\nexport type PinpointClientConfig = Partial<__SmithyConfiguration<__HttpHandlerOptions>> &\n ClientDefaults &\n RegionInputConfig &\n EndpointsInputConfig &\n AwsAuthInputConfig &\n RetryInputConfig &\n HostHeaderInputConfig &\n UserAgentInputConfig;\n\nexport type PinpointClientResolvedConfig = __SmithyResolvedConfiguration<__HttpHandlerOptions> &\n Required &\n RegionResolvedConfig &\n EndpointsResolvedConfig &\n AwsAuthResolvedConfig &\n RetryResolvedConfig &\n HostHeaderResolvedConfig &\n UserAgentResolvedConfig;\n\n/**\n *

Doc Engage API - Amazon Pinpoint API

\n */\nexport class PinpointClient extends __Client<\n __HttpHandlerOptions,\n ServiceInputTypes,\n ServiceOutputTypes,\n PinpointClientResolvedConfig\n> {\n readonly config: PinpointClientResolvedConfig;\n\n constructor(configuration: PinpointClientConfig) {\n let _config_0 = {\n ...__ClientDefaultValues,\n ...configuration,\n };\n let _config_1 = resolveRegionConfig(_config_0);\n let _config_2 = resolveEndpointsConfig(_config_1);\n let _config_3 = resolveAwsAuthConfig(_config_2);\n let _config_4 = resolveRetryConfig(_config_3);\n let _config_5 = resolveHostHeaderConfig(_config_4);\n let _config_6 = resolveUserAgentConfig(_config_5);\n super(_config_6);\n this.config = _config_6;\n this.middlewareStack.use(getAwsAuthPlugin(this.config));\n this.middlewareStack.use(getRetryPlugin(this.config));\n this.middlewareStack.use(getContentLengthPlugin(this.config));\n this.middlewareStack.use(getHostHeaderPlugin(this.config));\n this.middlewareStack.use(getLoggerPlugin(this.config));\n this.middlewareStack.use(getUserAgentPlugin(this.config));\n }\n\n destroy(): void {\n super.destroy();\n }\n}\n","/*\r\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\r\n * the License. A copy of the License is located at\r\n *\r\n * http://aws.amazon.com/apache2.0/\r\n *\r\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\r\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\r\n * and limitations under the License.\r\n */\r\n\r\nimport { CacheConfig, CacheItem, CacheItemOptions } from '../types';\r\nimport { StorageHelper } from '@aws-amplify/core';\r\n/**\r\n * Default cache config\r\n */\r\nexport const defaultConfig: CacheConfig = {\r\n\tkeyPrefix: 'aws-amplify-cache',\r\n\tcapacityInBytes: 1048576, // 1MB\r\n\titemMaxSize: 210000, // about 200kb\r\n\tdefaultTTL: 259200000, // about 3 days\r\n\tdefaultPriority: 5,\r\n\twarningThreshold: 0.8,\r\n\t// the storage helper will check if localStorage exists,\r\n\t// if not, will use a in-memory object instead\r\n\tstorage: new StorageHelper().getStorage(),\r\n};\r\n\r\n/**\r\n * return the byte size of the string\r\n * @param str\r\n */\r\nexport function getByteLength(str: string): number {\r\n\tlet ret: number = 0;\r\n\tret = str.length;\r\n\r\n\tfor (let i = str.length; i >= 0; i -= 1) {\r\n\t\tconst charCode: number = str.charCodeAt(i);\r\n\t\tif (charCode > 0x7f && charCode <= 0x7ff) {\r\n\t\t\tret += 1;\r\n\t\t} else if (charCode > 0x7ff && charCode <= 0xffff) {\r\n\t\t\tret += 2;\r\n\t\t}\r\n\t\t// trail surrogate\r\n\t\tif (charCode >= 0xdc00 && charCode <= 0xdfff) {\r\n\t\t\ti -= 1;\r\n\t\t}\r\n\t}\r\n\r\n\treturn ret;\r\n}\r\n\r\n/**\r\n * get current time\r\n */\r\nexport function getCurrTime(): number {\r\n\tconst currTime = new Date();\r\n\treturn currTime.getTime();\r\n}\r\n\r\n/**\r\n * check if passed value is an integer\r\n */\r\nexport function isInteger(value): boolean {\r\n\tif (Number.isInteger) {\r\n\t\treturn Number.isInteger(value);\r\n\t}\r\n\r\n\treturn _isInteger(value);\r\n}\r\n\r\nfunction _isInteger(value): boolean {\r\n\treturn (\r\n\t\ttypeof value === 'number' && isFinite(value) && Math.floor(value) === value\r\n\t);\r\n}\r\n\r\n/**\r\n * provide an object as the in-memory cache\r\n */\r\nlet store = {};\r\nexport class CacheObject {\r\n\tstatic clear(): void {\r\n\t\tstore = {};\r\n\t}\r\n\r\n\tstatic getItem(key: string): string | null {\r\n\t\treturn store[key] || null;\r\n\t}\r\n\r\n\tstatic setItem(key: string, value: string): void {\r\n\t\tstore[key] = value;\r\n\t}\r\n\r\n\tstatic removeItem(key: string): void {\r\n\t\tdelete store[key];\r\n\t}\r\n}\r\n","/*\r\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\r\n * the License. A copy of the License is located at\r\n *\r\n * http://aws.amazon.com/apache2.0/\r\n *\r\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\r\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\r\n * and limitations under the License.\r\n */\r\n\r\nimport { getCurrTime, getByteLength, defaultConfig, isInteger } from './Utils';\r\n\r\nimport { CacheConfig, CacheItem, CacheItemOptions } from './types';\r\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\r\n\r\nconst logger = new Logger('StorageCache');\r\n\r\n/**\r\n * Initialization of the cache\r\n *\r\n */\r\nexport class StorageCache {\r\n\tprotected cacheCurSizeKey: string;\r\n\tprotected config: CacheConfig;\r\n\r\n\t/**\r\n\t * Initialize the cache\r\n\t * @param config - the configuration of the cache\r\n\t */\r\n\tconstructor(config: CacheConfig) {\r\n\t\tthis.config = Object.assign({}, config);\r\n\t\tthis.cacheCurSizeKey = this.config.keyPrefix + 'CurSize';\r\n\t\tthis.checkConfig();\r\n\t}\r\n\r\n\tpublic getModuleName() {\r\n\t\treturn 'Cache';\r\n\t}\r\n\r\n\tprivate checkConfig(): void {\r\n\t\t// check configuration\r\n\t\tif (!isInteger(this.config.capacityInBytes)) {\r\n\t\t\tlogger.error(\r\n\t\t\t\t'Invalid parameter: capacityInBytes. It should be an Integer. Setting back to default.'\r\n\t\t\t);\r\n\t\t\tthis.config.capacityInBytes = defaultConfig.capacityInBytes;\r\n\t\t}\r\n\r\n\t\tif (!isInteger(this.config.itemMaxSize)) {\r\n\t\t\tlogger.error(\r\n\t\t\t\t'Invalid parameter: itemMaxSize. It should be an Integer. Setting back to default.'\r\n\t\t\t);\r\n\t\t\tthis.config.itemMaxSize = defaultConfig.itemMaxSize;\r\n\t\t}\r\n\r\n\t\tif (!isInteger(this.config.defaultTTL)) {\r\n\t\t\tlogger.error(\r\n\t\t\t\t'Invalid parameter: defaultTTL. It should be an Integer. Setting back to default.'\r\n\t\t\t);\r\n\t\t\tthis.config.defaultTTL = defaultConfig.defaultTTL;\r\n\t\t}\r\n\r\n\t\tif (!isInteger(this.config.defaultPriority)) {\r\n\t\t\tlogger.error(\r\n\t\t\t\t'Invalid parameter: defaultPriority. It should be an Integer. Setting back to default.'\r\n\t\t\t);\r\n\t\t\tthis.config.defaultPriority = defaultConfig.defaultPriority;\r\n\t\t}\r\n\r\n\t\tif (this.config.itemMaxSize > this.config.capacityInBytes) {\r\n\t\t\tlogger.error(\r\n\t\t\t\t'Invalid parameter: itemMaxSize. It should be smaller than capacityInBytes. Setting back to default.'\r\n\t\t\t);\r\n\t\t\tthis.config.itemMaxSize = defaultConfig.itemMaxSize;\r\n\t\t}\r\n\r\n\t\tif (this.config.defaultPriority > 5 || this.config.defaultPriority < 1) {\r\n\t\t\tlogger.error(\r\n\t\t\t\t'Invalid parameter: defaultPriority. It should be between 1 and 5. Setting back to default.'\r\n\t\t\t);\r\n\t\t\tthis.config.defaultPriority = defaultConfig.defaultPriority;\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tNumber(this.config.warningThreshold) > 1 ||\r\n\t\t\tNumber(this.config.warningThreshold) < 0\r\n\t\t) {\r\n\t\t\tlogger.error(\r\n\t\t\t\t'Invalid parameter: warningThreshold. It should be between 0 and 1. Setting back to default.'\r\n\t\t\t);\r\n\t\t\tthis.config.warningThreshold = defaultConfig.warningThreshold;\r\n\t\t}\r\n\t\t// set 5MB limit\r\n\t\tconst cacheLimit: number = 5 * 1024 * 1024;\r\n\t\tif (this.config.capacityInBytes > cacheLimit) {\r\n\t\t\tlogger.error(\r\n\t\t\t\t'Cache Capacity should be less than 5MB. Setting back to default. Setting back to default.'\r\n\t\t\t);\r\n\t\t\tthis.config.capacityInBytes = defaultConfig.capacityInBytes;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * produce a JSON object with meta-data and data value\r\n\t * @param value - the value of the item\r\n\t * @param options - optional, the specified meta-data\r\n\t *\r\n\t * @return - the item which has the meta-data and the value\r\n\t */\r\n\tprotected fillCacheItem(\r\n\t\tkey: string,\r\n\t\tvalue: object | number | string | boolean,\r\n\t\toptions: CacheItemOptions\r\n\t): CacheItem {\r\n\t\tconst ret: CacheItem = {\r\n\t\t\tkey,\r\n\t\t\tdata: value,\r\n\t\t\ttimestamp: getCurrTime(),\r\n\t\t\tvisitedTime: getCurrTime(),\r\n\t\t\tpriority: options.priority,\r\n\t\t\texpires: options.expires,\r\n\t\t\ttype: typeof value,\r\n\t\t\tbyteSize: 0,\r\n\t\t};\r\n\r\n\t\tret.byteSize = getByteLength(JSON.stringify(ret));\r\n\r\n\t\t// for accurate size\r\n\t\tret.byteSize = getByteLength(JSON.stringify(ret));\r\n\t\treturn ret;\r\n\t}\r\n\r\n\t/**\r\n\t * set cache with customized configuration\r\n\t * @param config - customized configuration\r\n\t *\r\n\t * @return - the current configuration\r\n\t */\r\n\tpublic configure(config?: CacheConfig): CacheConfig {\r\n\t\tif (!config) {\r\n\t\t\treturn this.config;\r\n\t\t}\r\n\t\tif (config.keyPrefix) {\r\n\t\t\tlogger.warn(`Don't try to configure keyPrefix!`);\r\n\t\t}\r\n\r\n\t\tthis.config = Object.assign({}, this.config, config, config.Cache);\r\n\t\tthis.checkConfig();\r\n\t\treturn this.config;\r\n\t}\r\n}\r\n\r\n/**\r\n * @deprecated use named import\r\n */\r\nexport default StorageCache;\r\n","/*\r\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\r\n * the License. A copy of the License is located at\r\n *\r\n * http://aws.amazon.com/apache2.0/\r\n *\r\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\r\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\r\n * and limitations under the License.\r\n */\r\n\r\nimport { defaultConfig, getCurrTime } from './Utils';\r\n\r\nimport { StorageCache } from './StorageCache';\r\nimport { ICache, CacheConfig, CacheItem, CacheItemOptions } from './types';\r\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\r\n\r\nconst logger = new Logger('Cache');\r\n\r\n/**\r\n * Customized storage based on the SessionStorage or LocalStorage with LRU implemented\r\n */\r\nexport class BrowserStorageCacheClass extends StorageCache implements ICache {\r\n\t/**\r\n\t * initialize the cache\r\n\t * @param config - the configuration of the cache\r\n\t */\r\n\tconstructor(config?: CacheConfig) {\r\n\t\tconst cacheConfig = config\r\n\t\t\t? Object.assign({}, defaultConfig, config)\r\n\t\t\t: defaultConfig;\r\n\t\tsuper(cacheConfig);\r\n\t\tthis.config.storage = cacheConfig.storage;\r\n\t\tthis.getItem = this.getItem.bind(this);\r\n\t\tthis.setItem = this.setItem.bind(this);\r\n\t\tthis.removeItem = this.removeItem.bind(this);\r\n\t}\r\n\r\n\t/**\r\n\t * decrease current size of the cache\r\n\t *\r\n\t * @private\r\n\t * @param amount - the amount of the cache size which needs to be decreased\r\n\t */\r\n\tprivate _decreaseCurSizeInBytes(amount: number): void {\r\n\t\tconst curSize: number = this.getCacheCurSize();\r\n\t\tthis.config.storage.setItem(\r\n\t\t\tthis.cacheCurSizeKey,\r\n\t\t\t(curSize - amount).toString()\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * increase current size of the cache\r\n\t *\r\n\t * @private\r\n\t * @param amount - the amount of the cache szie which need to be increased\r\n\t */\r\n\tprivate _increaseCurSizeInBytes(amount: number): void {\r\n\t\tconst curSize: number = this.getCacheCurSize();\r\n\t\tthis.config.storage.setItem(\r\n\t\t\tthis.cacheCurSizeKey,\r\n\t\t\t(curSize + amount).toString()\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * update the visited time if item has been visited\r\n\t *\r\n\t * @private\r\n\t * @param item - the item which need to be refreshed\r\n\t * @param prefixedKey - the key of the item\r\n\t *\r\n\t * @return the refreshed item\r\n\t */\r\n\tprivate _refreshItem(item: CacheItem, prefixedKey: string): CacheItem {\r\n\t\titem.visitedTime = getCurrTime();\r\n\t\tthis.config.storage.setItem(prefixedKey, JSON.stringify(item));\r\n\t\treturn item;\r\n\t}\r\n\r\n\t/**\r\n\t * check wether item is expired\r\n\t *\r\n\t * @private\r\n\t * @param key - the key of the item\r\n\t *\r\n\t * @return true if the item is expired.\r\n\t */\r\n\tprivate _isExpired(key: string): boolean {\r\n\t\tconst text: string | null = this.config.storage.getItem(key);\r\n\t\tconst item: CacheItem = JSON.parse(text);\r\n\t\tif (getCurrTime() >= item.expires) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * delete item from cache\r\n\t *\r\n\t * @private\r\n\t * @param prefixedKey - the key of the item\r\n\t * @param size - optional, the byte size of the item\r\n\t */\r\n\tprivate _removeItem(prefixedKey: string, size?: number): void {\r\n\t\tconst itemSize: number = size\r\n\t\t\t? size\r\n\t\t\t: JSON.parse(this.config.storage.getItem(prefixedKey)).byteSize;\r\n\t\tthis._decreaseCurSizeInBytes(itemSize);\r\n\t\t// remove the cache item\r\n\t\tthis.config.storage.removeItem(prefixedKey);\r\n\t}\r\n\r\n\t/**\r\n\t * put item into cache\r\n\t *\r\n\t * @private\r\n\t * @param prefixedKey - the key of the item\r\n\t * @param itemData - the value of the item\r\n\t * @param itemSizeInBytes - the byte size of the item\r\n\t */\r\n\tprivate _setItem(prefixedKey: string, item: CacheItem): void {\r\n\t\t// update the cache size\r\n\t\tthis._increaseCurSizeInBytes(item.byteSize);\r\n\r\n\t\ttry {\r\n\t\t\tthis.config.storage.setItem(prefixedKey, JSON.stringify(item));\r\n\t\t} catch (setItemErr) {\r\n\t\t\t// if failed, we need to rollback the cache size\r\n\t\t\tthis._decreaseCurSizeInBytes(item.byteSize);\r\n\t\t\tlogger.error(`Failed to set item ${setItemErr}`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * total space needed when poping out items\r\n\t *\r\n\t * @private\r\n\t * @param itemSize\r\n\t *\r\n\t * @return total space needed\r\n\t */\r\n\tprivate _sizeToPop(itemSize: number): number {\r\n\t\tconst spaceItemNeed =\r\n\t\t\tthis.getCacheCurSize() + itemSize - this.config.capacityInBytes;\r\n\t\tconst cacheThresholdSpace =\r\n\t\t\t(1 - this.config.warningThreshold) * this.config.capacityInBytes;\r\n\t\treturn spaceItemNeed > cacheThresholdSpace\r\n\t\t\t? spaceItemNeed\r\n\t\t\t: cacheThresholdSpace;\r\n\t}\r\n\r\n\t/**\r\n\t * see whether cache is full\r\n\t *\r\n\t * @private\r\n\t * @param itemSize\r\n\t *\r\n\t * @return true if cache is full\r\n\t */\r\n\tprivate _isCacheFull(itemSize: number): boolean {\r\n\t\treturn itemSize + this.getCacheCurSize() > this.config.capacityInBytes;\r\n\t}\r\n\r\n\t/**\r\n\t * scan the storage and find out all the keys owned by this cache\r\n\t * also clean the expired keys while scanning\r\n\t *\r\n\t * @private\r\n\t *\r\n\t * @return array of keys\r\n\t */\r\n\tprivate _findValidKeys(): string[] {\r\n\t\tconst keys: string[] = [];\r\n\t\tconst keyInCache: string[] = [];\r\n\t\t// get all keys in Storage\r\n\t\tfor (let i = 0; i < this.config.storage.length; i += 1) {\r\n\t\t\tkeyInCache.push(this.config.storage.key(i));\r\n\t\t}\r\n\r\n\t\t// find those items which belong to our cache and also clean those expired items\r\n\t\tfor (let i = 0; i < keyInCache.length; i += 1) {\r\n\t\t\tconst key: string = keyInCache[i];\r\n\t\t\tif (\r\n\t\t\t\tkey.indexOf(this.config.keyPrefix) === 0 &&\r\n\t\t\t\tkey !== this.cacheCurSizeKey\r\n\t\t\t) {\r\n\t\t\t\tif (this._isExpired(key)) {\r\n\t\t\t\t\tthis._removeItem(key);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tkeys.push(key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn keys;\r\n\t}\r\n\r\n\t/**\r\n\t * get all the items we have, sort them by their priority,\r\n\t * if priority is same, sort them by their last visited time\r\n\t * pop out items from the low priority (5 is the lowest)\r\n\t *\r\n\t * @private\r\n\t * @param keys - all the keys in this cache\r\n\t * @param sizeToPop - the total size of the items which needed to be poped out\r\n\t */\r\n\tprivate _popOutItems(keys: string[], sizeToPop: number): void {\r\n\t\tconst items: CacheItem[] = [];\r\n\t\tlet remainedSize: number = sizeToPop;\r\n\t\t// get the items from Storage\r\n\t\tfor (let i = 0; i < keys.length; i += 1) {\r\n\t\t\tconst val: string | null = this.config.storage.getItem(keys[i]);\r\n\t\t\tif (val != null) {\r\n\t\t\t\tconst item: CacheItem = JSON.parse(val);\r\n\t\t\t\titems.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// first compare priority\r\n\t\t// then compare visited time\r\n\t\titems.sort((a, b) => {\r\n\t\t\tif (a.priority > b.priority) {\r\n\t\t\t\treturn -1;\r\n\t\t\t} else if (a.priority < b.priority) {\r\n\t\t\t\treturn 1;\r\n\t\t\t} else {\r\n\t\t\t\tif (a.visitedTime < b.visitedTime) {\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t} else return 1;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tfor (let i = 0; i < items.length; i += 1) {\r\n\t\t\t// pop out items until we have enough room for new item\r\n\t\t\tthis._removeItem(items[i].key, items[i].byteSize);\r\n\t\t\tremainedSize -= items[i].byteSize;\r\n\t\t\tif (remainedSize <= 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Set item into cache. You can put number, string, boolean or object.\r\n\t * The cache will first check whether has the same key.\r\n\t * If it has, it will delete the old item and then put the new item in\r\n\t * The cache will pop out items if it is full\r\n\t * You can specify the cache item options. The cache will abort and output a warning:\r\n\t * If the key is invalid\r\n\t * If the size of the item exceeds itemMaxSize.\r\n\t * If the value is undefined\r\n\t * If incorrect cache item configuration\r\n\t * If error happened with browser storage\r\n\t *\r\n\t * @param key - the key of the item\r\n\t * @param value - the value of the item\r\n\t * @param {Object} [options] - optional, the specified meta-data\r\n\t */\r\n\tpublic setItem(\r\n\t\tkey: string,\r\n\t\tvalue: object | number | string | boolean,\r\n\t\toptions?: CacheItemOptions\r\n\t): void {\r\n\t\tlogger.log(\r\n\t\t\t`Set item: key is ${key}, value is ${value} with options: ${options}`\r\n\t\t);\r\n\t\tconst prefixedKey: string = this.config.keyPrefix + key;\r\n\t\t// invalid keys\r\n\t\tif (\r\n\t\t\tprefixedKey === this.config.keyPrefix ||\r\n\t\t\tprefixedKey === this.cacheCurSizeKey\r\n\t\t) {\r\n\t\t\tlogger.warn(`Invalid key: should not be empty or 'CurSize'`);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (typeof value === 'undefined') {\r\n\t\t\tlogger.warn(`The value of item should not be undefined!`);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst cacheItemOptions: CacheItemOptions = {\r\n\t\t\tpriority:\r\n\t\t\t\toptions && options.priority !== undefined\r\n\t\t\t\t\t? options.priority\r\n\t\t\t\t\t: this.config.defaultPriority,\r\n\t\t\texpires:\r\n\t\t\t\toptions && options.expires !== undefined\r\n\t\t\t\t\t? options.expires\r\n\t\t\t\t\t: this.config.defaultTTL + getCurrTime(),\r\n\t\t};\r\n\r\n\t\tif (cacheItemOptions.priority < 1 || cacheItemOptions.priority > 5) {\r\n\t\t\tlogger.warn(\r\n\t\t\t\t`Invalid parameter: priority due to out or range. It should be within 1 and 5.`\r\n\t\t\t);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst item: CacheItem = this.fillCacheItem(\r\n\t\t\tprefixedKey,\r\n\t\t\tvalue,\r\n\t\t\tcacheItemOptions\r\n\t\t);\r\n\r\n\t\t// check wether this item is too big;\r\n\t\tif (item.byteSize > this.config.itemMaxSize) {\r\n\t\t\tlogger.warn(\r\n\t\t\t\t`Item with key: ${key} you are trying to put into is too big!`\r\n\t\t\t);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\t// first look into the storage, if it exists, delete it.\r\n\t\t\tconst val: string | null = this.config.storage.getItem(prefixedKey);\r\n\t\t\tif (val) {\r\n\t\t\t\tthis._removeItem(prefixedKey, JSON.parse(val).byteSize);\r\n\t\t\t}\r\n\r\n\t\t\t// check whether the cache is full\r\n\t\t\tif (this._isCacheFull(item.byteSize)) {\r\n\t\t\t\tconst validKeys: string[] = this._findValidKeys();\r\n\t\t\t\t// check again and then pop out items\r\n\t\t\t\tif (this._isCacheFull(item.byteSize)) {\r\n\t\t\t\t\tconst sizeToPop: number = this._sizeToPop(item.byteSize);\r\n\t\t\t\t\tthis._popOutItems(validKeys, sizeToPop);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// put item in the cache\r\n\t\t\t// may failed due to storage full\r\n\t\t\tthis._setItem(prefixedKey, item);\r\n\t\t} catch (e) {\r\n\t\t\tlogger.warn(`setItem failed! ${e}`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Get item from cache. It will return null if item doesn’t exist or it has been expired.\r\n\t * If you specified callback function in the options,\r\n\t * then the function will be executed if no such item in the cache\r\n\t * and finally put the return value into cache.\r\n\t * Please make sure the callback function will return the value you want to put into the cache.\r\n\t * The cache will abort output a warning:\r\n\t * If the key is invalid\r\n\t * If error happened with browser storage\r\n\t *\r\n\t * @param key - the key of the item\r\n\t * @param {Object} [options] - the options of callback function\r\n\t *\r\n\t * @return - return the value of the item\r\n\t */\r\n\tpublic getItem(key: string, options?: CacheItemOptions): any {\r\n\t\tlogger.log(`Get item: key is ${key} with options ${options}`);\r\n\t\tlet ret: string | null = null;\r\n\t\tconst prefixedKey: string = this.config.keyPrefix + key;\r\n\r\n\t\tif (\r\n\t\t\tprefixedKey === this.config.keyPrefix ||\r\n\t\t\tprefixedKey === this.cacheCurSizeKey\r\n\t\t) {\r\n\t\t\tlogger.warn(`Invalid key: should not be empty or 'CurSize'`);\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tret = this.config.storage.getItem(prefixedKey);\r\n\t\t\tif (ret != null) {\r\n\t\t\t\tif (this._isExpired(prefixedKey)) {\r\n\t\t\t\t\t// if expired, remove that item and return null\r\n\t\t\t\t\tthis._removeItem(prefixedKey, JSON.parse(ret).byteSize);\r\n\t\t\t\t\tret = null;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// if not expired, great, return the value and refresh it\r\n\t\t\t\t\tlet item: CacheItem = JSON.parse(ret);\r\n\t\t\t\t\titem = this._refreshItem(item, prefixedKey);\r\n\t\t\t\t\treturn item.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (options && options.callback !== undefined) {\r\n\t\t\t\tconst val: object | string | number | boolean = options.callback();\r\n\t\t\t\tif (val !== null) {\r\n\t\t\t\t\tthis.setItem(key, val, options);\r\n\t\t\t\t}\r\n\t\t\t\treturn val;\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t} catch (e) {\r\n\t\t\tlogger.warn(`getItem failed! ${e}`);\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * remove item from the cache\r\n\t * The cache will abort output a warning:\r\n\t * If error happened with browser storage\r\n\t * @param key - the key of the item\r\n\t */\r\n\tpublic removeItem(key: string): void {\r\n\t\tlogger.log(`Remove item: key is ${key}`);\r\n\t\tconst prefixedKey: string = this.config.keyPrefix + key;\r\n\r\n\t\tif (\r\n\t\t\tprefixedKey === this.config.keyPrefix ||\r\n\t\t\tprefixedKey === this.cacheCurSizeKey\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst val: string | null = this.config.storage.getItem(prefixedKey);\r\n\t\t\tif (val) {\r\n\t\t\t\tthis._removeItem(prefixedKey, JSON.parse(val).byteSize);\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tlogger.warn(`removeItem failed! ${e}`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * clear the entire cache\r\n\t * The cache will abort output a warning:\r\n\t * If error happened with browser storage\r\n\t */\r\n\tpublic clear(): void {\r\n\t\tlogger.log(`Clear Cache`);\r\n\t\tconst keysToRemove: string[] = [];\r\n\r\n\t\tfor (let i = 0; i < this.config.storage.length; i += 1) {\r\n\t\t\tconst key = this.config.storage.key(i);\r\n\t\t\tif (key.indexOf(this.config.keyPrefix) === 0) {\r\n\t\t\t\tkeysToRemove.push(key);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tfor (let i = 0; i < keysToRemove.length; i += 1) {\r\n\t\t\t\tthis.config.storage.removeItem(keysToRemove[i]);\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tlogger.warn(`clear failed! ${e}`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Return all the keys in the cache.\r\n\t *\r\n\t * @return - all keys in the cache\r\n\t */\r\n\tpublic getAllKeys(): string[] {\r\n\t\tconst keys: string[] = [];\r\n\t\tfor (let i = 0; i < this.config.storage.length; i += 1) {\r\n\t\t\tconst key = this.config.storage.key(i);\r\n\t\t\tif (\r\n\t\t\t\tkey.indexOf(this.config.keyPrefix) === 0 &&\r\n\t\t\t\tkey !== this.cacheCurSizeKey\r\n\t\t\t) {\r\n\t\t\t\tkeys.push(key.substring(this.config.keyPrefix.length));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn keys;\r\n\t}\r\n\r\n\t/**\r\n\t * return the current size of the cache\r\n\t *\r\n\t * @return - current size of the cache\r\n\t */\r\n\tpublic getCacheCurSize(): number {\r\n\t\tlet ret: string | null = this.config.storage.getItem(this.cacheCurSizeKey);\r\n\t\tif (!ret) {\r\n\t\t\tthis.config.storage.setItem(this.cacheCurSizeKey, '0');\r\n\t\t\tret = '0';\r\n\t\t}\r\n\t\treturn Number(ret);\r\n\t}\r\n\r\n\t/**\r\n\t * Return a new instance of cache with customized configuration.\r\n\t * @param config - the customized configuration\r\n\t *\r\n\t * @return - new instance of Cache\r\n\t */\r\n\tpublic createInstance(config: CacheConfig): ICache {\r\n\t\tif (!config.keyPrefix || config.keyPrefix === defaultConfig.keyPrefix) {\r\n\t\t\tlogger.error('invalid keyPrefix, setting keyPrefix with timeStamp');\r\n\t\t\tconfig.keyPrefix = getCurrTime.toString();\r\n\t\t}\r\n\r\n\t\treturn new BrowserStorageCacheClass(config);\r\n\t}\r\n}\r\n\r\nexport const BrowserStorageCache: ICache = new BrowserStorageCacheClass();\r\n\r\n/**\r\n * @deprecated use named import\r\n */\r\nexport default BrowserStorageCache;\r\n","/*\r\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\r\n * the License. A copy of the License is located at\r\n *\r\n * http://aws.amazon.com/apache2.0/\r\n *\r\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\r\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\r\n * and limitations under the License.\r\n */\r\n\r\nimport { Amplify } from '@aws-amplify/core';\r\nimport { BrowserStorageCache } from './BrowserStorageCache';\r\nimport { InMemoryCache } from './InMemoryCache';\r\nimport { CacheConfig } from './types';\r\n\r\nexport { BrowserStorageCache, InMemoryCache, CacheConfig };\r\nexport { BrowserStorageCache as Cache };\r\n\r\n/**\r\n * @deprecated use named import\r\n */\r\nexport default BrowserStorageCache;\r\n\r\nAmplify.register(BrowserStorageCache);\r\n","import { ConsoleLogger as Logger } from '@aws-amplify/core';\n\nimport {\n\tPutEventsResponse,\n\tEventBuffer,\n\tEventObject,\n\tEventMap,\n} from '../types';\nimport {\n\tPutEventsCommand,\n\tPutEventsCommandOutput,\n} from '@aws-sdk/client-pinpoint';\nimport { isAppInForeground } from '../utils/AppUtils';\n\nconst logger = new Logger('EventsBuffer');\nconst RETRYABLE_CODES = [429, 500];\nconst ACCEPTED_CODES = [202];\n\ntype EventsBufferConfig = {\n\tbufferSize: number;\n\tflushSize: number;\n\tflushInterval: number;\n\tresendLimit: number;\n};\n\nexport default class EventsBuffer {\n\tprivate _config;\n\tprivate _client;\n\tprivate _interval;\n\tprivate _buffer: EventBuffer;\n\tprivate _pause = false;\n\tprivate _flush = false;\n\n\tconstructor(client, config: EventsBufferConfig) {\n\t\tlogger.debug('Instantiating buffer with config:', config);\n\t\tthis._buffer = [];\n\t\tthis._client = client;\n\t\tthis._config = config;\n\n\t\tthis._sendBatch = this._sendBatch.bind(this);\n\n\t\tthis._startLoop();\n\t}\n\n\tpublic push(event: EventObject) {\n\t\t// if the buffer is currently at the configured limit, pushing would exceed it\n\t\tif (this._buffer.length >= this._config.bufferSize) {\n\t\t\tlogger.debug('Exceeded analytics events buffer size');\n\t\t\treturn event.handlers.reject(\n\t\t\t\tnew Error('Exceeded the size of analytics events buffer')\n\t\t\t);\n\t\t}\n\n\t\tconst { eventId } = event.params.event;\n\t\tconst bufferElement = { [eventId]: event };\n\t\tthis._buffer.push(bufferElement);\n\t}\n\n\tpublic pause() {\n\t\tthis._pause = true;\n\t}\n\n\tpublic resume() {\n\t\tthis._pause = false;\n\t}\n\n\tpublic updateClient(client) {\n\t\tthis._client = client;\n\t}\n\n\tpublic flush() {\n\t\tthis._flush = true;\n\t}\n\n\tprivate _startLoop() {\n\t\tif (this._interval) {\n\t\t\tclearInterval(this._interval);\n\t\t}\n\n\t\tconst { flushInterval } = this._config;\n\n\t\tthis._interval = setInterval(this._sendBatch, flushInterval);\n\t}\n\n\tprivate _sendBatch() {\n\t\tconst bufferLength = this._buffer.length;\n\n\t\tif (this._flush && !bufferLength) {\n\t\t\tclearInterval(this._interval);\n\t\t}\n\n\t\t// Do not send the batch of events if\n\t\t// the Buffer is paused or is empty or the App is not in the foreground\n\t\t// Apps should be in the foreground since\n\t\t// the OS may restrict access to the network in the background\n\t\tif (this._pause || !bufferLength || !isAppInForeground()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { flushSize } = this._config;\n\n\t\tconst batchSize = Math.min(flushSize, bufferLength);\n\t\tconst bufferSubset = this._buffer.splice(0, batchSize);\n\n\t\tthis._putEvents(bufferSubset);\n\t}\n\n\tprivate async _putEvents(buffer: EventBuffer) {\n\t\tconst eventMap: EventMap = this._bufferToMap(buffer);\n\t\tconst batchEventParams = this._generateBatchEventParams(eventMap);\n\n\t\ttry {\n\t\t\tconst command: PutEventsCommand = new PutEventsCommand(batchEventParams);\n\t\t\tconst data: PutEventsCommandOutput = await this._client.send(command);\n\t\t\tthis._processPutEventsSuccessResponse(data, eventMap);\n\t\t} catch (err) {\n\t\t\treturn this._handlePutEventsFailure(err, eventMap);\n\t\t}\n\t}\n\n\tprivate _generateBatchEventParams(eventMap: EventMap) {\n\t\tconst batchEventParams = {\n\t\t\tApplicationId: '',\n\t\t\tEventsRequest: {\n\t\t\t\tBatchItem: {},\n\t\t\t},\n\t\t};\n\n\t\tObject.values(eventMap).forEach(item => {\n\t\t\tconst { params } = item;\n\t\t\tconst { event, timestamp, config } = params;\n\t\t\tconst { name, attributes, metrics, eventId, session } = event;\n\t\t\tconst { appId, endpointId } = config;\n\n\t\t\tconst batchItem = batchEventParams.EventsRequest.BatchItem;\n\n\t\t\tbatchEventParams.ApplicationId = batchEventParams.ApplicationId || appId;\n\n\t\t\tif (!batchItem[endpointId]) {\n\t\t\t\tbatchItem[endpointId] = {\n\t\t\t\t\tEndpoint: {},\n\t\t\t\t\tEvents: {},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tbatchItem[endpointId].Events[eventId] = {\n\t\t\t\tEventType: name,\n\t\t\t\tTimestamp: new Date(timestamp).toISOString(),\n\t\t\t\tAttributes: attributes,\n\t\t\t\tMetrics: metrics,\n\t\t\t\tSession: session,\n\t\t\t};\n\t\t});\n\n\t\treturn batchEventParams;\n\t}\n\n\tprivate _handlePutEventsFailure(err, eventMap: EventMap) {\n\t\tlogger.debug('_putEvents Failed: ', err);\n\t\tconst statusCode = err.$metadata && err.$metadata.httpStatusCode;\n\n\t\tif (RETRYABLE_CODES.includes(statusCode)) {\n\t\t\tconst retryableEvents = Object.values(eventMap);\n\t\t\tthis._retry(retryableEvents);\n\t\t\treturn;\n\t\t}\n\t}\n\n\tprivate _processPutEventsSuccessResponse(\n\t\tdata: PutEventsResponse,\n\t\teventMap: EventMap\n\t) {\n\t\tconst { Results } = data.EventsResponse;\n\t\tconst retryableEvents: EventObject[] = [];\n\n\t\tObject.entries(Results).forEach(([endpointId, endpointValues]) => {\n\t\t\tconst responses = endpointValues.EventsItemResponse;\n\n\t\t\tObject.entries(responses).forEach(\n\t\t\t\t([eventId, { StatusCode, Message }]) => {\n\t\t\t\t\tconst eventObject = eventMap[eventId];\n\n\t\t\t\t\t// manually crafting handlers response to keep API consistant\n\t\t\t\t\tconst response = {\n\t\t\t\t\t\tEventsResponse: {\n\t\t\t\t\t\t\tResults: {\n\t\t\t\t\t\t\t\t[endpointId]: {\n\t\t\t\t\t\t\t\t\tEventsItemResponse: {\n\t\t\t\t\t\t\t\t\t\t[eventId]: { StatusCode, Message },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\tif (ACCEPTED_CODES.includes(StatusCode)) {\n\t\t\t\t\t\teventObject.handlers.resolve(response);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (RETRYABLE_CODES.includes(StatusCode)) {\n\t\t\t\t\t\tretryableEvents.push(eventObject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { name } = eventObject.params.event;\n\n\t\t\t\t\tlogger.error(\n\t\t\t\t\t\t`event ${eventId} : ${name} failed with error: ${Message}`\n\t\t\t\t\t);\n\t\t\t\t\treturn eventObject.handlers.reject(response);\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\n\t\tif (retryableEvents.length) {\n\t\t\tthis._retry(retryableEvents);\n\t\t}\n\t}\n\n\tprivate _retry(retryableEvents: EventObject[]) {\n\t\t// retryable events that haven't reached the resendLimit\n\t\tconst eligibleEvents: EventBuffer = [];\n\n\t\tretryableEvents.forEach((event: EventObject) => {\n\t\t\tconst { params } = event;\n\t\t\tconst { eventId, name } = params.event;\n\n\t\t\tif (params.resendLimit-- > 0) {\n\t\t\t\tlogger.debug(\n\t\t\t\t\t`resending event ${eventId} : ${name} with ${params.resendLimit} retry attempts remaining`\n\t\t\t\t);\n\t\t\t\teligibleEvents.push({ [eventId]: event });\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlogger.debug(\n\t\t\t\t`no retry attempts remaining for event ${eventId} : ${name}`\n\t\t\t);\n\t\t});\n\n\t\t// add the events to the front of the buffer\n\t\tthis._buffer.unshift(...eligibleEvents);\n\t}\n\n\t// convert buffer to map, i.e. { eventId1: { params, handler }, eventId2: { params, handlers } }\n\t// this allows us to easily access the handlers after receiving a batch response\n\tprivate _bufferToMap(buffer: EventBuffer) {\n\t\treturn buffer.reduce((acc, curVal) => {\n\t\t\tconst [[key, value]] = Object.entries(curVal);\n\t\t\tacc[key] = value;\n\t\t\treturn acc;\n\t\t}, {});\n\t}\n}\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport {\n\tConsoleLogger as Logger,\n\tClientDevice,\n\tCredentials,\n\tSigner,\n\tJS,\n\tHub,\n\tgetAmplifyUserAgent,\n} from '@aws-amplify/core';\nimport {\n\tEventsBatch,\n\tPinpointClient,\n\tPutEventsCommand,\n\tPutEventsCommandInput,\n\tUpdateEndpointCommand,\n} from '@aws-sdk/client-pinpoint';\nimport Cache from '@aws-amplify/cache';\n\nimport {\n\tAnalyticsProvider,\n\tPromiseHandlers,\n\tEndpointBuffer,\n\tEventParams,\n\tEventObject,\n\tEndpointFailureData,\n} from '../types';\nimport { v1 as uuid } from 'uuid';\nimport EventsBuffer from './EventBuffer';\n\nconst AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' &&\ntypeof Symbol.for === 'function'\n\t? Symbol.for('amplify_default')\n\t: '@@amplify_default') as Symbol;\n\nconst dispatchAnalyticsEvent = (event, data) => {\n\tHub.dispatch('analytics', { event, data }, 'Analytics', AMPLIFY_SYMBOL);\n};\n\nconst logger = new Logger('AWSPinpointProvider');\nconst RETRYABLE_CODES = [429, 500];\nconst ACCEPTED_CODES = [202];\nconst FORBIDDEN_CODE = 403;\nconst MOBILE_SERVICE_NAME = 'mobiletargeting';\nconst EXPIRED_TOKEN_CODE = 'ExpiredTokenException';\nconst UPDATE_ENDPOINT = '_update_endpoint';\nconst SESSION_START = '_session.start';\nconst SESSION_STOP = '_session.stop';\n\nconst BEACON_SUPPORTED =\n\ttypeof navigator !== 'undefined' &&\n\tnavigator &&\n\ttypeof navigator.sendBeacon === 'function';\n\n// events buffer\nconst BUFFER_SIZE = 1000;\nconst FLUSH_SIZE = 100;\nconst FLUSH_INTERVAL = 5 * 1000; // 5s\nconst RESEND_LIMIT = 5;\n\n// params: { event: {name: , .... }, timeStamp, config, resendLimits }\nexport class AWSPinpointProvider implements AnalyticsProvider {\n\tstatic category = 'Analytics';\n\tstatic providerName = 'AWSPinpoint';\n\n\tprivate _config;\n\tprivate pinpointClient;\n\tprivate _sessionId;\n\tprivate _sessionStartTimestamp;\n\tprivate _buffer: EventsBuffer;\n\tprivate _endpointBuffer: EndpointBuffer;\n\tprivate _clientInfo;\n\tprivate _endpointGenerating = true;\n\tprivate _endpointUpdateInProgress = false;\n\n\tconstructor(config?) {\n\t\tthis._buffer = null;\n\t\tthis._endpointBuffer = [];\n\t\tthis._config = config ? config : {};\n\t\tthis._config.bufferSize = this._config.bufferSize || BUFFER_SIZE;\n\t\tthis._config.flushSize = this._config.flushSize || FLUSH_SIZE;\n\t\tthis._config.flushInterval = this._config.flushInterval || FLUSH_INTERVAL;\n\t\tthis._config.resendLimit = this._config.resendLimit || RESEND_LIMIT;\n\t\tthis._clientInfo = ClientDevice.clientInfo();\n\t}\n\n\t/**\n\t * get the category of the plugin\n\t */\n\tgetCategory(): string {\n\t\treturn AWSPinpointProvider.category;\n\t}\n\n\t/**\n\t * get provider name of the plugin\n\t */\n\tgetProviderName(): string {\n\t\treturn AWSPinpointProvider.providerName;\n\t}\n\n\t/**\n\t * configure the plugin\n\t * @param {Object} config - configuration\n\t */\n\tpublic configure(config): object {\n\t\tlogger.debug('configure Analytics', config);\n\t\tconst conf = config || {};\n\t\tthis._config = Object.assign({}, this._config, conf);\n\n\t\t// If autoSessionRecord is enabled, we need to wait for the endpoint to be\n\t\t// updated before sending any events. See `sendEvents` in `Analytics.ts`\n\t\tthis._endpointGenerating = !!config['autoSessionRecord'];\n\n\t\tif (this._config.appId && !this._config.disabled) {\n\t\t\tif (!this._config.endpointId) {\n\t\t\t\tconst cacheKey = this.getProviderName() + '_' + this._config.appId;\n\t\t\t\tthis._getEndpointId(cacheKey)\n\t\t\t\t\t.then(endpointId => {\n\t\t\t\t\t\tlogger.debug('setting endpoint id from the cache', endpointId);\n\t\t\t\t\t\tthis._config.endpointId = endpointId;\n\t\t\t\t\t\tdispatchAnalyticsEvent('pinpointProvider_configured', null);\n\t\t\t\t\t})\n\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\tlogger.debug('Failed to generate endpointId', err);\n\t\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdispatchAnalyticsEvent('pinpointProvider_configured', null);\n\t\t\t}\n\t\t} else {\n\t\t\tthis._flushBuffer();\n\t\t}\n\t\treturn this._config;\n\t}\n\n\t/**\n\t * record an event\n\t * @param {Object} params - the params of an event\n\t */\n\tpublic async record(params: EventParams, handlers: PromiseHandlers) {\n\t\tlogger.debug('_public record', params);\n\t\tconst credentials = await this._getCredentials();\n\t\tif (!credentials || !this._config.appId || !this._config.region) {\n\t\t\tlogger.debug(\n\t\t\t\t'cannot send events without credentials, applicationId or region'\n\t\t\t);\n\t\t\treturn handlers.reject(\n\t\t\t\tnew Error('No credentials, applicationId or region')\n\t\t\t);\n\t\t}\n\n\t\tthis._initClients(credentials);\n\n\t\tconst timestamp = new Date().getTime();\n\t\t// attach the session and eventId\n\t\tthis._generateSession(params);\n\t\tparams.event.eventId = uuid();\n\n\t\tObject.assign(params, { timestamp, config: this._config });\n\n\t\tif (params.event.immediate) {\n\t\t\treturn this._send(params, handlers);\n\t\t} else {\n\t\t\tthis._putToBuffer(params, handlers);\n\t\t}\n\t}\n\n\tprivate async _sendEndpointUpdate(endpointObject: EventObject) {\n\t\tif (this._endpointUpdateInProgress) {\n\t\t\tthis._endpointBuffer.push(endpointObject);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._endpointUpdateInProgress = true;\n\t\tawait this._updateEndpoint(endpointObject);\n\n\t\tconst next = this._endpointBuffer.shift();\n\t\tthis._endpointUpdateInProgress = false;\n\n\t\tnext && this._sendEndpointUpdate(next);\n\t}\n\n\t/**\n\t * @private\n\t * @param params - params for event recording\n\t * Put events into buffer\n\t */\n\tprivate _putToBuffer(params, handlers) {\n\t\tif (params.event.name === UPDATE_ENDPOINT) {\n\t\t\tthis._sendEndpointUpdate({ params, handlers });\n\t\t\treturn;\n\t\t}\n\n\t\tthis._buffer && this._buffer.push({ params, handlers });\n\t}\n\n\tprivate _generateSession(params) {\n\t\tthis._sessionId = this._sessionId || uuid();\n\t\tconst { event } = params;\n\n\t\tswitch (event.name) {\n\t\t\tcase SESSION_START:\n\t\t\t\t// refresh the session id and session start time\n\t\t\t\tthis._sessionStartTimestamp = new Date().getTime();\n\t\t\t\tthis._sessionId = uuid();\n\t\t\t\tevent.session = {\n\t\t\t\t\tId: this._sessionId,\n\t\t\t\t\tStartTimestamp: new Date(this._sessionStartTimestamp).toISOString(),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase SESSION_STOP:\n\t\t\t\tconst stopTimestamp = new Date().getTime();\n\t\t\t\tthis._sessionStartTimestamp =\n\t\t\t\t\tthis._sessionStartTimestamp || new Date().getTime();\n\t\t\t\tthis._sessionId = this._sessionId || uuid();\n\t\t\t\tevent.session = {\n\t\t\t\t\tId: this._sessionId,\n\t\t\t\t\tDuration: stopTimestamp - this._sessionStartTimestamp,\n\t\t\t\t\tStartTimestamp: new Date(this._sessionStartTimestamp).toISOString(),\n\t\t\t\t\tStopTimestamp: new Date(stopTimestamp).toISOString(),\n\t\t\t\t};\n\t\t\t\tthis._sessionId = undefined;\n\t\t\t\tthis._sessionStartTimestamp = undefined;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis._sessionStartTimestamp =\n\t\t\t\t\tthis._sessionStartTimestamp || new Date().getTime();\n\t\t\t\tthis._sessionId = this._sessionId || uuid();\n\t\t\t\tevent.session = {\n\t\t\t\t\tId: this._sessionId,\n\t\t\t\t\tStartTimestamp: new Date(this._sessionStartTimestamp).toISOString(),\n\t\t\t\t};\n\t\t}\n\t}\n\n\tprivate async _send(params, handlers) {\n\t\tconst { event } = params;\n\n\t\tswitch (event.name) {\n\t\t\tcase UPDATE_ENDPOINT:\n\t\t\t\treturn this._updateEndpoint({ params, handlers });\n\t\t\tcase SESSION_STOP:\n\t\t\t\treturn this._pinpointSendStopSession(params, handlers);\n\t\t\tdefault:\n\t\t\t\treturn this._pinpointPutEvents(params, handlers);\n\t\t}\n\t}\n\n\tprivate _generateBatchItemContext(params) {\n\t\tconst { event, timestamp, config } = params;\n\t\tconst { name, attributes, metrics, eventId, session } = event;\n\t\tconst { appId, endpointId } = config;\n\n\t\tconst endpointContext = {};\n\n\t\tconst eventParams: PutEventsCommandInput = {\n\t\t\tApplicationId: appId,\n\t\t\tEventsRequest: {\n\t\t\t\tBatchItem: {},\n\t\t\t},\n\t\t};\n\n\t\tconst endpointObj: EventsBatch = {} as EventsBatch;\n\t\tendpointObj.Endpoint = endpointContext;\n\t\tendpointObj.Events = {\n\t\t\t[eventId]: {\n\t\t\t\tEventType: name,\n\t\t\t\tTimestamp: new Date(timestamp).toISOString(),\n\t\t\t\tAttributes: attributes,\n\t\t\t\tMetrics: metrics,\n\t\t\t\tSession: session,\n\t\t\t},\n\t\t};\n\t\teventParams.EventsRequest.BatchItem[endpointId] = endpointObj;\n\n\t\treturn eventParams;\n\t}\n\n\tprivate async _pinpointPutEvents(params, handlers) {\n\t\tconst {\n\t\t\tevent: { eventId },\n\t\t\tconfig: { endpointId },\n\t\t} = params;\n\t\tconst eventParams = this._generateBatchItemContext(params);\n\t\tconst command: PutEventsCommand = new PutEventsCommand(eventParams);\n\n\t\ttry {\n\t\t\tconst data = await this.pinpointClient.send(command);\n\t\t\tconst {\n\t\t\t\tEventsResponse: {\n\t\t\t\t\tResults: {\n\t\t\t\t\t\t[endpointId]: {\n\t\t\t\t\t\t\tEventsItemResponse: {\n\t\t\t\t\t\t\t\t[eventId]: { StatusCode, Message },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} = data;\n\t\t\tif (ACCEPTED_CODES.includes(StatusCode)) {\n\t\t\t\tlogger.debug('record event success. ', data);\n\t\t\t\treturn handlers.resolve(data);\n\t\t\t} else {\n\t\t\t\tif (RETRYABLE_CODES.includes(StatusCode)) {\n\t\t\t\t\tthis._retry(params, handlers);\n\t\t\t\t} else {\n\t\t\t\t\tlogger.error(\n\t\t\t\t\t\t`Event ${eventId} is not accepted, the error is ${Message}`\n\t\t\t\t\t);\n\t\t\t\t\treturn handlers.reject(data);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tthis._eventError(err);\n\t\t\treturn handlers.reject(err);\n\t\t}\n\t}\n\n\tprivate _pinpointSendStopSession(params, handlers): Promise {\n\t\tif (!BEACON_SUPPORTED) {\n\t\t\tthis._pinpointPutEvents(params, handlers);\n\t\t\treturn;\n\t\t}\n\n\t\tconst eventParams = this._generateBatchItemContext(params);\n\n\t\tconst { region } = this._config;\n\t\tconst { ApplicationId, EventsRequest } = eventParams;\n\n\t\tconst accessInfo = {\n\t\t\tsecret_key: this._config.credentials.secretAccessKey,\n\t\t\taccess_key: this._config.credentials.accessKeyId,\n\t\t\tsession_token: this._config.credentials.sessionToken,\n\t\t};\n\n\t\tconst url = `https://pinpoint.${region}.amazonaws.com/v1/apps/${ApplicationId}/events/legacy`;\n\t\tconst body = JSON.stringify(EventsRequest);\n\t\tconst method = 'POST';\n\n\t\tconst request = {\n\t\t\turl,\n\t\t\tbody,\n\t\t\tmethod,\n\t\t};\n\n\t\tconst serviceInfo = { region, service: MOBILE_SERVICE_NAME };\n\n\t\tconst requestUrl: string = Signer.signUrl(\n\t\t\trequest,\n\t\t\taccessInfo,\n\t\t\tserviceInfo,\n\t\t\tnull\n\t\t);\n\n\t\tconst success: boolean = navigator.sendBeacon(requestUrl, body);\n\n\t\tif (success) {\n\t\t\treturn handlers.resolve('sendBeacon success');\n\t\t}\n\t\treturn handlers.reject('sendBeacon failure');\n\t}\n\n\tprivate _retry(params, handlers) {\n\t\tconst {\n\t\t\tconfig: { resendLimit },\n\t\t} = params;\n\t\t// For backward compatibility\n\t\tparams.resendLimit =\n\t\t\ttypeof params.resendLimit === 'number' ? params.resendLimit : resendLimit;\n\t\tif (params.resendLimit-- > 0) {\n\t\t\tlogger.debug(\n\t\t\t\t`resending event ${params.eventName} with ${params.resendLimit} retry times left`\n\t\t\t);\n\t\t\tthis._pinpointPutEvents(params, handlers);\n\t\t} else {\n\t\t\tlogger.debug(`retry times used up for event ${params.eventName}`);\n\t\t}\n\t}\n\n\tprivate async _updateEndpoint(endpointObject: EventObject) {\n\t\tconst { params, handlers } = endpointObject;\n\t\tconst { config, event } = params;\n\t\tconst { appId, endpointId } = config;\n\n\t\tconst request = this._endpointRequest(\n\t\t\tconfig,\n\t\t\tJS.transferKeyToLowerCase(\n\t\t\t\tevent,\n\t\t\t\t[],\n\t\t\t\t['attributes', 'userAttributes', 'Attributes', 'UserAttributes']\n\t\t\t)\n\t\t);\n\t\tconst update_params = {\n\t\t\tApplicationId: appId,\n\t\t\tEndpointId: endpointId,\n\t\t\tEndpointRequest: request,\n\t\t};\n\n\t\ttry {\n\t\t\tconst command: UpdateEndpointCommand = new UpdateEndpointCommand(\n\t\t\t\tupdate_params\n\t\t\t);\n\t\t\tconst data = await this.pinpointClient.send(command);\n\n\t\t\tlogger.debug('updateEndpoint success', data);\n\t\t\tthis._endpointGenerating = false;\n\t\t\tthis._resumeBuffer();\n\n\t\t\thandlers.resolve(data);\n\t\t\treturn;\n\t\t} catch (err) {\n\t\t\tconst failureData: EndpointFailureData = {\n\t\t\t\terr,\n\t\t\t\tupdate_params,\n\t\t\t\tendpointObject,\n\t\t\t};\n\n\t\t\treturn this._handleEndpointUpdateFailure(failureData);\n\t\t}\n\t}\n\n\tprivate async _handleEndpointUpdateFailure(failureData: EndpointFailureData) {\n\t\tconst { err, endpointObject } = failureData;\n\t\tconst statusCode = err.$metadata && err.$metadata.httpStatusCode;\n\n\t\tlogger.debug('updateEndpoint error', err);\n\n\t\tswitch (statusCode) {\n\t\t\tcase FORBIDDEN_CODE:\n\t\t\t\treturn this._handleEndpointUpdateForbidden(failureData);\n\t\t\tdefault:\n\t\t\t\tif (RETRYABLE_CODES.includes(statusCode)) {\n\t\t\t\t\t// Server error. Attempt exponential retry\n\t\t\t\t\tconst exponential = true;\n\t\t\t\t\treturn this._retryEndpointUpdate(endpointObject, exponential);\n\t\t\t\t}\n\t\t\t\tlogger.error('updateEndpoint failed', err);\n\t\t\t\tendpointObject.handlers.reject(err);\n\t\t}\n\t}\n\n\tprivate _handleEndpointUpdateForbidden(failureData: EndpointFailureData) {\n\t\tconst { err, endpointObject } = failureData;\n\n\t\tconst { code, retryable } = err;\n\n\t\tif (code !== EXPIRED_TOKEN_CODE && !retryable) {\n\t\t\treturn endpointObject.handlers.reject(err);\n\t\t}\n\n\t\tthis._retryEndpointUpdate(endpointObject);\n\t}\n\n\tprivate _retryEndpointUpdate(\n\t\tendpointObject: EventObject,\n\t\texponential: boolean = false\n\t) {\n\t\tlogger.debug('_retryEndpointUpdate', endpointObject);\n\t\tconst { params } = endpointObject;\n\n\t\t// TODO: implement retry with exp back off once exp function is available\n\t\tconst {\n\t\t\tconfig: { resendLimit },\n\t\t} = params;\n\n\t\tparams.resendLimit =\n\t\t\ttypeof params.resendLimit === 'number' ? params.resendLimit : resendLimit;\n\n\t\tif (params.resendLimit-- > 0) {\n\t\t\tlogger.debug(\n\t\t\t\t`resending endpoint update ${params.event.eventId} with ${params.resendLimit} retry attempts remaining`\n\t\t\t);\n\t\t\t// insert at the front of endpointBuffer\n\t\t\tthis._endpointBuffer.length\n\t\t\t\t? this._endpointBuffer.unshift(endpointObject)\n\t\t\t\t: this._updateEndpoint(endpointObject);\n\t\t\treturn;\n\t\t}\n\n\t\tlogger.warn(\n\t\t\t`resending endpoint update ${params.event.eventId} failed after ${params.config.resendLimit} attempts`\n\t\t);\n\n\t\tif (this._endpointGenerating) {\n\t\t\tlogger.error('Initial endpoint update failed. ');\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t * @param config\n\t * Init the clients\n\t */\n\tprivate async _initClients(credentials) {\n\t\tlogger.debug('init clients');\n\n\t\tif (\n\t\t\tthis.pinpointClient &&\n\t\t\tthis._config.credentials &&\n\t\t\tthis._config.credentials.sessionToken === credentials.sessionToken &&\n\t\t\tthis._config.credentials.identityId === credentials.identityId\n\t\t) {\n\t\t\tlogger.debug('no change for aws credentials, directly return from init');\n\t\t\treturn;\n\t\t}\n\n\t\tconst identityId = this._config.credentials\n\t\t\t? this._config.credentials.identityId\n\t\t\t: null;\n\n\t\tthis._config.credentials = credentials;\n\t\tconst { region } = this._config;\n\t\tlogger.debug('init clients with credentials', credentials);\n\t\tthis.pinpointClient = new PinpointClient({\n\t\t\tregion,\n\t\t\tcredentials,\n\t\t\tcustomUserAgent: getAmplifyUserAgent(),\n\t\t});\n\n\t\t// TODO: remove this middleware once a long term fix is implemented by aws-sdk-js team.\n\t\tthis.pinpointClient.middlewareStack.addRelativeTo(\n\t\t\tnext => args => {\n\t\t\t\tdelete args.request.headers['amz-sdk-invocation-id'];\n\t\t\t\tdelete args.request.headers['amz-sdk-request'];\n\t\t\t\treturn next(args);\n\t\t\t},\n\t\t\t{\n\t\t\t\tstep: 'finalizeRequest',\n\t\t\t\trelation: 'after',\n\t\t\t\ttoMiddleware: 'retryMiddleware',\n\t\t\t}\n\t\t);\n\n\t\tif (this._bufferExists() && identityId === credentials.identityId) {\n\t\t\t// if the identity has remained the same, pass the updated client to the buffer\n\t\t\tthis._updateBufferClient();\n\t\t} else {\n\t\t\t// otherwise flush the buffer and instantiate a new one\n\t\t\t// this will cause the old buffer to send any remaining events\n\t\t\t// with the old credentials and then stop looping and shortly thereafter get picked up by GC\n\t\t\tthis._initBuffer();\n\t\t}\n\n\t\tthis._customizePinpointClientReq();\n\t}\n\n\tprivate _bufferExists() {\n\t\treturn this._buffer && this._buffer instanceof EventsBuffer;\n\t}\n\n\tprivate _initBuffer() {\n\t\tif (this._bufferExists()) {\n\t\t\tthis._flushBuffer();\n\t\t}\n\n\t\tthis._buffer = new EventsBuffer(this.pinpointClient, this._config);\n\n\t\t// if the first endpoint update hasn't yet resolved pause the buffer to\n\t\t// prevent race conditions. It will be resumed as soon as that request succeeds\n\t\tif (this._endpointGenerating) {\n\t\t\tthis._buffer.pause();\n\t\t}\n\t}\n\n\tprivate _updateBufferClient() {\n\t\tif (this._bufferExists()) {\n\t\t\tthis._buffer.updateClient(this.pinpointClient);\n\t\t}\n\t}\n\n\tprivate _flushBuffer() {\n\t\tif (this._bufferExists()) {\n\t\t\tthis._buffer.flush();\n\t\t\tthis._buffer = null;\n\t\t}\n\t}\n\n\tprivate _resumeBuffer() {\n\t\tif (this._bufferExists()) {\n\t\t\tthis._buffer.resume();\n\t\t}\n\t}\n\n\tprivate _customizePinpointClientReq() {\n\t\t// TODO FIXME: Find a middleware to do this with AWS V3 SDK\n\t\t// if (Platform.isReactNative) {\n\t\t// \tthis.pinpointClient.customizeRequests(request => {\n\t\t// \t\trequest.on('build', req => {\n\t\t// \t\t\treq.httpRequest.headers['user-agent'] = Platform.userAgent;\n\t\t// \t\t});\n\t\t// \t});\n\t\t// }\n\t}\n\n\tprivate async _getEndpointId(cacheKey) {\n\t\t// try to get from cache\n\t\tlet endpointId = await Cache.getItem(cacheKey);\n\t\tlogger.debug(\n\t\t\t'endpointId from cache',\n\t\t\tendpointId,\n\t\t\t'type',\n\t\t\ttypeof endpointId\n\t\t);\n\t\tif (!endpointId) {\n\t\t\tendpointId = uuid();\n\t\t\t// set a longer TTL to avoid endpoint id being deleted after the default TTL (3 days)\n\t\t\t// also set its priority to the highest to reduce its chance of being deleted when cache is full\n\t\t\tconst ttl = 1000 * 60 * 60 * 24 * 365 * 100; // 100 years\n\t\t\tconst expiration = new Date().getTime() + ttl;\n\t\t\tCache.setItem(cacheKey, endpointId, {\n\t\t\t\texpires: expiration,\n\t\t\t\tpriority: 1,\n\t\t\t});\n\t\t}\n\t\treturn endpointId;\n\t}\n\n\t/**\n\t * EndPoint request\n\t * @return {Object} - The request of updating endpoint\n\t */\n\tprivate _endpointRequest(config, event) {\n\t\tconst { credentials } = config;\n\t\tconst clientInfo = this._clientInfo || {};\n\t\tconst clientContext = config.clientContext || {};\n\t\t// for now we have three different ways for default endpoint configurations\n\t\t// clientInfo\n\t\t// clientContext (deprecated)\n\t\t// config.endpoint\n\t\tconst defaultEndpointConfig = config.endpoint || {};\n\t\tconst demographicByClientInfo = {\n\t\t\tappVersion: clientInfo.appVersion,\n\t\t\tmake: clientInfo.make,\n\t\t\tmodel: clientInfo.model,\n\t\t\tmodelVersion: clientInfo.version,\n\t\t\tplatform: clientInfo.platform,\n\t\t};\n\t\t// for backward compatibility\n\t\tconst {\n\t\t\tclientId,\n\t\t\tappTitle,\n\t\t\tappVersionName,\n\t\t\tappVersionCode,\n\t\t\tappPackageName,\n\t\t\t...demographicByClientContext\n\t\t} = clientContext;\n\t\tconst channelType = event.address\n\t\t\t? clientInfo.platform === 'android'\n\t\t\t\t? 'GCM'\n\t\t\t\t: 'APNS'\n\t\t\t: undefined;\n\t\tconst tmp = {\n\t\t\tchannelType,\n\t\t\trequestId: uuid(),\n\t\t\teffectiveDate: new Date().toISOString(),\n\t\t\t...defaultEndpointConfig,\n\t\t\t...event,\n\t\t\tattributes: {\n\t\t\t\t...defaultEndpointConfig.attributes,\n\t\t\t\t...event.attributes,\n\t\t\t},\n\t\t\tdemographic: {\n\t\t\t\t...demographicByClientInfo,\n\t\t\t\t...demographicByClientContext,\n\t\t\t\t...defaultEndpointConfig.demographic,\n\t\t\t\t...event.demographic,\n\t\t\t},\n\t\t\tlocation: {\n\t\t\t\t...defaultEndpointConfig.location,\n\t\t\t\t...event.location,\n\t\t\t},\n\t\t\tmetrics: {\n\t\t\t\t...defaultEndpointConfig.metrics,\n\t\t\t\t...event.metrics,\n\t\t\t},\n\t\t\tuser: {\n\t\t\t\tuserId:\n\t\t\t\t\tevent.userId ||\n\t\t\t\t\tdefaultEndpointConfig.userId ||\n\t\t\t\t\tcredentials.identityId,\n\t\t\t\tuserAttributes: {\n\t\t\t\t\t...defaultEndpointConfig.userAttributes,\n\t\t\t\t\t...event.userAttributes,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\t// eliminate unnecessary params\n\t\tconst {\n\t\t\tuserId,\n\t\t\tuserAttributes,\n\t\t\tname,\n\t\t\tsession,\n\t\t\teventId,\n\t\t\timmediate,\n\t\t\t...ret\n\t\t} = tmp;\n\t\treturn JS.transferKeyToUpperCase(\n\t\t\tret,\n\t\t\t[],\n\t\t\t['metrics', 'userAttributes', 'attributes']\n\t\t);\n\t}\n\n\tprivate _eventError(err: any) {\n\t\tlogger.error('record event failed.', err);\n\t\tlogger.warn(\n\t\t\t`Please ensure you have updated your Pinpoint IAM Policy ` +\n\t\t\t\t`with the Action: \"mobiletargeting:PutEvents\" ` +\n\t\t\t\t`in order to record events`\n\t\t);\n\t}\n\n\tprivate async _getCredentials() {\n\t\ttry {\n\t\t\tconst credentials = await Credentials.get();\n\t\t\tif (!credentials) return null;\n\n\t\t\tlogger.debug('set credentials for analytics', credentials);\n\t\t\treturn Credentials.shear(credentials);\n\t\t} catch (err) {\n\t\t\tlogger.debug('ensure credentials error', err);\n\t\t\treturn null;\n\t\t}\n\t}\n}\n\n/**\n * @deprecated use named import\n */\nexport default AWSPinpointProvider;\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nconst lists: MethodEmbed[] = [];\n\nexport class MethodEmbed {\n\tpublic context;\n\tpublic methodName;\n\tprivate _originalMethod;\n\tprivate _bindedMethod;\n\n\tstatic add(context, methodName, methodOverride) {\n\t\tgetInstance(context, methodName).set(methodOverride);\n\t}\n\n\tstatic remove(context, methodName) {\n\t\tgetInstance(context, methodName).remove();\n\t}\n\n\tconstructor(context, methodName) {\n\t\tthis.context = context;\n\t\tthis.methodName = methodName;\n\n\t\tthis._originalMethod = context[methodName].bind(context);\n\t}\n\n\tpublic set(methodOverride) {\n\t\tthis.context[this.methodName] = (...args) => {\n\t\t\treturn methodOverride(this._originalMethod(...args));\n\t\t};\n\t}\n\n\tpublic remove() {\n\t\tthis.context[this.methodName] = this._originalMethod;\n\t}\n}\n\nfunction getInstance(context, methodName): MethodEmbed {\n\tlet instance = lists.filter(\n\t\th => h.context === context && h.methodName === methodName\n\t)[0];\n\n\tif (!instance) {\n\t\tinstance = new MethodEmbed(context, methodName);\n\t\tlists.push(instance);\n\t}\n\n\treturn instance;\n}\n\n/**\n * @deprecated use named import\n */\nexport default MethodEmbed;\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport { pageViewTrackOpts } from '../types';\nimport { MethodEmbed } from '../utils/MethodEmbed';\nimport { ConsoleLogger as Logger, JS } from '@aws-amplify/core';\n\nconst logger = new Logger('PageViewTracker');\nconst PREV_URL_KEY = 'aws-amplify-analytics-prevUrl';\n\nconst getUrl = () => {\n\tif (!JS.browserOrNode().isBrowser) return '';\n\telse return window.location.origin + window.location.pathname;\n};\n\nconst defaultOpts: pageViewTrackOpts = {\n\tenable: false,\n\tprovider: 'AWSPinpoint',\n\tgetUrl,\n};\n\nexport class PageViewTracker {\n\tprivate _config: pageViewTrackOpts;\n\tprivate _tracker;\n\tprivate _hasEnabled;\n\n\tconstructor(tracker, opts) {\n\t\tlogger.debug('initialize pageview tracker with opts', opts);\n\t\tthis._config = Object.assign({}, defaultOpts, opts);\n\t\tthis._tracker = tracker;\n\t\tthis._hasEnabled = false;\n\t\tthis._trackFunc = this._trackFunc.bind(this);\n\n\t\tif (this._config.type === 'SPA') {\n\t\t\tthis._pageViewTrackSPA();\n\t\t} else {\n\t\t\tthis._pageViewTrackDefault();\n\t\t}\n\t}\n\n\tpublic configure(opts?: pageViewTrackOpts) {\n\t\tObject.assign(this._config, opts);\n\n\t\t// if spa, need to remove those listeners if disabled\n\t\tif (this._config.type === 'SPA') {\n\t\t\tthis._pageViewTrackSPA();\n\t\t}\n\n\t\treturn this._config;\n\t}\n\n\tprivate _isSameUrl() {\n\t\tconst prevUrl = sessionStorage.getItem(PREV_URL_KEY);\n\t\tconst curUrl = this._config.getUrl();\n\n\t\tif (prevUrl === curUrl) {\n\t\t\tlogger.debug('the url is same');\n\t\t\treturn true;\n\t\t} else return false;\n\t}\n\n\tprivate async _pageViewTrackDefault() {\n\t\tif (\n\t\t\t!JS.browserOrNode().isBrowser ||\n\t\t\t!window.addEventListener ||\n\t\t\t!window.sessionStorage\n\t\t) {\n\t\t\tlogger.debug('not in the supported web enviroment');\n\t\t\treturn;\n\t\t}\n\t\tconst url = this._config.getUrl();\n\t\tconst customAttrs =\n\t\t\ttypeof this._config.attributes === 'function'\n\t\t\t\t? await this._config.attributes()\n\t\t\t\t: this._config.attributes;\n\t\tconst attributes = Object.assign(\n\t\t\t{\n\t\t\t\turl,\n\t\t\t},\n\t\t\tcustomAttrs\n\t\t);\n\n\t\tif (this._config.enable && !this._isSameUrl()) {\n\t\t\tthis._tracker(\n\t\t\t\t{\n\t\t\t\t\tname: this._config.eventName || 'pageView',\n\t\t\t\t\tattributes,\n\t\t\t\t},\n\t\t\t\tthis._config.provider\n\t\t\t).catch(e => {\n\t\t\t\tlogger.debug('Failed to record the page view event', e);\n\t\t\t});\n\t\t\tsessionStorage.setItem(PREV_URL_KEY, url);\n\t\t}\n\t}\n\n\tprivate async _trackFunc() {\n\t\tif (\n\t\t\t!JS.browserOrNode().isBrowser ||\n\t\t\t!window.addEventListener ||\n\t\t\t!history.pushState ||\n\t\t\t!window.sessionStorage\n\t\t) {\n\t\t\tlogger.debug('not in the supported web enviroment');\n\t\t\treturn;\n\t\t}\n\n\t\tconst url = this._config.getUrl();\n\t\tconst customAttrs =\n\t\t\ttypeof this._config.attributes === 'function'\n\t\t\t\t? await this._config.attributes()\n\t\t\t\t: this._config.attributes;\n\t\tconst attributes = Object.assign(\n\t\t\t{\n\t\t\t\turl,\n\t\t\t},\n\t\t\tcustomAttrs\n\t\t);\n\n\t\tif (!this._isSameUrl()) {\n\t\t\tthis._tracker(\n\t\t\t\t{\n\t\t\t\t\tname: this._config.eventName || 'pageView',\n\t\t\t\t\tattributes,\n\t\t\t\t},\n\t\t\t\tthis._config.provider\n\t\t\t).catch(e => {\n\t\t\t\tlogger.debug('Failed to record the page view event', e);\n\t\t\t});\n\t\t\tsessionStorage.setItem(PREV_URL_KEY, url);\n\t\t}\n\t}\n\n\tprivate _pageViewTrackSPA() {\n\t\tif (\n\t\t\t!JS.browserOrNode().isBrowser ||\n\t\t\t!window.addEventListener ||\n\t\t\t!history.pushState\n\t\t) {\n\t\t\tlogger.debug('not in the supported web enviroment');\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._config.enable && !this._hasEnabled) {\n\t\t\tMethodEmbed.add(history, 'pushState', this._trackFunc);\n\t\t\tMethodEmbed.add(history, 'replaceState', this._trackFunc);\n\t\t\twindow.addEventListener('popstate', this._trackFunc);\n\t\t\tthis._trackFunc();\n\t\t\tthis._hasEnabled = true;\n\t\t} else {\n\t\t\tMethodEmbed.remove(history, 'pushState');\n\t\t\tMethodEmbed.remove(history, 'replaceState');\n\t\t\twindow.removeEventListener('popstate', this._trackFunc);\n\t\t\tthis._hasEnabled = false;\n\t\t}\n\t}\n}\n\n/**\n * @deprecated use named import\n */\nexport default PageViewTracker;\n","/**\n * Copyright (c) 2017, Philip Walton \n */\n\nimport { JS } from '@aws-amplify/core';\n\nconst proto =\n\tJS.browserOrNode().isBrowser && window['Element']\n\t\t? window['Element'].prototype\n\t\t: null;\n\nconst nativeMatches = proto\n\t? proto.matches ||\n\t // @ts-ignore\n\t proto.matchesSelector ||\n\t // @ts-ignore\n\t proto.webkitMatchesSelector ||\n\t // @ts-ignore\n\t proto.mozMatchesSelector ||\n\t // @ts-ignore\n\t proto.msMatchesSelector ||\n\t // @ts-ignore\n\t proto.oMatchesSelector\n\t: null;\n\n/**\n * Tests if a DOM elements matches any of the test DOM elements or selectors.\n * @param {Element} element The DOM element to test.\n * @param {Element|string|Array} test A DOM element, a CSS\n * selector, or an array of DOM elements or CSS selectors to match against.\n * @return {boolean} True of any part of the test matches.\n */\nexport function matches(element, test) {\n\t// Validate input.\n\tif (element && element.nodeType === 1 && test) {\n\t\t// if test is a string or DOM element test it.\n\t\tif (typeof test === 'string' || test.nodeType === 1) {\n\t\t\treturn (\n\t\t\t\telement === test || matchesSelector(element, /** @type {string} */ test)\n\t\t\t);\n\t\t} else if ('length' in test) {\n\t\t\t// if it has a length property iterate over the items\n\t\t\t// and return true if any match.\n\t\t\tfor (let i = 0, item; (item = test[i]); i++) {\n\t\t\t\tif (element === item || matchesSelector(element, item)) return true;\n\t\t\t}\n\t\t}\n\t}\n\t// Still here? Return false\n\treturn false;\n}\n\n/**\n * Tests whether a DOM element matches a selector. This polyfills the native\n * Element.prototype.matches method across browsers.\n * @param {!Element} element The DOM element to test.\n * @param {string} selector The CSS selector to test element against.\n * @return {boolean} True if the selector matches.\n */\nfunction matchesSelector(element, selector) {\n\tif (typeof selector !== 'string') return false;\n\tif (nativeMatches) return nativeMatches.call(element, selector);\n\tconst nodes = element.parentNode.querySelectorAll(selector);\n\tfor (let i = 0, node; (node = nodes[i]); i++) {\n\t\tif (node === element) return true;\n\t}\n\treturn false;\n}\n","/**\n * Copyright (c) 2017, Philip Walton \n */\n\nimport { closest } from './closest';\nimport { matches } from './matches';\n\n/**\n * Delegates the handling of events for an element matching a selector to an\n * ancestor of the matching element.\n * @param {!Node} ancestor The ancestor element to add the listener to.\n * @param {string} eventType The event type to listen to.\n * @param {string} selector A CSS selector to match against child elements.\n * @param {!Function} callback A function to run any time the event happens.\n * @param {Object=} opts A configuration options object. The available options:\n * - useCapture: If true, bind to the event capture phase.\n * - deep: If true, delegate into shadow trees.\n * @return {Object} The delegate object. It contains a destroy method.\n */\nexport function delegate(ancestor, eventType, selector, callback, opts = {}) {\n\t// Defines the event listener.\n\tconst listener = function(event) {\n\t\tlet delegateTarget;\n\n\t\t// If opts.composed is true and the event originated from inside a Shadow\n\t\t// tree, check the composed path nodes.\n\t\tif (opts['composed'] && typeof event['composedPath'] === 'function') {\n\t\t\tconst composedPath = event.composedPath();\n\t\t\tfor (let i = 0, node; (node = composedPath[i]); i++) {\n\t\t\t\tif (node.nodeType === 1 && matches(node, selector)) {\n\t\t\t\t\tdelegateTarget = node;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// Otherwise check the parents.\n\t\t\tdelegateTarget = closest(event.target, selector, true);\n\t\t}\n\n\t\tif (delegateTarget) {\n\t\t\tcallback.call(delegateTarget, event, delegateTarget);\n\t\t}\n\t};\n\n\tancestor.addEventListener(eventType, listener, opts['useCapture']);\n\n\treturn {\n\t\tdestroy: () => {\n\t\t\tancestor.removeEventListener(eventType, listener, opts['useCapture']);\n\t\t},\n\t};\n}\n","/**\n * Copyright (c) 2017, Philip Walton \n */\n\nimport { matches } from './matches';\nimport { parents } from './parents';\n\n/**\n * Gets the closest parent element that matches the passed selector.\n * @param {Element} element The element whose parents to check.\n * @param {string} selector The CSS selector to match against.\n * @param {boolean=} shouldCheckSelf True if the selector should test against\n * the passed element itself.\n * @return {Element|undefined} The matching element or undefined.\n */\nexport function closest(element, selector, shouldCheckSelf = false) {\n\tif (!(element && element.nodeType === 1 && selector)) return;\n\tconst parentElements = (shouldCheckSelf ? [element] : []).concat(\n\t\tparents(element)\n\t);\n\n\tfor (let i = 0, parent; (parent = parentElements[i]); i++) {\n\t\tif (matches(parent, selector)) return parent;\n\t}\n}\n","/**\n * Copyright (c) 2017, Philip Walton \n */\n\n/**\n * Returns an array of a DOM element's parent elements.\n * @param {!Element} element The DOM element whose parents to get.\n * @return {!Array} An array of all parent elemets, or an empty array if no\n * parent elements are found.\n */\nexport function parents(ele) {\n\tconst list = [];\n\tlet element = ele;\n\twhile (element && element.parentNode && element.parentNode.nodeType === 1) {\n\t\telement = /** @type {!Element} */ element.parentNode;\n\t\tlist.push(element);\n\t}\n\treturn list;\n}\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport { delegate } from '../vendor/dom-utils';\nimport { EventTrackOpts } from '../types';\nimport { ConsoleLogger as Logger, JS } from '@aws-amplify/core';\n\nconst logger = new Logger('EventTracker');\n\nconst defaultOpts: EventTrackOpts = {\n\tenable: false,\n\tevents: ['click'],\n\tselectorPrefix: 'data-amplify-analytics-',\n\tprovider: 'AWSPinpoint',\n};\n\nexport class EventTracker {\n\tprivate _tracker;\n\tprivate _config: EventTrackOpts;\n\tprivate _delegates;\n\n\tconstructor(tracker, opts) {\n\t\tif (!JS.browserOrNode().isBrowser || !window.addEventListener) {\n\t\t\tlogger.debug('not in the supported web environment');\n\t\t\treturn;\n\t\t}\n\n\t\tthis._config = Object.assign({}, defaultOpts, opts);\n\t\tthis._tracker = tracker;\n\t\tthis._delegates = {};\n\t\tthis._trackFunc = this._trackFunc.bind(this);\n\n\t\tlogger.debug('initialize pageview tracker with opts', this._config);\n\n\t\tthis.configure(this._config);\n\t}\n\n\tconfigure(opts?: EventTrackOpts) {\n\t\tObject.assign(this._config, opts);\n\n\t\tif (!this._config.enable) {\n\t\t\tObject.keys(this._delegates).forEach(key => {\n\t\t\t\tif (typeof this._delegates[key].destroy === 'function')\n\t\t\t\t\tthis._delegates[key].destroy();\n\t\t\t});\n\t\t\tthis._delegates = {};\n\t\t} else if (\n\t\t\tthis._config.enable &&\n\t\t\tObject.keys(this._delegates).length === 0\n\t\t) {\n\t\t\tconst selector = '[' + this._config.selectorPrefix + 'on]';\n\t\t\tthis._config.events.forEach(evt => {\n\t\t\t\tthis._delegates[evt] = delegate(\n\t\t\t\t\tdocument,\n\t\t\t\t\tevt,\n\t\t\t\t\tselector,\n\t\t\t\t\tthis._trackFunc,\n\t\t\t\t\t{ composed: true, useCapture: true }\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\n\t\treturn this._config;\n\t}\n\n\tprivate async _trackFunc(event, element) {\n\t\t// the events specifed in 'amplify-analytics-on' selector\n\t\tconst customAttrs = {};\n\t\tconst events = element\n\t\t\t.getAttribute(this._config.selectorPrefix + 'on')\n\t\t\t.split(/\\s*,\\s*/);\n\t\tconst eventName = element.getAttribute(\n\t\t\tthis._config.selectorPrefix + 'name'\n\t\t);\n\n\t\tconst attrs = element.getAttribute(this._config.selectorPrefix + 'attrs');\n\t\tif (attrs) {\n\t\t\tattrs.split(/\\s*,\\s*/).forEach(attr => {\n\t\t\t\tconst tmp = attr.trim().split(/\\s*:\\s*/);\n\t\t\t\tcustomAttrs[tmp[0]] = tmp[1];\n\t\t\t});\n\t\t}\n\n\t\tconst defaultAttrs =\n\t\t\ttypeof this._config.attributes === 'function'\n\t\t\t\t? await this._config.attributes()\n\t\t\t\t: this._config.attributes;\n\n\t\tconst attributes = Object.assign(\n\t\t\t{\n\t\t\t\ttype: event.type,\n\t\t\t\ttarget: `${event.target.localName} with id ${event.target.id}`,\n\t\t\t},\n\t\t\tdefaultAttrs,\n\t\t\tcustomAttrs\n\t\t);\n\n\t\tlogger.debug('events needed to be recorded', events);\n\t\tlogger.debug('attributes needed to be attached', customAttrs);\n\t\tif (events.indexOf(event.type) < 0) {\n\t\t\tlogger.debug(`event ${event.type} is not selected to be recorded`);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._tracker(\n\t\t\t{\n\t\t\t\tname: eventName || 'event',\n\t\t\t\tattributes,\n\t\t\t},\n\t\t\tthis._config.provider\n\t\t).catch(e => {\n\t\t\tlogger.debug(`Failed to record the ${event.type} event', ${e}`);\n\t\t});\n\t}\n}\n\n/**\n * @deprecated use named import\n */\nexport default EventTracker;\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\n// the session tracker for web\n\nimport { ConsoleLogger as Logger, Hub, JS, Constants } from '@aws-amplify/core';\nimport { SessionTrackOpts } from '../types';\n\nconst logger = new Logger('SessionTracker');\n\nconst defaultOpts: SessionTrackOpts = {\n\tenable: false,\n\tprovider: 'AWSPinpoint',\n};\n\nlet initialEventSent = false;\n\nexport class SessionTracker {\n\tprivate _tracker;\n\tprivate _hasEnabled;\n\tprivate _config: SessionTrackOpts;\n\n\tprivate _hidden;\n\tprivate _visibilityChange;\n\n\tconstructor(tracker, opts) {\n\t\tthis._config = Object.assign({}, defaultOpts, opts);\n\t\tthis._tracker = tracker;\n\n\t\tthis._hasEnabled = false;\n\t\tthis._trackFunc = this._trackFunc.bind(this);\n\t\tthis._trackBeforeUnload = this._trackBeforeUnload.bind(this);\n\n\t\tthis.configure(this._config);\n\t}\n\n\tprivate _envCheck() {\n\t\tif (!JS.browserOrNode().isBrowser) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!document || !document.addEventListener) {\n\t\t\tlogger.debug('not in the supported web environment');\n\t\t\treturn false;\n\t\t}\n\n\t\tif (typeof document.hidden !== 'undefined') {\n\t\t\tthis._hidden = 'hidden';\n\t\t\tthis._visibilityChange = 'visibilitychange';\n\t\t} else if (typeof document['msHidden'] !== 'undefined') {\n\t\t\tthis._hidden = 'msHidden';\n\t\t\tthis._visibilityChange = 'msvisibilitychange';\n\t\t} else if (typeof document['webkitHidden'] !== 'undefined') {\n\t\t\tthis._hidden = 'webkitHidden';\n\t\t\tthis._visibilityChange = 'webkitvisibilitychange';\n\t\t} else {\n\t\t\tlogger.debug('not in the supported web environment');\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate async _trackFunc() {\n\t\tconst customAttrs =\n\t\t\ttypeof this._config.attributes === 'function'\n\t\t\t\t? await this._config.attributes()\n\t\t\t\t: this._config.attributes;\n\n\t\tconst attributes = Object.assign({}, customAttrs);\n\n\t\tif (document.visibilityState === this._hidden) {\n\t\t\tthis._tracker(\n\t\t\t\t{\n\t\t\t\t\tname: '_session.stop',\n\t\t\t\t\tattributes,\n\t\t\t\t},\n\t\t\t\tthis._config.provider\n\t\t\t).catch(e => {\n\t\t\t\tlogger.debug('record session stop event failed.', e);\n\t\t\t});\n\t\t} else {\n\t\t\tthis._tracker(\n\t\t\t\t{\n\t\t\t\t\tname: '_session.start',\n\t\t\t\t\tattributes,\n\t\t\t\t},\n\t\t\t\tthis._config.provider\n\t\t\t).catch(e => {\n\t\t\t\tlogger.debug('record session start event failed.', e);\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _trackBeforeUnload(event) {\n\t\t// before unload callback cannot be async => https://github.com/aws-amplify/amplify-js/issues/2088\n\n\t\tconst customAttrs =\n\t\t\ttypeof this._config.attributes === 'function'\n\t\t\t\t? Promise.resolve(this._config.attributes())\n\t\t\t\t: Promise.resolve(this._config.attributes);\n\n\t\tcustomAttrs.then(custom => {\n\t\t\tconst attributes = Object.assign({}, custom);\n\n\t\t\tthis._tracker(\n\t\t\t\t{\n\t\t\t\t\tname: '_session.stop',\n\t\t\t\t\tattributes,\n\t\t\t\t\timmediate: true,\n\t\t\t\t},\n\t\t\t\tthis._config.provider\n\t\t\t).catch(e => {\n\t\t\t\tlogger.debug('record session stop event failed.', e);\n\t\t\t});\n\t\t});\n\t}\n\n\t// to keep configure a synchronized function\n\tprivate async _sendInitialEvent() {\n\t\tif (initialEventSent) {\n\t\t\tlogger.debug('the start session has been sent when the page is loaded');\n\t\t\treturn;\n\t\t} else {\n\t\t\tinitialEventSent = true;\n\t\t}\n\n\t\tconst customAttrs =\n\t\t\ttypeof this._config.attributes === 'function'\n\t\t\t\t? await this._config.attributes()\n\t\t\t\t: this._config.attributes;\n\n\t\tconst attributes = Object.assign({}, customAttrs);\n\n\t\tthis._tracker(\n\t\t\t{\n\t\t\t\tname: '_session.start',\n\t\t\t\tattributes,\n\t\t\t},\n\t\t\tthis._config.provider\n\t\t).catch(e => {\n\t\t\tlogger.debug('record session start event failed.', e);\n\t\t});\n\t}\n\n\tconfigure(opts?: SessionTrackOpts) {\n\t\tif (!this._envCheck()) {\n\t\t\treturn this._config;\n\t\t}\n\n\t\tObject.assign(this._config, opts);\n\t\tif (this._config.enable && !this._hasEnabled) {\n\t\t\t// send a start session as soon as it's enabled\n\t\t\tthis._sendInitialEvent();\n\t\t\t// listen on events\n\t\t\tdocument.addEventListener(this._visibilityChange, this._trackFunc, false);\n\t\t\twindow.addEventListener('beforeunload', this._trackBeforeUnload, false);\n\t\t\tthis._hasEnabled = true;\n\t\t} else if (!this._config.enable && this._hasEnabled) {\n\t\t\tdocument.removeEventListener(\n\t\t\t\tthis._visibilityChange,\n\t\t\t\tthis._trackFunc,\n\t\t\t\tfalse\n\t\t\t);\n\t\t\twindow.removeEventListener(\n\t\t\t\t'beforeunload',\n\t\t\t\tthis._trackBeforeUnload,\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tthis._hasEnabled = false;\n\t\t}\n\n\t\treturn this._config;\n\t}\n}\n\n/**\n * @deprecated use named import\n */\nexport default SessionTracker;\n","/*\n * Copyright 2017-2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport {\n\tAmplify,\n\tConsoleLogger as Logger,\n\tHub,\n\tParser,\n} from '@aws-amplify/core';\nimport { AWSPinpointProvider } from './Providers/AWSPinpointProvider';\n\nimport {\n\tAnalyticsProvider,\n\tEventAttributes,\n\tEventMetrics,\n\tAnalyticsEvent,\n\tAutoTrackSessionOpts,\n\tAutoTrackPageViewOpts,\n\tAutoTrackEventOpts,\n\tPersonalizeAnalyticsEvent,\n\tKinesisAnalyticsEvent,\n} from './types';\nimport { PageViewTracker, EventTracker, SessionTracker } from './trackers';\n\nconst logger = new Logger('AnalyticsClass');\n\nconst AMPLIFY_SYMBOL = (\n\ttypeof Symbol !== 'undefined' && typeof Symbol.for === 'function'\n\t\t? Symbol.for('amplify_default')\n\t\t: '@@amplify_default'\n) as Symbol;\n\nconst dispatchAnalyticsEvent = (event: string, data: any, message: string) => {\n\tHub.dispatch(\n\t\t'analytics',\n\t\t{ event, data, message },\n\t\t'Analytics',\n\t\tAMPLIFY_SYMBOL\n\t);\n};\n\nconst trackers = {\n\tpageView: PageViewTracker,\n\tevent: EventTracker,\n\tsession: SessionTracker,\n};\n\ntype TrackerTypes = keyof typeof trackers;\ntype Trackers = typeof trackers[TrackerTypes];\nlet _instance = null;\n\n/**\n * Provide mobile analytics client functions\n */\nexport class AnalyticsClass {\n\tprivate _config;\n\tprivate _pluggables: AnalyticsProvider[];\n\tprivate _disabled: boolean;\n\tprivate _trackers: Trackers | {};\n\n\t/**\n\t * Initialize Analtyics\n\t * @param config - Configuration of the Analytics\n\t */\n\tconstructor() {\n\t\tthis._config = {};\n\t\tthis._pluggables = [];\n\t\tthis._disabled = false;\n\t\tthis._trackers = {};\n\t\t_instance = this;\n\n\t\tthis.record = this.record.bind(this);\n\t\tHub.listen('auth', listener);\n\t\tHub.listen('storage', listener);\n\t\tHub.listen('analytics', listener);\n\t}\n\n\tpublic getModuleName() {\n\t\treturn 'Analytics';\n\t}\n\t/**\n\t * configure Analytics\n\t * @param {Object} config - Configuration of the Analytics\n\t */\n\tpublic configure(config?) {\n\t\tif (!config) return this._config;\n\t\tlogger.debug('configure Analytics', config);\n\t\tconst amplifyConfig = Parser.parseMobilehubConfig(config);\n\t\tthis._config = Object.assign(\n\t\t\t{},\n\t\t\tthis._config,\n\t\t\tamplifyConfig.Analytics,\n\t\t\tconfig\n\t\t);\n\n\t\tif (this._config['disabled']) {\n\t\t\tthis._disabled = true;\n\t\t}\n\n\t\t// turn on the autoSessionRecord if not specified\n\t\tif (this._config['autoSessionRecord'] === undefined) {\n\t\t\tthis._config['autoSessionRecord'] = true;\n\t\t}\n\n\t\tthis._pluggables.forEach(pluggable => {\n\t\t\t// for backward compatibility\n\t\t\tconst providerConfig =\n\t\t\t\tpluggable.getProviderName() === 'AWSPinpoint' &&\n\t\t\t\t!this._config['AWSPinpoint']\n\t\t\t\t\t? this._config\n\t\t\t\t\t: this._config[pluggable.getProviderName()];\n\n\t\t\tpluggable.configure({\n\t\t\t\tdisabled: this._config['disabled'],\n\t\t\t\tautoSessionRecord: this._config['autoSessionRecord'],\n\t\t\t\t...providerConfig,\n\t\t\t});\n\t\t});\n\n\t\tif (this._pluggables.length === 0) {\n\t\t\tthis.addPluggable(new AWSPinpointProvider());\n\t\t}\n\n\t\tdispatchAnalyticsEvent(\n\t\t\t'configured',\n\t\t\tnull,\n\t\t\t`The Analytics category has been configured successfully`\n\t\t);\n\t\tlogger.debug('current configuration', this._config);\n\t\treturn this._config;\n\t}\n\n\t/**\n\t * add plugin into Analytics category\n\t * @param pluggable - an instance of the plugin\n\t */\n\tpublic addPluggable(pluggable: AnalyticsProvider) {\n\t\tif (pluggable && pluggable.getCategory() === 'Analytics') {\n\t\t\tthis._pluggables.push(pluggable);\n\t\t\t// for backward compatibility\n\t\t\tconst providerConfig =\n\t\t\t\tpluggable.getProviderName() === 'AWSPinpoint' &&\n\t\t\t\t!this._config['AWSPinpoint']\n\t\t\t\t\t? this._config\n\t\t\t\t\t: this._config[pluggable.getProviderName()];\n\t\t\tconst config = { disabled: this._config['disabled'], ...providerConfig };\n\t\t\tpluggable.configure(config);\n\t\t\treturn config;\n\t\t}\n\t}\n\n\t/**\n\t * Get the plugin object\n\t * @param providerName - the name of the provider to be removed\n\t */\n\tpublic getPluggable(providerName: string): AnalyticsProvider {\n\t\tfor (let i = 0; i < this._pluggables.length; i += 1) {\n\t\t\tconst pluggable = this._pluggables[i];\n\t\t\tif (pluggable.getProviderName() === providerName) {\n\t\t\t\treturn pluggable;\n\t\t\t}\n\t\t}\n\n\t\tlogger.debug('No plugin found with providerName', providerName);\n\t\treturn null;\n\t}\n\n\t/**\n\t * Remove the plugin object\n\t * @param providerName - the name of the provider to be removed\n\t */\n\tpublic removePluggable(providerName: string): void {\n\t\tlet idx = 0;\n\t\twhile (idx < this._pluggables.length) {\n\t\t\tif (this._pluggables[idx].getProviderName() === providerName) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tidx += 1;\n\t\t}\n\n\t\tif (idx === this._pluggables.length) {\n\t\t\tlogger.debug('No plugin found with providerName', providerName);\n\t\t\treturn;\n\t\t} else {\n\t\t\tthis._pluggables.splice(idx, idx + 1);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t/**\n\t * stop sending events\n\t */\n\tpublic disable() {\n\t\tthis._disabled = true;\n\t}\n\n\t/**\n\t * start sending events\n\t */\n\tpublic enable() {\n\t\tthis._disabled = false;\n\t}\n\n\t/**\n\t * Record Session start\n\t * @param [provider] - name of the provider.\n\t * @return - A promise which resolves if buffer doesn't overflow\n\t */\n\tpublic async startSession(provider?: string) {\n\t\tconst params = { event: { name: '_session.start' }, provider };\n\t\treturn this._sendEvent(params);\n\t}\n\n\t/**\n\t * Record Session stop\n\t * @param [provider] - name of the provider.\n\t * @return - A promise which resolves if buffer doesn't overflow\n\t */\n\tpublic async stopSession(provider?: string) {\n\t\tconst params = { event: { name: '_session.stop' }, provider };\n\t\treturn this._sendEvent(params);\n\t}\n\n\t/**\n\t * Record one analytic event and send it to Pinpoint\n\t * @param event - An object with the name of the event, attributes of the event and event metrics.\n\t * @param [provider] - name of the provider.\n\t */\n\tpublic async record(\n\t\tevent: AnalyticsEvent | PersonalizeAnalyticsEvent | KinesisAnalyticsEvent,\n\t\tprovider?: string\n\t);\n\t/**\n\t * Record one analytic event and send it to Pinpoint\n\t * @deprecated Use the new syntax and pass in the event as an object instead.\n\t * @param eventName - The name of the event\n\t * @param [attributes] - Attributes of the event\n\t * @param [metrics] - Event metrics\n\t * @return - A promise which resolves if buffer doesn't overflow\n\t */\n\tpublic async record(\n\t\teventName: string,\n\t\tattributes?: EventAttributes,\n\t\tmetrics?: EventMetrics\n\t);\n\tpublic async record(\n\t\tevent:\n\t\t\t| string\n\t\t\t| AnalyticsEvent\n\t\t\t| PersonalizeAnalyticsEvent\n\t\t\t| KinesisAnalyticsEvent,\n\t\tproviderOrAttributes?: string | EventAttributes,\n\t\tmetrics?: EventMetrics\n\t) {\n\t\tlet params = null;\n\t\t// this is just for compatibility, going to be deprecated\n\t\tif (typeof event === 'string') {\n\t\t\tparams = {\n\t\t\t\tevent: {\n\t\t\t\t\tname: event,\n\t\t\t\t\tattributes: providerOrAttributes,\n\t\t\t\t\tmetrics,\n\t\t\t\t},\n\t\t\t\tprovider: 'AWSPinpoint',\n\t\t\t};\n\t\t} else {\n\t\t\tparams = { event, provider: providerOrAttributes };\n\t\t}\n\t\treturn this._sendEvent(params);\n\t}\n\n\tpublic async updateEndpoint(\n\t\tattrs: { [key: string]: any },\n\t\tprovider?: string\n\t) {\n\t\tconst event = { ...attrs, name: '_update_endpoint' };\n\n\t\treturn this.record(event, provider);\n\t}\n\n\tprivate _sendEvent(params: {\n\t\tevent: AnalyticsEvent | PersonalizeAnalyticsEvent | KinesisAnalyticsEvent;\n\t\tprovider?: string;\n\t}) {\n\t\tif (this._disabled) {\n\t\t\tlogger.debug('Analytics has been disabled');\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tconst provider = params.provider ? params.provider : 'AWSPinpoint';\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis._pluggables.forEach(pluggable => {\n\t\t\t\tif (pluggable.getProviderName() === provider) {\n\t\t\t\t\tpluggable.record(params, { resolve, reject });\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Enable or disable auto tracking\n\t * @param trackerType - The type of tracker to activate.\n\t * @param [opts] - Auto tracking options.\n\t */\n\tpublic autoTrack(trackerType: 'session', opts: AutoTrackSessionOpts);\n\tpublic autoTrack(trackerType: 'pageView', opts: AutoTrackPageViewOpts);\n\tpublic autoTrack(trackerType: 'event', opts: AutoTrackEventOpts);\n\t// ensures backwards compatibility for non-pinpoint provider users\n\tpublic autoTrack(\n\t\ttrackerType: TrackerTypes,\n\t\topts: { provider: string; [key: string]: any }\n\t);\n\tpublic autoTrack(trackerType: TrackerTypes, opts: { [key: string]: any }) {\n\t\tif (!trackers[trackerType]) {\n\t\t\tlogger.debug('invalid tracker type');\n\t\t\treturn;\n\t\t}\n\n\t\t// to sync up two different configuration ways of auto session tracking\n\t\tif (trackerType === 'session') {\n\t\t\tthis._config['autoSessionRecord'] = opts['enable'];\n\t\t}\n\n\t\tconst tracker = this._trackers[trackerType];\n\t\tif (!tracker) {\n\t\t\tthis._trackers[trackerType] = new trackers[trackerType](\n\t\t\t\tthis.record,\n\t\t\t\topts\n\t\t\t);\n\t\t} else {\n\t\t\ttracker.configure(opts);\n\t\t}\n\t}\n}\n\nlet endpointUpdated = false;\nlet authConfigured = false;\nlet analyticsConfigured = false;\nconst listener = capsule => {\n\tconst { channel, payload } = capsule;\n\tlogger.debug('on hub capsule ' + channel, payload);\n\n\tswitch (channel) {\n\t\tcase 'auth':\n\t\t\tauthEvent(payload);\n\t\t\tbreak;\n\t\tcase 'storage':\n\t\t\tstorageEvent(payload);\n\t\t\tbreak;\n\t\tcase 'analytics':\n\t\t\tanalyticsEvent(payload);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n};\n\nconst storageEvent = payload => {\n\tconst {\n\t\tdata: { attrs, metrics },\n\t} = payload;\n\tif (!attrs) return;\n\n\tif (analyticsConfigured) {\n\t\t_instance\n\t\t\t.record({\n\t\t\t\tname: 'Storage',\n\t\t\t\tattributes: attrs,\n\t\t\t\tmetrics,\n\t\t\t})\n\t\t\t.catch(e => {\n\t\t\t\tlogger.debug('Failed to send the storage event automatically', e);\n\t\t\t});\n\t}\n};\n\nconst authEvent = payload => {\n\tconst { event } = payload;\n\tif (!event) {\n\t\treturn;\n\t}\n\n\tconst recordAuthEvent = async eventName => {\n\t\tif (authConfigured && analyticsConfigured) {\n\t\t\ttry {\n\t\t\t\treturn await _instance.record({ name: `_userauth.${eventName}` });\n\t\t\t} catch (err) {\n\t\t\t\tlogger.debug(\n\t\t\t\t\t`Failed to send the ${eventName} event automatically`,\n\t\t\t\t\terr\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t};\n\n\tswitch (event) {\n\t\tcase 'signIn':\n\t\t\treturn recordAuthEvent('sign_in');\n\t\tcase 'signUp':\n\t\t\treturn recordAuthEvent('sign_up');\n\t\tcase 'signOut':\n\t\t\treturn recordAuthEvent('sign_out');\n\t\tcase 'signIn_failure':\n\t\t\treturn recordAuthEvent('auth_fail');\n\t\tcase 'configured':\n\t\t\tauthConfigured = true;\n\t\t\tif (authConfigured && analyticsConfigured) {\n\t\t\t\tsendEvents();\n\t\t\t}\n\t\t\tbreak;\n\t}\n};\n\nconst analyticsEvent = payload => {\n\tconst { event } = payload;\n\tif (!event) return;\n\n\tswitch (event) {\n\t\tcase 'pinpointProvider_configured':\n\t\t\tanalyticsConfigured = true;\n\t\t\tif (authConfigured && analyticsConfigured) {\n\t\t\t\tsendEvents();\n\t\t\t}\n\t\t\tbreak;\n\t}\n};\n\nconst sendEvents = () => {\n\tconst config = _instance.configure();\n\tif (!endpointUpdated && config['autoSessionRecord']) {\n\t\t_instance.updateEndpoint({ immediate: true }).catch(e => {\n\t\t\tlogger.debug('Failed to update the endpoint', e);\n\t\t});\n\t\tendpointUpdated = true;\n\t}\n\t_instance.autoTrack('session', {\n\t\tenable: config['autoSessionRecord'],\n\t});\n};\n\nexport const Analytics = new AnalyticsClass();\nAmplify.register(Analytics);\n","import { Auth } from 'aws-amplify';\nimport React, { useEffect, useState } from 'react';\nimport { Analytics } from 'aws-amplify';\n\ntype ContextProps = {\n user: any;\n setUser: React.Dispatch>;\n authenticated: boolean;\n setAuthenticated: React.Dispatch>;\n loadingAuthState: boolean;\n};\n\nexport const AuthContext = React.createContext>({});\n\nexport const AuthProvider = ({ children }: any) => {\n const [user, setUser] = useState(undefined);\n const [authenticated, setAuthenticated] = useState(true);\n const [loadingAuthState, setLoadingAuthState] = useState(true);\n\n useEffect(() => {\n // const assessLoggedInState = () =>{\n Auth.currentAuthenticatedUser()\n .then(user => {\n Analytics.record({\n name: 'userAuthenticated',\n attributes: {\n userEmail: user.attributes.email\n }\n });\n\n setUser(user);\n setAuthenticated(true);\n })\n .catch(() => {\n setAuthenticated(false);\n });\n }, []);\n\n return (\n //add signout function to context\n \n {children}\n \n );\n};\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t 0)\n ? toastAutoClose\n : containerAutoClose;\n}\n\nexport const canUseDom = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nexport function canBeRendered(content: T): boolean {\n return (\n isValidElement(content) || isStr(content) || isFn(content) || isNum(content)\n );\n}\n","import { ToastPosition, TypeOptions } from '../types';\n\ntype KeyOfPosition =\n | 'TOP_LEFT'\n | 'TOP_RIGHT'\n | 'TOP_CENTER'\n | 'BOTTOM_LEFT'\n | 'BOTTOM_RIGHT'\n | 'BOTTOM_CENTER';\n\ntype KeyOfType = 'INFO' | 'SUCCESS' | 'WARNING' | 'ERROR' | 'DEFAULT' | 'DARK';\n\nexport const POSITION: { [key in KeyOfPosition]: ToastPosition } = {\n TOP_LEFT: 'top-left',\n TOP_RIGHT: 'top-right',\n TOP_CENTER: 'top-center',\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_RIGHT: 'bottom-right',\n BOTTOM_CENTER: 'bottom-center'\n};\n\nexport const TYPE: { [key in KeyOfType]: TypeOptions } = {\n INFO: 'info',\n SUCCESS: 'success',\n WARNING: 'warning',\n ERROR: 'error',\n DEFAULT: 'default',\n DARK: 'dark'\n};\n\nexport const enum Default {\n COLLAPSE_DURATION = 300,\n DEBOUNCE_DURATION = 50,\n CSS_NAMESPACE = 'Toastify',\n DRAGGABLE_PERCENT = 80\n}\n\nexport const enum Direction {\n X = 'x',\n Y = 'y'\n}\n","import React, { useEffect, useLayoutEffect, useRef } from 'react';\nimport { ToastTransitionProps } from '../types';\n\nimport { collapseToast } from './collapseToast';\nimport { Default } from './constant';\n\nexport interface CSSTransitionProps {\n /**\n * Css class to apply when toast enter\n */\n enter: string;\n\n /**\n * Css class to apply when toast leave\n */\n exit: string;\n\n /**\n * Append current toast position to the classname.\n * If multiple classes are provided, only the last one will get the position\n * For instance `myclass--top-center`...\n * `Default: false`\n */\n appendPosition?: boolean;\n\n /**\n * Collapse toast smoothly when exit animation end\n * `Default: true`\n */\n collapse?: boolean;\n\n /**\n * Collapse transition duration\n * `Default: 300`\n */\n collapseDuration?: number;\n}\n\nconst enum AnimationStep {\n Enter,\n Exit\n}\n\n/**\n * Css animation that just work.\n * You could use animate.css for instance\n *\n *\n * ```\n * cssTransition({\n * enter: \"animate__animated animate__bounceIn\",\n * exit: \"animate__animated animate__bounceOut\"\n * })\n * ```\n *\n */\nexport function cssTransition({\n enter,\n exit,\n appendPosition = false,\n collapse = true,\n collapseDuration = Default.COLLAPSE_DURATION\n}: CSSTransitionProps) {\n return function ToastTransition({\n children,\n position,\n preventExitTransition,\n done,\n nodeRef,\n isIn\n }: ToastTransitionProps) {\n const enterClassName = appendPosition ? `${enter}--${position}` : enter;\n const exitClassName = appendPosition ? `${exit}--${position}` : exit;\n const baseClassName = useRef();\n const animationStep = useRef(AnimationStep.Enter);\n\n useLayoutEffect(() => {\n onEnter();\n }, []);\n\n useEffect(() => {\n if (!isIn) preventExitTransition ? onExited() : onExit();\n }, [isIn]);\n\n function onEnter() {\n const node = nodeRef.current!;\n baseClassName.current = node.className;\n node.className += ` ${enterClassName}`;\n node.addEventListener('animationend', onEntered);\n }\n\n function onEntered() {\n const node = nodeRef.current!;\n node.removeEventListener('animationend', onEntered);\n if (animationStep.current === AnimationStep.Enter) {\n node.className = baseClassName.current!;\n }\n }\n\n function onExit() {\n animationStep.current = AnimationStep.Exit;\n const node = nodeRef.current!;\n\n node.className += ` ${exitClassName}`;\n node.addEventListener('animationend', onExited);\n }\n\n function onExited() {\n const node = nodeRef.current!;\n\n node.removeEventListener('animationend', onExited);\n collapse ? collapseToast(node, done, collapseDuration) : done();\n }\n\n return <>{children};\n };\n}\n","import { Default } from './constant';\n\n/**\n * Used to collapse toast after exit animation\n */\nexport function collapseToast(\n node: HTMLElement,\n done: () => void,\n duration = Default.COLLAPSE_DURATION\n) {\n const height = node.scrollHeight;\n const style = node.style;\n\n requestAnimationFrame(() => {\n style.minHeight = 'initial';\n style.height = height + 'px';\n style.transition = `all ${duration}ms`;\n\n requestAnimationFrame(() => {\n style.height = '0';\n style.padding = '0';\n style.margin = '0';\n setTimeout(done, duration as number);\n });\n });\n}\n","import {\n Id,\n ToastContent,\n ClearWaitingQueueParams,\n NotValidatedToastProps\n} from '../types';\nimport { ContainerInstance } from '../hooks';\n\nexport const enum Event {\n Show,\n Clear,\n DidMount,\n WillUnmount,\n Change,\n ClearWaitingQueue\n}\n\ntype OnShowCallback = (\n content: ToastContent,\n options: NotValidatedToastProps\n) => void;\ntype OnClearCallback = (id?: Id) => void;\ntype OnClearWaitingQueue = (params: ClearWaitingQueueParams) => void;\ntype OnDidMountCallback = (containerInstance: ContainerInstance) => void;\ntype OnWillUnmountCallback = OnDidMountCallback;\nexport type OnChangeCallback = (\n toast: number,\n containerId?: number | string\n) => void;\ntype Callback =\n | OnShowCallback\n | OnClearCallback\n | OnClearWaitingQueue\n | OnDidMountCallback\n | OnWillUnmountCallback\n | OnChangeCallback;\ntype TimeoutId = ReturnType;\n\nexport interface EventManager {\n list: Map;\n emitQueue: Map;\n on(event: Event.Show, callback: OnShowCallback): EventManager;\n on(event: Event.Clear, callback: OnClearCallback): EventManager;\n on(\n event: Event.ClearWaitingQueue,\n callback: OnClearWaitingQueue\n ): EventManager;\n on(event: Event.DidMount, callback: OnDidMountCallback): EventManager;\n on(event: Event.WillUnmount, callback: OnWillUnmountCallback): EventManager;\n on(event: Event.Change, callback: OnChangeCallback): EventManager;\n off(event: Event, callback?: Callback): EventManager;\n cancelEmit(event: Event): EventManager;\n emit(\n event: Event.Show,\n content: React.ReactNode,\n options: NotValidatedToastProps\n ): void;\n emit(event: Event.Clear, id?: string | number): void;\n emit(event: Event.ClearWaitingQueue, params: ClearWaitingQueueParams): void;\n emit(event: Event.DidMount, containerInstance: ContainerInstance): void;\n emit(event: Event.WillUnmount, containerInstance: ContainerInstance): void;\n emit(event: Event.Change, toast: number, containerId?: number | string): void;\n}\n\nexport const eventManager: EventManager = {\n list: new Map(),\n emitQueue: new Map(),\n\n on(event: Event, callback: Callback) {\n this.list.has(event) || this.list.set(event, []);\n this.list.get(event)!.push(callback);\n return this;\n },\n\n off(event, callback) {\n if (callback) {\n const cb = this.list.get(event)!.filter(cb => cb !== callback);\n this.list.set(event, cb);\n return this;\n }\n this.list.delete(event);\n return this;\n },\n\n cancelEmit(event) {\n const timers = this.emitQueue.get(event);\n if (timers) {\n timers.forEach(clearTimeout);\n this.emitQueue.delete(event);\n }\n\n return this;\n },\n\n /**\n * Enqueue the event at the end of the call stack\n * Doing so let the user call toast as follow:\n * toast('1')\n * toast('2')\n * toast('3')\n * Without setTimemout the code above will not work\n */\n emit(event: Event, ...args: any[]) {\n this.list.has(event) &&\n this.list.get(event)!.forEach((callback: Callback) => {\n const timer = setTimeout(() => {\n // @ts-ignore\n callback(...args);\n }, 0);\n\n this.emitQueue.has(event) || this.emitQueue.set(event, []);\n this.emitQueue.get(event)!.push(timer);\n });\n }\n};\n","import { useRef, useEffect } from 'react';\n\n/**\n * `useKeeper` is a helper around `useRef`.\n *\n * You don't need to access the `.current`property to get the value\n * If refresh is set to true. The ref will be updated every render\n */\nexport function useKeeper(arg: T, refresh = false) {\n const ref = useRef(arg);\n\n useEffect(() => {\n if (refresh) ref.current = arg;\n });\n\n return ref.current;\n}\n","import { Id } from '../types';\n\nimport { isToastIdValid } from '../utils';\n\nexport const enum ActionType {\n ADD,\n REMOVE\n}\nexport type State = Array;\nexport type Action =\n | { type: ActionType.ADD; toastId: Id; staleId?: Id }\n | { type: ActionType.REMOVE; toastId?: Id };\n\nexport function reducer(state: State, action: Action) {\n switch (action.type) {\n case ActionType.ADD:\n return [...state, action.toastId].filter(id => id !== action.staleId);\n case ActionType.REMOVE:\n return isToastIdValid(action.toastId)\n ? state.filter(id => id !== action.toastId)\n : [];\n }\n}\n","import {\n useEffect,\n useRef,\n useReducer,\n cloneElement,\n isValidElement\n} from 'react';\nimport {\n parseClassName,\n canBeRendered,\n isBool,\n isFn,\n isNum,\n isStr,\n isToastIdValid,\n getAutoCloseDelay,\n Direction,\n Default\n} from '../utils';\nimport { eventManager, Event } from '../core/eventManager';\n\nimport {\n Id,\n ToastContainerProps,\n ToastProps,\n ToastContent,\n Toast,\n ToastPosition,\n ClearWaitingQueueParams,\n NotValidatedToastProps,\n ToastTransition\n} from '../types';\nimport { useKeeper } from './useKeeper';\nimport { ActionType, reducer } from './toastContainerReducer';\n\ntype CollectionItem = Record;\ntype ToastToRender = Partial>;\n\ninterface QueuedToast {\n toastContent: ToastContent;\n toastProps: ToastProps;\n staleId?: Id;\n}\n\nexport interface ContainerInstance {\n toastKey: number;\n displayedToast: number;\n props: ToastContainerProps;\n containerId?: Id | null;\n isToastActive: (toastId: Id) => boolean;\n getToast: (id: Id) => Toast | null;\n}\n\nexport function useToastContainer(props: ToastContainerProps) {\n const [, forceUpdate] = useReducer(x => x + 1, 0);\n const [toast, dispatch] = useReducer(reducer, []);\n const containerRef = useRef(null);\n let toastCount = useKeeper(0);\n let queue = useKeeper([]);\n const collection = useKeeper({});\n const instance = useKeeper({\n toastKey: 1,\n displayedToast: 0,\n props,\n containerId: null,\n isToastActive: isToastActive,\n getToast: id => collection[id] || null\n });\n\n useEffect(() => {\n instance.containerId = props.containerId;\n eventManager\n .cancelEmit(Event.WillUnmount)\n .on(Event.Show, buildToast)\n .on(Event.Clear, toastId => containerRef.current && removeToast(toastId))\n .on(Event.ClearWaitingQueue, clearWaitingQueue)\n .emit(Event.DidMount, instance);\n\n return () => eventManager.emit(Event.WillUnmount, instance);\n }, []);\n\n useEffect(() => {\n instance.isToastActive = isToastActive;\n instance.displayedToast = toast.length;\n eventManager.emit(Event.Change, toast.length, props.containerId);\n }, [toast]);\n\n useEffect(() => {\n instance.props = props;\n });\n\n function isToastActive(id: Id) {\n return toast.indexOf(id) !== -1;\n }\n\n function clearWaitingQueue({ containerId }: ClearWaitingQueueParams) {\n const { limit } = instance.props;\n if (limit && (!containerId || instance.containerId === containerId)) {\n toastCount -= queue.length;\n queue = [];\n }\n }\n\n function removeToast(toastId?: Id) {\n dispatch({ type: ActionType.REMOVE, toastId });\n }\n\n function dequeueToast() {\n const { toastContent, toastProps, staleId } = queue.shift() as QueuedToast;\n appendToast(toastContent, toastProps, staleId);\n }\n\n /**\n * check if a container is attached to the dom\n * check for multi-container, build only if associated\n * check for duplicate toastId if no update\n */\n function isNotValid({\n containerId,\n toastId,\n updateId\n }: NotValidatedToastProps) {\n return !containerRef.current ||\n (instance.props.enableMultiContainer &&\n containerId !== instance.props.containerId) ||\n (collection[toastId] && updateId == null)\n ? true\n : false;\n }\n\n // this function and all the function called inside needs to rely on ref(`useKeeper`)\n function buildToast(\n content: ToastContent,\n { delay, staleId, ...options }: NotValidatedToastProps\n ) {\n if (!canBeRendered(content) || isNotValid(options)) return;\n\n const { toastId, updateId } = options;\n const { props } = instance;\n const closeToast = () => removeToast(toastId);\n const isNotAnUpdate = options.updateId == null;\n\n if (isNotAnUpdate) toastCount++;\n\n const toastProps: ToastProps = {\n toastId,\n updateId,\n isIn: false,\n key: options.key || instance.toastKey++,\n type: options.type,\n closeToast: closeToast,\n closeButton: options.closeButton,\n rtl: props.rtl,\n position: options.position || (props.position as ToastPosition),\n transition: options.transition || (props.transition as ToastTransition),\n className: parseClassName(options.className || props.toastClassName),\n bodyClassName: parseClassName(\n options.bodyClassName || props.bodyClassName\n ),\n style: options.style || props.toastStyle,\n bodyStyle: options.bodyStyle || props.bodyStyle,\n onClick: options.onClick || props.onClick,\n pauseOnHover: isBool(options.pauseOnHover)\n ? options.pauseOnHover\n : props.pauseOnHover,\n pauseOnFocusLoss: isBool(options.pauseOnFocusLoss)\n ? options.pauseOnFocusLoss\n : props.pauseOnFocusLoss,\n draggable: isBool(options.draggable)\n ? options.draggable\n : props.draggable,\n draggablePercent: isNum(options.draggablePercent)\n ? options.draggablePercent\n : (props.draggablePercent as number),\n draggableDirection:\n options.draggableDirection || props.draggableDirection,\n closeOnClick: isBool(options.closeOnClick)\n ? options.closeOnClick\n : props.closeOnClick,\n progressClassName: parseClassName(\n options.progressClassName || props.progressClassName\n ),\n progressStyle: options.progressStyle || props.progressStyle,\n autoClose: getAutoCloseDelay(options.autoClose, props.autoClose),\n hideProgressBar: isBool(options.hideProgressBar)\n ? options.hideProgressBar\n : props.hideProgressBar,\n progress: options.progress,\n role: isStr(options.role) ? options.role : props.role,\n deleteToast() {\n removeFromCollection(toastId);\n }\n };\n\n if (isFn(options.onOpen)) toastProps.onOpen = options.onOpen;\n if (isFn(options.onClose)) toastProps.onClose = options.onClose;\n\n // tweak for vertical dragging\n if (\n toastProps.draggableDirection === Direction.Y &&\n toastProps.draggablePercent === Default.DRAGGABLE_PERCENT\n ) {\n (toastProps.draggablePercent as number) *= 1.5;\n }\n\n let closeButton = props.closeButton;\n\n if (options.closeButton === false || canBeRendered(options.closeButton)) {\n closeButton = options.closeButton;\n } else if (options.closeButton === true) {\n closeButton = canBeRendered(props.closeButton) ? props.closeButton : true;\n }\n\n toastProps.closeButton = closeButton;\n\n let toastContent = content;\n\n if (isValidElement(content) && !isStr(content.type)) {\n toastContent = cloneElement(content, {\n closeToast,\n toastProps\n });\n } else if (isFn(content)) {\n toastContent = content({ closeToast, toastProps });\n }\n\n // not handling limit + delay by design. Waiting for user feedback first\n if (\n props.limit &&\n props.limit > 0 &&\n toastCount > props.limit &&\n isNotAnUpdate\n ) {\n queue.push({ toastContent, toastProps, staleId });\n } else if (isNum(delay) && (delay as number) > 0) {\n setTimeout(() => {\n appendToast(toastContent, toastProps, staleId);\n }, delay);\n } else {\n appendToast(toastContent, toastProps, staleId);\n }\n }\n\n function appendToast(\n content: ToastContent,\n toastProps: ToastProps,\n staleId?: Id\n ) {\n const { toastId } = toastProps;\n\n if (staleId) delete collection[staleId];\n\n collection[toastId] = {\n content,\n props: toastProps\n };\n dispatch({\n type: ActionType.ADD,\n toastId,\n staleId\n });\n }\n\n function removeFromCollection(toastId: Id) {\n delete collection[toastId];\n const queueLen = queue.length;\n toastCount = isToastIdValid(toastId)\n ? toastCount - 1\n : toastCount - instance.displayedToast;\n\n if (toastCount < 0) toastCount = 0;\n\n if (queueLen > 0) {\n const freeSlot = isToastIdValid(toastId) ? 1 : instance.props.limit!;\n\n if (queueLen === 1 || freeSlot === 1) {\n instance.displayedToast++;\n dequeueToast();\n } else {\n const toDequeue = freeSlot > queueLen ? queueLen : freeSlot;\n instance.displayedToast = toDequeue;\n\n for (let i = 0; i < toDequeue; i++) dequeueToast();\n }\n } else {\n forceUpdate();\n }\n }\n\n function getToastToRender(\n cb: (position: ToastPosition, toastList: Toast[]) => T\n ) {\n const toastToRender: ToastToRender = {};\n const toastList = props.newestOnTop\n ? Object.keys(collection).reverse()\n : Object.keys(collection);\n\n for (let i = 0; i < toastList.length; i++) {\n const toast = collection[toastList[i]];\n const { position } = toast.props;\n toastToRender[position] || (toastToRender[position] = []);\n\n toastToRender[position]!.push(toast);\n }\n\n return (Object.keys(toastToRender) as Array).map(p =>\n cb(p, toastToRender[p]!)\n );\n }\n\n return {\n getToastToRender,\n collection,\n containerRef,\n isToastActive\n };\n}\n","import {\n useState,\n useRef,\n useEffect,\n isValidElement,\n DOMAttributes\n} from 'react';\n\nimport { isFn } from '../utils';\nimport { ToastProps } from '../types';\nimport { useKeeper } from './useKeeper';\nimport { Direction } from '../utils/constant';\n\ninterface Draggable {\n start: number;\n x: number;\n y: number;\n delta: number;\n removalDistance: number;\n canCloseOnClick: boolean;\n canDrag: boolean;\n boundingRect: DOMRect | null;\n}\n\ntype DragEvent = MouseEvent & TouchEvent;\n\nfunction getX(e: DragEvent) {\n return e.targetTouches && e.targetTouches.length >= 1\n ? e.targetTouches[0].clientX\n : e.clientX;\n}\n\nfunction getY(e: DragEvent) {\n return e.targetTouches && e.targetTouches.length >= 1\n ? e.targetTouches[0].clientY\n : e.clientY;\n}\n\nexport function useToast(props: ToastProps) {\n const [isRunning, setIsRunning] = useState(true);\n const [preventExitTransition, setPreventExitTransition] = useState(false);\n const toastRef = useRef(null);\n const drag = useKeeper({\n start: 0,\n x: 0,\n y: 0,\n delta: 0,\n removalDistance: 0,\n canCloseOnClick: true,\n canDrag: false,\n boundingRect: null\n });\n const syncProps = useKeeper(props, true);\n const { autoClose, pauseOnHover, closeToast, onClick, closeOnClick } = props;\n\n useEffect(() => {\n if (isFn(props.onOpen))\n props.onOpen(isValidElement(props.children) && props.children.props);\n\n return () => {\n if (isFn(syncProps.onClose))\n syncProps.onClose(\n isValidElement(syncProps.children) && syncProps.children.props\n );\n };\n }, []);\n\n useEffect(() => {\n props.draggable && bindDragEvents();\n return () => {\n props.draggable && unbindDragEvents();\n };\n }, [props.draggable]);\n\n useEffect(() => {\n props.pauseOnFocusLoss && bindFocusEvents();\n return () => {\n props.pauseOnFocusLoss && unbindFocusEvents();\n };\n }, [props.pauseOnFocusLoss]);\n\n function onDragStart(\n e: React.MouseEvent | React.TouchEvent\n ) {\n if (props.draggable) {\n const toast = toastRef.current!;\n drag.canCloseOnClick = true;\n drag.canDrag = true;\n drag.boundingRect = toast.getBoundingClientRect();\n toast.style.transition = '';\n drag.x = getX(e.nativeEvent as DragEvent);\n drag.y = getY(e.nativeEvent as DragEvent);\n\n if (props.draggableDirection === Direction.X) {\n drag.start = drag.x;\n drag.removalDistance =\n toast.offsetWidth * (props.draggablePercent / 100);\n } else {\n drag.start = drag.y;\n drag.removalDistance =\n toast.offsetHeight * (props.draggablePercent / 100);\n }\n }\n }\n\n function onDragTransitionEnd() {\n if (drag.boundingRect) {\n const { top, bottom, left, right } = drag.boundingRect;\n\n if (\n props.pauseOnHover &&\n drag.x >= left &&\n drag.x <= right &&\n drag.y >= top &&\n drag.y <= bottom\n ) {\n pauseToast();\n } else {\n playToast();\n }\n }\n }\n\n function playToast() {\n setIsRunning(true);\n }\n\n function pauseToast() {\n setIsRunning(false);\n }\n\n function bindFocusEvents() {\n if (!document.hasFocus()) pauseToast();\n\n window.addEventListener('focus', playToast);\n window.addEventListener('blur', pauseToast);\n }\n\n function unbindFocusEvents() {\n window.removeEventListener('focus', playToast);\n window.removeEventListener('blur', pauseToast);\n }\n\n function bindDragEvents() {\n document.addEventListener('mousemove', onDragMove);\n document.addEventListener('mouseup', onDragEnd);\n\n document.addEventListener('touchmove', onDragMove);\n document.addEventListener('touchend', onDragEnd);\n }\n\n function unbindDragEvents() {\n document.removeEventListener('mousemove', onDragMove);\n document.removeEventListener('mouseup', onDragEnd);\n\n document.removeEventListener('touchmove', onDragMove);\n document.removeEventListener('touchend', onDragEnd);\n }\n\n function onDragMove(e: MouseEvent | TouchEvent) {\n if (drag.canDrag) {\n e.preventDefault();\n\n const toast = toastRef.current!;\n if (isRunning) pauseToast();\n\n drag.x = getX(e as DragEvent);\n drag.y = getY(e as DragEvent);\n\n if (props.draggableDirection === Direction.X) {\n drag.delta = drag.x - drag.start;\n } else {\n drag.delta = drag.y - drag.start;\n }\n\n // prevent false positif during a toast click\n if (drag.start !== drag.x) drag.canCloseOnClick = false;\n\n toast.style.transform = `translate${props.draggableDirection}(${drag.delta}px)`;\n toast.style.opacity = `${1 -\n Math.abs(drag.delta / drag.removalDistance)}`;\n }\n }\n\n function onDragEnd() {\n const toast = toastRef.current!;\n if (drag.canDrag) {\n drag.canDrag = false;\n\n if (Math.abs(drag.delta) > drag.removalDistance) {\n setPreventExitTransition(true);\n props.closeToast();\n return;\n }\n\n toast.style.transition = 'transform 0.2s, opacity 0.2s';\n toast.style.transform = `translate${props.draggableDirection}(0)`;\n toast.style.opacity = '1';\n }\n }\n\n const eventHandlers: DOMAttributes = {\n onMouseDown: onDragStart,\n onTouchStart: onDragStart,\n onMouseUp: onDragTransitionEnd,\n onTouchEnd: onDragTransitionEnd\n };\n\n if (autoClose && pauseOnHover) {\n eventHandlers.onMouseEnter = pauseToast;\n eventHandlers.onMouseLeave = playToast;\n }\n\n // prevent toast from closing when user drags the toast\n if (closeOnClick) {\n eventHandlers.onClick = (e: React.MouseEvent) => {\n onClick && onClick(e);\n drag.canCloseOnClick && closeToast();\n };\n }\n\n return {\n playToast,\n pauseToast,\n isRunning,\n preventExitTransition,\n toastRef,\n eventHandlers\n };\n}\n","import * as React from 'react';\nimport { Default } from '../utils';\nimport { TypeOptions } from '../types';\n\nexport interface CloseButtonProps {\n closeToast: (e: React.MouseEvent) => void;\n type: TypeOptions;\n ariaLabel?: string;\n}\n\nexport function CloseButton({\n closeToast,\n type,\n ariaLabel = 'close'\n}: CloseButtonProps) {\n return (\n {\n e.stopPropagation();\n closeToast(e);\n }}\n aria-label={ariaLabel}\n >\n \n \n \n \n );\n}\n","import * as React from 'react';\nimport cx from 'clsx';\n\nimport { TYPE, Default, isFn } from './../utils';\nimport { TypeOptions, ToastClassName } from '../types';\n\nexport interface ProgressBarProps {\n /**\n * The animation delay which determine when to close the toast\n */\n delay: number;\n\n /**\n * Whether or not the animation is running or paused\n */\n isRunning: boolean;\n\n /**\n * Func to close the current toast\n */\n closeToast: () => void;\n\n /**\n * Optional type : info, success ...\n */\n type: TypeOptions;\n\n /**\n * Hide or not the progress bar\n */\n hide?: boolean;\n\n /**\n * Optionnal className\n */\n className?: ToastClassName;\n\n /**\n * Optionnal inline style\n */\n style?: React.CSSProperties;\n\n /**\n * Tell wether or not controlled progress bar is used\n */\n controlledProgress?: boolean;\n\n /**\n * Controlled progress value\n */\n progress?: number | string;\n\n /**\n * Support rtl content\n */\n rtl?: boolean;\n\n /**\n * Tell if the component is visible on screen or not\n */\n isIn?: boolean;\n}\n\nexport function ProgressBar({\n delay,\n isRunning,\n closeToast,\n type,\n hide,\n className,\n style: userStyle,\n controlledProgress,\n progress,\n rtl,\n isIn\n}: ProgressBarProps) {\n const style: React.CSSProperties = {\n ...userStyle,\n animationDuration: `${delay}ms`,\n animationPlayState: isRunning ? 'running' : 'paused',\n opacity: hide ? 0 : 1\n };\n\n if (controlledProgress) style.transform = `scaleX(${progress})`;\n const defaultClassName = cx(\n `${Default.CSS_NAMESPACE}__progress-bar`,\n controlledProgress\n ? `${Default.CSS_NAMESPACE}__progress-bar--controlled`\n : `${Default.CSS_NAMESPACE}__progress-bar--animated`,\n `${Default.CSS_NAMESPACE}__progress-bar--${type}`,\n {\n [`${Default.CSS_NAMESPACE}__progress-bar--rtl`]: rtl\n }\n );\n const classNames = isFn(className)\n ? className({\n rtl,\n type,\n defaultClassName\n })\n : cx(defaultClassName, className);\n\n // 🧐 controlledProgress is derived from progress\n // so if controlledProgress is set\n // it means that this is also the case for progress\n const animationEvent = {\n [controlledProgress && progress! >= 1\n ? 'onTransitionEnd'\n : 'onAnimationEnd']:\n controlledProgress && progress! < 1\n ? null\n : () => {\n isIn && closeToast();\n }\n };\n\n // TODO: add aria-valuenow, aria-valuemax, aria-valuemin\n\n return (\n \n );\n}\n\nProgressBar.defaultProps = {\n type: TYPE.DEFAULT,\n hide: false\n};\n","import * as React from 'react';\nimport cx from 'clsx';\n\nimport { ProgressBar } from './ProgressBar';\nimport { ToastProps } from '../types';\nimport { Default, isFn } from '../utils';\nimport { useToast } from '../hooks';\n\nexport const Toast: React.FC = props => {\n const {\n isRunning,\n preventExitTransition,\n toastRef,\n eventHandlers\n } = useToast(props);\n const {\n closeButton,\n children,\n autoClose,\n onClick,\n type,\n hideProgressBar,\n closeToast,\n transition: Transition,\n position,\n className,\n style,\n bodyClassName,\n bodyStyle,\n progressClassName,\n progressStyle,\n updateId,\n role,\n progress,\n rtl,\n toastId,\n deleteToast,\n isIn\n } = props;\n const defaultClassName = cx(\n `${Default.CSS_NAMESPACE}__toast`,\n `${Default.CSS_NAMESPACE}__toast--${type}`,\n {\n [`${Default.CSS_NAMESPACE}__toast--rtl`]: rtl\n }\n );\n const cssClasses = isFn(className)\n ? className({\n rtl,\n position,\n type,\n defaultClassName\n })\n : cx(defaultClassName, className);\n const isProgressControlled = !!progress;\n\n function renderCloseButton(closeButton: any) {\n if (!closeButton) return;\n\n const props = { closeToast, type };\n\n if (isFn(closeButton)) return closeButton(props);\n\n if (React.isValidElement(closeButton))\n return React.cloneElement(closeButton, props);\n }\n\n return (\n \n \n \n {children}\n \n {renderCloseButton(closeButton)}\n {(autoClose || isProgressControlled) && (\n \n )}\n \n \n );\n};\n","import { Default, cssTransition } from '../utils';\n\nconst Bounce = cssTransition({\n enter: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__bounce-enter`,\n exit: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__bounce-exit`,\n appendPosition: true\n});\n\nconst Slide = cssTransition({\n enter: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__slide-enter`,\n exit: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__slide-exit`,\n appendPosition: true\n});\n\nconst Zoom = cssTransition({\n enter: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__zoom-enter`,\n exit: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__zoom-exit`\n});\n\nconst Flip = cssTransition({\n enter: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__flip-enter`,\n exit: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__flip-exit`\n});\n\nexport { Bounce, Slide, Zoom, Flip };\n","import * as React from 'react';\nimport cx from 'clsx';\n\nimport { Toast } from './Toast';\nimport { CloseButton } from './CloseButton';\nimport { Bounce } from './Transitions';\nimport { POSITION, Direction, Default, parseClassName, isFn } from '../utils';\nimport { useToastContainer } from '../hooks';\nimport { ToastContainerProps, ToastPosition } from '../types';\n\nexport const ToastContainer: React.FC = props => {\n const { getToastToRender, containerRef, isToastActive } = useToastContainer(\n props\n );\n const { className, style, rtl, containerId } = props;\n\n function getClassName(position: ToastPosition) {\n const defaultClassName = cx(\n `${Default.CSS_NAMESPACE}__toast-container`,\n `${Default.CSS_NAMESPACE}__toast-container--${position}`,\n { [`${Default.CSS_NAMESPACE}__toast-container--rtl`]: rtl }\n );\n return isFn(className)\n ? className({\n position,\n rtl,\n defaultClassName\n })\n : cx(defaultClassName, parseClassName(className));\n }\n\n return (\n \n {getToastToRender((position, toastList) => {\n const containerStyle: React.CSSProperties =\n toastList.length === 0\n ? { ...style, pointerEvents: 'none' }\n : { ...style };\n\n return (\n \n {toastList.map(({ content, props: toastProps }) => {\n return (\n \n {content}\n \n );\n })}\n \n );\n })}\n \n );\n};\n\nToastContainer.defaultProps = {\n position: POSITION.TOP_RIGHT as ToastPosition,\n transition: Bounce,\n rtl: false,\n autoClose: 5000,\n hideProgressBar: false,\n closeButton: CloseButton,\n pauseOnHover: true,\n pauseOnFocusLoss: true,\n closeOnClick: true,\n newestOnTop: false,\n draggable: true,\n draggablePercent: Default.DRAGGABLE_PERCENT as number,\n draggableDirection: Direction.X,\n role: 'alert'\n};\n","import * as React from 'react';\nimport { render } from 'react-dom';\n\nimport { POSITION, TYPE, canUseDom, isStr, isNum, isFn } from '../utils';\nimport { eventManager, OnChangeCallback, Event } from './eventManager';\nimport {\n ToastContent,\n ToastOptions,\n ToastProps,\n Id,\n ToastContainerProps,\n UpdateOptions,\n ClearWaitingQueueParams,\n NotValidatedToastProps\n} from '../types';\nimport { ContainerInstance } from 'hooks';\nimport { ToastContainer } from '../components';\n\ninterface EnqueuedToast {\n content: ToastContent;\n options: NotValidatedToastProps;\n}\n\nlet containers = new Map();\nlet latestInstance: ContainerInstance | Id;\nlet containerDomNode: HTMLElement;\nlet containerConfig: ToastContainerProps;\nlet queue: EnqueuedToast[] = [];\nlet lazy = false;\n\n/**\n * Check whether any container is currently mounted in the DOM\n */\nfunction isAnyContainerMounted() {\n return containers.size > 0;\n}\n\n/**\n * Get the toast by id, given it's in the DOM, otherwise returns null\n */\nfunction getToast(toastId: Id, { containerId }: ToastOptions) {\n const container = containers.get(containerId || latestInstance);\n if (!container) return null;\n\n return container.getToast(toastId);\n}\n\n/**\n * Generate a random toastId\n */\nfunction generateToastId() {\n return Math.random()\n .toString(36)\n .substr(2, 9);\n}\n\n/**\n * Generate a toastId or use the one provided\n */\nfunction getToastId(options?: ToastOptions) {\n if (options && (isStr(options.toastId) || isNum(options.toastId))) {\n return options.toastId;\n }\n\n return generateToastId();\n}\n\n/**\n * If the container is not mounted, the toast is enqueued and\n * the container lazy mounted\n */\nfunction dispatchToast(\n content: ToastContent,\n options: NotValidatedToastProps\n): Id {\n if (isAnyContainerMounted()) {\n eventManager.emit(Event.Show, content, options);\n } else {\n queue.push({ content, options });\n if (lazy && canUseDom) {\n lazy = false;\n containerDomNode = document.createElement('div');\n document.body.appendChild(containerDomNode);\n render(, containerDomNode);\n }\n }\n\n return options.toastId;\n}\n\n/**\n * Merge provided options with the defaults settings and generate the toastId\n */\nfunction mergeOptions(type: string, options?: ToastOptions) {\n return {\n ...options,\n type: (options && options.type) || type,\n toastId: getToastId(options)\n } as NotValidatedToastProps;\n}\n\nconst createToastByType = (type: string) => (\n content: ToastContent,\n options?: ToastOptions\n) => dispatchToast(content, mergeOptions(type, options));\n\nconst toast = (content: ToastContent, options?: ToastOptions) =>\n dispatchToast(content, mergeOptions(TYPE.DEFAULT, options));\n\ntoast.success = createToastByType(TYPE.SUCCESS);\ntoast.info = createToastByType(TYPE.INFO);\ntoast.error = createToastByType(TYPE.ERROR);\ntoast.warning = createToastByType(TYPE.WARNING);\ntoast.dark = createToastByType(TYPE.DARK);\ntoast.warn = toast.warning;\n\n/**\n * Remove toast programmaticaly\n */\ntoast.dismiss = (id?: Id) => eventManager.emit(Event.Clear, id);\n\n/**\n * Clear waiting queue when limit is used\n */\ntoast.clearWaitingQueue = (params: ClearWaitingQueueParams = {}) =>\n eventManager.emit(Event.ClearWaitingQueue, params);\n\n/**\n * return true if one container is displaying the toast\n */\ntoast.isActive = (id: Id) => {\n let isToastActive = false;\n\n containers.forEach(container => {\n if (container.isToastActive && container.isToastActive(id)) {\n isToastActive = true;\n }\n });\n\n return isToastActive;\n};\n\ntoast.update = (toastId: Id, options: UpdateOptions = {}) => {\n // if you call toast and toast.update directly nothing will be displayed\n // this is why I defered the update\n setTimeout(() => {\n const toast = getToast(toastId, options as ToastOptions);\n if (toast) {\n const { props: oldOptions, content: oldContent } = toast;\n\n const nextOptions = {\n ...oldOptions,\n ...options,\n toastId: options.toastId || toastId,\n updateId: generateToastId()\n } as ToastProps & UpdateOptions;\n\n if (nextOptions.toastId !== toastId) nextOptions.staleId = toastId;\n\n const content = nextOptions.render || oldContent;\n delete nextOptions.render;\n\n dispatchToast(content, nextOptions);\n }\n }, 0);\n};\n\n/**\n * Used for controlled progress bar.\n */\ntoast.done = (id: Id) => {\n toast.update(id, {\n progress: 1\n });\n};\n\n/**\n * Track changes. The callback get the number of toast displayed\n *\n */\ntoast.onChange = (callback: OnChangeCallback) => {\n if (isFn(callback)) {\n eventManager.on(Event.Change, callback);\n }\n return () => {\n isFn(callback) && eventManager.off(Event.Change, callback);\n };\n};\n\n/**\n * Configure the ToastContainer when lazy mounted\n */\ntoast.configure = (config: ToastContainerProps = {}) => {\n lazy = true;\n containerConfig = config;\n};\n\ntoast.POSITION = POSITION;\ntoast.TYPE = TYPE;\n\n/**\n * Wait until the ToastContainer is mounted to dispatch the toast\n * and attach isActive method\n */\neventManager\n .on(Event.DidMount, (containerInstance: ContainerInstance) => {\n latestInstance = containerInstance.containerId || containerInstance;\n containers.set(latestInstance, containerInstance);\n\n queue.forEach(item => {\n eventManager.emit(Event.Show, item.content, item.options);\n });\n\n queue = [];\n })\n .on(Event.WillUnmount, (containerInstance: ContainerInstance) => {\n containers.delete(containerInstance.containerId || containerInstance);\n\n if (containers.size === 0) {\n eventManager\n .off(Event.Show)\n .off(Event.Clear)\n .off(Event.ClearWaitingQueue);\n }\n\n if (canUseDom && containerDomNode) {\n document.body.removeChild(containerDomNode);\n }\n });\n\nexport { toast };\n","import { toast } from 'react-toastify';\n\n//Toasts\nexport const toastError = (error: string) => {\n toast.error(error, {\n position: 'top-right',\n autoClose: 5000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined\n });\n};\n\nexport const toastSuccess = (success: string, autoClose: number = 5000) => {\n toast.success(success, {\n position: 'top-right',\n autoClose: autoClose,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined\n });\n};\n","import { Auth } from 'aws-amplify';\nimport { useHistory } from 'react-router-dom';\nimport { useContext } from 'react';\nimport { AuthContext } from './AuthProvider';\nimport { toastError, toastSuccess } from '../helpers/functions/toasts';\n\nexport const saveTokenInLocalStorage = (tokenDetails: any) => {\n localStorage.setItem('userDetails', tokenDetails);\n};\n\nexport const useAuth = () => {\n const { setAuthenticated, setUser } = useContext(AuthContext);\n const history = useHistory();\n\n async function signIn(username: string, password: string) {\n try {\n const user = await Auth.signIn(username, password);\n if (typeof setAuthenticated === 'function') {\n setUser(user);\n setAuthenticated(true);\n }\n history.push('/app/community');\n } catch (error) {\n const authError = error as any;\n toastError(authError.message);\n console.log('error signing in', error);\n if (typeof setAuthenticated === 'function') {\n setAuthenticated(false);\n }\n }\n }\n\n async function signOut() {\n try {\n await Auth.signOut();\n if (typeof setAuthenticated === 'function') {\n setAuthenticated(false);\n history.push('/auth/login');\n }\n } catch (error) {\n const authError = error as any;\n toastError(authError.message);\n console.log('error signing out: ', error);\n }\n }\n\n async function signUp(username: string, email: string, password: string) {\n try {\n const { user } = await Auth.signUp({\n username,\n password,\n attributes: {\n email //email\n // other custom attributes\n }\n });\n toastSuccess('Verification code sent to your email!');\n\n return user;\n } catch (error) {\n const authError = error as any;\n toastError(authError.message);\n console.log('error signing up:', error);\n }\n }\n\n async function confirmSignUp(username: string, code: string) {\n try {\n await Auth.confirmSignUp(username, code);\n history.push('/auth/login');\n toastSuccess('Verified!');\n } catch (error) {\n const authError = error as any;\n toastError(authError.message);\n console.log('error confirming sign up', error);\n }\n }\n\n async function resendConfirmationCode(username: string) {\n try {\n await Auth.resendSignUp(username);\n console.log('code resent successfully');\n } catch (err) {\n console.log('error resending code: ', err);\n }\n }\n\n return {\n signIn,\n signOut,\n signUp,\n confirmSignUp\n };\n};\n","import React from 'react';\nimport community from '../assets/community.png';\nimport communityActive from '../assets/community-active.png';\nimport connection from '../assets/connection.png';\nimport connectionActive from '../assets/connection-active.png';\nimport genre from '../assets/genre.png';\nimport genreActive from '../assets/genre-active.png';\nimport nettwerk from '../assets/nettwerk-logo.png';\nimport nettwerkActive from '../assets/nettwerk-logo-active.png';\nimport signOutImg from '../assets/sign-out.png';\nimport { Link } from 'react-router-dom';\nimport { useAuth } from '../services/AuthHooks';\n\nconst NavBar: React.FC = () => {\n const { signOut } = useAuth();\n\n const currentItem = window.location.pathname.slice(1);\n\n return (\n \n );\n};\n\ninterface NavBarItemProps {\n img: string;\n activeImg: string;\n currentItem: string;\n pageName: string;\n}\n\nconst NavBarItem: React.FC = ({ img, activeImg, currentItem, pageName }) => {\n const styles = {\n nettwerkImg: pageName == 'nettwerk' ? 'w-14' : ' w-10',\n active: ''\n // active: currentItem.includes(pageName) ? ' bg-primary bg-opacity-75 shadow rounded-lg': ''\n };\n return (\n
\n \n \n \n
\n );\n};\n\nexport default NavBar;\n","import React from 'react';\n\ninterface GraphTitleProps {\n mappingType: string;\n subject: string;\n}\n\n//TODO:- different titles for different pages\n\nconst GraphTitle: React.FC = ({ mappingType, subject }) => {\n return (\n
\n

{mappingType}

\n {mappingType !== 'Nettwerk' ? (\n <>\n

|

\n

{subject}

\n \n ) : (\n <>\n )}\n
\n );\n};\n\nexport default GraphTitle;\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport {\n\tConsoleLogger as Logger,\n\tCredentials,\n\tDateUtils,\n\tSigner,\n\tPlatform,\n} from '@aws-amplify/core';\n\nimport { apiOptions, ApiInfo } from './types';\nimport axios, { CancelTokenSource } from 'axios';\nimport { parse, format } from 'url';\n\nconst logger = new Logger('RestClient');\n\n/**\n* HTTP Client for REST requests. Send and receive JSON data.\n* Sign request with AWS credentials if available\n* Usage:\n
\nconst restClient = new RestClient();\nrestClient.get('...')\n    .then(function(data) {\n        console.log(data);\n    })\n    .catch(err => console.log(err));\n
\n*/\nexport class RestClient {\n\tprivate _options;\n\tprivate _region: string = 'us-east-1'; // this will be updated by endpoint function\n\tprivate _service: string = 'execute-api'; // this can be updated by endpoint function\n\tprivate _custom_header = undefined; // this can be updated by endpoint function\n\n\t/**\n\t * This weak map provides functionality to let clients cancel\n\t * in-flight axios requests. https://github.com/axios/axios#cancellation\n\t *\n\t * 1. For every axios request, a unique cancel token is generated and added in the request.\n\t * 2. Promise for fulfilling the request is then mapped to that unique cancel token.\n\t * 3. The promise is returned to the client.\n\t * 4. Clients can either wait for the promise to fulfill or call `API.cancel(promise)` to cancel the request.\n\t * 5. If `API.cancel(promise)` is called, then the corresponding cancel token is retrieved from the map below.\n\t * 6. Promise returned to the client will be in rejected state with the error provided during cancel.\n\t * 7. Clients can check if the error is because of cancelling by calling `API.isCancel(error)`.\n\t *\n\t * For more details, see https://github.com/aws-amplify/amplify-js/pull/3769#issuecomment-552660025\n\t */\n\tprivate _cancelTokenMap: WeakMap = null;\n\n\tCredentials = Credentials;\n\n\t/**\n\t * @param {RestClientOptions} [options] - Instance options\n\t */\n\tconstructor(options: apiOptions) {\n\t\tthis._options = options;\n\t\tlogger.debug('API Options', this._options);\n\t\tif (this._cancelTokenMap == null) {\n\t\t\tthis._cancelTokenMap = new WeakMap();\n\t\t}\n\t}\n\n\t/**\n * Update AWS credentials\n * @param {AWSCredentials} credentials - AWS credentials\n *\n updateCredentials(credentials: AWSCredentials) {\n this.options.credentials = credentials;\n }\n*/\n\t/**\n\t * Basic HTTP request. Customizable\n\t * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n\t * @param {string} method - Request HTTP method\n\t * @param {json} [init] - Request extra params\n\t * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n\t */\n\tasync ajax(urlOrApiInfo: string | ApiInfo, method: string, init) {\n\t\tlogger.debug(method, urlOrApiInfo);\n\n\t\tlet parsed_url;\n\t\tlet url: string;\n\t\tlet region: string = 'us-east-1';\n\t\tlet service: string = 'execute-api';\n\t\tlet custom_header: () => {\n\t\t\t[key: string]: string;\n\t\t} = undefined;\n\n\t\tif (typeof urlOrApiInfo === 'string') {\n\t\t\tparsed_url = this._parseUrl(urlOrApiInfo);\n\t\t\turl = urlOrApiInfo;\n\t\t} else {\n\t\t\t({ endpoint: url, custom_header, region, service } = urlOrApiInfo);\n\t\t\tparsed_url = this._parseUrl(urlOrApiInfo.endpoint);\n\t\t}\n\n\t\tconst params = {\n\t\t\tmethod,\n\t\t\turl,\n\t\t\thost: parsed_url.host,\n\t\t\tpath: parsed_url.path,\n\t\t\theaders: {},\n\t\t\tdata: null,\n\t\t\tresponseType: 'json',\n\t\t\ttimeout: 0,\n\t\t\tcancelToken: null,\n\t\t};\n\n\t\tlet libraryHeaders = {};\n\n\t\tif (Platform.isReactNative) {\n\t\t\tconst userAgent = Platform.userAgent || 'aws-amplify/0.1.x';\n\t\t\tlibraryHeaders = {\n\t\t\t\t'User-Agent': userAgent,\n\t\t\t};\n\t\t}\n\n\t\tconst initParams = Object.assign({}, init);\n\t\tconst isAllResponse = initParams.response;\n\t\tif (initParams.body) {\n\t\t\tif (\n\t\t\t\ttypeof FormData === 'function' &&\n\t\t\t\tinitParams.body instanceof FormData\n\t\t\t) {\n\t\t\t\tlibraryHeaders['Content-Type'] = 'multipart/form-data';\n\t\t\t\tparams.data = initParams.body;\n\t\t\t} else {\n\t\t\t\tlibraryHeaders['Content-Type'] = 'application/json; charset=UTF-8';\n\t\t\t\tparams.data = JSON.stringify(initParams.body);\n\t\t\t}\n\t\t}\n\t\tif (initParams.responseType) {\n\t\t\tparams.responseType = initParams.responseType;\n\t\t}\n\t\tif (initParams.withCredentials) {\n\t\t\tparams['withCredentials'] = initParams.withCredentials;\n\t\t}\n\t\tif (initParams.timeout) {\n\t\t\tparams.timeout = initParams.timeout;\n\t\t}\n\t\tif (initParams.cancellableToken) {\n\t\t\tparams.cancelToken = initParams.cancellableToken.token;\n\t\t}\n\n\t\tparams['signerServiceInfo'] = initParams.signerServiceInfo;\n\n\t\t// custom_header callback\n\t\tconst custom_header_obj =\n\t\t\ttypeof custom_header === 'function' ? await custom_header() : undefined;\n\n\t\tparams.headers = {\n\t\t\t...libraryHeaders,\n\t\t\t...custom_header_obj,\n\t\t\t...initParams.headers,\n\t\t};\n\n\t\t// Intentionally discarding search\n\t\tconst { search, ...parsedUrl } = parse(url, true, true);\n\t\tparams.url = format({\n\t\t\t...parsedUrl,\n\t\t\tquery: {\n\t\t\t\t...parsedUrl.query,\n\t\t\t\t...(initParams.queryStringParameters || {}),\n\t\t\t},\n\t\t});\n\n\t\t// Do not sign the request if client has added 'Authorization' header,\n\t\t// which means custom authorizer.\n\t\tif (typeof params.headers['Authorization'] !== 'undefined') {\n\t\t\tparams.headers = Object.keys(params.headers).reduce((acc, k) => {\n\t\t\t\tif (params.headers[k]) {\n\t\t\t\t\tacc[k] = params.headers[k];\n\t\t\t\t}\n\t\t\t\treturn acc;\n\t\t\t\t// tslint:disable-next-line:align\n\t\t\t}, {});\n\t\t\treturn this._request(params, isAllResponse);\n\t\t}\n\n\t\t// Signing the request in case there credentials are available\n\t\treturn this.Credentials.get().then(\n\t\t\tcredentials => {\n\t\t\t\treturn this._signed({ ...params }, credentials, isAllResponse, {\n\t\t\t\t\tregion,\n\t\t\t\t\tservice,\n\t\t\t\t}).catch(error => {\n\t\t\t\t\tif (DateUtils.isClockSkewError(error)) {\n\t\t\t\t\t\tconst { headers } = error.response;\n\t\t\t\t\t\tconst dateHeader = headers && (headers.date || headers.Date);\n\t\t\t\t\t\tconst responseDate = new Date(dateHeader);\n\t\t\t\t\t\tconst requestDate = DateUtils.getDateFromHeaderString(\n\t\t\t\t\t\t\tparams.headers['x-amz-date']\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// Compare local clock to the server clock\n\t\t\t\t\t\tif (DateUtils.isClockSkewed(responseDate)) {\n\t\t\t\t\t\t\tDateUtils.setClockOffset(\n\t\t\t\t\t\t\t\tresponseDate.getTime() - requestDate.getTime()\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\treturn this.ajax(urlOrApiInfo, method, init);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow error;\n\t\t\t\t});\n\t\t\t},\n\t\t\terr => {\n\t\t\t\tlogger.debug('No credentials available, the request will be unsigned');\n\t\t\t\treturn this._request(params, isAllResponse);\n\t\t\t}\n\t\t);\n\t}\n\n\t/**\n\t * GET HTTP request\n\t * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n\t * @param {JSON} init - Request extra params\n\t * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n\t */\n\tget(urlOrApiInfo: string | ApiInfo, init) {\n\t\treturn this.ajax(urlOrApiInfo, 'GET', init);\n\t}\n\n\t/**\n\t * PUT HTTP request\n\t * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n\t * @param {json} init - Request extra params\n\t * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n\t */\n\tput(urlOrApiInfo: string | ApiInfo, init) {\n\t\treturn this.ajax(urlOrApiInfo, 'PUT', init);\n\t}\n\n\t/**\n\t * PATCH HTTP request\n\t * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n\t * @param {json} init - Request extra params\n\t * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n\t */\n\tpatch(urlOrApiInfo: string | ApiInfo, init) {\n\t\treturn this.ajax(urlOrApiInfo, 'PATCH', init);\n\t}\n\n\t/**\n\t * POST HTTP request\n\t * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n\t * @param {json} init - Request extra params\n\t * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n\t */\n\tpost(urlOrApiInfo: string | ApiInfo, init) {\n\t\treturn this.ajax(urlOrApiInfo, 'POST', init);\n\t}\n\n\t/**\n\t * DELETE HTTP request\n\t * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n\t * @param {json} init - Request extra params\n\t * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n\t */\n\tdel(urlOrApiInfo: string | ApiInfo, init) {\n\t\treturn this.ajax(urlOrApiInfo, 'DELETE', init);\n\t}\n\n\t/**\n\t * HEAD HTTP request\n\t * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n\t * @param {json} init - Request extra params\n\t * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n\t */\n\thead(urlOrApiInfo: string | ApiInfo, init) {\n\t\treturn this.ajax(urlOrApiInfo, 'HEAD', init);\n\t}\n\n\t/**\n\t * Cancel an inflight API request\n\t * @param {Promise} request - The request promise to cancel\n\t * @param {string} [message] - A message to include in the cancelation exception\n\t */\n\tcancel(request: Promise, message?: string) {\n\t\tconst source = this._cancelTokenMap.get(request);\n\t\tif (source) {\n\t\t\tsource.cancel(message);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Check if the request has a corresponding cancel token in the WeakMap.\n\t * @params request - The request promise\n\t * @return if the request has a corresponding cancel token.\n\t */\n\thasCancelToken(request: Promise) {\n\t\treturn this._cancelTokenMap.has(request);\n\t}\n\n\t/**\n\t * Checks to see if an error thrown is from an api request cancellation\n\t * @param {any} error - Any error\n\t * @return {boolean} - A boolean indicating if the error was from an api request cancellation\n\t */\n\tisCancel(error): boolean {\n\t\treturn axios.isCancel(error);\n\t}\n\n\t/**\n\t * Retrieves a new and unique cancel token which can be\n\t * provided in an axios request to be cancelled later.\n\t */\n\tgetCancellableToken(): CancelTokenSource {\n\t\treturn axios.CancelToken.source();\n\t}\n\n\t/**\n\t * Updates the weakmap with a response promise and its\n\t * cancel token such that the cancel token can be easily\n\t * retrieved (and used for cancelling the request)\n\t */\n\tupdateRequestToBeCancellable(\n\t\tpromise: Promise,\n\t\tcancelTokenSource: CancelTokenSource\n\t) {\n\t\tthis._cancelTokenMap.set(promise, cancelTokenSource);\n\t}\n\n\t/**\n\t * Getting endpoint for API\n\t * @param {string} apiName - The name of the api\n\t * @return {string} - The endpoint of the api\n\t */\n\tendpoint(apiName: string) {\n\t\tconst cloud_logic_array = this._options.endpoints;\n\t\tlet response = '';\n\n\t\tif (!Array.isArray(cloud_logic_array)) {\n\t\t\treturn response;\n\t\t}\n\n\t\tcloud_logic_array.forEach(v => {\n\t\t\tif (v.name === apiName) {\n\t\t\t\tresponse = v.endpoint;\n\t\t\t\tif (typeof v.region === 'string') {\n\t\t\t\t\tthis._region = v.region;\n\t\t\t\t} else if (typeof this._options.region === 'string') {\n\t\t\t\t\tthis._region = this._options.region;\n\t\t\t\t}\n\t\t\t\tif (typeof v.service === 'string') {\n\t\t\t\t\tthis._service = v.service || 'execute-api';\n\t\t\t\t} else {\n\t\t\t\t\tthis._service = 'execute-api';\n\t\t\t\t}\n\t\t\t\tif (typeof v.custom_header === 'function') {\n\t\t\t\t\tthis._custom_header = v.custom_header;\n\t\t\t\t} else {\n\t\t\t\t\tthis._custom_header = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn response;\n\t}\n\n\t/** private methods **/\n\n\tprivate _signed(params, credentials, isAllResponse, { service, region }) {\n\t\tconst { signerServiceInfo: signerServiceInfoParams, ...otherParams } =\n\t\t\tparams;\n\n\t\tconst endpoint_region: string =\n\t\t\tregion || this._region || this._options.region;\n\t\tconst endpoint_service: string =\n\t\t\tservice || this._service || this._options.service;\n\n\t\tconst creds = {\n\t\t\tsecret_key: credentials.secretAccessKey,\n\t\t\taccess_key: credentials.accessKeyId,\n\t\t\tsession_token: credentials.sessionToken,\n\t\t};\n\n\t\tconst endpointInfo = {\n\t\t\tregion: endpoint_region,\n\t\t\tservice: endpoint_service,\n\t\t};\n\n\t\tconst signerServiceInfo = Object.assign(\n\t\t\tendpointInfo,\n\t\t\tsignerServiceInfoParams\n\t\t);\n\n\t\tconst signed_params = Signer.sign(otherParams, creds, signerServiceInfo);\n\n\t\tif (signed_params.data) {\n\t\t\tsigned_params.body = signed_params.data;\n\t\t}\n\n\t\tlogger.debug('Signed Request: ', signed_params);\n\n\t\tdelete signed_params.headers['host'];\n\n\t\treturn axios(signed_params)\n\t\t\t.then(response => (isAllResponse ? response : response.data))\n\t\t\t.catch(error => {\n\t\t\t\tlogger.debug(error);\n\t\t\t\tthrow error;\n\t\t\t});\n\t}\n\n\tprivate _request(params, isAllResponse = false) {\n\t\treturn axios(params)\n\t\t\t.then(response => (isAllResponse ? response : response.data))\n\t\t\t.catch(error => {\n\t\t\t\tlogger.debug(error);\n\t\t\t\tthrow error;\n\t\t\t});\n\t}\n\n\tprivate _parseUrl(url) {\n\t\tconst parts = url.split('/');\n\n\t\treturn {\n\t\t\thost: parts[2],\n\t\t\tpath: '/' + parts.slice(3).join('/'),\n\t\t};\n\t}\n}\n","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { RestClient } from './RestClient';\nimport {\n\tAmplify,\n\tConsoleLogger as Logger,\n\tCredentials,\n} from '@aws-amplify/core';\nimport { ApiInfo } from './types';\n\nconst logger = new Logger('RestAPI');\n\n/**\n * Export Cloud Logic APIs\n */\nexport class RestAPIClass {\n\t/**\n\t * @private\n\t */\n\tprivate _options;\n\tprivate _api: RestClient = null;\n\n\tCredentials = Credentials;\n\n\t/**\n\t * Initialize Rest API with AWS configuration\n\t * @param {Object} options - Configuration object for API\n\t */\n\tconstructor(options) {\n\t\tthis._options = options;\n\t\tlogger.debug('API Options', this._options);\n\t}\n\n\tpublic getModuleName() {\n\t\treturn 'RestAPI';\n\t}\n\n\t/**\n\t * Configure API part with aws configurations\n\t * @param {Object} config - Configuration of the API\n\t * @return {Object} - The current configuration\n\t */\n\tconfigure(options) {\n\t\tconst { API = {}, ...otherOptions } = options || {};\n\t\tlet opt = { ...otherOptions, ...API };\n\t\tlogger.debug('configure Rest API', { opt });\n\n\t\tif (opt['aws_project_region']) {\n\t\t\tif (opt['aws_cloud_logic_custom']) {\n\t\t\t\tconst custom = opt['aws_cloud_logic_custom'];\n\t\t\t\topt.endpoints =\n\t\t\t\t\ttypeof custom === 'string' ? JSON.parse(custom) : custom;\n\t\t\t}\n\n\t\t\topt = Object.assign({}, opt, {\n\t\t\t\tregion: opt['aws_project_region'],\n\t\t\t\theader: {},\n\t\t\t});\n\t\t}\n\n\t\tif (Array.isArray(opt.endpoints)) {\n\t\t\t// Check if endpoints has custom_headers and validate if is a function\n\t\t\topt.endpoints.forEach(endpoint => {\n\t\t\t\tif (\n\t\t\t\t\ttypeof endpoint.custom_header !== 'undefined' &&\n\t\t\t\t\ttypeof endpoint.custom_header !== 'function'\n\t\t\t\t) {\n\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t'Rest API ' + endpoint.name + ', custom_header should be a function'\n\t\t\t\t\t);\n\t\t\t\t\tendpoint.custom_header = undefined;\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (this._options && Array.isArray(this._options.endpoints)) {\n\t\t\topt.endpoints = this._options.endpoints;\n\t\t} else {\n\t\t\topt.endpoints = [];\n\t\t}\n\n\t\tthis._options = Object.assign({}, this._options, opt);\n\n\t\tthis.createInstance();\n\n\t\treturn this._options;\n\t}\n\n\t/**\n\t * Create an instance of API for the library\n\t * @return - A promise of true if Success\n\t */\n\tcreateInstance() {\n\t\tlogger.debug('create Rest API instance');\n\t\tthis._api = new RestClient(this._options);\n\n\t\t// Share Amplify instance with client for SSR\n\t\tthis._api.Credentials = this.Credentials;\n\t\treturn true;\n\t}\n\n\t/**\n\t * Make a GET request\n\t * @param {string} apiName - The api name of the request\n\t * @param {string} path - The path of the request\n\t * @param {json} [init] - Request extra params\n\t * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n\t */\n\tget(apiName, path, init): Promise {\n\t\ttry {\n\t\t\tconst apiInfo = this.getEndpointInfo(apiName, path);\n\n\t\t\tconst cancellableToken = this._api.getCancellableToken();\n\n\t\t\tconst initParams = Object.assign({}, init);\n\t\t\tinitParams.cancellableToken = cancellableToken;\n\n\t\t\tconst responsePromise = this._api.get(apiInfo, initParams);\n\n\t\t\tthis._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n\t\t\treturn responsePromise;\n\t\t} catch (err) {\n\t\t\treturn Promise.reject(err.message);\n\t\t}\n\t}\n\n\t/**\n\t * Make a POST request\n\t * @param {string} apiName - The api name of the request\n\t * @param {string} path - The path of the request\n\t * @param {json} [init] - Request extra params\n\t * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n\t */\n\tpost(apiName, path, init): Promise {\n\t\ttry {\n\t\t\tconst apiInfo = this.getEndpointInfo(apiName, path);\n\n\t\t\tconst cancellableToken = this._api.getCancellableToken();\n\n\t\t\tconst initParams = Object.assign({}, init);\n\t\t\tinitParams.cancellableToken = cancellableToken;\n\n\t\t\tconst responsePromise = this._api.post(apiInfo, initParams);\n\n\t\t\tthis._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n\t\t\treturn responsePromise;\n\t\t} catch (err) {\n\t\t\treturn Promise.reject(err.message);\n\t\t}\n\t}\n\n\t/**\n\t * Make a PUT request\n\t * @param {string} apiName - The api name of the request\n\t * @param {string} path - The path of the request\n\t * @param {json} [init] - Request extra params\n\t * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n\t */\n\tput(apiName, path, init): Promise {\n\t\ttry {\n\t\t\tconst apiInfo = this.getEndpointInfo(apiName, path);\n\n\t\t\tconst cancellableToken = this._api.getCancellableToken();\n\n\t\t\tconst initParams = Object.assign({}, init);\n\t\t\tinitParams.cancellableToken = cancellableToken;\n\n\t\t\tconst responsePromise = this._api.put(apiInfo, initParams);\n\n\t\t\tthis._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n\t\t\treturn responsePromise;\n\t\t} catch (err) {\n\t\t\treturn Promise.reject(err.message);\n\t\t}\n\t}\n\n\t/**\n\t * Make a PATCH request\n\t * @param {string} apiName - The api name of the request\n\t * @param {string} path - The path of the request\n\t * @param {json} [init] - Request extra params\n\t * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n\t */\n\tpatch(apiName, path, init): Promise {\n\t\ttry {\n\t\t\tconst apiInfo = this.getEndpointInfo(apiName, path);\n\n\t\t\tconst cancellableToken = this._api.getCancellableToken();\n\n\t\t\tconst initParams = Object.assign({}, init);\n\t\t\tinitParams.cancellableToken = cancellableToken;\n\n\t\t\tconst responsePromise = this._api.patch(apiInfo, initParams);\n\n\t\t\tthis._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n\t\t\treturn responsePromise;\n\t\t} catch (err) {\n\t\t\treturn Promise.reject(err.message);\n\t\t}\n\t}\n\n\t/**\n\t * Make a DEL request\n\t * @param {string} apiName - The api name of the request\n\t * @param {string} path - The path of the request\n\t * @param {json} [init] - Request extra params\n\t * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n\t */\n\tdel(apiName, path, init): Promise {\n\t\ttry {\n\t\t\tconst apiInfo = this.getEndpointInfo(apiName, path);\n\n\t\t\tconst cancellableToken = this._api.getCancellableToken();\n\n\t\t\tconst initParams = Object.assign({}, init);\n\t\t\tinitParams.cancellableToken = cancellableToken;\n\n\t\t\tconst responsePromise = this._api.del(apiInfo, initParams);\n\n\t\t\tthis._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n\t\t\treturn responsePromise;\n\t\t} catch (err) {\n\t\t\treturn Promise.reject(err.message);\n\t\t}\n\t}\n\n\t/**\n\t * Make a HEAD request\n\t * @param {string} apiName - The api name of the request\n\t * @param {string} path - The path of the request\n\t * @param {json} [init] - Request extra params\n\t * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n\t */\n\thead(apiName, path, init): Promise {\n\t\ttry {\n\t\t\tconst apiInfo = this.getEndpointInfo(apiName, path);\n\n\t\t\tconst cancellableToken = this._api.getCancellableToken();\n\n\t\t\tconst initParams = Object.assign({}, init);\n\t\t\tinitParams.cancellableToken = cancellableToken;\n\n\t\t\tconst responsePromise = this._api.head(apiInfo, initParams);\n\n\t\t\tthis._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n\t\t\treturn responsePromise;\n\t\t} catch (err) {\n\t\t\treturn Promise.reject(err.message);\n\t\t}\n\t}\n\n\t/**\n\t * Checks to see if an error thrown is from an api request cancellation\n\t * @param {any} error - Any error\n\t * @return {boolean} - A boolean indicating if the error was from an api request cancellation\n\t */\n\tisCancel(error) {\n\t\treturn this._api.isCancel(error);\n\t}\n\n\t/**\n\t * Cancels an inflight request\n\t * @param {any} request - request to cancel\n\t * @return {boolean} - A boolean indicating if the request was cancelled\n\t */\n\tcancel(request: Promise, message?: string) {\n\t\treturn this._api.cancel(request, message);\n\t}\n\n\t/**\n\t * Check if the request has a corresponding cancel token in the WeakMap.\n\t * @params request - The request promise\n\t * @return if the request has a corresponding cancel token.\n\t */\n\thasCancelToken(request: Promise) {\n\t\treturn this._api.hasCancelToken(request);\n\t}\n\n\t/**\n\t * Getting endpoint for API\n\t * @param {string} apiName - The name of the api\n\t * @return {string} - The endpoint of the api\n\t */\n\tasync endpoint(apiName) {\n\t\treturn this._api.endpoint(apiName);\n\t}\n\n\t/**\n\t * Getting endpoint info for API\n\t * @param {string} apiName - The name of the api\n\t * @param {string} path - The path of the api that is going to accessed\n\t * @return {ApiInfo} - The endpoint information for that api-name\n\t */\n\tprivate getEndpointInfo(apiName: string, path: string): ApiInfo {\n\t\tconst cloud_logic_array = this._options.endpoints;\n\n\t\tif (!Array.isArray(cloud_logic_array)) {\n\t\t\tthrow new Error(`API category not configured`);\n\t\t}\n\n\t\tconst apiConfig = cloud_logic_array.find(api => api.name === apiName);\n\n\t\tif (!apiConfig) {\n\t\t\tthrow new Error(`API ${apiName} does not exist`);\n\t\t}\n\n\t\tconst response: ApiInfo = {\n\t\t\tendpoint: apiConfig.endpoint + path,\n\t\t};\n\n\t\tif (typeof apiConfig.region === 'string') {\n\t\t\tresponse.region = apiConfig.region;\n\t\t} else if (typeof this._options.region === 'string') {\n\t\t\tresponse.region = this._options.region;\n\t\t}\n\n\t\tif (typeof apiConfig.service === 'string') {\n\t\t\tresponse.service = apiConfig.service || 'execute-api';\n\t\t} else {\n\t\t\tresponse.service = 'execute-api';\n\t\t}\n\n\t\tif (typeof apiConfig.custom_header === 'function') {\n\t\t\tresponse.custom_header = apiConfig.custom_header;\n\t\t} else {\n\t\t\tresponse.custom_header = undefined;\n\t\t}\n\n\t\treturn response;\n\t}\n}\n\nexport const RestAPI = new RestAPIClass(null);\nAmplify.register(RestAPI);\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nexport default function isObjectLike(value) {\n return _typeof(value) == 'object' && value !== null;\n}\n","// In ES2015 (or a polyfilled) environment, this will be Symbol.iterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nexport var SYMBOL_ITERATOR = typeof Symbol === 'function' && Symbol.iterator != null ? Symbol.iterator : '@@iterator'; // In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexport var SYMBOL_ASYNC_ITERATOR = typeof Symbol === 'function' && Symbol.asyncIterator != null ? Symbol.asyncIterator : '@@asyncIterator'; // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexport var SYMBOL_TO_STRING_TAG = typeof Symbol === 'function' && Symbol.toStringTag != null ? Symbol.toStringTag : '@@toStringTag';\n","/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n var lineRegexp = /\\r\\n|[\\n\\r]/g;\n var line = 1;\n var column = position + 1;\n var match;\n\n while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n line += 1;\n column = position + 1 - (match.index + match[0].length);\n }\n\n return {\n line: line,\n column: column\n };\n}\n","import { getLocation } from \"./location.mjs\";\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printLocation(location) {\n return printSourceLocation(location.source, getLocation(location.source, location.start));\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printSourceLocation(source, sourceLocation) {\n var firstLineColumnOffset = source.locationOffset.column - 1;\n var body = whitespace(firstLineColumnOffset) + source.body;\n var lineIndex = sourceLocation.line - 1;\n var lineOffset = source.locationOffset.line - 1;\n var lineNum = sourceLocation.line + lineOffset;\n var columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n var columnNum = sourceLocation.column + columnOffset;\n var locationStr = \"\".concat(source.name, \":\").concat(lineNum, \":\").concat(columnNum, \"\\n\");\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n var locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n var subLineIndex = Math.floor(columnNum / 80);\n var subLineColumnNum = columnNum % 80;\n var subLines = [];\n\n for (var i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n\n return locationStr + printPrefixedLines([[\"\".concat(lineNum), subLines[0]]].concat(subLines.slice(1, subLineIndex + 1).map(function (subLine) {\n return ['', subLine];\n }), [[' ', whitespace(subLineColumnNum - 1) + '^'], ['', subLines[subLineIndex + 1]]]));\n }\n\n return locationStr + printPrefixedLines([// Lines specified like this: [\"prefix\", \"string\"],\n [\"\".concat(lineNum - 1), lines[lineIndex - 1]], [\"\".concat(lineNum), locationLine], ['', whitespace(columnNum - 1) + '^'], [\"\".concat(lineNum + 1), lines[lineIndex + 1]]]);\n}\n\nfunction printPrefixedLines(lines) {\n var existingLines = lines.filter(function (_ref) {\n var _ = _ref[0],\n line = _ref[1];\n return line !== undefined;\n });\n var padLen = Math.max.apply(Math, existingLines.map(function (_ref2) {\n var prefix = _ref2[0];\n return prefix.length;\n }));\n return existingLines.map(function (_ref3) {\n var prefix = _ref3[0],\n line = _ref3[1];\n return leftPad(padLen, prefix) + (line ? ' | ' + line : ' |');\n }).join('\\n');\n}\n\nfunction whitespace(len) {\n return Array(len + 1).join(' ');\n}\n\nfunction leftPad(len, str) {\n return whitespace(len - str.length) + str;\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport isObjectLike from \"../jsutils/isObjectLike.mjs\";\nimport { SYMBOL_TO_STRING_TAG } from \"../polyfills/symbols.mjs\";\nimport { getLocation } from \"../language/location.mjs\";\nimport { printLocation, printSourceLocation } from \"../language/printLocation.mjs\";\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nexport var GraphQLError = /*#__PURE__*/function (_Error) {\n _inherits(GraphQLError, _Error);\n\n var _super = _createSuper(GraphQLError);\n\n /**\n * An array of { line, column } locations within the source GraphQL document\n * which correspond to this error.\n *\n * Errors during validation often contain multiple locations, for example to\n * point out two things with the same name. Errors during execution include a\n * single location, the field which produced the error.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array describing the JSON-path into the execution response which\n * corresponds to this error. Only included for errors during execution.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array of GraphQL AST Nodes corresponding to this error.\n */\n\n /**\n * The source GraphQL document for the first location of this error.\n *\n * Note that if this Error represents more than one node, the source may not\n * represent nodes after the first node.\n */\n\n /**\n * An array of character offsets within the source GraphQL document\n * which correspond to this error.\n */\n\n /**\n * The original error thrown from a field resolver during execution.\n */\n\n /**\n * Extension fields to add to the formatted error.\n */\n function GraphQLError(message, nodes, source, positions, path, originalError, extensions) {\n var _nodeLocations, _nodeLocations2, _nodeLocations3;\n\n var _this;\n\n _classCallCheck(this, GraphQLError);\n\n _this = _super.call(this, message);\n _this.name = 'GraphQLError';\n _this.originalError = originalError !== null && originalError !== void 0 ? originalError : undefined; // Compute list of blame nodes.\n\n _this.nodes = undefinedIfEmpty(Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined);\n var nodeLocations = [];\n\n for (var _i2 = 0, _ref3 = (_this$nodes = _this.nodes) !== null && _this$nodes !== void 0 ? _this$nodes : []; _i2 < _ref3.length; _i2++) {\n var _this$nodes;\n\n var _ref4 = _ref3[_i2];\n var loc = _ref4.loc;\n\n if (loc != null) {\n nodeLocations.push(loc);\n }\n }\n\n nodeLocations = undefinedIfEmpty(nodeLocations); // Compute locations in the source for the given nodes/positions.\n\n _this.source = source !== null && source !== void 0 ? source : (_nodeLocations = nodeLocations) === null || _nodeLocations === void 0 ? void 0 : _nodeLocations[0].source;\n _this.positions = positions !== null && positions !== void 0 ? positions : (_nodeLocations2 = nodeLocations) === null || _nodeLocations2 === void 0 ? void 0 : _nodeLocations2.map(function (loc) {\n return loc.start;\n });\n _this.locations = positions && source ? positions.map(function (pos) {\n return getLocation(source, pos);\n }) : (_nodeLocations3 = nodeLocations) === null || _nodeLocations3 === void 0 ? void 0 : _nodeLocations3.map(function (loc) {\n return getLocation(loc.source, loc.start);\n });\n _this.path = path !== null && path !== void 0 ? path : undefined;\n var originalExtensions = originalError === null || originalError === void 0 ? void 0 : originalError.extensions;\n\n if (extensions == null && isObjectLike(originalExtensions)) {\n _this.extensions = _objectSpread({}, originalExtensions);\n } else {\n _this.extensions = extensions !== null && extensions !== void 0 ? extensions : {};\n } // By being enumerable, JSON.stringify will include bellow properties in the resulting output.\n // This ensures that the simplest possible GraphQL service adheres to the spec.\n\n\n Object.defineProperties(_assertThisInitialized(_this), {\n message: {\n enumerable: true\n },\n locations: {\n enumerable: _this.locations != null\n },\n path: {\n enumerable: _this.path != null\n },\n extensions: {\n enumerable: _this.extensions != null && Object.keys(_this.extensions).length > 0\n },\n name: {\n enumerable: false\n },\n nodes: {\n enumerable: false\n },\n source: {\n enumerable: false\n },\n positions: {\n enumerable: false\n },\n originalError: {\n enumerable: false\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError !== null && originalError !== void 0 && originalError.stack) {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n return _possibleConstructorReturn(_this);\n } // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_assertThisInitialized(_this), GraphQLError);\n } else {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n\n return _this;\n }\n\n _createClass(GraphQLError, [{\n key: \"toString\",\n value: function toString() {\n return printError(this);\n } // FIXME: workaround to not break chai comparisons, should be remove in v16\n // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n }, {\n key: SYMBOL_TO_STRING_TAG,\n get: function get() {\n return 'Object';\n }\n }]);\n\n return GraphQLError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nfunction undefinedIfEmpty(array) {\n return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\n\n\nexport function printError(error) {\n var output = error.message;\n\n if (error.nodes) {\n for (var _i4 = 0, _error$nodes2 = error.nodes; _i4 < _error$nodes2.length; _i4++) {\n var node = _error$nodes2[_i4];\n\n if (node.loc) {\n output += '\\n\\n' + printLocation(node.loc);\n }\n }\n } else if (error.source && error.locations) {\n for (var _i6 = 0, _error$locations2 = error.locations; _i6 < _error$locations2.length; _i6++) {\n var location = _error$locations2[_i6];\n output += '\\n\\n' + printSourceLocation(error.source, location);\n }\n }\n\n return output;\n}\n","import { GraphQLError } from \"./GraphQLError.mjs\";\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n return new GraphQLError(\"Syntax Error: \".concat(description), undefined, source, [position]);\n}\n","/**\n * The set of allowed kind values for AST nodes.\n */\nexport var Kind = Object.freeze({\n // Name\n NAME: 'Name',\n // Document\n DOCUMENT: 'Document',\n OPERATION_DEFINITION: 'OperationDefinition',\n VARIABLE_DEFINITION: 'VariableDefinition',\n SELECTION_SET: 'SelectionSet',\n FIELD: 'Field',\n ARGUMENT: 'Argument',\n // Fragments\n FRAGMENT_SPREAD: 'FragmentSpread',\n INLINE_FRAGMENT: 'InlineFragment',\n FRAGMENT_DEFINITION: 'FragmentDefinition',\n // Values\n VARIABLE: 'Variable',\n INT: 'IntValue',\n FLOAT: 'FloatValue',\n STRING: 'StringValue',\n BOOLEAN: 'BooleanValue',\n NULL: 'NullValue',\n ENUM: 'EnumValue',\n LIST: 'ListValue',\n OBJECT: 'ObjectValue',\n OBJECT_FIELD: 'ObjectField',\n // Directives\n DIRECTIVE: 'Directive',\n // Types\n NAMED_TYPE: 'NamedType',\n LIST_TYPE: 'ListType',\n NON_NULL_TYPE: 'NonNullType',\n // Type System Definitions\n SCHEMA_DEFINITION: 'SchemaDefinition',\n OPERATION_TYPE_DEFINITION: 'OperationTypeDefinition',\n // Type Definitions\n SCALAR_TYPE_DEFINITION: 'ScalarTypeDefinition',\n OBJECT_TYPE_DEFINITION: 'ObjectTypeDefinition',\n FIELD_DEFINITION: 'FieldDefinition',\n INPUT_VALUE_DEFINITION: 'InputValueDefinition',\n INTERFACE_TYPE_DEFINITION: 'InterfaceTypeDefinition',\n UNION_TYPE_DEFINITION: 'UnionTypeDefinition',\n ENUM_TYPE_DEFINITION: 'EnumTypeDefinition',\n ENUM_VALUE_DEFINITION: 'EnumValueDefinition',\n INPUT_OBJECT_TYPE_DEFINITION: 'InputObjectTypeDefinition',\n // Directive Definitions\n DIRECTIVE_DEFINITION: 'DirectiveDefinition',\n // Type System Extensions\n SCHEMA_EXTENSION: 'SchemaExtension',\n // Type Extensions\n SCALAR_TYPE_EXTENSION: 'ScalarTypeExtension',\n OBJECT_TYPE_EXTENSION: 'ObjectTypeExtension',\n INTERFACE_TYPE_EXTENSION: 'InterfaceTypeExtension',\n UNION_TYPE_EXTENSION: 'UnionTypeExtension',\n ENUM_TYPE_EXTENSION: 'EnumTypeExtension',\n INPUT_OBJECT_TYPE_EXTENSION: 'InputObjectTypeExtension'\n});\n/**\n * The enum type representing the possible kind values of AST nodes.\n */\n","// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nvar nodejsCustomInspectSymbol = typeof Symbol === 'function' && typeof Symbol.for === 'function' ? Symbol.for('nodejs.util.inspect.custom') : undefined;\nexport default nodejsCustomInspectSymbol;\n","import invariant from \"./invariant.mjs\";\nimport nodejsCustomInspectSymbol from \"./nodejsCustomInspectSymbol.mjs\";\n/**\n * The `defineInspect()` function defines `inspect()` prototype method as alias of `toJSON`\n */\n\nexport default function defineInspect(classObject) {\n var fn = classObject.prototype.toJSON;\n typeof fn === 'function' || invariant(0);\n classObject.prototype.inspect = fn; // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n if (nodejsCustomInspectSymbol) {\n classObject.prototype[nodejsCustomInspectSymbol] = fn;\n }\n}\n","export default function invariant(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message != null ? message : 'Unexpected invariant triggered.');\n }\n}\n","import defineInspect from \"../jsutils/defineInspect.mjs\";\n\n/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nexport var Location = /*#__PURE__*/function () {\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The Token at which this Node begins.\n */\n\n /**\n * The Token at which this Node ends.\n */\n\n /**\n * The Source document the AST represents.\n */\n function Location(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n }\n\n var _proto = Location.prototype;\n\n _proto.toJSON = function toJSON() {\n return {\n start: this.start,\n end: this.end\n };\n };\n\n return Location;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\ndefineInspect(Location);\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nexport var Token = /*#__PURE__*/function () {\n /**\n * The kind of Token.\n */\n\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The 1-indexed line number on which this Token appears.\n */\n\n /**\n * The 1-indexed column number at which this Token begins.\n */\n\n /**\n * For non-punctuation tokens, represents the interpreted value of the token.\n */\n\n /**\n * Tokens exist as nodes in a double-linked-list amongst all tokens\n * including ignored tokens. is always the first node and \n * the last.\n */\n function Token(kind, start, end, line, column, prev, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column;\n this.value = value;\n this.prev = prev;\n this.next = null;\n }\n\n var _proto2 = Token.prototype;\n\n _proto2.toJSON = function toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column\n };\n };\n\n return Token;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\ndefineInspect(Token);\n/**\n * @internal\n */\n\nexport function isNode(maybeNode) {\n return maybeNode != null && typeof maybeNode.kind === 'string';\n}\n/**\n * The list of all possible AST node types.\n */\n","/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nexport var TokenKind = Object.freeze({\n SOF: '',\n EOF: '',\n BANG: '!',\n DOLLAR: '$',\n AMP: '&',\n PAREN_L: '(',\n PAREN_R: ')',\n SPREAD: '...',\n COLON: ':',\n EQUALS: '=',\n AT: '@',\n BRACKET_L: '[',\n BRACKET_R: ']',\n BRACE_L: '{',\n PIPE: '|',\n BRACE_R: '}',\n NAME: 'Name',\n INT: 'Int',\n FLOAT: 'Float',\n STRING: 'String',\n BLOCK_STRING: 'BlockString',\n COMMENT: 'Comment'\n});\n/**\n * The enum type representing the token kinds values.\n */\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-disable flowtype/no-weak-types */\nimport nodejsCustomInspectSymbol from \"./nodejsCustomInspectSymbol.mjs\";\nvar MAX_ARRAY_LENGTH = 10;\nvar MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nexport default function inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (_typeof(value)) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? \"[function \".concat(value.name, \"]\") : '[function]';\n\n case 'object':\n if (value === null) {\n return 'null';\n }\n\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (previouslySeenValues.indexOf(value) !== -1) {\n return '[Circular]';\n }\n\n var seenValues = [].concat(previouslySeenValues, [value]);\n var customInspectFn = getCustomFn(value);\n\n if (customInspectFn !== undefined) {\n var customValue = customInspectFn.call(value); // check for infinite recursion\n\n if (customValue !== value) {\n return typeof customValue === 'string' ? customValue : formatValue(customValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction formatObject(object, seenValues) {\n var keys = Object.keys(object);\n\n if (keys.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n var properties = keys.map(function (key) {\n var value = formatValue(object[key], seenValues);\n return key + ': ' + value;\n });\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n var len = Math.min(MAX_ARRAY_LENGTH, array.length);\n var remaining = array.length - len;\n var items = [];\n\n for (var i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(\"... \".concat(remaining, \" more items\"));\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getCustomFn(object) {\n var customInspectFn = object[String(nodejsCustomInspectSymbol)];\n\n if (typeof customInspectFn === 'function') {\n return customInspectFn;\n }\n\n if (typeof object.inspect === 'function') {\n return object.inspect;\n }\n}\n\nfunction getObjectTag(object) {\n var tag = Object.prototype.toString.call(object).replace(/^\\[object /, '').replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n var name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n","export default function devAssert(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport inspect from \"./inspect.mjs\";\n/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n */\n\n// See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n// See: https://webpack.js.org/guides/production/\nexport default process.env.NODE_ENV === 'production' ? // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n// eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n return value instanceof constructor;\n} : // eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n if (value instanceof constructor) {\n return true;\n }\n\n if (_typeof(value) === 'object' && value !== null) {\n var _value$constructor;\n\n var className = constructor.prototype[Symbol.toStringTag];\n var valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library.\n Symbol.toStringTag in value ? value[Symbol.toStringTag] : (_value$constructor = value.constructor) === null || _value$constructor === void 0 ? void 0 : _value$constructor.name;\n\n if (className === valueClassName) {\n var stringifiedValue = inspect(value);\n throw new Error(\"Cannot use \".concat(className, \" \\\"\").concat(stringifiedValue, \"\\\" from another module or realm.\\n\\nEnsure that there is only one instance of \\\"graphql\\\" in the node_modules\\ndirectory. If different versions of \\\"graphql\\\" are the dependencies of other\\nrelied on modules, use \\\"resolutions\\\" to ensure only one version is installed.\\n\\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\\n\\nDuplicate \\\"graphql\\\" modules cannot be used at the same time since different\\nversions may have different capabilities and behavior. The data from one\\nversion used in the function from another could produce confusing and\\nspurious results.\"));\n }\n }\n\n return false;\n};\n","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { SYMBOL_TO_STRING_TAG } from \"../polyfills/symbols.mjs\";\nimport inspect from \"../jsutils/inspect.mjs\";\nimport devAssert from \"../jsutils/devAssert.mjs\";\nimport instanceOf from \"../jsutils/instanceOf.mjs\";\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nexport var Source = /*#__PURE__*/function () {\n function Source(body) {\n var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'GraphQL request';\n var locationOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n line: 1,\n column: 1\n };\n typeof body === 'string' || devAssert(0, \"Body must be a string. Received: \".concat(inspect(body), \".\"));\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n this.locationOffset.line > 0 || devAssert(0, 'line in locationOffset is 1-indexed and must be positive.');\n this.locationOffset.column > 0 || devAssert(0, 'column in locationOffset is 1-indexed and must be positive.');\n } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n\n _createClass(Source, [{\n key: SYMBOL_TO_STRING_TAG,\n get: function get() {\n return 'Source';\n }\n }]);\n\n return Source;\n}();\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\n// eslint-disable-next-line no-redeclare\nexport function isSource(source) {\n return instanceOf(source, Source);\n}\n","/**\n * The set of allowed directive location values.\n */\nexport var DirectiveLocation = Object.freeze({\n // Request Definitions\n QUERY: 'QUERY',\n MUTATION: 'MUTATION',\n SUBSCRIPTION: 'SUBSCRIPTION',\n FIELD: 'FIELD',\n FRAGMENT_DEFINITION: 'FRAGMENT_DEFINITION',\n FRAGMENT_SPREAD: 'FRAGMENT_SPREAD',\n INLINE_FRAGMENT: 'INLINE_FRAGMENT',\n VARIABLE_DEFINITION: 'VARIABLE_DEFINITION',\n // Type System Definitions\n SCHEMA: 'SCHEMA',\n SCALAR: 'SCALAR',\n OBJECT: 'OBJECT',\n FIELD_DEFINITION: 'FIELD_DEFINITION',\n ARGUMENT_DEFINITION: 'ARGUMENT_DEFINITION',\n INTERFACE: 'INTERFACE',\n UNION: 'UNION',\n ENUM: 'ENUM',\n ENUM_VALUE: 'ENUM_VALUE',\n INPUT_OBJECT: 'INPUT_OBJECT',\n INPUT_FIELD_DEFINITION: 'INPUT_FIELD_DEFINITION'\n});\n/**\n * The enum type representing the directive location values.\n */\n","/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\nexport function dedentBlockStringValue(rawString) {\n // Expand a block string's raw value into independent lines.\n var lines = rawString.split(/\\r\\n|[\\n\\r]/g); // Remove common indentation from all lines but first.\n\n var commonIndent = getBlockStringIndentation(rawString);\n\n if (commonIndent !== 0) {\n for (var i = 1; i < lines.length; i++) {\n lines[i] = lines[i].slice(commonIndent);\n }\n } // Remove leading and trailing blank lines.\n\n\n var startLine = 0;\n\n while (startLine < lines.length && isBlank(lines[startLine])) {\n ++startLine;\n }\n\n var endLine = lines.length;\n\n while (endLine > startLine && isBlank(lines[endLine - 1])) {\n --endLine;\n } // Return a string of the lines joined with U+000A.\n\n\n return lines.slice(startLine, endLine).join('\\n');\n}\n\nfunction isBlank(str) {\n for (var i = 0; i < str.length; ++i) {\n if (str[i] !== ' ' && str[i] !== '\\t') {\n return false;\n }\n }\n\n return true;\n}\n/**\n * @internal\n */\n\n\nexport function getBlockStringIndentation(value) {\n var _commonIndent;\n\n var isFirstLine = true;\n var isEmptyLine = true;\n var indent = 0;\n var commonIndent = null;\n\n for (var i = 0; i < value.length; ++i) {\n switch (value.charCodeAt(i)) {\n case 13:\n // \\r\n if (value.charCodeAt(i + 1) === 10) {\n ++i; // skip \\r\\n as one symbol\n }\n\n // falls through\n\n case 10:\n // \\n\n isFirstLine = false;\n isEmptyLine = true;\n indent = 0;\n break;\n\n case 9: // \\t\n\n case 32:\n // \n ++indent;\n break;\n\n default:\n if (isEmptyLine && !isFirstLine && (commonIndent === null || indent < commonIndent)) {\n commonIndent = indent;\n }\n\n isEmptyLine = false;\n }\n }\n\n return (_commonIndent = commonIndent) !== null && _commonIndent !== void 0 ? _commonIndent : 0;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nexport function printBlockString(value) {\n var indentation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var preferMultipleLines = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isSingleLine = value.indexOf('\\n') === -1;\n var hasLeadingSpace = value[0] === ' ' || value[0] === '\\t';\n var hasTrailingQuote = value[value.length - 1] === '\"';\n var hasTrailingSlash = value[value.length - 1] === '\\\\';\n var printAsMultipleLines = !isSingleLine || hasTrailingQuote || hasTrailingSlash || preferMultipleLines;\n var result = ''; // Format a multi-line block quote to account for leading space.\n\n if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {\n result += '\\n' + indentation;\n }\n\n result += indentation ? value.replace(/\\n/g, '\\n' + indentation) : value;\n\n if (printAsMultipleLines) {\n result += '\\n';\n }\n\n return '\"\"\"' + result.replace(/\"\"\"/g, '\\\\\"\"\"') + '\"\"\"';\n}\n","import { syntaxError } from \"../error/syntaxError.mjs\";\nimport { Token } from \"./ast.mjs\";\nimport { TokenKind } from \"./tokenKind.mjs\";\nimport { dedentBlockStringValue } from \"./blockString.mjs\";\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nexport var Lexer = /*#__PURE__*/function () {\n /**\n * The previously focused non-ignored token.\n */\n\n /**\n * The currently focused non-ignored token.\n */\n\n /**\n * The (1-indexed) line containing the current token.\n */\n\n /**\n * The character offset at which the current line begins.\n */\n function Lexer(source) {\n var startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0, null);\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n this.line = 1;\n this.lineStart = 0;\n }\n /**\n * Advances the token stream to the next non-ignored token.\n */\n\n\n var _proto = Lexer.prototype;\n\n _proto.advance = function advance() {\n this.lastToken = this.token;\n var token = this.token = this.lookahead();\n return token;\n }\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the state of Lexer.\n */\n ;\n\n _proto.lookahead = function lookahead() {\n var token = this.token;\n\n if (token.kind !== TokenKind.EOF) {\n do {\n var _token$next;\n\n // Note: next is only mutable during parsing, so we cast to allow this.\n token = (_token$next = token.next) !== null && _token$next !== void 0 ? _token$next : token.next = readToken(this, token);\n } while (token.kind === TokenKind.COMMENT);\n }\n\n return token;\n };\n\n return Lexer;\n}();\n/**\n * @internal\n */\n\nexport function isPunctuatorTokenKind(kind) {\n return kind === TokenKind.BANG || kind === TokenKind.DOLLAR || kind === TokenKind.AMP || kind === TokenKind.PAREN_L || kind === TokenKind.PAREN_R || kind === TokenKind.SPREAD || kind === TokenKind.COLON || kind === TokenKind.EQUALS || kind === TokenKind.AT || kind === TokenKind.BRACKET_L || kind === TokenKind.BRACKET_R || kind === TokenKind.BRACE_L || kind === TokenKind.PIPE || kind === TokenKind.BRACE_R;\n}\n\nfunction printCharCode(code) {\n return (// NaN/undefined represents access beyond the end of the file.\n isNaN(code) ? TokenKind.EOF : // Trust JSON for ASCII.\n code < 0x007f ? JSON.stringify(String.fromCharCode(code)) : // Otherwise print the escaped form.\n \"\\\"\\\\u\".concat(('00' + code.toString(16).toUpperCase()).slice(-4), \"\\\"\")\n );\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\n\nfunction readToken(lexer, prev) {\n var source = lexer.source;\n var body = source.body;\n var bodyLength = body.length;\n var pos = prev.end;\n\n while (pos < bodyLength) {\n var code = body.charCodeAt(pos);\n var _line = lexer.line;\n\n var _col = 1 + pos - lexer.lineStart; // SourceCharacter\n\n\n switch (code) {\n case 0xfeff: // \n\n case 9: // \\t\n\n case 32: // \n\n case 44:\n // ,\n ++pos;\n continue;\n\n case 10:\n // \\n\n ++pos;\n ++lexer.line;\n lexer.lineStart = pos;\n continue;\n\n case 13:\n // \\r\n if (body.charCodeAt(pos + 1) === 10) {\n pos += 2;\n } else {\n ++pos;\n }\n\n ++lexer.line;\n lexer.lineStart = pos;\n continue;\n\n case 33:\n // !\n return new Token(TokenKind.BANG, pos, pos + 1, _line, _col, prev);\n\n case 35:\n // #\n return readComment(source, pos, _line, _col, prev);\n\n case 36:\n // $\n return new Token(TokenKind.DOLLAR, pos, pos + 1, _line, _col, prev);\n\n case 38:\n // &\n return new Token(TokenKind.AMP, pos, pos + 1, _line, _col, prev);\n\n case 40:\n // (\n return new Token(TokenKind.PAREN_L, pos, pos + 1, _line, _col, prev);\n\n case 41:\n // )\n return new Token(TokenKind.PAREN_R, pos, pos + 1, _line, _col, prev);\n\n case 46:\n // .\n if (body.charCodeAt(pos + 1) === 46 && body.charCodeAt(pos + 2) === 46) {\n return new Token(TokenKind.SPREAD, pos, pos + 3, _line, _col, prev);\n }\n\n break;\n\n case 58:\n // :\n return new Token(TokenKind.COLON, pos, pos + 1, _line, _col, prev);\n\n case 61:\n // =\n return new Token(TokenKind.EQUALS, pos, pos + 1, _line, _col, prev);\n\n case 64:\n // @\n return new Token(TokenKind.AT, pos, pos + 1, _line, _col, prev);\n\n case 91:\n // [\n return new Token(TokenKind.BRACKET_L, pos, pos + 1, _line, _col, prev);\n\n case 93:\n // ]\n return new Token(TokenKind.BRACKET_R, pos, pos + 1, _line, _col, prev);\n\n case 123:\n // {\n return new Token(TokenKind.BRACE_L, pos, pos + 1, _line, _col, prev);\n\n case 124:\n // |\n return new Token(TokenKind.PIPE, pos, pos + 1, _line, _col, prev);\n\n case 125:\n // }\n return new Token(TokenKind.BRACE_R, pos, pos + 1, _line, _col, prev);\n\n case 34:\n // \"\n if (body.charCodeAt(pos + 1) === 34 && body.charCodeAt(pos + 2) === 34) {\n return readBlockString(source, pos, _line, _col, prev, lexer);\n }\n\n return readString(source, pos, _line, _col, prev);\n\n case 45: // -\n\n case 48: // 0\n\n case 49: // 1\n\n case 50: // 2\n\n case 51: // 3\n\n case 52: // 4\n\n case 53: // 5\n\n case 54: // 6\n\n case 55: // 7\n\n case 56: // 8\n\n case 57:\n // 9\n return readNumber(source, pos, code, _line, _col, prev);\n\n case 65: // A\n\n case 66: // B\n\n case 67: // C\n\n case 68: // D\n\n case 69: // E\n\n case 70: // F\n\n case 71: // G\n\n case 72: // H\n\n case 73: // I\n\n case 74: // J\n\n case 75: // K\n\n case 76: // L\n\n case 77: // M\n\n case 78: // N\n\n case 79: // O\n\n case 80: // P\n\n case 81: // Q\n\n case 82: // R\n\n case 83: // S\n\n case 84: // T\n\n case 85: // U\n\n case 86: // V\n\n case 87: // W\n\n case 88: // X\n\n case 89: // Y\n\n case 90: // Z\n\n case 95: // _\n\n case 97: // a\n\n case 98: // b\n\n case 99: // c\n\n case 100: // d\n\n case 101: // e\n\n case 102: // f\n\n case 103: // g\n\n case 104: // h\n\n case 105: // i\n\n case 106: // j\n\n case 107: // k\n\n case 108: // l\n\n case 109: // m\n\n case 110: // n\n\n case 111: // o\n\n case 112: // p\n\n case 113: // q\n\n case 114: // r\n\n case 115: // s\n\n case 116: // t\n\n case 117: // u\n\n case 118: // v\n\n case 119: // w\n\n case 120: // x\n\n case 121: // y\n\n case 122:\n // z\n return readName(source, pos, _line, _col, prev);\n }\n\n throw syntaxError(source, pos, unexpectedCharacterMessage(code));\n }\n\n var line = lexer.line;\n var col = 1 + pos - lexer.lineStart;\n return new Token(TokenKind.EOF, bodyLength, bodyLength, line, col, prev);\n}\n/**\n * Report a message that an unexpected character was encountered.\n */\n\n\nfunction unexpectedCharacterMessage(code) {\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n return \"Cannot contain the invalid character \".concat(printCharCode(code), \".\");\n }\n\n if (code === 39) {\n // '\n return 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?';\n }\n\n return \"Cannot parse the unexpected character \".concat(printCharCode(code), \".\");\n}\n/**\n * Reads a comment token from the source file.\n *\n * #[\\u0009\\u0020-\\uFFFF]*\n */\n\n\nfunction readComment(source, start, line, col, prev) {\n var body = source.body;\n var code;\n var position = start;\n\n do {\n code = body.charCodeAt(++position);\n } while (!isNaN(code) && ( // SourceCharacter but not LineTerminator\n code > 0x001f || code === 0x0009));\n\n return new Token(TokenKind.COMMENT, start, position, line, col, prev, body.slice(start + 1, position));\n}\n/**\n * Reads a number token from the source file, either a float\n * or an int depending on whether a decimal point appears.\n *\n * Int: -?(0|[1-9][0-9]*)\n * Float: -?(0|[1-9][0-9]*)(\\.[0-9]+)?((E|e)(+|-)?[0-9]+)?\n */\n\n\nfunction readNumber(source, start, firstCode, line, col, prev) {\n var body = source.body;\n var code = firstCode;\n var position = start;\n var isFloat = false;\n\n if (code === 45) {\n // -\n code = body.charCodeAt(++position);\n }\n\n if (code === 48) {\n // 0\n code = body.charCodeAt(++position);\n\n if (code >= 48 && code <= 57) {\n throw syntaxError(source, position, \"Invalid number, unexpected digit after 0: \".concat(printCharCode(code), \".\"));\n }\n } else {\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 46) {\n // .\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 69 || code === 101) {\n // E e\n isFloat = true;\n code = body.charCodeAt(++position);\n\n if (code === 43 || code === 45) {\n // + -\n code = body.charCodeAt(++position);\n }\n\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or NameStart\n\n\n if (code === 46 || isNameStart(code)) {\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n }\n\n return new Token(isFloat ? TokenKind.FLOAT : TokenKind.INT, start, position, line, col, prev, body.slice(start, position));\n}\n/**\n * Returns the new position in the source after reading digits.\n */\n\n\nfunction readDigits(source, start, firstCode) {\n var body = source.body;\n var position = start;\n var code = firstCode;\n\n if (code >= 48 && code <= 57) {\n // 0 - 9\n do {\n code = body.charCodeAt(++position);\n } while (code >= 48 && code <= 57); // 0 - 9\n\n\n return position;\n }\n\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n}\n/**\n * Reads a string token from the source file.\n *\n * \"([^\"\\\\\\u000A\\u000D]|(\\\\(u[0-9a-fA-F]{4}|[\"\\\\/bfnrt])))*\"\n */\n\n\nfunction readString(source, start, line, col, prev) {\n var body = source.body;\n var position = start + 1;\n var chunkStart = position;\n var code = 0;\n var value = '';\n\n while (position < body.length && !isNaN(code = body.charCodeAt(position)) && // not LineTerminator\n code !== 0x000a && code !== 0x000d) {\n // Closing Quote (\")\n if (code === 34) {\n value += body.slice(chunkStart, position);\n return new Token(TokenKind.STRING, start, position + 1, line, col, prev, value);\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n ++position;\n\n if (code === 92) {\n // \\\n value += body.slice(chunkStart, position - 1);\n code = body.charCodeAt(position);\n\n switch (code) {\n case 34:\n value += '\"';\n break;\n\n case 47:\n value += '/';\n break;\n\n case 92:\n value += '\\\\';\n break;\n\n case 98:\n value += '\\b';\n break;\n\n case 102:\n value += '\\f';\n break;\n\n case 110:\n value += '\\n';\n break;\n\n case 114:\n value += '\\r';\n break;\n\n case 116:\n value += '\\t';\n break;\n\n case 117:\n {\n // uXXXX\n var charCode = uniCharCode(body.charCodeAt(position + 1), body.charCodeAt(position + 2), body.charCodeAt(position + 3), body.charCodeAt(position + 4));\n\n if (charCode < 0) {\n var invalidSequence = body.slice(position + 1, position + 5);\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\u\".concat(invalidSequence, \".\"));\n }\n\n value += String.fromCharCode(charCode);\n position += 4;\n break;\n }\n\n default:\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\\".concat(String.fromCharCode(code), \".\"));\n }\n\n ++position;\n chunkStart = position;\n }\n }\n\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Reads a block string token from the source file.\n *\n * \"\"\"(\"?\"?(\\\\\"\"\"|\\\\(?!=\"\"\")|[^\"\\\\]))*\"\"\"\n */\n\n\nfunction readBlockString(source, start, line, col, prev, lexer) {\n var body = source.body;\n var position = start + 3;\n var chunkStart = position;\n var code = 0;\n var rawValue = '';\n\n while (position < body.length && !isNaN(code = body.charCodeAt(position))) {\n // Closing Triple-Quote (\"\"\")\n if (code === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) {\n rawValue += body.slice(chunkStart, position);\n return new Token(TokenKind.BLOCK_STRING, start, position + 3, line, col, prev, dedentBlockStringValue(rawValue));\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n if (code === 10) {\n // new line\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n } else if (code === 13) {\n // carriage return\n if (body.charCodeAt(position + 1) === 10) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n } else if ( // Escape Triple-Quote (\\\"\"\")\n code === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34) {\n rawValue += body.slice(chunkStart, position) + '\"\"\"';\n position += 4;\n chunkStart = position;\n } else {\n ++position;\n }\n }\n\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Converts four hexadecimal chars to the integer that the\n * string represents. For example, uniCharCode('0','0','0','f')\n * will return 15, and uniCharCode('0','0','f','f') returns 255.\n *\n * Returns a negative number on error, if a char was invalid.\n *\n * This is implemented by noting that char2hex() returns -1 on error,\n * which means the result of ORing the char2hex() will also be negative.\n */\n\n\nfunction uniCharCode(a, b, c, d) {\n return char2hex(a) << 12 | char2hex(b) << 8 | char2hex(c) << 4 | char2hex(d);\n}\n/**\n * Converts a hex character to its integer value.\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 on error.\n */\n\n\nfunction char2hex(a) {\n return a >= 48 && a <= 57 ? a - 48 // 0-9\n : a >= 65 && a <= 70 ? a - 55 // A-F\n : a >= 97 && a <= 102 ? a - 87 // a-f\n : -1;\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * [_A-Za-z][_0-9A-Za-z]*\n */\n\n\nfunction readName(source, start, line, col, prev) {\n var body = source.body;\n var bodyLength = body.length;\n var position = start + 1;\n var code = 0;\n\n while (position !== bodyLength && !isNaN(code = body.charCodeAt(position)) && (code === 95 || // _\n code >= 48 && code <= 57 || // 0-9\n code >= 65 && code <= 90 || // A-Z\n code >= 97 && code <= 122) // a-z\n ) {\n ++position;\n }\n\n return new Token(TokenKind.NAME, start, position, line, col, prev, body.slice(start, position));\n} // _ A-Z a-z\n\n\nfunction isNameStart(code) {\n return code === 95 || code >= 65 && code <= 90 || code >= 97 && code <= 122;\n}\n","import { syntaxError } from \"../error/syntaxError.mjs\";\nimport { Kind } from \"./kinds.mjs\";\nimport { Location } from \"./ast.mjs\";\nimport { TokenKind } from \"./tokenKind.mjs\";\nimport { Source, isSource } from \"./source.mjs\";\nimport { DirectiveLocation } from \"./directiveLocation.mjs\";\nimport { Lexer, isPunctuatorTokenKind } from \"./lexer.mjs\";\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nexport function parse(source, options) {\n var parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n var value = parser.parseValueLiteral(false);\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n var type = parser.parseTypeReference();\n parser.expectToken(TokenKind.EOF);\n return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nexport var Parser = /*#__PURE__*/function () {\n function Parser(source, options) {\n var sourceObj = isSource(source) ? source : new Source(source);\n this._lexer = new Lexer(sourceObj);\n this._options = options;\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n\n var _proto = Parser.prototype;\n\n _proto.parseName = function parseName() {\n var token = this.expectToken(TokenKind.NAME);\n return {\n kind: Kind.NAME,\n value: token.value,\n loc: this.loc(token)\n };\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n ;\n\n _proto.parseDocument = function parseDocument() {\n var start = this._lexer.token;\n return {\n kind: Kind.DOCUMENT,\n definitions: this.many(TokenKind.SOF, this.parseDefinition, TokenKind.EOF),\n loc: this.loc(start)\n };\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n */\n ;\n\n _proto.parseDefinition = function parseDefinition() {\n if (this.peek(TokenKind.NAME)) {\n switch (this._lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\n\n case 'schema':\n case 'scalar':\n case 'type':\n case 'interface':\n case 'union':\n case 'enum':\n case 'input':\n case 'directive':\n return this.parseTypeSystemDefinition();\n\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n } else if (this.peek(TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } else if (this.peekDescription()) {\n return this.parseTypeSystemDefinition();\n }\n\n throw this.unexpected();\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n ;\n\n _proto.parseOperationDefinition = function parseOperationDefinition() {\n var start = this._lexer.token;\n\n if (this.peek(TokenKind.BRACE_L)) {\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: 'query',\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n var operation = this.parseOperationType();\n var name;\n\n if (this.peek(TokenKind.NAME)) {\n name = this.parseName();\n }\n\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: operation,\n name: name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * OperationType : one of query mutation subscription\n */\n ;\n\n _proto.parseOperationType = function parseOperationType() {\n var operationToken = this.expectToken(TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return 'query';\n\n case 'mutation':\n return 'mutation';\n\n case 'subscription':\n return 'subscription';\n }\n\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n ;\n\n _proto.parseVariableDefinitions = function parseVariableDefinitions() {\n return this.optionalMany(TokenKind.PAREN_L, this.parseVariableDefinition, TokenKind.PAREN_R);\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseVariableDefinition = function parseVariableDefinition() {\n var start = this._lexer.token;\n return {\n kind: Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(TokenKind.EQUALS) ? this.parseValueLiteral(true) : undefined,\n directives: this.parseDirectives(true),\n loc: this.loc(start)\n };\n }\n /**\n * Variable : $ Name\n */\n ;\n\n _proto.parseVariable = function parseVariable() {\n var start = this._lexer.token;\n this.expectToken(TokenKind.DOLLAR);\n return {\n kind: Kind.VARIABLE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n }\n /**\n * SelectionSet : { Selection+ }\n */\n ;\n\n _proto.parseSelectionSet = function parseSelectionSet() {\n var start = this._lexer.token;\n return {\n kind: Kind.SELECTION_SET,\n selections: this.many(TokenKind.BRACE_L, this.parseSelection, TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n ;\n\n _proto.parseSelection = function parseSelection() {\n return this.peek(TokenKind.SPREAD) ? this.parseFragment() : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n ;\n\n _proto.parseField = function parseField() {\n var start = this._lexer.token;\n var nameOrAlias = this.parseName();\n var alias;\n var name;\n\n if (this.expectOptionalToken(TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return {\n kind: Kind.FIELD,\n alias: alias,\n name: name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(TokenKind.BRACE_L) ? this.parseSelectionSet() : undefined,\n loc: this.loc(start)\n };\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n ;\n\n _proto.parseArguments = function parseArguments(isConst) {\n var item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseArgument = function parseArgument() {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return {\n kind: Kind.ARGUMENT,\n name: name,\n value: this.parseValueLiteral(false),\n loc: this.loc(start)\n };\n };\n\n _proto.parseConstArgument = function parseConstArgument() {\n var start = this._lexer.token;\n return {\n kind: Kind.ARGUMENT,\n name: this.parseName(),\n value: (this.expectToken(TokenKind.COLON), this.parseValueLiteral(true)),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n ;\n\n _proto.parseFragment = function parseFragment() {\n var start = this._lexer.token;\n this.expectToken(TokenKind.SPREAD);\n var hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n return {\n kind: Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n ;\n\n _proto.parseFragmentDefinition = function parseFragmentDefinition() {\n var _this$_options;\n\n var start = this._lexer.token;\n this.expectKeyword('fragment'); // Experimental support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (((_this$_options = this._options) === null || _this$_options === void 0 ? void 0 : _this$_options.experimentalFragmentVariables) === true) {\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentName : Name but not `on`\n */\n ;\n\n _proto.parseFragmentName = function parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n ;\n\n _proto.parseValueLiteral = function parseValueLiteral(isConst) {\n var token = this._lexer.token;\n\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return this.parseList(isConst);\n\n case TokenKind.BRACE_L:\n return this.parseObject(isConst);\n\n case TokenKind.INT:\n this._lexer.advance();\n\n return {\n kind: Kind.INT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case TokenKind.FLOAT:\n this._lexer.advance();\n\n return {\n kind: Kind.FLOAT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n\n case TokenKind.NAME:\n this._lexer.advance();\n\n switch (token.value) {\n case 'true':\n return {\n kind: Kind.BOOLEAN,\n value: true,\n loc: this.loc(token)\n };\n\n case 'false':\n return {\n kind: Kind.BOOLEAN,\n value: false,\n loc: this.loc(token)\n };\n\n case 'null':\n return {\n kind: Kind.NULL,\n loc: this.loc(token)\n };\n\n default:\n return {\n kind: Kind.ENUM,\n value: token.value,\n loc: this.loc(token)\n };\n }\n\n case TokenKind.DOLLAR:\n if (!isConst) {\n return this.parseVariable();\n }\n\n break;\n }\n\n throw this.unexpected();\n };\n\n _proto.parseStringLiteral = function parseStringLiteral() {\n var token = this._lexer.token;\n\n this._lexer.advance();\n\n return {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n loc: this.loc(token)\n };\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n ;\n\n _proto.parseList = function parseList(isConst) {\n var _this = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this.parseValueLiteral(isConst);\n };\n\n return {\n kind: Kind.LIST,\n values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n */\n ;\n\n _proto.parseObject = function parseObject(isConst) {\n var _this2 = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this2.parseObjectField(isConst);\n };\n\n return {\n kind: Kind.OBJECT,\n fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseObjectField = function parseObjectField(isConst) {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return {\n kind: Kind.OBJECT_FIELD,\n name: name,\n value: this.parseValueLiteral(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n ;\n\n _proto.parseDirectives = function parseDirectives(isConst) {\n var directives = [];\n\n while (this.peek(TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n /**\n * Directive[Const] : @ Name Arguments[?Const]?\n */\n ;\n\n _proto.parseDirective = function parseDirective(isConst) {\n var start = this._lexer.token;\n this.expectToken(TokenKind.AT);\n return {\n kind: Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n ;\n\n _proto.parseTypeReference = function parseTypeReference() {\n var start = this._lexer.token;\n var type;\n\n if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n type = this.parseTypeReference();\n this.expectToken(TokenKind.BRACKET_R);\n type = {\n kind: Kind.LIST_TYPE,\n type: type,\n loc: this.loc(start)\n };\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(TokenKind.BANG)) {\n return {\n kind: Kind.NON_NULL_TYPE,\n type: type,\n loc: this.loc(start)\n };\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n ;\n\n _proto.parseNamedType = function parseNamedType() {\n var start = this._lexer.token;\n return {\n kind: Kind.NAMED_TYPE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Type Definition section.\n\n /**\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n ;\n\n _proto.parseTypeSystemDefinition = function parseTypeSystemDefinition() {\n // Many definitions begin with a description and require a lookahead.\n var keywordToken = this.peekDescription() ? this._lexer.lookahead() : this._lexer.token;\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n }\n\n throw this.unexpected(keywordToken);\n };\n\n _proto.peekDescription = function peekDescription() {\n return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */\n ;\n\n _proto.parseDescription = function parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n */\n ;\n\n _proto.parseSchemaDefinition = function parseSchemaDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.many(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);\n return {\n kind: Kind.SCHEMA_DEFINITION,\n description: description,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n ;\n\n _proto.parseOperationTypeDefinition = function parseOperationTypeDefinition() {\n var start = this._lexer.token;\n var operation = this.parseOperationType();\n this.expectToken(TokenKind.COLON);\n var type = this.parseNamedType();\n return {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation: operation,\n type: type,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n ;\n\n _proto.parseScalarTypeDefinition = function parseScalarTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseObjectTypeDefinition = function parseObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n ;\n\n _proto.parseImplementsInterfaces = function parseImplementsInterfaces() {\n var _this$_options2;\n\n if (!this.expectOptionalKeyword('implements')) {\n return [];\n }\n\n if (((_this$_options2 = this._options) === null || _this$_options2 === void 0 ? void 0 : _this$_options2.allowLegacySDLImplementsInterfaces) === true) {\n var types = []; // Optional leading ampersand\n\n this.expectOptionalToken(TokenKind.AMP);\n\n do {\n types.push(this.parseNamedType());\n } while (this.expectOptionalToken(TokenKind.AMP) || this.peek(TokenKind.NAME));\n\n return types;\n }\n\n return this.delimitedMany(TokenKind.AMP, this.parseNamedType);\n }\n /**\n * FieldsDefinition : { FieldDefinition+ }\n */\n ;\n\n _proto.parseFieldsDefinition = function parseFieldsDefinition() {\n var _this$_options3;\n\n // Legacy support for the SDL?\n if (((_this$_options3 = this._options) === null || _this$_options3 === void 0 ? void 0 : _this$_options3.allowLegacySDLEmptyFields) === true && this.peek(TokenKind.BRACE_L) && this._lexer.lookahead().kind === TokenKind.BRACE_R) {\n this._lexer.advance();\n\n this._lexer.advance();\n\n return [];\n }\n\n return this.optionalMany(TokenKind.BRACE_L, this.parseFieldDefinition, TokenKind.BRACE_R);\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n ;\n\n _proto.parseFieldDefinition = function parseFieldDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n this.expectToken(TokenKind.COLON);\n var type = this.parseTypeReference();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.FIELD_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n type: type,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n ;\n\n _proto.parseArgumentDefs = function parseArgumentDefs() {\n return this.optionalMany(TokenKind.PAREN_L, this.parseInputValueDef, TokenKind.PAREN_R);\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseInputValueDef = function parseInputValueDef() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n var type = this.parseTypeReference();\n var defaultValue;\n\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n defaultValue = this.parseValueLiteral(true);\n }\n\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description: description,\n name: name,\n type: type,\n defaultValue: defaultValue,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseInterfaceTypeDefinition = function parseInterfaceTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('interface');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n ;\n\n _proto.parseUnionTypeDefinition = function parseUnionTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n ;\n\n _proto.parseUnionMemberTypes = function parseUnionMemberTypes() {\n return this.expectOptionalToken(TokenKind.EQUALS) ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType) : [];\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n ;\n\n _proto.parseEnumTypeDefinition = function parseEnumTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * EnumValuesDefinition : { EnumValueDefinition+ }\n */\n ;\n\n _proto.parseEnumValuesDefinition = function parseEnumValuesDefinition() {\n return this.optionalMany(TokenKind.BRACE_L, this.parseEnumValueDefinition, TokenKind.BRACE_R);\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n *\n * EnumValue : Name\n */\n ;\n\n _proto.parseEnumValueDefinition = function parseEnumValueDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n ;\n\n _proto.parseInputObjectTypeDefinition = function parseInputObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InputFieldsDefinition : { InputValueDefinition+ }\n */\n ;\n\n _proto.parseInputFieldsDefinition = function parseInputFieldsDefinition() {\n return this.optionalMany(TokenKind.BRACE_L, this.parseInputValueDef, TokenKind.BRACE_R);\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n ;\n\n _proto.parseTypeSystemExtension = function parseTypeSystemExtension() {\n var keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n */\n ;\n\n _proto.parseSchemaExtension = function parseSchemaExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.optionalMany(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.SCHEMA_EXTENSION,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n ;\n\n _proto.parseScalarTypeExtension = function parseScalarTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n ;\n\n _proto.parseObjectTypeExtension = function parseObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */\n ;\n\n _proto.parseInterfaceTypeExtension = function parseInterfaceTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n ;\n\n _proto.parseUnionTypeExtension = function parseUnionTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.UNION_TYPE_EXTENSION,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n ;\n\n _proto.parseEnumTypeExtension = function parseEnumTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n ;\n\n _proto.parseInputObjectTypeExtension = function parseInputObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n */\n ;\n\n _proto.parseDirectiveDefinition = function parseDirectiveDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(TokenKind.AT);\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n var repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n var locations = this.parseDirectiveLocations();\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n repeatable: repeatable,\n locations: locations,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n ;\n\n _proto.parseDirectiveLocations = function parseDirectiveLocations() {\n return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n ;\n\n _proto.parseDirectiveLocation = function parseDirectiveLocation() {\n var start = this._lexer.token;\n var name = this.parseName();\n\n if (DirectiveLocation[name.value] !== undefined) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a location object, used to identify the place in the source that created a given parsed object.\n */\n ;\n\n _proto.loc = function loc(startToken) {\n var _this$_options4;\n\n if (((_this$_options4 = this._options) === null || _this$_options4 === void 0 ? void 0 : _this$_options4.noLocation) !== true) {\n return new Location(startToken, this._lexer.lastToken, this._lexer.source);\n }\n }\n /**\n * Determines if the next token is of a given kind\n */\n ;\n\n _proto.peek = function peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectToken = function expectToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n throw syntaxError(this._lexer.source, token.start, \"Expected \".concat(getTokenKindDesc(kind), \", found \").concat(getTokenDesc(token), \".\"));\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and return undefined.\n */\n ;\n\n _proto.expectOptionalToken = function expectOptionalToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n return undefined;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectKeyword = function expectKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n } else {\n throw syntaxError(this._lexer.source, token.start, \"Expected \\\"\".concat(value, \"\\\", found \").concat(getTokenDesc(token), \".\"));\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n ;\n\n _proto.expectOptionalKeyword = function expectOptionalKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */\n ;\n\n _proto.unexpected = function unexpected(atToken) {\n var token = atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n return syntaxError(this._lexer.source, token.start, \"Unexpected \".concat(getTokenDesc(token), \".\"));\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.any = function any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.optionalMany = function optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.many = function many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */\n ;\n\n _proto.delimitedMany = function delimitedMany(delimiterKind, parseFn) {\n this.expectOptionalToken(delimiterKind);\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n\n return nodes;\n };\n\n return Parser;\n}();\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nfunction getTokenDesc(token) {\n var value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? \" \\\"\".concat(value, \"\\\"\") : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\n\nfunction getTokenKindDesc(kind) {\n return isPunctuatorTokenKind(kind) ? \"\\\"\".concat(kind, \"\\\"\") : kind;\n}\n","import inspect from \"../jsutils/inspect.mjs\";\nimport { isNode } from \"./ast.mjs\";\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\nexport var QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: ['name', // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n 'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['description', 'directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: ['description', 'name', 'type', 'defaultValue', 'directives'],\n InterfaceTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields']\n};\nexport var BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to four permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n *\n * 2) Named visitors that trigger upon entering and leaving a node of\n * a specific kind.\n *\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n *\n * 4) Parallel visitors for entering and leaving nodes of a specific kind.\n *\n * visit(ast, {\n * enter: {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * },\n * leave: {\n * Kind(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n */\n\nexport function visit(root, visitor) {\n var visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n\n /* eslint-disable no-undef-init */\n var stack = undefined;\n var inArray = Array.isArray(root);\n var keys = [root];\n var index = -1;\n var edits = [];\n var node = undefined;\n var key = undefined;\n var parent = undefined;\n var path = [];\n var ancestors = [];\n var newRoot = root;\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n var isLeaving = index === keys.length;\n var isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n } else {\n var clone = {};\n\n for (var _i2 = 0, _Object$keys2 = Object.keys(node); _i2 < _Object$keys2.length; _i2++) {\n var k = _Object$keys2[_i2];\n clone[k] = node[k];\n }\n\n node = clone;\n }\n\n var editOffset = 0;\n\n for (var ii = 0; ii < edits.length; ii++) {\n var editKey = edits[ii][0];\n var editValue = edits[ii][1];\n\n if (inArray) {\n editKey -= editOffset;\n }\n\n if (inArray && editValue === null) {\n node.splice(editKey, 1);\n editOffset++;\n } else {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else {\n key = parent ? inArray ? index : keys[index] : undefined;\n node = parent ? parent[key] : newRoot;\n\n if (node === null || node === undefined) {\n continue;\n }\n\n if (parent) {\n path.push(key);\n }\n }\n\n var result = void 0;\n\n if (!Array.isArray(node)) {\n if (!isNode(node)) {\n throw new Error(\"Invalid AST Node: \".concat(inspect(node), \".\"));\n }\n\n var visitFn = getVisitFn(visitor, node.kind, isLeaving);\n\n if (visitFn) {\n result = visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n var _visitorKeys$node$kin;\n\n stack = {\n inArray: inArray,\n index: index,\n keys: keys,\n edits: edits,\n prev: stack\n };\n inArray = Array.isArray(node);\n keys = inArray ? node : (_visitorKeys$node$kin = visitorKeys[node.kind]) !== null && _visitorKeys$node$kin !== void 0 ? _visitorKeys$node$kin : [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n newRoot = edits[edits.length - 1][1];\n }\n\n return newRoot;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nexport function visitInParallel(visitors) {\n var skipping = new Array(visitors.length);\n return {\n enter: function enter(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (skipping[i] == null) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n }\n },\n leave: function leave(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (skipping[i] == null) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n true);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n }\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n var kindVisitor = visitor[kind];\n\n if (kindVisitor) {\n if (!isLeaving && typeof kindVisitor === 'function') {\n // { Kind() {} }\n return kindVisitor;\n }\n\n var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;\n\n if (typeof kindSpecificVisitor === 'function') {\n // { Kind: { enter() {}, leave() {} } }\n return kindSpecificVisitor;\n }\n } else {\n var specificVisitor = isLeaving ? visitor.leave : visitor.enter;\n\n if (specificVisitor) {\n if (typeof specificVisitor === 'function') {\n // { enter() {}, leave() {} }\n return specificVisitor;\n }\n\n var specificKindVisitor = specificVisitor[kind];\n\n if (typeof specificKindVisitor === 'function') {\n // { enter: { Kind() {} }, leave: { Kind() {} } }\n return specificKindVisitor;\n }\n }\n }\n}\n","import { visit } from \"./visitor.mjs\";\nimport { printBlockString } from \"./blockString.mjs\";\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nexport function print(ast) {\n return visit(ast, {\n leave: printDocASTReducer\n });\n}\nvar MAX_LINE_LENGTH = 80; // TODO: provide better type coverage in future\n\nvar printDocASTReducer = {\n Name: function Name(node) {\n return node.value;\n },\n Variable: function Variable(node) {\n return '$' + node.name;\n },\n // Document\n Document: function Document(node) {\n return join(node.definitions, '\\n\\n') + '\\n';\n },\n OperationDefinition: function OperationDefinition(node) {\n var op = node.operation;\n var name = node.name;\n var varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n var directives = join(node.directives, ' ');\n var selectionSet = node.selectionSet; // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return !name && !directives && !varDefs && op === 'query' ? selectionSet : join([op, join([name, varDefs]), directives, selectionSet], ' ');\n },\n VariableDefinition: function VariableDefinition(_ref) {\n var variable = _ref.variable,\n type = _ref.type,\n defaultValue = _ref.defaultValue,\n directives = _ref.directives;\n return variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' '));\n },\n SelectionSet: function SelectionSet(_ref2) {\n var selections = _ref2.selections;\n return block(selections);\n },\n Field: function Field(_ref3) {\n var alias = _ref3.alias,\n name = _ref3.name,\n args = _ref3.arguments,\n directives = _ref3.directives,\n selectionSet = _ref3.selectionSet;\n var prefix = wrap('', alias, ': ') + name;\n var argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n\n return join([argsLine, join(directives, ' '), selectionSet], ' ');\n },\n Argument: function Argument(_ref4) {\n var name = _ref4.name,\n value = _ref4.value;\n return name + ': ' + value;\n },\n // Fragments\n FragmentSpread: function FragmentSpread(_ref5) {\n var name = _ref5.name,\n directives = _ref5.directives;\n return '...' + name + wrap(' ', join(directives, ' '));\n },\n InlineFragment: function InlineFragment(_ref6) {\n var typeCondition = _ref6.typeCondition,\n directives = _ref6.directives,\n selectionSet = _ref6.selectionSet;\n return join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' ');\n },\n FragmentDefinition: function FragmentDefinition(_ref7) {\n var name = _ref7.name,\n typeCondition = _ref7.typeCondition,\n variableDefinitions = _ref7.variableDefinitions,\n directives = _ref7.directives,\n selectionSet = _ref7.selectionSet;\n return (// Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n \"fragment \".concat(name).concat(wrap('(', join(variableDefinitions, ', '), ')'), \" \") + \"on \".concat(typeCondition, \" \").concat(wrap('', join(directives, ' '), ' ')) + selectionSet\n );\n },\n // Value\n IntValue: function IntValue(_ref8) {\n var value = _ref8.value;\n return value;\n },\n FloatValue: function FloatValue(_ref9) {\n var value = _ref9.value;\n return value;\n },\n StringValue: function StringValue(_ref10, key) {\n var value = _ref10.value,\n isBlockString = _ref10.block;\n return isBlockString ? printBlockString(value, key === 'description' ? '' : ' ') : JSON.stringify(value);\n },\n BooleanValue: function BooleanValue(_ref11) {\n var value = _ref11.value;\n return value ? 'true' : 'false';\n },\n NullValue: function NullValue() {\n return 'null';\n },\n EnumValue: function EnumValue(_ref12) {\n var value = _ref12.value;\n return value;\n },\n ListValue: function ListValue(_ref13) {\n var values = _ref13.values;\n return '[' + join(values, ', ') + ']';\n },\n ObjectValue: function ObjectValue(_ref14) {\n var fields = _ref14.fields;\n return '{' + join(fields, ', ') + '}';\n },\n ObjectField: function ObjectField(_ref15) {\n var name = _ref15.name,\n value = _ref15.value;\n return name + ': ' + value;\n },\n // Directive\n Directive: function Directive(_ref16) {\n var name = _ref16.name,\n args = _ref16.arguments;\n return '@' + name + wrap('(', join(args, ', '), ')');\n },\n // Type\n NamedType: function NamedType(_ref17) {\n var name = _ref17.name;\n return name;\n },\n ListType: function ListType(_ref18) {\n var type = _ref18.type;\n return '[' + type + ']';\n },\n NonNullType: function NonNullType(_ref19) {\n var type = _ref19.type;\n return type + '!';\n },\n // Type System Definitions\n SchemaDefinition: addDescription(function (_ref20) {\n var directives = _ref20.directives,\n operationTypes = _ref20.operationTypes;\n return join(['schema', join(directives, ' '), block(operationTypes)], ' ');\n }),\n OperationTypeDefinition: function OperationTypeDefinition(_ref21) {\n var operation = _ref21.operation,\n type = _ref21.type;\n return operation + ': ' + type;\n },\n ScalarTypeDefinition: addDescription(function (_ref22) {\n var name = _ref22.name,\n directives = _ref22.directives;\n return join(['scalar', name, join(directives, ' ')], ' ');\n }),\n ObjectTypeDefinition: addDescription(function (_ref23) {\n var name = _ref23.name,\n interfaces = _ref23.interfaces,\n directives = _ref23.directives,\n fields = _ref23.fields;\n return join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n FieldDefinition: addDescription(function (_ref24) {\n var name = _ref24.name,\n args = _ref24.arguments,\n type = _ref24.type,\n directives = _ref24.directives;\n return name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + ': ' + type + wrap(' ', join(directives, ' '));\n }),\n InputValueDefinition: addDescription(function (_ref25) {\n var name = _ref25.name,\n type = _ref25.type,\n defaultValue = _ref25.defaultValue,\n directives = _ref25.directives;\n return join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' ');\n }),\n InterfaceTypeDefinition: addDescription(function (_ref26) {\n var name = _ref26.name,\n interfaces = _ref26.interfaces,\n directives = _ref26.directives,\n fields = _ref26.fields;\n return join(['interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n UnionTypeDefinition: addDescription(function (_ref27) {\n var name = _ref27.name,\n directives = _ref27.directives,\n types = _ref27.types;\n return join(['union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n }),\n EnumTypeDefinition: addDescription(function (_ref28) {\n var name = _ref28.name,\n directives = _ref28.directives,\n values = _ref28.values;\n return join(['enum', name, join(directives, ' '), block(values)], ' ');\n }),\n EnumValueDefinition: addDescription(function (_ref29) {\n var name = _ref29.name,\n directives = _ref29.directives;\n return join([name, join(directives, ' ')], ' ');\n }),\n InputObjectTypeDefinition: addDescription(function (_ref30) {\n var name = _ref30.name,\n directives = _ref30.directives,\n fields = _ref30.fields;\n return join(['input', name, join(directives, ' '), block(fields)], ' ');\n }),\n DirectiveDefinition: addDescription(function (_ref31) {\n var name = _ref31.name,\n args = _ref31.arguments,\n repeatable = _ref31.repeatable,\n locations = _ref31.locations;\n return 'directive @' + name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + (repeatable ? ' repeatable' : '') + ' on ' + join(locations, ' | ');\n }),\n SchemaExtension: function SchemaExtension(_ref32) {\n var directives = _ref32.directives,\n operationTypes = _ref32.operationTypes;\n return join(['extend schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n ScalarTypeExtension: function ScalarTypeExtension(_ref33) {\n var name = _ref33.name,\n directives = _ref33.directives;\n return join(['extend scalar', name, join(directives, ' ')], ' ');\n },\n ObjectTypeExtension: function ObjectTypeExtension(_ref34) {\n var name = _ref34.name,\n interfaces = _ref34.interfaces,\n directives = _ref34.directives,\n fields = _ref34.fields;\n return join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n InterfaceTypeExtension: function InterfaceTypeExtension(_ref35) {\n var name = _ref35.name,\n interfaces = _ref35.interfaces,\n directives = _ref35.directives,\n fields = _ref35.fields;\n return join(['extend interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n UnionTypeExtension: function UnionTypeExtension(_ref36) {\n var name = _ref36.name,\n directives = _ref36.directives,\n types = _ref36.types;\n return join(['extend union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n },\n EnumTypeExtension: function EnumTypeExtension(_ref37) {\n var name = _ref37.name,\n directives = _ref37.directives,\n values = _ref37.values;\n return join(['extend enum', name, join(directives, ' '), block(values)], ' ');\n },\n InputObjectTypeExtension: function InputObjectTypeExtension(_ref38) {\n var name = _ref38.name,\n directives = _ref38.directives,\n fields = _ref38.fields;\n return join(['extend input', name, join(directives, ' '), block(fields)], ' ');\n }\n};\n\nfunction addDescription(cb) {\n return function (node) {\n return join([node.description, cb(node)], '\\n');\n };\n}\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\n\nfunction join(maybeArray) {\n var _maybeArray$filter$jo;\n\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return (_maybeArray$filter$jo = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.filter(function (x) {\n return x;\n }).join(separator)) !== null && _maybeArray$filter$jo !== void 0 ? _maybeArray$filter$jo : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\n\n\nfunction block(array) {\n return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\n\nfunction wrap(start, maybeString) {\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n return maybeString != null && maybeString !== '' ? start + maybeString + end : '';\n}\n\nfunction indent(str) {\n return wrap(' ', str.replace(/\\n/g, '\\n '));\n}\n\nfunction isMultiline(str) {\n return str.indexOf('\\n') !== -1;\n}\n\nfunction hasMultilineItems(maybeArray) {\n return maybeArray != null && maybeArray.some(isMultiline);\n}\n","/*\n * Copyright 2018-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\n/**\n * This Symbol is used to reference an internal-only PubSub provider that\n * is used for AppSync/GraphQL subscriptions in the API category.\n */\nconst hasSymbol =\n\ttypeof Symbol !== 'undefined' && typeof Symbol.for === 'function';\n\n/**\n * @deprecated Unused, all usecases have migrated to INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER\n */\nexport const INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER = hasSymbol\n\t? Symbol.for('INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER')\n\t: '@@INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER';\n\nexport const INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER = hasSymbol\n\t? Symbol.for('INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER')\n\t: '@@INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER';\n\nexport const USER_AGENT_HEADER = 'x-amz-user-agent';\n","/* tslint:disable */\n\nimport zenObservable from 'zen-observable';\n\nnamespace Observable {\n\n}\n\nimport { ZenObservable } from './types';\n\nexport { ZenObservable };\n\nexport type Observer = ZenObservable.Observer;\nexport type Subscriber = ZenObservable.Subscriber;\nexport type ObservableLike = ZenObservable.ObservableLike;\n\nexport const Observable: {\n new (subscriber: Subscriber): Observable;\n from(\n observable: Observable | ZenObservable.ObservableLike | ArrayLike,\n ): Observable;\n of(...args: Array): Observable;\n} = zenObservable;\n\nexport interface Observable {\n subscribe(\n observerOrNext: ((value: T) => void) | ZenObservable.Observer,\n error?: (error: any) => void,\n complete?: () => void,\n ): ZenObservable.Subscription;\n\n forEach(fn: (value: T) => void): Promise;\n\n map(fn: (value: T) => R): Observable;\n\n filter(fn: (value: T) => boolean): Observable;\n\n reduce(\n fn: (previousValue: R | T, currentValue: T) => R | T,\n initialValue?: R | T,\n ): Observable;\n\n flatMap(fn: (value: T) => ZenObservable.ObservableLike): Observable;\n\n from(\n observable: Observable | ZenObservable.ObservableLike | ArrayLike,\n ): Observable;\n of(...args: Array): Observable;\n}\n","/*\n * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nexport interface SubscriptionObserver {\n\tclosed: boolean;\n\tnext(value: T): void;\n\terror(errorValue: any): void;\n\tcomplete(): void;\n}\n\nexport enum CONTROL_MSG {\n\tCONNECTION_CLOSED = 'Connection closed',\n\tCONNECTION_FAILED = 'Connection failed',\n\tREALTIME_SUBSCRIPTION_INIT_ERROR = 'AppSync Realtime subscription init error',\n\tSUBSCRIPTION_ACK = 'Subscription ack',\n\tTIMEOUT_DISCONNECT = 'Timeout disconnect',\n}\n\n/** @enum {string} */\nexport enum ConnectionState {\n\t/*\n\t * The connection is alive and healthy\n\t */\n\tConnected = 'Connected',\n\t/*\n\t * The connection is alive, but the connection is offline\n\t */\n\tConnectedPendingNetwork = 'ConnectedPendingNetwork',\n\t/*\n\t * The connection has been disconnected while in use\n\t */\n\tConnectionDisrupted = 'ConnectionDisrupted',\n\t/*\n\t * The connection has been disconnected and the network is offline\n\t */\n\tConnectionDisruptedPendingNetwork = 'ConnectionDisruptedPendingNetwork',\n\t/*\n\t * The connection is in the process of connecting\n\t */\n\tConnecting = 'Connecting',\n\t/*\n\t * The connection is not in use and is being disconnected\n\t */\n\tConnectedPendingDisconnect = 'ConnectedPendingDisconnect',\n\t/*\n\t * The connection is not in use and has been disconnected\n\t */\n\tDisconnected = 'Disconnected',\n\t/*\n\t * The connection is alive, but a keep alive message has been missed\n\t */\n\tConnectedPendingKeepAlive = 'ConnectedPendingKeepAlive',\n}\n","/*\n * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport Observable from 'zen-observable-ts';\nimport { PubSubProvider, ProviderOptions } from '../types/Provider';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\n\nconst logger = new Logger('AbstractPubSubProvider');\n\nexport abstract class AbstractPubSubProvider implements PubSubProvider {\n\tprivate _config: ProviderOptions;\n\n\tconstructor(options: ProviderOptions = {}) {\n\t\tthis._config = options;\n\t}\n\n\tconfigure(config: ProviderOptions = {}): ProviderOptions {\n\t\tthis._config = { ...config, ...this._config };\n\n\t\tlogger.debug(`configure ${this.getProviderName()}`, this._config);\n\n\t\treturn this.options;\n\t}\n\n\tgetCategory() {\n\t\treturn 'PubSub';\n\t}\n\n\tabstract getProviderName(): string;\n\n\tprotected get options(): ProviderOptions {\n\t\treturn { ...this._config };\n\t}\n\n\tpublic abstract newClient(clientOptions: ProviderOptions): Promise;\n\n\tpublic abstract publish(\n\t\ttopics: string[] | string,\n\t\tmsg: any,\n\t\toptions?: ProviderOptions\n\t): void;\n\n\tpublic abstract subscribe(\n\t\ttopics: string[] | string,\n\t\toptions?: ProviderOptions\n\t): Observable;\n}\n","import { browserOrNode, isWebWorker } from '@aws-amplify/core';\nimport Observable, { ZenObservable } from 'zen-observable-ts';\n\ntype NetworkStatus = {\n\tonline: boolean;\n};\n\nexport default class ReachabilityNavigator implements Reachability {\n\tprivate static _observers: Array<\n\t\tZenObservable.SubscriptionObserver\n\t> = [];\n\n\tnetworkMonitor(netInfo?: any): Observable {\n\t\tif (browserOrNode().isNode) {\n\t\t\treturn Observable.from([{ online: true }]);\n\t\t}\n\n\t\tconst globalObj = isWebWorker() ? self : window;\n\n\t\treturn new Observable(observer => {\n\t\t\tobserver.next({ online: globalObj.navigator.onLine });\n\n\t\t\tconst notifyOnline = () => observer.next({ online: true });\n\t\t\tconst notifyOffline = () => observer.next({ online: false });\n\n\t\t\tglobalObj.addEventListener('online', notifyOnline);\n\t\t\tglobalObj.addEventListener('offline', notifyOffline);\n\n\t\t\tReachabilityNavigator._observers.push(observer);\n\n\t\t\treturn () => {\n\t\t\t\tglobalObj.removeEventListener('online', notifyOnline);\n\t\t\t\tglobalObj.removeEventListener('offline', notifyOffline);\n\n\t\t\t\tReachabilityNavigator._observers = ReachabilityNavigator._observers.filter(\n\t\t\t\t\t_observer => _observer !== observer\n\t\t\t\t);\n\t\t\t};\n\t\t});\n\t}\n\n\t// expose observers to simulate offline mode for integration testing\n\tprivate static _observerOverride(status: NetworkStatus): void {\n\t\tfor (const observer of ReachabilityNavigator._observers) {\n\t\t\tif (observer.closed) {\n\t\t\t\tReachabilityNavigator._observers = ReachabilityNavigator._observers.filter(\n\t\t\t\t\t_observer => _observer !== observer\n\t\t\t\t);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tobserver.next(status);\n\t\t}\n\t}\n}\n\ninterface Reachability {\n\tnetworkMonitor(netInfo?: any): Observable;\n}\n","import { Reachability } from '@aws-amplify/core';\n\nexport const ReachabilityMonitor = () => new Reachability().networkMonitor();\n","export const MAX_DELAY_MS = 5000;\n\nexport const NON_RETRYABLE_CODES = [400, 401, 403];\n\nexport const CONNECTION_STATE_CHANGE = 'ConnectionStateChange';\n\nexport enum MESSAGE_TYPES {\n\t/**\n\t * Client -> Server message.\n\t * This message type is the first message after handshake and this will initialize AWS AppSync RealTime communication\n\t */\n\tGQL_CONNECTION_INIT = 'connection_init',\n\t/**\n\t * Server -> Client message\n\t * This message type is in case there is an issue with AWS AppSync RealTime when establishing connection\n\t */\n\tGQL_CONNECTION_ERROR = 'connection_error',\n\t/**\n\t * Server -> Client message.\n\t * This message type is for the ack response from AWS AppSync RealTime for GQL_CONNECTION_INIT message\n\t */\n\tGQL_CONNECTION_ACK = 'connection_ack',\n\t/**\n\t * Client -> Server message.\n\t * This message type is for register subscriptions with AWS AppSync RealTime\n\t */\n\tGQL_START = 'start',\n\t/**\n\t * Server -> Client message.\n\t * This message type is for the ack response from AWS AppSync RealTime for GQL_START message\n\t */\n\tGQL_START_ACK = 'start_ack',\n\t/**\n\t * Server -> Client message.\n\t * This message type is for subscription message from AWS AppSync RealTime\n\t */\n\tGQL_DATA = 'data',\n\t/**\n\t * Server -> Client message.\n\t * This message type helps the client to know is still receiving messages from AWS AppSync RealTime\n\t */\n\tGQL_CONNECTION_KEEP_ALIVE = 'ka',\n\t/**\n\t * Client -> Server message.\n\t * This message type is for unregister subscriptions with AWS AppSync RealTime\n\t */\n\tGQL_STOP = 'stop',\n\t/**\n\t * Server -> Client message.\n\t * This message type is for the ack response from AWS AppSync RealTime for GQL_STOP message\n\t */\n\tGQL_COMPLETE = 'complete',\n\t/**\n\t * Server -> Client message.\n\t * This message type is for sending error messages from AWS AppSync RealTime to the client\n\t */\n\tGQL_ERROR = 'error', // Server -> Client\n}\n\nexport enum SUBSCRIPTION_STATUS {\n\tPENDING,\n\tCONNECTED,\n\tFAILED,\n}\n\nexport enum SOCKET_STATUS {\n\tCLOSED,\n\tREADY,\n\tCONNECTING,\n}\n\nexport const AMPLIFY_SYMBOL = (\n\ttypeof Symbol !== 'undefined' && typeof Symbol.for === 'function'\n\t\t? Symbol.for('amplify_default')\n\t\t: '@@amplify_default'\n) as Symbol;\n\nexport const AWS_APPSYNC_REALTIME_HEADERS = {\n\taccept: 'application/json, text/javascript',\n\t'content-encoding': 'amz-1.0',\n\t'content-type': 'application/json; charset=UTF-8',\n};\n\n/**\n * Time in milleseconds to wait for GQL_CONNECTION_INIT message\n */\nexport const CONNECTION_INIT_TIMEOUT = 15000;\n\n/**\n * Time in milleseconds to wait for GQL_START_ACK message\n */\nexport const START_ACK_TIMEOUT = 15000;\n\n/**\n * Default Time in milleseconds to wait for GQL_CONNECTION_KEEP_ALIVE message\n */\nexport const DEFAULT_KEEP_ALIVE_TIMEOUT = 5 * 60 * 1000;\n\n/**\n * Default Time in milleseconds to alert for missed GQL_CONNECTION_KEEP_ALIVE message\n */\nexport const DEFAULT_KEEP_ALIVE_ALERT_TIMEOUT = 65 * 1000;\n","/*\n * Copyright 2017-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport { Reachability } from '@aws-amplify/core';\nimport Observable, { ZenObservable } from 'zen-observable-ts';\nimport { ConnectionState } from '../types/PubSub';\nimport { ReachabilityMonitor } from './ReachabilityMonitor';\n\n// Internal types for tracking different connection states\ntype LinkedConnectionState = 'connected' | 'disconnected';\ntype LinkedHealthState = 'healthy' | 'unhealthy';\ntype LinkedConnectionStates = {\n\tnetworkState: LinkedConnectionState;\n\tconnectionState: LinkedConnectionState | 'connecting';\n\tintendedConnectionState: LinkedConnectionState;\n\tkeepAliveState: LinkedHealthState;\n};\n\nexport const CONNECTION_CHANGE: {\n\t[key in\n\t\t| 'KEEP_ALIVE_MISSED'\n\t\t| 'KEEP_ALIVE'\n\t\t| 'CONNECTION_ESTABLISHED'\n\t\t| 'CONNECTION_FAILED'\n\t\t| 'CLOSING_CONNECTION'\n\t\t| 'OPENING_CONNECTION'\n\t\t| 'CLOSED'\n\t\t| 'ONLINE'\n\t\t| 'OFFLINE']: Partial;\n} = {\n\tKEEP_ALIVE_MISSED: { keepAliveState: 'unhealthy' },\n\tKEEP_ALIVE: { keepAliveState: 'healthy' },\n\tCONNECTION_ESTABLISHED: { connectionState: 'connected' },\n\tCONNECTION_FAILED: {\n\t\tintendedConnectionState: 'disconnected',\n\t\tconnectionState: 'disconnected',\n\t},\n\tCLOSING_CONNECTION: { intendedConnectionState: 'disconnected' },\n\tOPENING_CONNECTION: {\n\t\tintendedConnectionState: 'connected',\n\t\tconnectionState: 'connecting',\n\t},\n\tCLOSED: { connectionState: 'disconnected' },\n\tONLINE: { networkState: 'connected' },\n\tOFFLINE: { networkState: 'disconnected' },\n};\n\nexport class ConnectionStateMonitor {\n\t/**\n\t * @private\n\t */\n\tprivate _linkedConnectionState: LinkedConnectionStates;\n\tprivate _linkedConnectionStateObservable: Observable;\n\tprivate _linkedConnectionStateObserver: ZenObservable.SubscriptionObserver;\n\tprivate _networkMonitoringSubscription?: ZenObservable.Subscription;\n\n\tconstructor() {\n\t\tthis._networkMonitoringSubscription = undefined;\n\t\tthis._linkedConnectionState = {\n\t\t\tnetworkState: 'connected',\n\t\t\tconnectionState: 'disconnected',\n\t\t\tintendedConnectionState: 'disconnected',\n\t\t\tkeepAliveState: 'healthy',\n\t\t};\n\n\t\tthis._linkedConnectionStateObservable =\n\t\t\tnew Observable(connectionStateObserver => {\n\t\t\t\tconnectionStateObserver.next(this._linkedConnectionState);\n\t\t\t\tthis._linkedConnectionStateObserver = connectionStateObserver;\n\t\t\t});\n\t}\n\n\t/**\n\t * Turn network state monitoring on if it isn't on already\n\t */\n\tprivate enableNetworkMonitoring() {\n\t\t// Maintain the network state based on the reachability monitor\n\t\tif (this._networkMonitoringSubscription === undefined) {\n\t\t\tthis._networkMonitoringSubscription = ReachabilityMonitor().subscribe(\n\t\t\t\t({ online }) => {\n\t\t\t\t\tthis.record(\n\t\t\t\t\t\tonline ? CONNECTION_CHANGE.ONLINE : CONNECTION_CHANGE.OFFLINE\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Turn network state monitoring off if it isn't off already\n\t */\n\tprivate disableNetworkMonitoring() {\n\t\tthis._networkMonitoringSubscription?.unsubscribe();\n\t\tthis._networkMonitoringSubscription = undefined;\n\t}\n\n\t/**\n\t * Get the observable that allows us to monitor the connection state\n\t *\n\t * @returns {Observable} - The observable that emits ConnectionState updates\n\t */\n\tpublic get connectionStateObservable(): Observable {\n\t\tlet previous: ConnectionState;\n\n\t\t// The linked state aggregates state changes to any of the network, connection,\n\t\t// intendedConnection and keepAliveHealth. Some states will change these independent\n\t\t// states without changing the overall connection state.\n\n\t\t// After translating from linked states to ConnectionState, then remove any duplicates\n\t\treturn this._linkedConnectionStateObservable\n\t\t\t.map(value => {\n\t\t\t\treturn this.connectionStatesTranslator(value);\n\t\t\t})\n\t\t\t.filter(current => {\n\t\t\t\tconst toInclude = current !== previous;\n\t\t\t\tprevious = current;\n\t\t\t\treturn toInclude;\n\t\t\t});\n\t}\n\n\t/*\n\t * Updates local connection state and emits the full state to the observer.\n\t */\n\trecord(statusUpdates: Partial) {\n\t\t// Maintain the network monitor\n\t\tif (statusUpdates.intendedConnectionState === 'connected') {\n\t\t\tthis.enableNetworkMonitoring();\n\t\t} else if (statusUpdates.intendedConnectionState === 'disconnected') {\n\t\t\tthis.disableNetworkMonitoring();\n\t\t}\n\n\t\t// Maintain the socket state\n\t\tconst newSocketStatus = {\n\t\t\t...this._linkedConnectionState,\n\t\t\t...statusUpdates,\n\t\t};\n\n\t\tthis._linkedConnectionState = { ...newSocketStatus };\n\n\t\tthis._linkedConnectionStateObserver.next(this._linkedConnectionState);\n\t}\n\n\t/*\n\t * Translate the ConnectionState structure into a specific ConnectionState string literal union\n\t */\n\tprivate connectionStatesTranslator({\n\t\tconnectionState,\n\t\tnetworkState,\n\t\tintendedConnectionState,\n\t\tkeepAliveState,\n\t}: LinkedConnectionStates): ConnectionState {\n\t\tif (connectionState === 'connected' && networkState === 'disconnected')\n\t\t\treturn ConnectionState.ConnectedPendingNetwork;\n\n\t\tif (\n\t\t\tconnectionState === 'connected' &&\n\t\t\tintendedConnectionState === 'disconnected'\n\t\t)\n\t\t\treturn ConnectionState.ConnectedPendingDisconnect;\n\n\t\tif (\n\t\t\tconnectionState === 'disconnected' &&\n\t\t\tintendedConnectionState === 'connected' &&\n\t\t\tnetworkState === 'disconnected'\n\t\t)\n\t\t\treturn ConnectionState.ConnectionDisruptedPendingNetwork;\n\n\t\tif (\n\t\t\tconnectionState === 'disconnected' &&\n\t\t\tintendedConnectionState === 'connected'\n\t\t)\n\t\t\treturn ConnectionState.ConnectionDisrupted;\n\n\t\tif (connectionState === 'connected' && keepAliveState === 'unhealthy')\n\t\t\treturn ConnectionState.ConnectedPendingKeepAlive;\n\n\t\t// All remaining states directly correspond to the connection state\n\t\tif (connectionState === 'connecting') return ConnectionState.Connecting;\n\t\tif (connectionState === 'disconnected') return ConnectionState.Disconnected;\n\t\treturn ConnectionState.Connected;\n\t}\n}\n","/*\n * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport * as Paho from 'paho-mqtt';\nimport { v4 as uuid } from 'uuid';\nimport Observable from 'zen-observable-ts';\n\nimport { AbstractPubSubProvider } from './PubSubProvider';\nimport { SubscriptionObserver } from '../types/PubSub';\nimport { ProviderOptions } from '../types/Provider';\nimport { ConsoleLogger as Logger, Hub } from '@aws-amplify/core';\nimport {\n\tConnectionStateMonitor,\n\tCONNECTION_CHANGE,\n} from '../utils/ConnectionStateMonitor';\nimport { AMPLIFY_SYMBOL, CONNECTION_STATE_CHANGE } from './constants';\n\nconst logger = new Logger('MqttOverWSProvider');\n\nexport function mqttTopicMatch(filter: string, topic: string) {\n\tconst filterArray = filter.split('/');\n\tconst length = filterArray.length;\n\tconst topicArray = topic.split('/');\n\n\tfor (let i = 0; i < length; ++i) {\n\t\tconst left = filterArray[i];\n\t\tconst right = topicArray[i];\n\t\tif (left === '#') return topicArray.length >= length;\n\t\tif (left !== '+' && left !== right) return false;\n\t}\n\treturn length === topicArray.length;\n}\n\nexport interface MqttProviderOptions extends ProviderOptions {\n\tclientId?: string;\n\turl?: string;\n}\n\n/**\n * @deprecated Migrated to MqttProviderOptions\n */\nexport type MqttProvidertOptions = MqttProviderOptions;\n\nclass ClientsQueue {\n\tprivate promises: Map> = new Map();\n\n\tasync get(clientId: string, clientFactory?: (input: string) => Promise) {\n\t\tconst cachedPromise = this.promises.get(clientId);\n\t\tif (cachedPromise) {\n\t\t\treturn cachedPromise;\n\t\t}\n\n\t\tif (clientFactory) {\n\t\t\tconst newPromise = clientFactory(clientId);\n\n\t\t\tthis.promises.set(clientId, newPromise);\n\n\t\t\treturn newPromise;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tget allClients() {\n\t\treturn Array.from(this.promises.keys());\n\t}\n\n\tremove(clientId: string) {\n\t\tthis.promises.delete(clientId);\n\t}\n}\n\nconst dispatchPubSubEvent = (event: string, data: any, message: string) => {\n\tHub.dispatch('pubsub', { event, data, message }, 'PubSub', AMPLIFY_SYMBOL);\n};\n\nconst topicSymbol = typeof Symbol !== 'undefined' ? Symbol('topic') : '@@topic';\n\nexport class MqttOverWSProvider extends AbstractPubSubProvider {\n\tprivate _clientsQueue = new ClientsQueue();\n\tprivate readonly connectionStateMonitor = new ConnectionStateMonitor();\n\n\tconstructor(options: MqttProviderOptions = {}) {\n\t\tsuper({ ...options, clientId: options.clientId || uuid() });\n\n\t\t// Monitor the connection health state and pass changes along to Hub\n\t\tthis.connectionStateMonitor.connectionStateObservable.subscribe(\n\t\t\tconnectionStateChange => {\n\t\t\t\tdispatchPubSubEvent(\n\t\t\t\t\tCONNECTION_STATE_CHANGE,\n\t\t\t\t\t{\n\t\t\t\t\t\tprovider: this,\n\t\t\t\t\t\tconnectionState: connectionStateChange,\n\t\t\t\t\t},\n\t\t\t\t\t`Connection state is ${connectionStateChange}`\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\t}\n\n\tprotected get clientId() {\n\t\treturn this.options.clientId;\n\t}\n\n\tprotected get endpoint() {\n\t\treturn this.options.aws_pubsub_endpoint;\n\t}\n\n\tprotected get clientsQueue() {\n\t\treturn this._clientsQueue;\n\t}\n\n\tprotected get isSSLEnabled() {\n\t\treturn !this.options\n\t\t\t.aws_appsync_dangerously_connect_to_http_endpoint_for_testing;\n\t}\n\n\tprotected getTopicForValue(value: any) {\n\t\treturn typeof value === 'object' && value[topicSymbol];\n\t}\n\n\tgetProviderName() {\n\t\treturn 'MqttOverWSProvider';\n\t}\n\n\tpublic onDisconnect({\n\t\tclientId,\n\t\terrorCode,\n\t\t...args\n\t}: {\n\t\tclientId?: string;\n\t\terrorCode?: number;\n\t}) {\n\t\tif (errorCode !== 0) {\n\t\t\tlogger.warn(clientId, JSON.stringify({ errorCode, ...args }, null, 2));\n\n\t\t\tconst topicsToDelete: string[] = [];\n\t\t\tif (!clientId) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst clientIdObservers = this._clientIdObservers.get(clientId);\n\t\t\tif (!clientIdObservers) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclientIdObservers.forEach(observer => {\n\t\t\t\tobserver.error('Disconnected, error code: ' + errorCode);\n\t\t\t\t// removing observers for disconnected clientId\n\t\t\t\tthis._topicObservers.forEach((observerForTopic, observerTopic) => {\n\t\t\t\t\tobserverForTopic.delete(observer);\n\t\t\t\t\tif (observerForTopic.size === 0) {\n\t\t\t\t\t\ttopicsToDelete.push(observerTopic);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// forgiving any trace of clientId\n\t\t\tthis._clientIdObservers.delete(clientId);\n\n\t\t\t// Removing topics that are not listen by an observer\n\t\t\ttopicsToDelete.forEach(topic => {\n\t\t\t\tthis._topicObservers.delete(topic);\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic async newClient({ url, clientId }: MqttProviderOptions): Promise {\n\t\tlogger.debug('Creating new MQTT client', clientId);\n\n\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.OPENING_CONNECTION);\n\t\t// @ts-ignore\n\t\tconst client = new Paho.Client(url, clientId);\n\t\t// client.trace = (args) => logger.debug(clientId, JSON.stringify(args, null, 2));\n\t\tclient.onMessageArrived = ({\n\t\t\tdestinationName: topic,\n\t\t\tpayloadString: msg,\n\t\t}: {\n\t\t\tdestinationName: string;\n\t\t\tpayloadString: string;\n\t\t}) => {\n\t\t\tthis._onMessage(topic, msg);\n\t\t};\n\t\tclient.onConnectionLost = ({\n\t\t\terrorCode,\n\t\t\t...args\n\t\t}: {\n\t\t\terrorCode: number;\n\t\t}) => {\n\t\t\tthis.onDisconnect({ clientId, errorCode, ...args });\n\t\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n\t\t};\n\n\t\tawait new Promise((resolve, reject) => {\n\t\t\tclient.connect({\n\t\t\t\tuseSSL: this.isSSLEnabled,\n\t\t\t\tmqttVersion: 3,\n\t\t\t\tonSuccess: () => resolve(client),\n\t\t\t\tonFailure: () => {\n\t\t\t\t\treject();\n\t\t\t\t\tthis.connectionStateMonitor.record(\n\t\t\t\t\t\tCONNECTION_CHANGE.CONNECTION_FAILED\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tthis.connectionStateMonitor.record(\n\t\t\tCONNECTION_CHANGE.CONNECTION_ESTABLISHED\n\t\t);\n\n\t\treturn client;\n\t}\n\n\tprotected async connect(\n\t\tclientId: string,\n\t\toptions: MqttProviderOptions = {}\n\t): Promise {\n\t\treturn await this.clientsQueue.get(clientId, clientId =>\n\t\t\tthis.newClient({ ...options, clientId })\n\t\t);\n\t}\n\n\tprotected async disconnect(clientId: string): Promise {\n\t\tconst client = await this.clientsQueue.get(clientId);\n\n\t\tif (client && client.isConnected()) {\n\t\t\tclient.disconnect();\n\t\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n\t\t}\n\t\tthis.clientsQueue.remove(clientId);\n\t}\n\n\tasync publish(topics: string[] | string, msg: any) {\n\t\tconst targetTopics = ([] as string[]).concat(topics);\n\t\tconst message = JSON.stringify(msg);\n\n\t\tconst url = await this.endpoint;\n\n\t\tconst client = await this.connect(this.clientId, { url });\n\n\t\tlogger.debug('Publishing to topic(s)', targetTopics.join(','), message);\n\t\ttargetTopics.forEach(topic => client.send(topic, message));\n\t}\n\n\tprotected _topicObservers: Map>> =\n\t\tnew Map();\n\n\tprotected _clientIdObservers: Map>> =\n\t\tnew Map();\n\n\tprivate _onMessage(topic: string, msg: any) {\n\t\ttry {\n\t\t\tconst matchedTopicObservers: Set>[] = [];\n\t\t\tthis._topicObservers.forEach((observerForTopic, observerTopic) => {\n\t\t\t\tif (mqttTopicMatch(observerTopic, topic)) {\n\t\t\t\t\tmatchedTopicObservers.push(observerForTopic);\n\t\t\t\t}\n\t\t\t});\n\t\t\tconst parsedMessage = JSON.parse(msg);\n\n\t\t\tif (typeof parsedMessage === 'object') {\n\t\t\t\tparsedMessage[topicSymbol] = topic;\n\t\t\t}\n\n\t\t\tmatchedTopicObservers.forEach(observersForTopic => {\n\t\t\t\tobserversForTopic.forEach(observer => observer.next(parsedMessage));\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tlogger.warn('Error handling message', error, msg);\n\t\t}\n\t}\n\n\tsubscribe(\n\t\ttopics: string[] | string,\n\t\toptions: MqttProviderOptions = {}\n\t): Observable {\n\t\tconst targetTopics = ([] as string[]).concat(topics);\n\t\tlogger.debug('Subscribing to topic(s)', targetTopics.join(','));\n\n\t\treturn new Observable(observer => {\n\t\t\ttargetTopics.forEach(topic => {\n\t\t\t\t// this._topicObservers is used to notify the observers according to the topic received on the message\n\t\t\t\tlet observersForTopic = this._topicObservers.get(topic);\n\n\t\t\t\tif (!observersForTopic) {\n\t\t\t\t\tobserversForTopic = new Set();\n\n\t\t\t\t\tthis._topicObservers.set(topic, observersForTopic);\n\t\t\t\t}\n\n\t\t\t\tobserversForTopic.add(observer);\n\t\t\t});\n\n\t\t\t// @ts-ignore\n\t\t\tlet client: Paho.Client;\n\t\t\tconst { clientId = this.clientId } = options;\n\n\t\t\t// this._clientIdObservers is used to close observers when client gets disconnected\n\t\t\tlet observersForClientId = this._clientIdObservers.get(clientId);\n\t\t\tif (!observersForClientId) {\n\t\t\t\tobserversForClientId = new Set();\n\t\t\t}\n\t\t\tobserversForClientId.add(observer);\n\t\t\tthis._clientIdObservers.set(clientId, observersForClientId);\n\n\t\t\t(async () => {\n\t\t\t\tconst { url = await this.endpoint } = options;\n\n\t\t\t\ttry {\n\t\t\t\t\tclient = await this.connect(clientId, { url });\n\t\t\t\t\ttargetTopics.forEach(topic => {\n\t\t\t\t\t\tclient.subscribe(topic);\n\t\t\t\t\t});\n\t\t\t\t} catch (e) {\n\t\t\t\t\tobserver.error(e);\n\t\t\t\t}\n\t\t\t})();\n\n\t\t\treturn () => {\n\t\t\t\tlogger.debug('Unsubscribing from topic(s)', targetTopics.join(','));\n\n\t\t\t\tif (client) {\n\t\t\t\t\tthis._clientIdObservers.get(clientId)?.delete(observer);\n\t\t\t\t\t// No more observers per client => client not needed anymore\n\t\t\t\t\tif (this._clientIdObservers.get(clientId)?.size === 0) {\n\t\t\t\t\t\tthis.connectionStateMonitor.record(\n\t\t\t\t\t\t\tCONNECTION_CHANGE.CLOSING_CONNECTION\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tthis.disconnect(clientId);\n\t\t\t\t\t\tthis._clientIdObservers.delete(clientId);\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetTopics.forEach(topic => {\n\t\t\t\t\t\tconst observersForTopic =\n\t\t\t\t\t\t\tthis._topicObservers.get(topic) ||\n\t\t\t\t\t\t\t(new Set() as Set>);\n\n\t\t\t\t\t\tobserversForTopic.delete(observer);\n\n\t\t\t\t\t\t// if no observers exists for the topic, topic should be removed\n\t\t\t\t\t\tif (observersForTopic.size === 0) {\n\t\t\t\t\t\t\tthis._topicObservers.delete(topic);\n\t\t\t\t\t\t\tif (client.isConnected()) {\n\t\t\t\t\t\t\t\tclient.unsubscribe(topic);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t};\n\t\t});\n\t}\n}\n","/*\n * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { Client } from 'paho-mqtt';\nimport Observable from 'zen-observable-ts';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\n\nimport { MqttOverWSProvider } from './MqttOverWSProvider';\n\nconst logger = new Logger('AWSAppSyncProvider');\n\n/**\n * @deprecated Unused, all usecases have migrated to AWSAppSyncRealtimeProvider\n */\nexport class AWSAppSyncProvider extends MqttOverWSProvider {\n\tprotected get endpoint() {\n\t\tthrow new Error('Not supported');\n\t}\n\n\tgetProviderName() {\n\t\treturn 'AWSAppSyncProvider';\n\t}\n\n\tpublic async publish(topics: string[] | string, msg: any, options?: any) {\n\t\tthrow new Error('Operation not supported');\n\t}\n\n\tprivate _cleanUp(clientId: string) {\n\t\tconst topicsForClient = Array.from(this._topicClient.entries())\n\t\t\t.filter(([, c]) => c.clientId === clientId)\n\t\t\t.map(([t]) => t);\n\n\t\ttopicsForClient.forEach(t => this._cleanUpForTopic(t));\n\t}\n\n\tprivate _cleanUpForTopic(topic) {\n\t\tthis._topicClient.delete(topic);\n\t\tthis._topicAlias.delete(topic);\n\t}\n\n\tpublic onDisconnect({ clientId, errorCode, ...args }) {\n\t\tif (errorCode !== 0) {\n\t\t\tconst topicsForClient = Array.from(this._topicClient.entries())\n\t\t\t\t.filter(([, c]) => c.clientId === clientId)\n\t\t\t\t.map(([t]) => t);\n\n\t\t\ttopicsForClient.forEach(topic => {\n\t\t\t\tif (this._topicObservers.has(topic)) {\n\t\t\t\t\tthis._topicObservers.get(topic).forEach(obs => {\n\t\t\t\t\t\tif (!obs.closed) {\n\t\t\t\t\t\t\tobs.error(args);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tthis._topicObservers.delete(topic);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis._cleanUp(clientId);\n\t\t}\n\t}\n\n\tprivate _topicClient: Map = new Map();\n\n\tprivate _topicAlias: Map = new Map();\n\n\tprotected async disconnect(clientId: string): Promise {\n\t\tconst client = await this.clientsQueue.get(clientId, () => null);\n\n\t\tawait super.disconnect(clientId);\n\n\t\tthis._cleanUp(clientId);\n\t}\n\n\tsubscribe(topics: string[] | string, options: any = {}): Observable {\n\t\tconst result = new Observable(observer => {\n\t\t\tconst targetTopics = ([] as string[]).concat(topics);\n\t\t\tlogger.debug('Subscribing to topic(s)', targetTopics.join(','));\n\n\t\t\t(async () => {\n\t\t\t\t// Add these topics to map\n\t\t\t\ttargetTopics.forEach(t => {\n\t\t\t\t\tif (!this._topicObservers.has(t)) {\n\t\t\t\t\t\tthis._topicObservers.set(t, new Set());\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._topicObservers.get(t).add(observer);\n\t\t\t\t});\n\n\t\t\t\tconst { mqttConnections = [], newSubscriptions } = options;\n\n\t\t\t\t// creates a map of {\"topic\": \"alias\"}\n\t\t\t\tconst newAliases = Object.entries(newSubscriptions).map(\n\t\t\t\t\t([alias, v]: [string, { topic: string }]) => [v.topic, alias]\n\t\t\t\t);\n\n\t\t\t\t// Merge new aliases with old ones\n\t\t\t\tthis._topicAlias = new Map([\n\t\t\t\t\t...Array.from(this._topicAlias.entries()),\n\t\t\t\t\t...(newAliases as [string, string][]),\n\t\t\t\t]);\n\n\t\t\t\t// group by urls\n\t\t\t\tconst map: [string, { url: string; topics: Set }][] =\n\t\t\t\t\tObject.entries(\n\t\t\t\t\t\ttargetTopics.reduce((acc, elem) => {\n\t\t\t\t\t\t\tconst connectionInfoForTopic = mqttConnections.find(\n\t\t\t\t\t\t\t\tc => c.topics.indexOf(elem) > -1\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (connectionInfoForTopic) {\n\t\t\t\t\t\t\t\tconst { client: clientId, url } = connectionInfoForTopic;\n\n\t\t\t\t\t\t\t\tif (!acc[clientId]) {\n\t\t\t\t\t\t\t\t\tacc[clientId] = {\n\t\t\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t\t\t\ttopics: new Set(),\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tacc[clientId].topics.add(elem);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t}, {})\n\t\t\t\t\t);\n\n\t\t\t\t// reconnect everything we have in the map\n\t\t\t\tawait Promise.all(\n\t\t\t\t\tmap.map(async ([clientId, { url, topics }]) => {\n\t\t\t\t\t\t// connect to new client\n\t\t\t\t\t\tlet client = null;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tclient = await this.connect(clientId, {\n\t\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\tobserver.error({ message: 'Failed to connect', error: err });\n\t\t\t\t\t\t\tobserver.complete();\n\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// subscribe to all topics for this client\n\t\t\t\t\t\t// store topic-client mapping\n\t\t\t\t\t\ttopics.forEach(topic => {\n\t\t\t\t\t\t\tif (client.isConnected()) {\n\t\t\t\t\t\t\t\tclient.subscribe(topic);\n\n\t\t\t\t\t\t\t\tthis._topicClient.set(topic, client);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn client;\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t})();\n\n\t\t\treturn () => {\n\t\t\t\tlogger.debug('Unsubscribing from topic(s)', targetTopics.join(','));\n\n\t\t\t\ttargetTopics.forEach(t => {\n\t\t\t\t\tconst client = this._topicClient.get(t);\n\n\t\t\t\t\tif (client && client.isConnected()) {\n\t\t\t\t\t\tclient.unsubscribe(t);\n\t\t\t\t\t\tthis._topicClient.delete(t);\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!Array.from(this._topicClient.values()).some(c => c === client)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthis.disconnect(client.clientId);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._topicObservers.delete(t);\n\t\t\t\t});\n\t\t\t};\n\t\t});\n\n\t\treturn Observable.from(result).map(value => {\n\t\t\tconst topic = this.getTopicForValue(value);\n\t\t\tconst alias = this._topicAlias.get(topic);\n\n\t\t\tvalue.data = Object.entries(value.data).reduce(\n\t\t\t\t(obj, [origKey, val]) => (\n\t\t\t\t\t(obj[(alias || origKey) as string] = val), obj\n\t\t\t\t),\n\t\t\t\t{}\n\t\t\t);\n\n\t\t\treturn value;\n\t\t});\n\t}\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nexport default function isObjectLike(value) {\n return _typeof(value) == 'object' && value !== null;\n}\n","// In ES2015 (or a polyfilled) environment, this will be Symbol.iterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nexport var SYMBOL_ITERATOR = typeof Symbol === 'function' && Symbol.iterator != null ? Symbol.iterator : '@@iterator'; // In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexport var SYMBOL_ASYNC_ITERATOR = typeof Symbol === 'function' && Symbol.asyncIterator != null ? Symbol.asyncIterator : '@@asyncIterator'; // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexport var SYMBOL_TO_STRING_TAG = typeof Symbol === 'function' && Symbol.toStringTag != null ? Symbol.toStringTag : '@@toStringTag';\n","/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n var lineRegexp = /\\r\\n|[\\n\\r]/g;\n var line = 1;\n var column = position + 1;\n var match;\n\n while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n line += 1;\n column = position + 1 - (match.index + match[0].length);\n }\n\n return {\n line: line,\n column: column\n };\n}\n","import { getLocation } from \"./location.mjs\";\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printLocation(location) {\n return printSourceLocation(location.source, getLocation(location.source, location.start));\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printSourceLocation(source, sourceLocation) {\n var firstLineColumnOffset = source.locationOffset.column - 1;\n var body = whitespace(firstLineColumnOffset) + source.body;\n var lineIndex = sourceLocation.line - 1;\n var lineOffset = source.locationOffset.line - 1;\n var lineNum = sourceLocation.line + lineOffset;\n var columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n var columnNum = sourceLocation.column + columnOffset;\n var locationStr = \"\".concat(source.name, \":\").concat(lineNum, \":\").concat(columnNum, \"\\n\");\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n var locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n var subLineIndex = Math.floor(columnNum / 80);\n var subLineColumnNum = columnNum % 80;\n var subLines = [];\n\n for (var i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n\n return locationStr + printPrefixedLines([[\"\".concat(lineNum), subLines[0]]].concat(subLines.slice(1, subLineIndex + 1).map(function (subLine) {\n return ['', subLine];\n }), [[' ', whitespace(subLineColumnNum - 1) + '^'], ['', subLines[subLineIndex + 1]]]));\n }\n\n return locationStr + printPrefixedLines([// Lines specified like this: [\"prefix\", \"string\"],\n [\"\".concat(lineNum - 1), lines[lineIndex - 1]], [\"\".concat(lineNum), locationLine], ['', whitespace(columnNum - 1) + '^'], [\"\".concat(lineNum + 1), lines[lineIndex + 1]]]);\n}\n\nfunction printPrefixedLines(lines) {\n var existingLines = lines.filter(function (_ref) {\n var _ = _ref[0],\n line = _ref[1];\n return line !== undefined;\n });\n var padLen = Math.max.apply(Math, existingLines.map(function (_ref2) {\n var prefix = _ref2[0];\n return prefix.length;\n }));\n return existingLines.map(function (_ref3) {\n var prefix = _ref3[0],\n line = _ref3[1];\n return leftPad(padLen, prefix) + (line ? ' | ' + line : ' |');\n }).join('\\n');\n}\n\nfunction whitespace(len) {\n return Array(len + 1).join(' ');\n}\n\nfunction leftPad(len, str) {\n return whitespace(len - str.length) + str;\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport isObjectLike from \"../jsutils/isObjectLike.mjs\";\nimport { SYMBOL_TO_STRING_TAG } from \"../polyfills/symbols.mjs\";\nimport { getLocation } from \"../language/location.mjs\";\nimport { printLocation, printSourceLocation } from \"../language/printLocation.mjs\";\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nexport var GraphQLError = /*#__PURE__*/function (_Error) {\n _inherits(GraphQLError, _Error);\n\n var _super = _createSuper(GraphQLError);\n\n /**\n * An array of { line, column } locations within the source GraphQL document\n * which correspond to this error.\n *\n * Errors during validation often contain multiple locations, for example to\n * point out two things with the same name. Errors during execution include a\n * single location, the field which produced the error.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array describing the JSON-path into the execution response which\n * corresponds to this error. Only included for errors during execution.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array of GraphQL AST Nodes corresponding to this error.\n */\n\n /**\n * The source GraphQL document for the first location of this error.\n *\n * Note that if this Error represents more than one node, the source may not\n * represent nodes after the first node.\n */\n\n /**\n * An array of character offsets within the source GraphQL document\n * which correspond to this error.\n */\n\n /**\n * The original error thrown from a field resolver during execution.\n */\n\n /**\n * Extension fields to add to the formatted error.\n */\n function GraphQLError(message, nodes, source, positions, path, originalError, extensions) {\n var _nodeLocations, _nodeLocations2, _nodeLocations3;\n\n var _this;\n\n _classCallCheck(this, GraphQLError);\n\n _this = _super.call(this, message);\n _this.name = 'GraphQLError';\n _this.originalError = originalError !== null && originalError !== void 0 ? originalError : undefined; // Compute list of blame nodes.\n\n _this.nodes = undefinedIfEmpty(Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined);\n var nodeLocations = [];\n\n for (var _i2 = 0, _ref3 = (_this$nodes = _this.nodes) !== null && _this$nodes !== void 0 ? _this$nodes : []; _i2 < _ref3.length; _i2++) {\n var _this$nodes;\n\n var _ref4 = _ref3[_i2];\n var loc = _ref4.loc;\n\n if (loc != null) {\n nodeLocations.push(loc);\n }\n }\n\n nodeLocations = undefinedIfEmpty(nodeLocations); // Compute locations in the source for the given nodes/positions.\n\n _this.source = source !== null && source !== void 0 ? source : (_nodeLocations = nodeLocations) === null || _nodeLocations === void 0 ? void 0 : _nodeLocations[0].source;\n _this.positions = positions !== null && positions !== void 0 ? positions : (_nodeLocations2 = nodeLocations) === null || _nodeLocations2 === void 0 ? void 0 : _nodeLocations2.map(function (loc) {\n return loc.start;\n });\n _this.locations = positions && source ? positions.map(function (pos) {\n return getLocation(source, pos);\n }) : (_nodeLocations3 = nodeLocations) === null || _nodeLocations3 === void 0 ? void 0 : _nodeLocations3.map(function (loc) {\n return getLocation(loc.source, loc.start);\n });\n _this.path = path !== null && path !== void 0 ? path : undefined;\n var originalExtensions = originalError === null || originalError === void 0 ? void 0 : originalError.extensions;\n\n if (extensions == null && isObjectLike(originalExtensions)) {\n _this.extensions = _objectSpread({}, originalExtensions);\n } else {\n _this.extensions = extensions !== null && extensions !== void 0 ? extensions : {};\n } // By being enumerable, JSON.stringify will include bellow properties in the resulting output.\n // This ensures that the simplest possible GraphQL service adheres to the spec.\n\n\n Object.defineProperties(_assertThisInitialized(_this), {\n message: {\n enumerable: true\n },\n locations: {\n enumerable: _this.locations != null\n },\n path: {\n enumerable: _this.path != null\n },\n extensions: {\n enumerable: _this.extensions != null && Object.keys(_this.extensions).length > 0\n },\n name: {\n enumerable: false\n },\n nodes: {\n enumerable: false\n },\n source: {\n enumerable: false\n },\n positions: {\n enumerable: false\n },\n originalError: {\n enumerable: false\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError !== null && originalError !== void 0 && originalError.stack) {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n return _possibleConstructorReturn(_this);\n } // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_assertThisInitialized(_this), GraphQLError);\n } else {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n\n return _this;\n }\n\n _createClass(GraphQLError, [{\n key: \"toString\",\n value: function toString() {\n return printError(this);\n } // FIXME: workaround to not break chai comparisons, should be remove in v16\n // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n }, {\n key: SYMBOL_TO_STRING_TAG,\n get: function get() {\n return 'Object';\n }\n }]);\n\n return GraphQLError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nfunction undefinedIfEmpty(array) {\n return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\n\n\nexport function printError(error) {\n var output = error.message;\n\n if (error.nodes) {\n for (var _i4 = 0, _error$nodes2 = error.nodes; _i4 < _error$nodes2.length; _i4++) {\n var node = _error$nodes2[_i4];\n\n if (node.loc) {\n output += '\\n\\n' + printLocation(node.loc);\n }\n }\n } else if (error.source && error.locations) {\n for (var _i6 = 0, _error$locations2 = error.locations; _i6 < _error$locations2.length; _i6++) {\n var location = _error$locations2[_i6];\n output += '\\n\\n' + printSourceLocation(error.source, location);\n }\n }\n\n return output;\n}\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport { I18nOptions } from './types';\nimport { ConsoleLogger as Logger } from '../Logger';\n\nconst logger = new Logger('I18n');\n\n/**\n * Language transition class\n */\nexport class I18n {\n\t/**\n\t * @private\n\t */\n\t_options: I18nOptions = null;\n\n\t/**\n\t * @private\n\t */\n\t_lang = null;\n\n\t/**\n\t * @private\n\t */\n\t_dict = {};\n\n\t/**\n\t * @constructor\n\t * Initialize with configurations\n\t * @param {Object} options\n\t */\n\tconstructor(options: I18nOptions) {\n\t\tthis._options = Object.assign({}, options);\n\t\tthis._lang = this._options.language;\n\n\t\tif (\n\t\t\t!this._lang &&\n\t\t\ttypeof window !== 'undefined' &&\n\t\t\twindow &&\n\t\t\twindow.navigator\n\t\t) {\n\t\t\tthis._lang = window.navigator.language;\n\t\t}\n\n\t\tlogger.debug(this._lang);\n\t}\n\n\t/**\n\t * @method\n\t * Explicitly setting language\n\t * @param {String} lang\n\t */\n\tsetLanguage(lang: string) {\n\t\tthis._lang = lang;\n\t}\n\n\t/**\n\t * @method\n\t * Get value\n\t * @param {String} key\n\t * @param {String} defVal - Default value\n\t */\n\tget(key, defVal = undefined) {\n\t\tif (!this._lang) {\n\t\t\treturn typeof defVal !== 'undefined' ? defVal : key;\n\t\t}\n\n\t\tconst lang = this._lang;\n\t\tlet val = this.getByLanguage(key, lang);\n\t\tif (val) {\n\t\t\treturn val;\n\t\t}\n\n\t\tif (lang.indexOf('-') > 0) {\n\t\t\tval = this.getByLanguage(key, lang.split('-')[0]);\n\t\t}\n\t\tif (val) {\n\t\t\treturn val;\n\t\t}\n\n\t\treturn typeof defVal !== 'undefined' ? defVal : key;\n\t}\n\n\t/**\n\t * @method\n\t * Get value according to specified language\n\t * @param {String} key\n\t * @param {String} language - Specified langurage to be used\n\t * @param {String} defVal - Default value\n\t */\n\tgetByLanguage(key, language, defVal = null) {\n\t\tif (!language) {\n\t\t\treturn defVal;\n\t\t}\n\n\t\tconst lang_dict = this._dict[language];\n\t\tif (!lang_dict) {\n\t\t\treturn defVal;\n\t\t}\n\n\t\treturn lang_dict[key];\n\t}\n\n\t/**\n\t * @method\n\t * Add vocabularies for one language\n\t * @param {String} language - Language of the dictionary\n\t * @param {Object} vocabularies - Object that has key-value as dictionary entry\n\t */\n\tputVocabulariesForLanguage(language, vocabularies) {\n\t\tlet lang_dict = this._dict[language];\n\t\tif (!lang_dict) {\n\t\t\tlang_dict = this._dict[language] = {};\n\t\t}\n\t\tObject.assign(lang_dict, vocabularies);\n\t}\n\n\t/**\n\t * @method\n\t * Add vocabularies for one language\n\t * @param {Object} vocabularies - Object that has language as key,\n\t * vocabularies of each language as value\n\t */\n\tputVocabularies(vocabularies) {\n\t\tObject.keys(vocabularies).map(key => {\n\t\t\tthis.putVocabulariesForLanguage(key, vocabularies[key]);\n\t\t});\n\t}\n}\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport { I18n as I18nClass } from './I18n';\n\nimport { ConsoleLogger as Logger } from '../Logger';\nimport { Amplify } from '../Amplify';\n\nconst logger = new Logger('I18n');\n\nlet _config = null;\nlet _i18n = null;\n\n/**\n * Export I18n APIs\n */\nexport class I18n {\n\t/**\n\t * @static\n\t * @method\n\t * Configure I18n part\n\t * @param {Object} config - Configuration of the I18n\n\t */\n\tstatic configure(config) {\n\t\tlogger.debug('configure I18n');\n\t\tif (!config) {\n\t\t\treturn _config;\n\t\t}\n\n\t\t_config = Object.assign({}, _config, config.I18n || config);\n\n\t\tI18n.createInstance();\n\n\t\treturn _config;\n\t}\n\n\tstatic getModuleName() {\n\t\treturn 'I18n';\n\t}\n\n\t/**\n\t * @static\n\t * @method\n\t * Create an instance of I18n for the library\n\t */\n\tstatic createInstance() {\n\t\tlogger.debug('create I18n instance');\n\t\tif (_i18n) {\n\t\t\treturn;\n\t\t}\n\t\t_i18n = new I18nClass(_config);\n\t}\n\n\t/**\n\t * @static @method\n\t * Explicitly setting language\n\t * @param {String} lang\n\t */\n\tstatic setLanguage(lang) {\n\t\tI18n.checkConfig();\n\n\t\treturn _i18n.setLanguage(lang);\n\t}\n\n\t/**\n\t * @static @method\n\t * Get value\n\t * @param {String} key\n\t * @param {String} defVal - Default value\n\t */\n\tstatic get(key, defVal?) {\n\t\tif (!I18n.checkConfig()) {\n\t\t\treturn typeof defVal === 'undefined' ? key : defVal;\n\t\t}\n\n\t\treturn _i18n.get(key, defVal);\n\t}\n\n\t/**\n\t * @static\n\t * @method\n\t * Add vocabularies for one language\n\t * @param {String} langurage - Language of the dictionary\n\t * @param {Object} vocabularies - Object that has key-value as dictionary entry\n\t */\n\tstatic putVocabulariesForLanguage(language, vocabularies) {\n\t\tI18n.checkConfig();\n\n\t\treturn _i18n.putVocabulariesForLanguage(language, vocabularies);\n\t}\n\n\t/**\n\t * @static\n\t * @method\n\t * Add vocabularies for one language\n\t * @param {Object} vocabularies - Object that has language as key,\n\t * vocabularies of each language as value\n\t */\n\tstatic putVocabularies(vocabularies) {\n\t\tI18n.checkConfig();\n\n\t\treturn _i18n.putVocabularies(vocabularies);\n\t}\n\n\tpublic static checkConfig() {\n\t\tif (!_i18n) {\n\t\t\t_i18n = new I18nClass(_config);\n\t\t}\n\n\t\treturn true;\n\t}\n}\n\nAmplify.register(I18n);\n\n/**\n * @deprecated use named import\n */\nexport default I18n;\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport { Amplify } from './Amplify';\nimport { Platform } from './Platform';\n\nexport { AmplifyClass } from './Amplify';\nexport { ClientDevice } from './ClientDevice';\nexport { ConsoleLogger, ConsoleLogger as Logger } from './Logger';\nexport * from './Errors';\nexport { Hub, HubCapsule, HubCallback, HubPayload } from './Hub';\nexport { I18n } from './I18n';\nexport * from './JS';\nexport { Signer } from './Signer';\nexport * from './Parser';\nexport * from './Providers';\nexport { FacebookOAuth, GoogleOAuth } from './OAuthHelper';\nexport * from './RNComponents';\nexport { Credentials, CredentialsClass } from './Credentials';\nexport { ServiceWorker } from './ServiceWorker';\nexport { ICredentials } from './types';\nexport { StorageHelper, MemoryStorage } from './StorageHelper';\nexport { UniversalStorage } from './UniversalStorage';\nexport { Platform, getAmplifyUserAgent } from './Platform';\nexport * from './constants';\n\nexport const Constants = {\n\tuserAgent: Platform.userAgent,\n};\n\nexport * from './constants';\nexport * from './Util';\n\nexport { Amplify };\n/**\n * @deprecated use named import\n */\nexport default Amplify;\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport { Auth } from './Auth';\nimport {\n\tCognitoHostedUIIdentityProvider,\n\tSignUpParams,\n\tGRAPHQL_AUTH_MODE,\n} from './types/Auth';\nimport {\n\tCognitoUser,\n\tCookieStorage,\n\tappendToCognitoUserAgent,\n} from 'amazon-cognito-identity-js';\nimport { AuthErrorStrings } from './common/AuthErrorStrings';\n\n/**\n * @deprecated use named import\n */\nexport default Auth;\nexport {\n\tAuth,\n\tCognitoUser,\n\tCookieStorage,\n\tCognitoHostedUIIdentityProvider,\n\tSignUpParams,\n\tappendToCognitoUserAgent,\n\tAuthErrorStrings,\n\tGRAPHQL_AUTH_MODE,\n};\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { Source, DocumentNode, GraphQLError } from 'graphql';\nexport { OperationTypeNode } from 'graphql';\nimport { GRAPHQL_AUTH_MODE } from '@aws-amplify/auth';\nexport { GRAPHQL_AUTH_MODE };\n\nexport interface GraphQLOptions {\n\tquery: string | DocumentNode;\n\tvariables?: object;\n\tauthMode?: keyof typeof GRAPHQL_AUTH_MODE;\n\tauthToken?: string;\n\tuserAgentSuffix?: string;\n}\n\nexport interface GraphQLResult {\n\tdata?: T;\n\terrors?: GraphQLError[];\n\textensions?: {\n\t\t[key: string]: any;\n\t};\n}\n\nexport enum GraphQLAuthError {\n\tNO_API_KEY = 'No api-key configured',\n\tNO_CURRENT_USER = 'No current user',\n\tNO_CREDENTIALS = 'No credentials',\n\tNO_FEDERATED_JWT = 'No federated jwt',\n\tNO_AUTH_TOKEN = 'No auth token specified',\n}\n\n/**\n * GraphQLSource or string, the type of the parameter for calling graphql.parse\n * @see: https://graphql.org/graphql-js/language/#parse\n */\nexport type GraphQLOperation = Source | string;\n","/*\n * Copyright 2017-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport Observable, { ZenObservable } from 'zen-observable-ts';\nimport { GraphQLError } from 'graphql';\nimport * as url from 'url';\nimport { v4 as uuid } from 'uuid';\nimport { Buffer } from 'buffer';\nimport { ProviderOptions } from '../../types/Provider';\nimport {\n\tLogger,\n\tCredentials,\n\tSigner,\n\tHub,\n\tConstants,\n\tUSER_AGENT_HEADER,\n\tjitteredExponentialRetry,\n\tNonRetryableError,\n\tICredentials,\n} from '@aws-amplify/core';\nimport Cache from '@aws-amplify/cache';\nimport Auth, { GRAPHQL_AUTH_MODE } from '@aws-amplify/auth';\nimport { AbstractPubSubProvider } from '../PubSubProvider';\nimport { CONTROL_MSG } from '../../types/PubSub';\n\nimport {\n\tAMPLIFY_SYMBOL,\n\tAWS_APPSYNC_REALTIME_HEADERS,\n\tCONNECTION_INIT_TIMEOUT,\n\tDEFAULT_KEEP_ALIVE_TIMEOUT,\n\tDEFAULT_KEEP_ALIVE_ALERT_TIMEOUT,\n\tMAX_DELAY_MS,\n\tMESSAGE_TYPES,\n\tNON_RETRYABLE_CODES,\n\tSOCKET_STATUS,\n\tSTART_ACK_TIMEOUT,\n\tSUBSCRIPTION_STATUS,\n\tCONNECTION_STATE_CHANGE,\n} from '../constants';\nimport {\n\tConnectionStateMonitor,\n\tCONNECTION_CHANGE,\n} from '../../utils/ConnectionStateMonitor';\n\nconst logger = new Logger('AWSAppSyncRealTimeProvider');\n\nconst dispatchApiEvent = (event: string, data: any, message: string) => {\n\tHub.dispatch('api', { event, data, message }, 'PubSub', AMPLIFY_SYMBOL);\n};\n\nexport type ObserverQuery = {\n\tobserver: ZenObservable.SubscriptionObserver;\n\tquery: string;\n\tvariables: object;\n\tsubscriptionState: SUBSCRIPTION_STATUS;\n\tsubscriptionReadyCallback?: Function;\n\tsubscriptionFailedCallback?: Function;\n\tstartAckTimeoutId?: ReturnType;\n};\n\nconst standardDomainPattern =\n\t/^https:\\/\\/\\w{26}\\.appsync\\-api\\.\\w{2}(?:(?:\\-\\w{2,})+)\\-\\d\\.amazonaws.com\\/graphql$/i;\n\nconst customDomainPath = '/realtime';\n\ntype GraphqlAuthModes = keyof typeof GRAPHQL_AUTH_MODE;\n\nexport interface AWSAppSyncRealTimeProviderOptions extends ProviderOptions {\n\tappSyncGraphqlEndpoint?: string;\n\tauthenticationType?: GraphqlAuthModes;\n\tquery?: string;\n\tvariables?: object;\n\tapiKey?: string;\n\tregion?: string;\n\tgraphql_headers?: () => {} | (() => Promise<{}>);\n\tadditionalHeaders?: { [key: string]: string };\n}\n\ntype AWSAppSyncRealTimeAuthInput =\n\tPartial & {\n\t\tcanonicalUri: string;\n\t\tpayload: string;\n\t};\n\nexport class AWSAppSyncRealTimeProvider extends AbstractPubSubProvider {\n\tprivate awsRealTimeSocket?: WebSocket;\n\tprivate socketStatus: SOCKET_STATUS = SOCKET_STATUS.CLOSED;\n\tprivate keepAliveTimeoutId?: ReturnType;\n\tprivate keepAliveTimeout = DEFAULT_KEEP_ALIVE_TIMEOUT;\n\tprivate keepAliveAlertTimeoutId?: ReturnType;\n\tprivate subscriptionObserverMap: Map = new Map();\n\tprivate promiseArray: Array<{ res: Function; rej: Function }> = [];\n\tprivate readonly connectionStateMonitor = new ConnectionStateMonitor();\n\n\tconstructor(options: ProviderOptions = {}) {\n\t\tsuper(options);\n\t\t// Monitor the connection state and pass changes along to Hub\n\t\tthis.connectionStateMonitor.connectionStateObservable.subscribe(\n\t\t\tConnectionState => {\n\t\t\t\tdispatchApiEvent(\n\t\t\t\t\tCONNECTION_STATE_CHANGE,\n\t\t\t\t\t{\n\t\t\t\t\t\tprovider: this,\n\t\t\t\t\t\tconnectionState: ConnectionState,\n\t\t\t\t\t},\n\t\t\t\t\t`Connection state is ${ConnectionState}`\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\t}\n\n\tgetNewWebSocket(url, protocol) {\n\t\treturn new WebSocket(url, protocol);\n\t}\n\n\tgetProviderName() {\n\t\treturn 'AWSAppSyncRealTimeProvider';\n\t}\n\n\tnewClient(): Promise {\n\t\tthrow new Error('Not used here');\n\t}\n\n\tpublic async publish(_topics: string[] | string, _msg: any, _options?: any) {\n\t\tthrow new Error('Operation not supported');\n\t}\n\n\t// Check if url matches standard domain pattern\n\tprivate isCustomDomain(url: string): boolean {\n\t\treturn url.match(standardDomainPattern) === null;\n\t}\n\n\tsubscribe(\n\t\t_topics: string[] | string,\n\t\toptions?: AWSAppSyncRealTimeProviderOptions\n\t): Observable {\n\t\tconst appSyncGraphqlEndpoint = options?.appSyncGraphqlEndpoint;\n\n\t\treturn new Observable(observer => {\n\t\t\tif (!options || !appSyncGraphqlEndpoint) {\n\t\t\t\tobserver.error({\n\t\t\t\t\terrors: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...new GraphQLError(\n\t\t\t\t\t\t\t\t`Subscribe only available for AWS AppSync endpoint`\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t\tobserver.complete();\n\t\t\t} else {\n\t\t\t\tconst subscriptionId = uuid();\n\t\t\t\tthis._startSubscriptionWithAWSAppSyncRealTime({\n\t\t\t\t\toptions,\n\t\t\t\t\tobserver,\n\t\t\t\t\tsubscriptionId,\n\t\t\t\t}).catch(err => {\n\t\t\t\t\tobserver.error({\n\t\t\t\t\t\terrors: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t...new GraphQLError(\n\t\t\t\t\t\t\t\t\t`${CONTROL_MSG.REALTIME_SUBSCRIPTION_INIT_ERROR}: ${err}`\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\t\t\t\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n\t\t\t\t\tobserver.complete();\n\t\t\t\t});\n\n\t\t\t\treturn async () => {\n\t\t\t\t\t// Cleanup after unsubscribing or observer.complete was called after _startSubscriptionWithAWSAppSyncRealTime\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// Waiting that subscription has been connected before trying to unsubscribe\n\t\t\t\t\t\tawait this._waitForSubscriptionToBeConnected(subscriptionId);\n\n\t\t\t\t\t\tconst { subscriptionState } =\n\t\t\t\t\t\t\tthis.subscriptionObserverMap.get(subscriptionId) || {};\n\n\t\t\t\t\t\tif (!subscriptionState) {\n\t\t\t\t\t\t\t// subscription already unsubscribed\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (subscriptionState === SUBSCRIPTION_STATUS.CONNECTED) {\n\t\t\t\t\t\t\tthis._sendUnsubscriptionMessage(subscriptionId);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthrow new Error('Subscription never connected');\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tlogger.debug(`Error while unsubscribing ${err}`);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis._removeSubscriptionObserver(subscriptionId);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected get isSSLEnabled() {\n\t\treturn !this.options\n\t\t\t.aws_appsync_dangerously_connect_to_http_endpoint_for_testing;\n\t}\n\n\tprivate async _startSubscriptionWithAWSAppSyncRealTime({\n\t\toptions,\n\t\tobserver,\n\t\tsubscriptionId,\n\t}: {\n\t\toptions: AWSAppSyncRealTimeProviderOptions;\n\t\tobserver: ZenObservable.SubscriptionObserver;\n\t\tsubscriptionId: string;\n\t}) {\n\t\tconst {\n\t\t\tappSyncGraphqlEndpoint,\n\t\t\tauthenticationType,\n\t\t\tquery,\n\t\t\tvariables,\n\t\t\tapiKey,\n\t\t\tregion,\n\t\t\tgraphql_headers = () => ({}),\n\t\t\tadditionalHeaders = {},\n\t\t} = options;\n\n\t\tconst subscriptionState: SUBSCRIPTION_STATUS = SUBSCRIPTION_STATUS.PENDING;\n\t\tconst data = {\n\t\t\tquery,\n\t\t\tvariables,\n\t\t};\n\t\t// Having a subscription id map will make it simple to forward messages received\n\t\tthis.subscriptionObserverMap.set(subscriptionId, {\n\t\t\tobserver,\n\t\t\tquery: query ?? '',\n\t\t\tvariables: variables ?? {},\n\t\t\tsubscriptionState,\n\t\t\tstartAckTimeoutId: undefined,\n\t\t});\n\n\t\t// Preparing payload for subscription message\n\n\t\tconst dataString = JSON.stringify(data);\n\t\tconst headerObj = {\n\t\t\t...(await this._awsRealTimeHeaderBasedAuth({\n\t\t\t\tapiKey,\n\t\t\t\tappSyncGraphqlEndpoint,\n\t\t\t\tauthenticationType,\n\t\t\t\tpayload: dataString,\n\t\t\t\tcanonicalUri: '',\n\t\t\t\tregion,\n\t\t\t\tadditionalHeaders,\n\t\t\t})),\n\t\t\t...(await graphql_headers()),\n\t\t\t...additionalHeaders,\n\t\t\t[USER_AGENT_HEADER]: Constants.userAgent,\n\t\t};\n\n\t\tconst subscriptionMessage = {\n\t\t\tid: subscriptionId,\n\t\t\tpayload: {\n\t\t\t\tdata: dataString,\n\t\t\t\textensions: {\n\t\t\t\t\tauthorization: {\n\t\t\t\t\t\t...headerObj,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\ttype: MESSAGE_TYPES.GQL_START,\n\t\t};\n\n\t\tconst stringToAWSRealTime = JSON.stringify(subscriptionMessage);\n\n\t\ttry {\n\t\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.OPENING_CONNECTION);\n\t\t\tawait this._initializeWebSocketConnection({\n\t\t\t\tapiKey,\n\t\t\t\tappSyncGraphqlEndpoint,\n\t\t\t\tauthenticationType,\n\t\t\t\tregion,\n\t\t\t\tadditionalHeaders,\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tlogger.debug({ err });\n\t\t\tconst message = err['message'] ?? '';\n\t\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n\t\t\tobserver.error({\n\t\t\t\terrors: [\n\t\t\t\t\t{\n\t\t\t\t\t\t...new GraphQLError(`${CONTROL_MSG.CONNECTION_FAILED}: ${message}`),\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\tobserver.complete();\n\t\t\tconst { subscriptionFailedCallback } =\n\t\t\t\tthis.subscriptionObserverMap.get(subscriptionId) || {};\n\n\t\t\t// Notify concurrent unsubscription\n\t\t\tif (typeof subscriptionFailedCallback === 'function') {\n\t\t\t\tsubscriptionFailedCallback();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Potential race condition can occur when unsubscribe is called during _initializeWebSocketConnection.\n\t\t// E.g.unsubscribe gets invoked prior to finishing WebSocket handshake or START_ACK.\n\t\t// Both subscriptionFailedCallback and subscriptionReadyCallback are used to synchronized this.\n\n\t\tconst { subscriptionFailedCallback, subscriptionReadyCallback } =\n\t\t\tthis.subscriptionObserverMap.get(subscriptionId) ?? {};\n\n\t\t// This must be done before sending the message in order to be listening immediately\n\t\tthis.subscriptionObserverMap.set(subscriptionId, {\n\t\t\tobserver,\n\t\t\tsubscriptionState,\n\t\t\tquery: query ?? '',\n\t\t\tvariables: variables ?? {},\n\t\t\tsubscriptionReadyCallback,\n\t\t\tsubscriptionFailedCallback,\n\t\t\tstartAckTimeoutId: setTimeout(() => {\n\t\t\t\tthis._timeoutStartSubscriptionAck.call(this, subscriptionId);\n\t\t\t}, START_ACK_TIMEOUT),\n\t\t});\n\t\tif (this.awsRealTimeSocket) {\n\t\t\tthis.awsRealTimeSocket.send(stringToAWSRealTime);\n\t\t}\n\t}\n\n\t// Waiting that subscription has been connected before trying to unsubscribe\n\tprivate async _waitForSubscriptionToBeConnected(subscriptionId: string) {\n\t\tconst subscriptionObserver =\n\t\t\tthis.subscriptionObserverMap.get(subscriptionId);\n\t\tif (subscriptionObserver) {\n\t\t\tconst { subscriptionState } = subscriptionObserver;\n\t\t\t// This in case unsubscribe is invoked before sending start subscription message\n\t\t\tif (subscriptionState === SUBSCRIPTION_STATUS.PENDING) {\n\t\t\t\treturn new Promise((res, rej) => {\n\t\t\t\t\tconst { observer, subscriptionState, variables, query } =\n\t\t\t\t\t\tsubscriptionObserver;\n\t\t\t\t\tthis.subscriptionObserverMap.set(subscriptionId, {\n\t\t\t\t\t\tobserver,\n\t\t\t\t\t\tsubscriptionState,\n\t\t\t\t\t\tvariables,\n\t\t\t\t\t\tquery,\n\t\t\t\t\t\tsubscriptionReadyCallback: res,\n\t\t\t\t\t\tsubscriptionFailedCallback: rej,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _sendUnsubscriptionMessage(subscriptionId: string) {\n\t\ttry {\n\t\t\tif (\n\t\t\t\tthis.awsRealTimeSocket &&\n\t\t\t\tthis.awsRealTimeSocket.readyState === WebSocket.OPEN &&\n\t\t\t\tthis.socketStatus === SOCKET_STATUS.READY\n\t\t\t) {\n\t\t\t\t// Preparing unsubscribe message to stop receiving messages for that subscription\n\t\t\t\tconst unsubscribeMessage = {\n\t\t\t\t\tid: subscriptionId,\n\t\t\t\t\ttype: MESSAGE_TYPES.GQL_STOP,\n\t\t\t\t};\n\t\t\t\tconst stringToAWSRealTime = JSON.stringify(unsubscribeMessage);\n\t\t\t\tthis.awsRealTimeSocket.send(stringToAWSRealTime);\n\t\t\t}\n\t\t} catch (err) {\n\t\t\t// If GQL_STOP is not sent because of disconnection issue, then there is nothing the client can do\n\t\t\tlogger.debug({ err });\n\t\t}\n\t}\n\n\tprivate _removeSubscriptionObserver(subscriptionId: string) {\n\t\tthis.subscriptionObserverMap.delete(subscriptionId);\n\n\t\t// Verifying 1000ms after removing subscription in case there are new subscription unmount/mount\n\t\tsetTimeout(this._closeSocketIfRequired.bind(this), 1000);\n\t}\n\n\tprivate _closeSocketIfRequired() {\n\t\tif (this.subscriptionObserverMap.size > 0) {\n\t\t\t// Active subscriptions on the WebSocket\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.awsRealTimeSocket) {\n\t\t\tthis.socketStatus = SOCKET_STATUS.CLOSED;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSING_CONNECTION);\n\n\t\tif (this.awsRealTimeSocket.bufferedAmount > 0) {\n\t\t\t// Still data on the WebSocket\n\t\t\tsetTimeout(this._closeSocketIfRequired.bind(this), 1000);\n\t\t} else {\n\t\t\tlogger.debug('closing WebSocket...');\n\t\t\tif (this.keepAliveTimeoutId) {\n\t\t\t\tclearTimeout(this.keepAliveTimeoutId);\n\t\t\t}\n\t\t\tif (this.keepAliveAlertTimeoutId) {\n\t\t\t\tclearTimeout(this.keepAliveAlertTimeoutId);\n\t\t\t}\n\t\t\tconst tempSocket = this.awsRealTimeSocket;\n\t\t\t// Cleaning callbacks to avoid race condition, socket still exists\n\t\t\ttempSocket.onclose = null;\n\t\t\ttempSocket.onerror = null;\n\t\t\ttempSocket.close(1000);\n\t\t\tthis.awsRealTimeSocket = undefined;\n\t\t\tthis.socketStatus = SOCKET_STATUS.CLOSED;\n\t\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n\t\t}\n\t}\n\n\tprivate _handleIncomingSubscriptionMessage(message: MessageEvent) {\n\t\tlogger.debug(\n\t\t\t`subscription message from AWS AppSync RealTime: ${message.data}`\n\t\t);\n\t\tconst { id = '', payload, type } = JSON.parse(message.data);\n\t\tconst {\n\t\t\tobserver = null,\n\t\t\tquery = '',\n\t\t\tvariables = {},\n\t\t\tstartAckTimeoutId,\n\t\t\tsubscriptionReadyCallback,\n\t\t\tsubscriptionFailedCallback,\n\t\t} = this.subscriptionObserverMap.get(id) || {};\n\n\t\tlogger.debug({ id, observer, query, variables });\n\n\t\tif (type === MESSAGE_TYPES.GQL_DATA && payload && payload.data) {\n\t\t\tif (observer) {\n\t\t\t\tobserver.next(payload);\n\t\t\t} else {\n\t\t\t\tlogger.debug(`observer not found for id: ${id}`);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (type === MESSAGE_TYPES.GQL_START_ACK) {\n\t\t\tlogger.debug(\n\t\t\t\t`subscription ready for ${JSON.stringify({ query, variables })}`\n\t\t\t);\n\t\t\tif (typeof subscriptionReadyCallback === 'function') {\n\t\t\t\tsubscriptionReadyCallback();\n\t\t\t}\n\t\t\tif (startAckTimeoutId) clearTimeout(startAckTimeoutId);\n\t\t\tdispatchApiEvent(\n\t\t\t\tCONTROL_MSG.SUBSCRIPTION_ACK,\n\t\t\t\t{ query, variables },\n\t\t\t\t'Connection established for subscription'\n\t\t\t);\n\t\t\tconst subscriptionState = SUBSCRIPTION_STATUS.CONNECTED;\n\t\t\tif (observer) {\n\t\t\t\tthis.subscriptionObserverMap.set(id, {\n\t\t\t\t\tobserver,\n\t\t\t\t\tquery,\n\t\t\t\t\tvariables,\n\t\t\t\t\tstartAckTimeoutId: undefined,\n\t\t\t\t\tsubscriptionState,\n\t\t\t\t\tsubscriptionReadyCallback,\n\t\t\t\t\tsubscriptionFailedCallback,\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.connectionStateMonitor.record(\n\t\t\t\tCONNECTION_CHANGE.CONNECTION_ESTABLISHED\n\t\t\t);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (type === MESSAGE_TYPES.GQL_CONNECTION_KEEP_ALIVE) {\n\t\t\tif (this.keepAliveTimeoutId) clearTimeout(this.keepAliveTimeoutId);\n\t\t\tif (this.keepAliveAlertTimeoutId)\n\t\t\t\tclearTimeout(this.keepAliveAlertTimeoutId);\n\t\t\tthis.keepAliveTimeoutId = setTimeout(\n\t\t\t\t() => this._errorDisconnect(CONTROL_MSG.TIMEOUT_DISCONNECT),\n\t\t\t\tthis.keepAliveTimeout\n\t\t\t);\n\t\t\tthis.keepAliveAlertTimeoutId = setTimeout(() => {\n\t\t\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.KEEP_ALIVE_MISSED);\n\t\t\t}, DEFAULT_KEEP_ALIVE_ALERT_TIMEOUT);\n\t\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.KEEP_ALIVE);\n\t\t\treturn;\n\t\t}\n\n\t\tif (type === MESSAGE_TYPES.GQL_ERROR) {\n\t\t\tconst subscriptionState = SUBSCRIPTION_STATUS.FAILED;\n\t\t\tif (observer) {\n\t\t\t\tthis.subscriptionObserverMap.set(id, {\n\t\t\t\t\tobserver,\n\t\t\t\t\tquery,\n\t\t\t\t\tvariables,\n\t\t\t\t\tstartAckTimeoutId,\n\t\t\t\t\tsubscriptionReadyCallback,\n\t\t\t\t\tsubscriptionFailedCallback,\n\t\t\t\t\tsubscriptionState,\n\t\t\t\t});\n\n\t\t\t\tobserver.error({\n\t\t\t\t\terrors: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...new GraphQLError(\n\t\t\t\t\t\t\t\t`${CONTROL_MSG.CONNECTION_FAILED}: ${JSON.stringify(payload)}`\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t\tif (startAckTimeoutId) clearTimeout(startAckTimeoutId);\n\n\t\t\t\tobserver.complete();\n\t\t\t\tif (typeof subscriptionFailedCallback === 'function') {\n\t\t\t\t\tsubscriptionFailedCallback();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _errorDisconnect(msg: string) {\n\t\tlogger.debug(`Disconnect error: ${msg}`);\n\t\tthis.subscriptionObserverMap.forEach(({ observer }) => {\n\t\t\tif (observer && !observer.closed) {\n\t\t\t\tobserver.error({\n\t\t\t\t\terrors: [{ ...new GraphQLError(msg) }],\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tthis.subscriptionObserverMap.clear();\n\t\tif (this.awsRealTimeSocket) {\n\t\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n\t\t\tthis.awsRealTimeSocket.close();\n\t\t}\n\n\t\tthis.socketStatus = SOCKET_STATUS.CLOSED;\n\t}\n\n\tprivate _timeoutStartSubscriptionAck(subscriptionId: string) {\n\t\tconst subscriptionObserver =\n\t\t\tthis.subscriptionObserverMap.get(subscriptionId);\n\t\tif (subscriptionObserver) {\n\t\t\tconst { observer, query, variables } = subscriptionObserver;\n\t\t\tif (!observer) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.subscriptionObserverMap.set(subscriptionId, {\n\t\t\t\tobserver,\n\t\t\t\tquery,\n\t\t\t\tvariables,\n\t\t\t\tsubscriptionState: SUBSCRIPTION_STATUS.FAILED,\n\t\t\t});\n\n\t\t\tif (observer && !observer.closed) {\n\t\t\t\tobserver.error({\n\t\t\t\t\terrors: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...new GraphQLError(\n\t\t\t\t\t\t\t\t`Subscription timeout ${JSON.stringify({\n\t\t\t\t\t\t\t\t\tquery,\n\t\t\t\t\t\t\t\t\tvariables,\n\t\t\t\t\t\t\t\t})}`\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t\t// Cleanup will be automatically executed\n\t\t\t\tobserver.complete();\n\t\t\t}\n\t\t\tlogger.debug(\n\t\t\t\t'timeoutStartSubscription',\n\t\t\t\tJSON.stringify({ query, variables })\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate _initializeWebSocketConnection({\n\t\tappSyncGraphqlEndpoint,\n\t\tauthenticationType,\n\t\tapiKey,\n\t\tregion,\n\t\tadditionalHeaders,\n\t}: AWSAppSyncRealTimeProviderOptions) {\n\t\tif (this.socketStatus === SOCKET_STATUS.READY) {\n\t\t\treturn;\n\t\t}\n\t\treturn new Promise(async (res, rej) => {\n\t\t\tthis.promiseArray.push({ res, rej });\n\n\t\t\tif (this.socketStatus === SOCKET_STATUS.CLOSED) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.socketStatus = SOCKET_STATUS.CONNECTING;\n\n\t\t\t\t\tconst payloadString = '{}';\n\t\t\t\t\tconst headerString = JSON.stringify(\n\t\t\t\t\t\tawait this._awsRealTimeHeaderBasedAuth({\n\t\t\t\t\t\t\tauthenticationType,\n\t\t\t\t\t\t\tpayload: payloadString,\n\t\t\t\t\t\t\tcanonicalUri: '/connect',\n\t\t\t\t\t\t\tapiKey,\n\t\t\t\t\t\t\tappSyncGraphqlEndpoint,\n\t\t\t\t\t\t\tregion,\n\t\t\t\t\t\t\tadditionalHeaders,\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t\tconst headerQs = Buffer.from(headerString).toString('base64');\n\n\t\t\t\t\tconst payloadQs = Buffer.from(payloadString).toString('base64');\n\n\t\t\t\t\tlet discoverableEndpoint = appSyncGraphqlEndpoint ?? '';\n\n\t\t\t\t\tif (this.isCustomDomain(discoverableEndpoint)) {\n\t\t\t\t\t\tdiscoverableEndpoint =\n\t\t\t\t\t\t\tdiscoverableEndpoint.concat(customDomainPath);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdiscoverableEndpoint = discoverableEndpoint\n\t\t\t\t\t\t\t.replace('appsync-api', 'appsync-realtime-api')\n\t\t\t\t\t\t\t.replace('gogi-beta', 'grt-beta');\n\t\t\t\t\t}\n\n\t\t\t\t\t// Creating websocket url with required query strings\n\t\t\t\t\tconst protocol = this.isSSLEnabled ? 'wss://' : 'ws://';\n\t\t\t\t\tdiscoverableEndpoint = discoverableEndpoint\n\t\t\t\t\t\t.replace('https://', protocol)\n\t\t\t\t\t\t.replace('http://', protocol);\n\n\t\t\t\t\tconst awsRealTimeUrl = `${discoverableEndpoint}?header=${headerQs}&payload=${payloadQs}`;\n\n\t\t\t\t\tawait this._initializeRetryableHandshake(awsRealTimeUrl);\n\n\t\t\t\t\tthis.promiseArray.forEach(({ res }) => {\n\t\t\t\t\t\tlogger.debug('Notifying connection successful');\n\t\t\t\t\t\tres();\n\t\t\t\t\t});\n\t\t\t\t\tthis.socketStatus = SOCKET_STATUS.READY;\n\t\t\t\t\tthis.promiseArray = [];\n\t\t\t\t} catch (err) {\n\t\t\t\t\tthis.promiseArray.forEach(({ rej }) => rej(err));\n\t\t\t\t\tthis.promiseArray = [];\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.awsRealTimeSocket &&\n\t\t\t\t\t\tthis.awsRealTimeSocket.readyState === WebSocket.OPEN\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.awsRealTimeSocket.close(3001);\n\t\t\t\t\t}\n\t\t\t\t\tthis.awsRealTimeSocket = undefined;\n\t\t\t\t\tthis.socketStatus = SOCKET_STATUS.CLOSED;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate async _initializeRetryableHandshake(awsRealTimeUrl: string) {\n\t\tlogger.debug(`Initializaling retryable Handshake`);\n\t\tawait jitteredExponentialRetry(\n\t\t\tthis._initializeHandshake.bind(this),\n\t\t\t[awsRealTimeUrl],\n\t\t\tMAX_DELAY_MS\n\t\t);\n\t}\n\n\tprivate async _initializeHandshake(awsRealTimeUrl: string) {\n\t\tlogger.debug(`Initializing handshake ${awsRealTimeUrl}`);\n\t\t// Because connecting the socket is async, is waiting until connection is open\n\t\t// Step 1: connect websocket\n\t\ttry {\n\t\t\tawait (() => {\n\t\t\t\treturn new Promise((res, rej) => {\n\t\t\t\t\tconst newSocket = this.getNewWebSocket(awsRealTimeUrl, 'graphql-ws');\n\t\t\t\t\tnewSocket.onerror = () => {\n\t\t\t\t\t\tlogger.debug(`WebSocket connection error`);\n\t\t\t\t\t};\n\t\t\t\t\tnewSocket.onclose = () => {\n\t\t\t\t\t\tthis.connectionStateMonitor.record(\n\t\t\t\t\t\t\tCONNECTION_CHANGE.CONNECTION_FAILED\n\t\t\t\t\t\t);\n\t\t\t\t\t\trej(new Error('Connection handshake error'));\n\t\t\t\t\t};\n\t\t\t\t\tnewSocket.onopen = () => {\n\t\t\t\t\t\tthis.awsRealTimeSocket = newSocket;\n\t\t\t\t\t\treturn res();\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t})();\n\n\t\t\t// Step 2: wait for ack from AWS AppSyncReaTime after sending init\n\t\t\tawait (() => {\n\t\t\t\treturn new Promise((res, rej) => {\n\t\t\t\t\tif (this.awsRealTimeSocket) {\n\t\t\t\t\t\tlet ackOk = false;\n\t\t\t\t\t\tthis.awsRealTimeSocket.onerror = error => {\n\t\t\t\t\t\t\tlogger.debug(`WebSocket error ${JSON.stringify(error)}`);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis.awsRealTimeSocket.onclose = event => {\n\t\t\t\t\t\t\tlogger.debug(`WebSocket closed ${event.reason}`);\n\t\t\t\t\t\t\trej(new Error(JSON.stringify(event)));\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tthis.awsRealTimeSocket.onmessage = (message: MessageEvent) => {\n\t\t\t\t\t\t\tlogger.debug(\n\t\t\t\t\t\t\t\t`subscription message from AWS AppSyncRealTime: ${message.data} `\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst data = JSON.parse(message.data);\n\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t\tconnectionTimeoutMs = DEFAULT_KEEP_ALIVE_TIMEOUT,\n\t\t\t\t\t\t\t\t} = {},\n\t\t\t\t\t\t\t} = data;\n\t\t\t\t\t\t\tif (type === MESSAGE_TYPES.GQL_CONNECTION_ACK) {\n\t\t\t\t\t\t\t\tackOk = true;\n\t\t\t\t\t\t\t\tif (this.awsRealTimeSocket) {\n\t\t\t\t\t\t\t\t\tthis.keepAliveTimeout = connectionTimeoutMs;\n\t\t\t\t\t\t\t\t\tthis.awsRealTimeSocket.onmessage =\n\t\t\t\t\t\t\t\t\t\tthis._handleIncomingSubscriptionMessage.bind(this);\n\t\t\t\t\t\t\t\t\tthis.awsRealTimeSocket.onerror = err => {\n\t\t\t\t\t\t\t\t\t\tlogger.debug(err);\n\t\t\t\t\t\t\t\t\t\tthis._errorDisconnect(CONTROL_MSG.CONNECTION_CLOSED);\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\tthis.awsRealTimeSocket.onclose = event => {\n\t\t\t\t\t\t\t\t\t\tlogger.debug(`WebSocket closed ${event.reason}`);\n\t\t\t\t\t\t\t\t\t\tthis._errorDisconnect(CONTROL_MSG.CONNECTION_CLOSED);\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tres('Cool, connected to AWS AppSyncRealTime');\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (type === MESSAGE_TYPES.GQL_CONNECTION_ERROR) {\n\t\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t\t\terrors: [{ errorType = '', errorCode = 0 } = {}] = [],\n\t\t\t\t\t\t\t\t\t} = {},\n\t\t\t\t\t\t\t\t} = data;\n\n\t\t\t\t\t\t\t\trej({ errorType, errorCode });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst gqlInit = {\n\t\t\t\t\t\t\ttype: MESSAGE_TYPES.GQL_CONNECTION_INIT,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis.awsRealTimeSocket.send(JSON.stringify(gqlInit));\n\n\t\t\t\t\t\tconst checkAckOk = (ackOk: boolean) => {\n\t\t\t\t\t\t\tif (!ackOk) {\n\t\t\t\t\t\t\t\tthis.connectionStateMonitor.record(\n\t\t\t\t\t\t\t\t\tCONNECTION_CHANGE.CONNECTION_FAILED\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t`Connection timeout: ack from AWSAppSyncRealTime was not received after ${CONNECTION_INIT_TIMEOUT} ms`\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tsetTimeout(() => checkAckOk(ackOk), CONNECTION_INIT_TIMEOUT);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t})();\n\t\t} catch (err) {\n\t\t\tconst { errorType, errorCode } = err as {\n\t\t\t\terrorType: string;\n\t\t\t\terrorCode: number;\n\t\t\t};\n\n\t\t\tif (NON_RETRYABLE_CODES.includes(errorCode)) {\n\t\t\t\tthrow new NonRetryableError(errorType);\n\t\t\t} else if (errorType) {\n\t\t\t\tthrow new Error(errorType);\n\t\t\t} else {\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async _awsRealTimeHeaderBasedAuth({\n\t\tauthenticationType,\n\t\tpayload,\n\t\tcanonicalUri,\n\t\tappSyncGraphqlEndpoint,\n\t\tapiKey,\n\t\tregion,\n\t\tadditionalHeaders,\n\t}: AWSAppSyncRealTimeProviderOptions): Promise {\n\t\tconst headerHandler: {\n\t\t\t[key in GraphqlAuthModes]: (AWSAppSyncRealTimeAuthInput) => {};\n\t\t} = {\n\t\t\tAPI_KEY: this._awsRealTimeApiKeyHeader.bind(this),\n\t\t\tAWS_IAM: this._awsRealTimeIAMHeader.bind(this),\n\t\t\tOPENID_CONNECT: this._awsRealTimeOPENIDHeader.bind(this),\n\t\t\tAMAZON_COGNITO_USER_POOLS: this._awsRealTimeCUPHeader.bind(this),\n\t\t\tAWS_LAMBDA: this._customAuthHeader,\n\t\t};\n\n\t\tif (!authenticationType || !headerHandler[authenticationType]) {\n\t\t\tlogger.debug(`Authentication type ${authenticationType} not supported`);\n\t\t\treturn '';\n\t\t} else {\n\t\t\tconst handler = headerHandler[authenticationType];\n\n\t\t\tconst { host } = url.parse(appSyncGraphqlEndpoint ?? '');\n\n\t\t\tlogger.debug(`Authenticating with ${authenticationType}`);\n\n\t\t\tconst result = await handler({\n\t\t\t\tpayload,\n\t\t\t\tcanonicalUri,\n\t\t\t\tappSyncGraphqlEndpoint,\n\t\t\t\tapiKey,\n\t\t\t\tregion,\n\t\t\t\thost,\n\t\t\t\tadditionalHeaders,\n\t\t\t});\n\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tprivate async _awsRealTimeCUPHeader({ host }: AWSAppSyncRealTimeAuthInput) {\n\t\tconst session = await Auth.currentSession();\n\t\treturn {\n\t\t\tAuthorization: session.getAccessToken().getJwtToken(),\n\t\t\thost,\n\t\t};\n\t}\n\n\tprivate async _awsRealTimeOPENIDHeader({\n\t\thost,\n\t}: AWSAppSyncRealTimeAuthInput) {\n\t\tlet token;\n\t\t// backwards compatibility\n\t\tconst federatedInfo = await Cache.getItem('federatedInfo');\n\t\tif (federatedInfo) {\n\t\t\ttoken = federatedInfo.token;\n\t\t} else {\n\t\t\tconst currentUser = await Auth.currentAuthenticatedUser();\n\t\t\tif (currentUser) {\n\t\t\t\ttoken = currentUser.token;\n\t\t\t}\n\t\t}\n\t\tif (!token) {\n\t\t\tthrow new Error('No federated jwt');\n\t\t}\n\t\treturn {\n\t\t\tAuthorization: token,\n\t\t\thost,\n\t\t};\n\t}\n\n\tprivate async _awsRealTimeApiKeyHeader({\n\t\tapiKey,\n\t\thost,\n\t}: AWSAppSyncRealTimeAuthInput) {\n\t\tconst dt = new Date();\n\t\tconst dtStr = dt.toISOString().replace(/[:\\-]|\\.\\d{3}/g, '');\n\n\t\treturn {\n\t\t\thost,\n\t\t\t'x-amz-date': dtStr,\n\t\t\t'x-api-key': apiKey,\n\t\t};\n\t}\n\n\tprivate async _awsRealTimeIAMHeader({\n\t\tpayload,\n\t\tcanonicalUri,\n\t\tappSyncGraphqlEndpoint,\n\t\tregion,\n\t}: AWSAppSyncRealTimeAuthInput) {\n\t\tconst endpointInfo = {\n\t\t\tregion,\n\t\t\tservice: 'appsync',\n\t\t};\n\n\t\tconst credentialsOK = await this._ensureCredentials();\n\t\tif (!credentialsOK) {\n\t\t\tthrow new Error('No credentials');\n\t\t}\n\t\tconst creds = await Credentials.get().then((credentials: any) => {\n\t\t\tconst { secretAccessKey, accessKeyId, sessionToken } =\n\t\t\t\tcredentials as ICredentials;\n\n\t\t\treturn {\n\t\t\t\tsecret_key: secretAccessKey,\n\t\t\t\taccess_key: accessKeyId,\n\t\t\t\tsession_token: sessionToken,\n\t\t\t};\n\t\t});\n\n\t\tconst request = {\n\t\t\turl: `${appSyncGraphqlEndpoint}${canonicalUri}`,\n\t\t\tdata: payload,\n\t\t\tmethod: 'POST',\n\t\t\theaders: { ...AWS_APPSYNC_REALTIME_HEADERS },\n\t\t};\n\n\t\tconst signed_params = Signer.sign(request, creds, endpointInfo);\n\t\treturn signed_params.headers;\n\t}\n\n\tprivate _customAuthHeader({\n\t\thost,\n\t\tadditionalHeaders,\n\t}: AWSAppSyncRealTimeAuthInput) {\n\t\tif (!additionalHeaders || !additionalHeaders['Authorization']) {\n\t\t\tthrow new Error('No auth token specified');\n\t\t}\n\n\t\treturn {\n\t\t\tAuthorization: additionalHeaders.Authorization,\n\t\t\thost,\n\t\t};\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_ensureCredentials() {\n\t\treturn Credentials.get()\n\t\t\t.then((credentials: any) => {\n\t\t\t\tif (!credentials) return false;\n\t\t\t\tconst cred = Credentials.shear(credentials);\n\t\t\t\tlogger.debug('set credentials for AWSAppSyncRealTimeProvider', cred);\n\n\t\t\t\treturn true;\n\t\t\t})\n\t\t\t.catch((err: any) => {\n\t\t\t\tlogger.warn('ensure credentials error', err);\n\t\t\t\treturn false;\n\t\t\t});\n\t}\n}\n","/*\n * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n// import '../Common/Polyfills';\nimport Observable from 'zen-observable-ts';\n\nimport {\n\tAmplify,\n\tbrowserOrNode,\n\tConsoleLogger as Logger,\n\tINTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER,\n\tINTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER,\n} from '@aws-amplify/core';\nimport { PubSubProvider, PubSubOptions, ProviderOptions } from './types';\nimport { AWSAppSyncProvider, AWSAppSyncRealTimeProvider } from './Providers';\n\nconst { isNode } = browserOrNode();\nconst logger = new Logger('PubSub');\n\nexport class PubSubClass {\n\tprivate _options: PubSubOptions;\n\n\tprivate _pluggables: PubSubProvider[];\n\n\t/**\n\t * Internal instance of AWSAppSyncProvider used by the API category to subscribe to AppSync\n\t */\n\tprivate _awsAppSyncProvider?: AWSAppSyncProvider;\n\n\t/**\n\t * Internal instance of AWSAppSyncRealTimeProvider used by the API category to subscribe to AppSync\n\t */\n\tprivate _awsAppSyncRealTimeProvider?: AWSAppSyncRealTimeProvider;\n\n\t/**\n\t * Lazy instantiate AWSAppSyncProvider when it is required by the API category\n\t */\n\tprivate get awsAppSyncProvider() {\n\t\tif (!this._awsAppSyncProvider) {\n\t\t\tthis._awsAppSyncProvider = new AWSAppSyncProvider(this._options);\n\t\t}\n\t\treturn this._awsAppSyncProvider;\n\t}\n\n\t/**\n\t * Lazy instantiate AWSAppSyncRealTimeProvider when it is required by the API category\n\t */\n\tprivate get awsAppSyncRealTimeProvider() {\n\t\tif (!this._awsAppSyncRealTimeProvider) {\n\t\t\tthis._awsAppSyncRealTimeProvider = new AWSAppSyncRealTimeProvider(\n\t\t\t\tthis._options\n\t\t\t);\n\t\t}\n\t\treturn this._awsAppSyncRealTimeProvider;\n\t}\n\n\t/**\n\t * Initialize PubSub with AWS configurations\n\t *\n\t * @param {PubSubOptions} options - Configuration object for PubSub\n\t */\n\tconstructor(options?: PubSubOptions) {\n\t\tthis._options = options ?? {};\n\t\tlogger.debug('PubSub Options', this._options);\n\t\tthis._pluggables = [];\n\t\tthis.subscribe = this.subscribe.bind(this);\n\t}\n\n\tpublic getModuleName() {\n\t\treturn 'PubSub';\n\t}\n\n\t/**\n\t * Configure PubSub part with configurations\n\t *\n\t * @param {PubSubOptions} config - Configuration for PubSub\n\t * @return {Object} - The current configuration\n\t */\n\tconfigure(options: PubSubOptions) {\n\t\tconst opt = options ? options.PubSub || options : {};\n\t\tlogger.debug('configure PubSub', { opt });\n\n\t\tthis._options = Object.assign({}, this._options, opt);\n\n\t\tthis._pluggables.map(pluggable => pluggable.configure(this._options));\n\n\t\treturn this._options;\n\t}\n\n\t/**\n\t * add plugin into Analytics category\n\t * @param {Object} pluggable - an instance of the plugin\n\t */\n\tpublic async addPluggable(pluggable: PubSubProvider) {\n\t\tif (pluggable && pluggable.getCategory() === 'PubSub') {\n\t\t\tthis._pluggables.push(pluggable);\n\n\t\t\tconst config = pluggable.configure(this._options);\n\n\t\t\treturn config;\n\t\t}\n\t}\n\n\t/**\n\t * remove plugin from PubSub category\n\t * @param providerName - the name of the plugin\n\t */\n\tremovePluggable(providerName: string): void {\n\t\tthis._pluggables = this._pluggables.filter(\n\t\t\tpluggable => pluggable.getProviderName() !== providerName\n\t\t);\n\t}\n\n\tprivate getProviderByName(providerName: string | symbol) {\n\t\tif (providerName === INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER) {\n\t\t\treturn this.awsAppSyncProvider;\n\t\t}\n\t\tif (providerName === INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER) {\n\t\t\treturn this.awsAppSyncRealTimeProvider;\n\t\t}\n\n\t\treturn this._pluggables.find(\n\t\t\tpluggable => pluggable.getProviderName() === providerName\n\t\t);\n\t}\n\n\tprivate getProviders(options: ProviderOptions = {}) {\n\t\tconst { provider: providerName } = options;\n\t\tif (!providerName) {\n\t\t\treturn this._pluggables;\n\t\t}\n\n\t\tconst provider = this.getProviderByName(providerName);\n\t\tif (!provider) {\n\t\t\tthrow new Error(`Could not find provider named ${providerName}`);\n\t\t}\n\n\t\treturn [provider];\n\t}\n\n\tasync publish(\n\t\ttopics: string[] | string,\n\t\tmsg: any,\n\t\toptions?: ProviderOptions\n\t) {\n\t\treturn Promise.all(\n\t\t\tthis.getProviders(options).map(provider =>\n\t\t\t\tprovider.publish(topics, msg, options)\n\t\t\t)\n\t\t);\n\t}\n\n\tsubscribe(\n\t\ttopics: string[] | string,\n\t\toptions?: ProviderOptions\n\t): Observable {\n\t\tif (isNode && this._options && this._options.ssr) {\n\t\t\tthrow new Error(\n\t\t\t\t'Subscriptions are not supported for Server-Side Rendering (SSR)'\n\t\t\t);\n\t\t}\n\n\t\tlogger.debug('subscribe options', options);\n\n\t\tconst providers = this.getProviders(options);\n\n\t\treturn new Observable(observer => {\n\t\t\tconst observables = providers.map(provider => ({\n\t\t\t\tprovider,\n\t\t\t\tobservable: provider.subscribe(topics, options),\n\t\t\t}));\n\n\t\t\tconst subscriptions = observables.map(({ provider, observable }) =>\n\t\t\t\tobservable.subscribe({\n\t\t\t\t\tstart: console.error,\n\t\t\t\t\tnext: value => observer.next({ provider, value }),\n\t\t\t\t\terror: error => observer.error({ provider, error }),\n\t\t\t\t\t// complete: observer.complete, // TODO: when all completed, complete the outer one\n\t\t\t\t})\n\t\t\t);\n\n\t\t\treturn () =>\n\t\t\t\tsubscriptions.forEach(subscription => subscription.unsubscribe());\n\t\t});\n\t}\n}\n\nexport const PubSub = new PubSubClass();\nAmplify.register(PubSub);\n","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport {\n\tDocumentNode,\n\tOperationDefinitionNode,\n\tprint,\n\tparse,\n\tGraphQLError,\n\tOperationTypeNode,\n} from 'graphql';\nimport Observable from 'zen-observable-ts';\nimport {\n\tAmplify,\n\tConsoleLogger as Logger,\n\tCredentials,\n\tgetAmplifyUserAgent,\n\tINTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER,\n} from '@aws-amplify/core';\nimport { PubSub } from '@aws-amplify/pubsub';\nimport Auth from '@aws-amplify/auth';\nimport Cache from '@aws-amplify/cache';\nimport {\n\tGraphQLAuthError,\n\tGraphQLOptions,\n\tGraphQLResult,\n\tGraphQLOperation,\n} from './types';\nimport { RestClient } from '@aws-amplify/api-rest';\nconst USER_AGENT_HEADER = 'x-amz-user-agent';\n\nconst logger = new Logger('GraphQLAPI');\n\nexport const graphqlOperation = (\n\tquery,\n\tvariables = {},\n\tauthToken?: string,\n\tuserAgentSuffix?: string\n) => ({\n\tquery,\n\tvariables,\n\tauthToken,\n\tuserAgentSuffix,\n});\n\n/**\n * Export Cloud Logic APIs\n */\nexport class GraphQLAPIClass {\n\t/**\n\t * @private\n\t */\n\tprivate _options;\n\tprivate _api = null;\n\n\tAuth = Auth;\n\tCache = Cache;\n\tCredentials = Credentials;\n\n\t/**\n\t * Initialize GraphQL API with AWS configuration\n\t * @param {Object} options - Configuration object for API\n\t */\n\tconstructor(options) {\n\t\tthis._options = options;\n\t\tlogger.debug('API Options', this._options);\n\t}\n\n\tpublic getModuleName() {\n\t\treturn 'GraphQLAPI';\n\t}\n\n\t/**\n\t * Configure API\n\t * @param {Object} config - Configuration of the API\n\t * @return {Object} - The current configuration\n\t */\n\tconfigure(options) {\n\t\tconst { API = {}, ...otherOptions } = options || {};\n\t\tlet opt = { ...otherOptions, ...API };\n\t\tlogger.debug('configure GraphQL API', { opt });\n\n\t\tif (opt['aws_project_region']) {\n\t\t\topt = Object.assign({}, opt, {\n\t\t\t\tregion: opt['aws_project_region'],\n\t\t\t\theader: {},\n\t\t\t});\n\t\t}\n\n\t\tif (\n\t\t\ttypeof opt.graphql_headers !== 'undefined' &&\n\t\t\ttypeof opt.graphql_headers !== 'function'\n\t\t) {\n\t\t\tlogger.warn('graphql_headers should be a function');\n\t\t\topt.graphql_headers = undefined;\n\t\t}\n\n\t\tthis._options = Object.assign({}, this._options, opt);\n\n\t\tthis.createInstance();\n\n\t\treturn this._options;\n\t}\n\n\t/**\n\t * Create an instance of API for the library\n\t * @return - A promise of true if Success\n\t */\n\tcreateInstance() {\n\t\tlogger.debug('create Rest instance');\n\t\tif (this._options) {\n\t\t\tthis._api = new RestClient(this._options);\n\t\t\t// Share instance Credentials with client for SSR\n\t\t\tthis._api.Credentials = this.Credentials;\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn Promise.reject('API not configured');\n\t\t}\n\t}\n\n\tprivate async _headerBasedAuth(\n\t\tdefaultAuthenticationType?,\n\t\tadditionalHeaders: { [key: string]: string } = {}\n\t) {\n\t\tconst { aws_appsync_authenticationType, aws_appsync_apiKey: apiKey } =\n\t\t\tthis._options;\n\t\tconst authenticationType =\n\t\t\tdefaultAuthenticationType || aws_appsync_authenticationType || 'AWS_IAM';\n\t\tlet headers = {};\n\n\t\tswitch (authenticationType) {\n\t\t\tcase 'API_KEY':\n\t\t\t\tif (!apiKey) {\n\t\t\t\t\tthrow new Error(GraphQLAuthError.NO_API_KEY);\n\t\t\t\t}\n\t\t\t\theaders = {\n\t\t\t\t\tAuthorization: null,\n\t\t\t\t\t'X-Api-Key': apiKey,\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase 'AWS_IAM':\n\t\t\t\tconst credentialsOK = await this._ensureCredentials();\n\t\t\t\tif (!credentialsOK) {\n\t\t\t\t\tthrow new Error(GraphQLAuthError.NO_CREDENTIALS);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'OPENID_CONNECT':\n\t\t\t\ttry {\n\t\t\t\t\tlet token;\n\t\t\t\t\t// backwards compatibility\n\t\t\t\t\tconst federatedInfo = await Cache.getItem('federatedInfo');\n\t\t\t\t\tif (federatedInfo) {\n\t\t\t\t\t\ttoken = federatedInfo.token;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst currentUser = await Auth.currentAuthenticatedUser();\n\t\t\t\t\t\tif (currentUser) {\n\t\t\t\t\t\t\ttoken = currentUser.token;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!token) {\n\t\t\t\t\t\tthrow new Error(GraphQLAuthError.NO_FEDERATED_JWT);\n\t\t\t\t\t}\n\t\t\t\t\theaders = {\n\t\t\t\t\t\tAuthorization: token,\n\t\t\t\t\t};\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new Error(GraphQLAuthError.NO_CURRENT_USER);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'AMAZON_COGNITO_USER_POOLS':\n\t\t\t\ttry {\n\t\t\t\t\tconst session = await this.Auth.currentSession();\n\t\t\t\t\theaders = {\n\t\t\t\t\t\tAuthorization: session.getAccessToken().getJwtToken(),\n\t\t\t\t\t};\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new Error(GraphQLAuthError.NO_CURRENT_USER);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'AWS_LAMBDA':\n\t\t\t\tif (!additionalHeaders.Authorization) {\n\t\t\t\t\tthrow new Error(GraphQLAuthError.NO_AUTH_TOKEN);\n\t\t\t\t}\n\t\t\t\theaders = {\n\t\t\t\t\tAuthorization: additionalHeaders.Authorization,\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\theaders = {\n\t\t\t\t\tAuthorization: null,\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn headers;\n\t}\n\n\t/**\n\t * to get the operation type\n\t * @param operation\n\t */\n\tgetGraphqlOperationType(operation: GraphQLOperation): OperationTypeNode {\n\t\tconst doc = parse(operation);\n\t\tconst definitions =\n\t\t\tdoc.definitions as ReadonlyArray;\n\t\tconst [{ operation: operationType }] = definitions;\n\n\t\treturn operationType;\n\t}\n\n\t/**\n\t * Executes a GraphQL operation\n\t *\n\t * @param options - GraphQL Options\n\t * @param [additionalHeaders] - headers to merge in after any `graphql_headers` set in the config\n\t * @returns An Observable if the query is a subscription query, else a promise of the graphql result.\n\t */\n\tgraphql(\n\t\t{\n\t\t\tquery: paramQuery,\n\t\t\tvariables = {},\n\t\t\tauthMode,\n\t\t\tauthToken,\n\t\t\tuserAgentSuffix,\n\t\t}: GraphQLOptions,\n\t\tadditionalHeaders?: { [key: string]: string }\n\t): Observable> | Promise> {\n\t\tconst query =\n\t\t\ttypeof paramQuery === 'string'\n\t\t\t\t? parse(paramQuery)\n\t\t\t\t: parse(print(paramQuery));\n\n\t\tconst [operationDef = {}] = query.definitions.filter(\n\t\t\tdef => def.kind === 'OperationDefinition'\n\t\t);\n\t\tconst { operation: operationType } =\n\t\t\toperationDef as OperationDefinitionNode;\n\n\t\tconst headers = additionalHeaders || {};\n\n\t\t// if an authorization header is set, have the explicit authToken take precedence\n\t\tif (authToken) {\n\t\t\theaders.Authorization = authToken;\n\t\t}\n\n\t\tswitch (operationType) {\n\t\t\tcase 'query':\n\t\t\tcase 'mutation':\n\t\t\t\tthis.createInstanceIfNotCreated();\n\t\t\t\tconst cancellableToken = this._api.getCancellableToken();\n\t\t\t\tconst initParams = { cancellableToken };\n\t\t\t\tconst responsePromise = this._graphql(\n\t\t\t\t\t{ query, variables, authMode, userAgentSuffix },\n\t\t\t\t\theaders,\n\t\t\t\t\tinitParams\n\t\t\t\t);\n\t\t\t\tthis._api.updateRequestToBeCancellable(\n\t\t\t\t\tresponsePromise,\n\t\t\t\t\tcancellableToken\n\t\t\t\t);\n\t\t\t\treturn responsePromise;\n\t\t\tcase 'subscription':\n\t\t\t\treturn this._graphqlSubscribe({ query, variables, authMode }, headers);\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`invalid operation type: ${operationType}`);\n\t\t}\n\t}\n\n\tprivate async _graphql(\n\t\t{ query, variables, authMode, userAgentSuffix }: GraphQLOptions,\n\t\tadditionalHeaders = {},\n\t\tinitParams = {}\n\t): Promise> {\n\t\tthis.createInstanceIfNotCreated();\n\t\tconst {\n\t\t\taws_appsync_region: region,\n\t\t\taws_appsync_graphqlEndpoint: appSyncGraphqlEndpoint,\n\t\t\tgraphql_headers = () => ({}),\n\t\t\tgraphql_endpoint: customGraphqlEndpoint,\n\t\t\tgraphql_endpoint_iam_region: customEndpointRegion,\n\t\t} = this._options;\n\n\t\tconst headers = {\n\t\t\t...(!customGraphqlEndpoint &&\n\t\t\t\t(await this._headerBasedAuth(authMode, additionalHeaders))),\n\t\t\t...(customGraphqlEndpoint &&\n\t\t\t\t(customEndpointRegion\n\t\t\t\t\t? await this._headerBasedAuth(authMode, additionalHeaders)\n\t\t\t\t\t: { Authorization: null })),\n\t\t\t...(await graphql_headers({ query, variables })),\n\t\t\t...additionalHeaders,\n\t\t\t...(!customGraphqlEndpoint && {\n\t\t\t\t[USER_AGENT_HEADER]: getAmplifyUserAgent(userAgentSuffix),\n\t\t\t}),\n\t\t};\n\n\t\tconst body = {\n\t\t\tquery: print(query as DocumentNode),\n\t\t\tvariables,\n\t\t};\n\n\t\tconst init = Object.assign(\n\t\t\t{\n\t\t\t\theaders,\n\t\t\t\tbody,\n\t\t\t\tsignerServiceInfo: {\n\t\t\t\t\tservice: !customGraphqlEndpoint ? 'appsync' : 'execute-api',\n\t\t\t\t\tregion: !customGraphqlEndpoint ? region : customEndpointRegion,\n\t\t\t\t},\n\t\t\t},\n\t\t\tinitParams\n\t\t);\n\n\t\tconst endpoint = customGraphqlEndpoint || appSyncGraphqlEndpoint;\n\n\t\tif (!endpoint) {\n\t\t\tconst error = new GraphQLError('No graphql endpoint provided.');\n\n\t\t\tthrow {\n\t\t\t\tdata: {},\n\t\t\t\terrors: [error],\n\t\t\t};\n\t\t}\n\n\t\tlet response;\n\t\ttry {\n\t\t\tresponse = await this._api.post(endpoint, init);\n\t\t} catch (err) {\n\t\t\t// If the exception is because user intentionally\n\t\t\t// cancelled the request, do not modify the exception\n\t\t\t// so that clients can identify the exception correctly.\n\t\t\tif (this._api.isCancel(err)) {\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t\tresponse = {\n\t\t\t\tdata: {},\n\t\t\t\terrors: [new GraphQLError(err.message, null, null, null, null, err)],\n\t\t\t};\n\t\t}\n\n\t\tconst { errors } = response;\n\n\t\tif (errors && errors.length) {\n\t\t\tthrow response;\n\t\t}\n\n\t\treturn response;\n\t}\n\n\tasync createInstanceIfNotCreated() {\n\t\tif (!this._api) {\n\t\t\tawait this.createInstance();\n\t\t}\n\t}\n\n\t/**\n\t * Checks to see if an error thrown is from an api request cancellation\n\t * @param {any} error - Any error\n\t * @return {boolean} - A boolean indicating if the error was from an api request cancellation\n\t */\n\tisCancel(error) {\n\t\treturn this._api.isCancel(error);\n\t}\n\n\t/**\n\t * Cancels an inflight request. Only applicable for graphql queries and mutations\n\t * @param {any} request - request to cancel\n\t * @return {boolean} - A boolean indicating if the request was cancelled\n\t */\n\tcancel(request: Promise, message?: string) {\n\t\treturn this._api.cancel(request, message);\n\t}\n\n\t/**\n\t * Check if the request has a corresponding cancel token in the WeakMap.\n\t * @params request - The request promise\n\t * @return if the request has a corresponding cancel token.\n\t */\n\thasCancelToken(request: Promise) {\n\t\treturn this._api.hasCancelToken(request);\n\t}\n\n\tprivate _graphqlSubscribe(\n\t\t{\n\t\t\tquery,\n\t\t\tvariables,\n\t\t\tauthMode: defaultAuthenticationType,\n\t\t\tauthToken,\n\t\t}: GraphQLOptions,\n\t\tadditionalHeaders = {}\n\t): Observable {\n\t\tconst {\n\t\t\taws_appsync_region: region,\n\t\t\taws_appsync_graphqlEndpoint: appSyncGraphqlEndpoint,\n\t\t\taws_appsync_authenticationType,\n\t\t\taws_appsync_apiKey: apiKey,\n\t\t\tgraphql_headers = () => ({}),\n\t\t} = this._options;\n\t\tconst authenticationType =\n\t\t\tdefaultAuthenticationType || aws_appsync_authenticationType || 'AWS_IAM';\n\n\t\tif (PubSub && typeof PubSub.subscribe === 'function') {\n\t\t\treturn PubSub.subscribe('', {\n\t\t\t\tprovider: INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER,\n\t\t\t\tappSyncGraphqlEndpoint,\n\t\t\t\tauthenticationType,\n\t\t\t\tapiKey,\n\t\t\t\tquery: print(query as DocumentNode),\n\t\t\t\tregion,\n\t\t\t\tvariables,\n\t\t\t\tgraphql_headers,\n\t\t\t\tadditionalHeaders,\n\t\t\t\tauthToken,\n\t\t\t});\n\t\t} else {\n\t\t\tlogger.debug('No pubsub module applied for subscription');\n\t\t\tthrow new Error('No pubsub module applied for subscription');\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_ensureCredentials() {\n\t\treturn this.Credentials.get()\n\t\t\t.then(credentials => {\n\t\t\t\tif (!credentials) return false;\n\t\t\t\tconst cred = this.Credentials.shear(credentials);\n\t\t\t\tlogger.debug('set credentials for api', cred);\n\n\t\t\t\treturn true;\n\t\t\t})\n\t\t\t.catch(err => {\n\t\t\t\tlogger.warn('ensure credentials error', err);\n\t\t\t\treturn false;\n\t\t\t});\n\t}\n}\n\nexport const GraphQLAPI = new GraphQLAPIClass(null);\nAmplify.register(GraphQLAPI);\n","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { Auth } from '@aws-amplify/auth';\nimport Cache from '@aws-amplify/cache';\nimport { AWSAppSyncRealTimeProvider } from '@aws-amplify/pubsub';\nimport { RestAPIClass } from '@aws-amplify/api-rest';\nimport {\n\tGraphQLAPIClass,\n\tGraphQLOptions,\n\tGraphQLResult,\n\tGraphQLOperation,\n\tOperationTypeNode,\n} from '@aws-amplify/api-graphql';\nimport {\n\tAmplify,\n\tConsoleLogger as Logger,\n\tCredentials,\n} from '@aws-amplify/core';\nimport Observable from 'zen-observable-ts';\nimport { GraphQLQuery, GraphQLSubscription } from './types';\n\nconst logger = new Logger('API');\n/**\n * @deprecated\n * Use RestApi or GraphQLAPI to reduce your application bundle size\n * Export Cloud Logic APIs\n */\nexport class APIClass {\n\t/**\n\t * Initialize API with AWS configuration\n\t * @param {Object} options - Configuration object for API\n\t */\n\tprivate _options;\n\tprivate _restApi: RestAPIClass;\n\tprivate _graphqlApi: GraphQLAPIClass;\n\n\tAuth = Auth;\n\tCache = Cache;\n\tCredentials = Credentials;\n\n\t/**\n\t * Initialize API with AWS configuration\n\t * @param {Object} options - Configuration object for API\n\t */\n\tconstructor(options) {\n\t\tthis._options = options;\n\t\tthis._restApi = new RestAPIClass(options);\n\t\tthis._graphqlApi = new GraphQLAPIClass(options);\n\t\tlogger.debug('API Options', this._options);\n\t}\n\n\tpublic getModuleName() {\n\t\treturn 'API';\n\t}\n\n\t/**\n\t * Configure API part with aws configurations\n\t * @param {Object} config - Configuration of the API\n\t * @return {Object} - The current configuration\n\t */\n\tconfigure(options) {\n\t\tthis._options = Object.assign({}, this._options, options);\n\n\t\t// Share Amplify instance with client for SSR\n\t\tthis._restApi.Credentials = this.Credentials;\n\n\t\tthis._graphqlApi.Auth = this.Auth;\n\t\tthis._graphqlApi.Cache = this.Cache;\n\t\tthis._graphqlApi.Credentials = this.Credentials;\n\n\t\tconst restAPIConfig = this._restApi.configure(this._options);\n\t\tconst graphQLAPIConfig = this._graphqlApi.configure(this._options);\n\n\t\treturn { ...restAPIConfig, ...graphQLAPIConfig };\n\t}\n\n\t/**\n\t * Make a GET request\n\t * @param apiName - The api name of the request\n\t * @param path - The path of the request\n\t * @param [init] - Request extra params\n\t * @return A promise that resolves to an object with response status and JSON data, if successful.\n\t */\n\tget(\n\t\tapiName: string,\n\t\tpath: string,\n\t\tinit: { [key: string]: any }\n\t): Promise {\n\t\treturn this._restApi.get(apiName, path, init);\n\t}\n\n\t/**\n\t * Make a POST request\n\t * @param apiName - The api name of the request\n\t * @param path - The path of the request\n\t * @param [init] - Request extra params\n\t * @return A promise that resolves to an object with response status and JSON data, if successful.\n\t */\n\tpost(\n\t\tapiName: string,\n\t\tpath: string,\n\t\tinit: { [key: string]: any }\n\t): Promise {\n\t\treturn this._restApi.post(apiName, path, init);\n\t}\n\n\t/**\n\t * Make a PUT request\n\t * @param apiName - The api name of the request\n\t * @param path - The path of the request\n\t * @param [init] - Request extra params\n\t * @return A promise that resolves to an object with response status and JSON data, if successful.\n\t */\n\tput(\n\t\tapiName: string,\n\t\tpath: string,\n\t\tinit: { [key: string]: any }\n\t): Promise {\n\t\treturn this._restApi.put(apiName, path, init);\n\t}\n\n\t/**\n\t * Make a PATCH request\n\t * @param apiName - The api name of the request\n\t * @param path - The path of the request\n\t * @param [init] - Request extra params\n\t * @return A promise that resolves to an object with response status and JSON data, if successful.\n\t */\n\tpatch(\n\t\tapiName: string,\n\t\tpath: string,\n\t\tinit: { [key: string]: any }\n\t): Promise {\n\t\treturn this._restApi.patch(apiName, path, init);\n\t}\n\n\t/**\n\t * Make a DEL request\n\t * @param apiName - The api name of the request\n\t * @param path - The path of the request\n\t * @param [init] - Request extra params\n\t * @return A promise that resolves to an object with response status and JSON data, if successful.\n\t */\n\tdel(\n\t\tapiName: string,\n\t\tpath: string,\n\t\tinit: { [key: string]: any }\n\t): Promise {\n\t\treturn this._restApi.del(apiName, path, init);\n\t}\n\n\t/**\n\t * Make a HEAD request\n\t * @param apiName - The api name of the request\n\t * @param path - The path of the request\n\t * @param [init] - Request extra params\n\t * @return A promise that resolves to an object with response status and JSON data, if successful.\n\t */\n\thead(\n\t\tapiName: string,\n\t\tpath: string,\n\t\tinit: { [key: string]: any }\n\t): Promise {\n\t\treturn this._restApi.head(apiName, path, init);\n\t}\n\n\t/**\n\t * Checks to see if an error thrown is from an api request cancellation\n\t * @param error - Any error\n\t * @return If the error was from an api request cancellation\n\t */\n\tisCancel(error: any): boolean {\n\t\treturn this._restApi.isCancel(error);\n\t}\n\t/**\n\t * Cancels an inflight request for either a GraphQL request or a Rest API request.\n\t * @param request - request to cancel\n\t * @param [message] - custom error message\n\t * @return If the request was cancelled\n\t */\n\tcancel(request: Promise, message?: string): boolean {\n\t\tif (this._restApi.hasCancelToken(request)) {\n\t\t\treturn this._restApi.cancel(request, message);\n\t\t} else if (this._graphqlApi.hasCancelToken(request)) {\n\t\t\treturn this._graphqlApi.cancel(request, message);\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Getting endpoint for API\n\t * @param apiName - The name of the api\n\t * @return The endpoint of the api\n\t */\n\tasync endpoint(apiName: string): Promise {\n\t\treturn this._restApi.endpoint(apiName);\n\t}\n\n\t/**\n\t * to get the operation type\n\t * @param operation\n\t */\n\tgetGraphqlOperationType(operation: GraphQLOperation): OperationTypeNode {\n\t\treturn this._graphqlApi.getGraphqlOperationType(operation);\n\t}\n\n\t/**\n\t * Executes a GraphQL operation\n\t *\n\t * @param options - GraphQL Options\n\t * @param [additionalHeaders] - headers to merge in after any `graphql_headers` set in the config\n\t * @returns An Observable if queryType is 'subscription', else a promise of the graphql result from the query.\n\t */\n\tgraphql(\n\t\toptions: GraphQLOptions,\n\t\tadditionalHeaders?: { [key: string]: string }\n\t): T extends GraphQLQuery\n\t\t? Promise>\n\t\t: T extends GraphQLSubscription\n\t\t? Observable<{\n\t\t\t\tprovider: AWSAppSyncRealTimeProvider;\n\t\t\t\tvalue: GraphQLResult;\n\t\t }>\n\t\t: Promise> | Observable;\n\tgraphql(\n\t\toptions: GraphQLOptions,\n\t\tadditionalHeaders?: { [key: string]: string }\n\t): Promise> | Observable {\n\t\treturn this._graphqlApi.graphql(options, additionalHeaders);\n\t}\n}\n\nexport const API = new APIClass(null);\nAmplify.register(API);\n","import { IDatePage } from \"../../components/graph/GraphHooks\"\n\nexport const getPages = (versions: {version: string, date: string}[])=>{\n let pageCount = 1\n let dateCount = 0\n const pages: IDatePage = {[pageCount]: []}\n\n versions.forEach(element =>{\n if(dateCount >= 5){\n dateCount = 0\n pageCount = pageCount + 1\n pages[pageCount] = []\n }\n pages[pageCount].push(element[\"date\"])\n dateCount = dateCount + 1\n })\n\n return pages\n}\n\nconst months = [\"Jan\", \"Feb\", \"March\", \"Apr\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n\nexport const convertDate = (date:string) => {\n const temp_date = date.split(\"-\");\n return months[Number(temp_date[1]) - 1] + \" \" + temp_date[2] + \" \" + temp_date[0];\n}\n\nexport const getPageFromDate = (pages: IDatePage, currentVersion:string) =>{\n for(const page in pages){\n if(pages[page].includes(currentVersion)){\n return Number(page)\n }\n }\n return 1\n\n}","import { useState, useEffect, useRef } from 'react';\n\nexport const useComponentVisible = (initialIsVisible: boolean) => {\n const [isComponentVisible, setIsComponentVisible] = useState(initialIsVisible);\n const ref = useRef(null);\n\n const handleClickOutside = (event: any) => {\n if (ref.current !== null && ref.current && !ref.current.contains(event.target)) {\n setIsComponentVisible(false);\n }\n };\n\n useEffect(() => {\n document.addEventListener('click', handleClickOutside, true);\n return () => {\n document.removeEventListener('click', handleClickOutside, true);\n };\n });\n return { ref, isComponentVisible, setIsComponentVisible };\n};\n","import React, { useState } from 'react';\nimport { useEffect } from 'react';\nimport calendar from '../assets/calendar.png';\nimport tick from '../assets/tick.png';\nimport arrowRight from '../assets/arrow-right.png';\nimport arrowLeft from '../assets/arrow-left.png';\nimport { useFetchVersions } from '../dataHandlers/versionHandler';\nimport { convertDate, getPageFromDate } from '../helpers/functions/getDatePages';\nimport { useComponentVisible } from '../helpers/hooks/ComponentVisibleHooks';\nimport { IDatePage } from './graph/GraphHooks';\n\ninterface DatePickerProps {\n currentVersion: string;\n setCurrentVersion: React.Dispatch>;\n}\n\nconst DatePicker: React.FC = ({ currentVersion, setCurrentVersion }) => {\n const { data: datePages } = useFetchVersions();\n\n const [currentPage, setCurrentPage] = useState(1);\n //const datePagess: IDatePage = {1:['2021-20-1', '2021-20-1', '2021-20-1', '2021-20-1'],2:['2021', '199', '2021', '2020']}\n const { ref, isComponentVisible, setIsComponentVisible } = useComponentVisible(false);\n useEffect(() => {\n if (datePages && !currentVersion) {\n setCurrentVersion(datePages[1][0]);\n }\n }, [datePages]);\n\n useEffect(() => {\n setCurrentPage(getPageFromDate(datePages, currentVersion));\n }, [isComponentVisible]);\n\n const increment = () => {\n if (currentPage < Object.keys(datePages).length) setCurrentPage(prev => prev + 1);\n };\n const decrement = () => {\n if (currentPage > 1) setCurrentPage(prev => prev - 1);\n };\n\n const select = (date: string) => {\n setCurrentVersion(date);\n setIsComponentVisible(false);\n };\n\n return (\n
\n \n
\n \n
\n
\n );\n};\ninterface DateSuggestionPopUpProps {\n isComponentVisible: boolean;\n datePages: IDatePage;\n currentPage: number;\n currentVersion: string;\n select: (date: string) => void;\n increment: () => void;\n decrement: () => void;\n}\n\nconst DateSuggestionPopUp: React.FC = ({\n isComponentVisible,\n datePages,\n currentPage,\n currentVersion,\n select,\n increment,\n decrement\n}) => {\n return isComponentVisible ? (\n
\n
\n {currentPage !== 1 ? (\n \n ) : (\n
\n )}\n {currentPage !== Object.keys(datePages).length ? (\n \n ) : (\n
\n )}\n
\n
\n {Object.prototype.hasOwnProperty.call(datePages, currentPage) ? (\n datePages[currentPage].map(date => {\n return (\n select(date)}\n className=\"flex justify-between hover:bg-gray-200 p-2 w-full font-light\"\n >\n {convertDate(date)}\n {date === currentVersion ? (\n
\n \"tick\"\n
\n ) : (\n <>\n )}\n \n );\n })\n ) : (\n <>\n )}\n
\n
\n ) : (\n <>\n );\n};\n\ninterface DateProps {\n date: string;\n setShowDatePicker: React.Dispatch>;\n}\n\nconst Date: React.FC = ({ date, setShowDatePicker }) => {\n return (\n setShowDatePicker(true)}\n className=\"flex rounded-full my-auto border p-2 px-4 bg-white hover:bg-gray-200\"\n >\n \"\"\n\n

{date ? convertDate(date) : ''}

\n \n );\n};\n\nexport default DatePicker;\n","import { useState, useEffect } from 'react';\nimport { IDatePage } from '../components/graph/GraphHooks';\nimport { API, Auth } from 'aws-amplify';\nimport { getPages } from '../helpers/functions/getDatePages';\n\nexport const useFetchVersions = () => {\n const [data, setData] = useState();\n const [error, setError] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n setIsLoading(true);\n setError(false);\n\n const fetchData = async (): Promise => {\n try {\n const user = await Auth.currentAuthenticatedUser();\n const token = user.signInUserSession.idToken.jwtToken;\n const requestInfo = {\n headers: {\n Authorization: token\n }\n };\n const res = await API.get('mappingApi', '/getDates', requestInfo);\n const pages = getPages(res);\n setData(pages);\n } catch (error) {\n console.log(error);\n setError(true);\n }\n setIsLoading(false);\n };\n\n fetchData();\n }, []);\n\n return {\n data,\n error,\n isLoading\n };\n};\n","import isRetryAllowed from 'is-retry-allowed';\nexport const namespace = 'axios-retry';\nexport function isNetworkError(error) {\n const CODE_EXCLUDE_LIST = ['ERR_CANCELED', 'ECONNABORTED'];\n if (error.response) {\n return false;\n }\n if (!error.code) {\n return false;\n }\n // Prevents retrying timed out & cancelled requests\n if (CODE_EXCLUDE_LIST.includes(error.code)) {\n return false;\n }\n // Prevents retrying unsafe errors\n return isRetryAllowed(error);\n}\nconst SAFE_HTTP_METHODS = ['get', 'head', 'options'];\nconst IDEMPOTENT_HTTP_METHODS = SAFE_HTTP_METHODS.concat(['put', 'delete']);\nexport function isRetryableError(error) {\n return (error.code !== 'ECONNABORTED' &&\n (!error.response || (error.response.status >= 500 && error.response.status <= 599)));\n}\nexport function isSafeRequestError(error) {\n if (!error.config?.method) {\n // Cannot determine if the request can be retried\n return false;\n }\n return isRetryableError(error) && SAFE_HTTP_METHODS.indexOf(error.config.method) !== -1;\n}\nexport function isIdempotentRequestError(error) {\n if (!error.config?.method) {\n // Cannot determine if the request can be retried\n return false;\n }\n return isRetryableError(error) && IDEMPOTENT_HTTP_METHODS.indexOf(error.config.method) !== -1;\n}\nexport function isNetworkOrIdempotentRequestError(error) {\n return isNetworkError(error) || isIdempotentRequestError(error);\n}\nfunction noDelay() {\n return 0;\n}\nexport function exponentialDelay(retryNumber = 0, _error = undefined, delayFactor = 100) {\n const delay = 2 ** retryNumber * delayFactor;\n const randomSum = delay * 0.2 * Math.random(); // 0-20% of the delay\n return delay + randomSum;\n}\nexport const DEFAULT_OPTIONS = {\n retries: 3,\n retryCondition: isNetworkOrIdempotentRequestError,\n retryDelay: noDelay,\n shouldResetTimeout: false,\n onRetry: () => { }\n};\nfunction getRequestOptions(config, defaultOptions) {\n return { ...DEFAULT_OPTIONS, ...defaultOptions, ...config[namespace] };\n}\nfunction setCurrentState(config, defaultOptions) {\n const currentState = getRequestOptions(config, defaultOptions || {});\n currentState.retryCount = currentState.retryCount || 0;\n currentState.lastRequestTime = currentState.lastRequestTime || Date.now();\n config[namespace] = currentState;\n return currentState;\n}\nfunction fixConfig(axiosInstance, config) {\n // @ts-ignore\n if (axiosInstance.defaults.agent === config.agent) {\n // @ts-ignore\n delete config.agent;\n }\n if (axiosInstance.defaults.httpAgent === config.httpAgent) {\n delete config.httpAgent;\n }\n if (axiosInstance.defaults.httpsAgent === config.httpsAgent) {\n delete config.httpsAgent;\n }\n}\nasync function shouldRetry(currentState, error) {\n const { retries, retryCondition } = currentState;\n const shouldRetryOrPromise = (currentState.retryCount || 0) < retries && retryCondition(error);\n // This could be a promise\n if (typeof shouldRetryOrPromise === 'object') {\n try {\n const shouldRetryPromiseResult = await shouldRetryOrPromise;\n // keep return true unless shouldRetryPromiseResult return false for compatibility\n return shouldRetryPromiseResult !== false;\n }\n catch (_err) {\n return false;\n }\n }\n return shouldRetryOrPromise;\n}\nconst axiosRetry = (axiosInstance, defaultOptions) => {\n const requestInterceptorId = axiosInstance.interceptors.request.use((config) => {\n setCurrentState(config, defaultOptions);\n return config;\n });\n const responseInterceptorId = axiosInstance.interceptors.response.use(null, async (error) => {\n const { config } = error;\n // If we have no information to retry the request\n if (!config) {\n return Promise.reject(error);\n }\n const currentState = setCurrentState(config, defaultOptions);\n if (await shouldRetry(currentState, error)) {\n currentState.retryCount += 1;\n const { retryDelay, shouldResetTimeout, onRetry } = currentState;\n const delay = retryDelay(currentState.retryCount, error);\n // Axios fails merging this configuration to the default configuration because it has an issue\n // with circular structures: https://github.com/mzabriskie/axios/issues/370\n fixConfig(axiosInstance, config);\n if (!shouldResetTimeout && config.timeout && currentState.lastRequestTime) {\n const lastRequestDuration = Date.now() - currentState.lastRequestTime;\n const timeout = config.timeout - lastRequestDuration - delay;\n if (timeout <= 0) {\n return Promise.reject(error);\n }\n config.timeout = timeout;\n }\n config.transformRequest = [(data) => data];\n await onRetry(currentState.retryCount, error, config);\n return new Promise((resolve) => {\n setTimeout(() => resolve(axiosInstance(config)), delay);\n });\n }\n return Promise.reject(error);\n });\n return { requestInterceptorId, responseInterceptorId };\n};\n// Compatibility with CommonJS\naxiosRetry.isNetworkError = isNetworkError;\naxiosRetry.isSafeRequestError = isSafeRequestError;\naxiosRetry.isIdempotentRequestError = isIdempotentRequestError;\naxiosRetry.isNetworkOrIdempotentRequestError = isNetworkOrIdempotentRequestError;\naxiosRetry.exponentialDelay = exponentialDelay;\naxiosRetry.isRetryableError = isRetryableError;\nexport default axiosRetry;\n","import axios from 'axios';\nimport axiosRetry from 'axios-retry';\n\n\nconst getSpotifyAccessToken = async (): Promise => {\n try {\n const res = await axios.get(\"https://7ies9dmuha.execute-api.us-west-2.amazonaws.com/staging\");\n const contents = JSON.parse(res.data.body)\n return {\n headers: {\n Authorization: `Bearer ${contents.accessToken}`\n }\n }\n } catch (error) {\n return {\n headers: {\n Authorization: `Bearer ${\"accessToken\"}`\n }\n }\n }\n}\n\nconst getSearchArtistsEndpoint = (query:string) => {\n return `https://api.spotify.com/v1/search?q=${query}&type=artist&limit=${50}`;\n}\n\nconst getArtistAlbumsEndpoint = (artistId:string, offset=0, market=\"US\") => {\n return `https://api.spotify.com/v1/artists/${artistId}/albums?limit=${50}&offset=${offset}&market=${market}&include_groups=album,single,compilation`;\n}\n\nconst getAlbumTracksEndpoint = (albumId:string, offset=0, market=\"US\") => {\n return `https://api.spotify.com/v1/albums/${albumId}/tracks?limit=${50}&offset=${offset}&market=${market}`;\n}\n\nconst getSeveralTracksEndpoint = (trackIds:string) => {\n return `https://api.spotify.com/v1/tracks?ids=${trackIds}`;\n}\n\nconst getSeveralAlbumsEndpoint = (albumIds:string) => {\n return `https://api.spotify.com/v1/albums?ids=${albumIds}`;\n}\n\nexport const getSeveralAlbums = async (albumIds: string) => {\n const header = await getSpotifyAccessToken();\n\n // Configure axios-retry on a specific request\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: 3, retryDelay: axiosRetry.exponentialDelay });\n\n try {\n return await axiosInstance.get(getSeveralAlbumsEndpoint(albumIds), header);\n } catch (error) {\n return \"error\";\n }\n}\n\nexport const getSeveralTracks = async (trackIds: string) => {\n const header = await getSpotifyAccessToken();\n\n // Configure axios-retry on a specific request\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: 3, retryDelay: axiosRetry.exponentialDelay });\n\n try {\n return await axiosInstance.get(getSeveralTracksEndpoint(trackIds), header);\n } catch (error) {\n return \"error\";\n }\n};\n\n\nexport const getArtistAlbums = async (artistId:string, offset=0) => {\n const header = await getSpotifyAccessToken()\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: 3, retryDelay: axiosRetry.exponentialDelay });\n try {\n return await axiosInstance.get(getArtistAlbumsEndpoint(artistId, offset),header );\n } catch (error) {\n return \"error\"\n }\n}\n\nexport const getAlbumTracks = async (albumId:string, offset=0) => {\n const header = await getSpotifyAccessToken()\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: 3, retryDelay: axiosRetry.exponentialDelay });\n try {\n return await axiosInstance.get(getAlbumTracksEndpoint(albumId, offset),header );\n } catch (error) {\n return \"error\"\n }\n} \n\nexport const searchArtists = async (query:string) => {\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: 3, retryDelay: axiosRetry.exponentialDelay });\n if (query){\n const header = await getSpotifyAccessToken()\n try {\n return await axiosInstance.get(getSearchArtistsEndpoint(query),header );\n } catch (error) {\n return null\n }\n}\n return null\n}\n\n","import React, { useEffect, useState } from 'react';\nimport { searchArtists } from '../services/spotifyService';\n\ninterface SearchSuggestionProps {\n input: string;\n isComponentVisible: boolean;\n setIsComponentVisible: React.Dispatch>;\n setArtist: React.Dispatch;\n}\n\nconst SearchSuggestion: React.FC = ({\n input,\n isComponentVisible,\n setArtist,\n setIsComponentVisible\n}) => {\n const [artistSuggestions, setArtistSuggestions] = useState([]);\n const [seeMore, setSeeMore] = useState(false);\n\n useEffect(() => {\n if (!isComponentVisible) {\n setIsComponentVisible(true);\n }\n }, [input]);\n\n useEffect(() => {\n const fetch = async () => {\n const response = await searchArtists(input);\n if (response) {\n setArtistSuggestions(response.data.artists.items);\n } else {\n setArtistSuggestions(null);\n }\n };\n fetch();\n }, [input]);\n\n const onClickHandler = (artist: any) => {\n setArtist(artist);\n };\n return artistSuggestions !== null && isComponentVisible ? (\n
\n
\n
    \n {artistSuggestions.slice(0, seeMore ? 10000 : 5).map((artist: any) => {\n return (\n onClickHandler(artist)}\n >\n
\n

{artist.name}

\n \n );\n })}\n setSeeMore(!seeMore)}\n >\n {seeMore ? (\n

show less

\n ) : (\n

\n show all {artistSuggestions.length}\n

\n )}\n \n \n
\n \n ) : (\n <>\n );\n};\nexport default SearchSuggestion;\n","import { useEffect, useState } from 'react';\nimport { useComponentVisible } from '../../helpers/hooks/ComponentVisibleHooks';\nimport SearchSuggestion from '../SearchSuggestion';\n\ninterface InputBoxProps {\n placeholder: string;\n artist: any;\n setArtist: React.Dispatch;\n}\nconst InputBox: React.FC = ({ placeholder, artist, setArtist }) => {\n const { ref, isComponentVisible, setIsComponentVisible } = useComponentVisible(false);\n const [input, setInput] = useState('');\n const [newArtist, setNewArtist] = useState(false); //handle getting rid of suggestions when new artist is set\n\n useEffect(() => {\n if (artist) {\n setInput(artist['name']);\n setNewArtist(!newArtist);\n }\n }, [artist]);\n\n useEffect(() => {\n setIsComponentVisible(false);\n }, [newArtist]);\n\n return (\n
\n \n setInput(e.target.value)}\n />\n \n
\n {' '}\n \n
\n
\n );\n};\n\nexport default InputBox;\n","\n\ninterface ToggleOuterProps {\n toggle: boolean;\n setToggle: React.Dispatch>;\n}\n\nconst ToggleOuter: React.FC = ({ toggle, setToggle }) => {\n\n return (\n
\n

Outer Community

\n
\n \n \n );\n};\n\nexport default ToggleOuter;\n","\n//checks if obj exists in array of objects\nexport const objectInObjectArray = (objKey: string, objValue: string, arrayOfObjects: any, caseSensitive=true) => {\n for (let i = 0; i < arrayOfObjects.length; i++) {\n if (!caseSensitive) {\n if (arrayOfObjects[i][objKey].toLowerCase() === objValue.toLowerCase()) {\n return true;\n }\n }\n if (arrayOfObjects[i][objKey] === objValue) {\n return true;\n }\n }\n return false;\n}\n\n\nexport const sortArrayOfObjects = (arrayOfObjects: any[], sortKey: string) => {\n const sorted = [...arrayOfObjects].sort((a, b) => (Number(a[sortKey]) < Number(b[sortKey])) ? 1 : ((Number(b[sortKey]) < Number(a[sortKey])) ? -1 : 0))\n return sorted\n}\n\nexport const getIndexOfObject = (arrayOfObjects: any[], objectKey: string, objValue: string) => {\n for (let i = 0; i < arrayOfObjects.length; i++) {\n if (arrayOfObjects[i][objectKey] === objValue) {\n return i\n }\n }\n return -1\n\n}\n\nexport const getIndexesOfObjects = (arrayOfObjects: any[], objectKey: string, objValue: string) => {\n const indexes: number[] = []\n for (let i = 0; i < arrayOfObjects.length; i++) {\n if (arrayOfObjects[i][objectKey] === objValue) {\n indexes.push(i)\n }\n }\n return indexes\n}\n\nexport const countValueInArrayOfObjects = (arrayOfObjects: any[], countKey: string, countValue: string) => {\n return arrayOfObjects.filter((item) => item[countKey] === countValue).length\n}\n/**\n * Function that takes in an array of objects and if there is a duplicate value in the findKey, it will return the index with the highest highestValueKey\n * @param arrayOfObjects \n * @param findKey\n * @param findKeyValue \n * @param highestValueKey \n * @returns \n */\nexport const getObjectIndexWithHighestValue = (arrayOfObjects: any[], objectKey: string, objValue: string, highestValueKey: string) => {\n const indexes = getIndexesOfObjects(arrayOfObjects, objectKey, objValue)\n\n if (indexes.length === 0) return -1 \n\n let highestValue = arrayOfObjects[indexes[0]][highestValueKey]\n let index = indexes[0]\n for (let i = 0; i < indexes.length; i++) {\n if (arrayOfObjects[indexes[i]][highestValueKey] > highestValue) {\n highestValue = arrayOfObjects[indexes[i]][highestValueKey]\n index = indexes[i]\n }\n }\n \n return index\n} \n\n\nexport function chunkArray(array:any, chunkSize: number) {\n const chunks = [];\n for (let i = 0; i < array.length; i += chunkSize) {\n chunks.push(array.slice(i, i + chunkSize));\n }\n return chunks;\n }\n\n","import React, { useEffect, useState } from 'react';\nimport close from '../../../assets/close.png';\nimport { objectInObjectArray } from '../../../helpers/functions/arrayOfObjects';\nimport { useComponentVisible } from '../../../helpers/hooks/ComponentVisibleHooks';\nimport SearchSuggestion from '../../../components/SearchSuggestion';\n\ninterface ConnectionAddTargetsProps {\n toggle: boolean;\n artistSelection: any[];\n setIsComponentVisible: React.Dispatch>;\n}\n\nexport const ConnectionAddTargets: React.FC = ({\n artistSelection,\n toggle,\n setIsComponentVisible\n}) => {\n return (\n
\n setIsComponentVisible(true)}\n type=\"button\"\n className=\"relative mr-2 p-1 px-3 rounded-full hover:border-black hover:border bg-white hover:bg-gray-200 font-extralight text-xs lg:text-base text-black\"\n >\n

\n {artistSelection.length}\n

\n {toggle ? 'Add outer' : 'Add inner'}\n \n
\n );\n};\n\ninterface ConnectionPopUpProps {\n toggle: boolean;\n artistSelection: any[];\n setArtistSelection: React.Dispatch>;\n isComponentVisible: boolean;\n degrees: number;\n setDegrees: React.Dispatch>;\n setIsComponentVisible: React.Dispatch>;\n}\n\nexport const ConnectionPopUp: React.FC = ({\n toggle,\n artistSelection,\n setDegrees,\n degrees,\n setArtistSelection,\n isComponentVisible: isPopUpVisible\n}) => {\n const { ref, isComponentVisible, setIsComponentVisible } = useComponentVisible(false);\n const [input, setInput] = useState('');\n const [artist, setArtist] = useState();\n\n //add artist to selections\n useEffect(() => {\n if (artist) {\n setInput('');\n addArtist(artist);\n }\n }, [artist]);\n\n //delete artist from selections\n const removeArtist = (artist: any) => {\n const newSelection = artistSelection.filter(item => item['id'] !== artist['id']);\n setArtistSelection(newSelection);\n };\n\n //add artist to selections\n const addArtist = (artist: any) => {\n if (!objectInObjectArray('id', artist['id'], artistSelection)) {\n setArtistSelection(prev => [...prev, artist]);\n }\n };\n\n const clearArtistSelection = () => {\n setArtistSelection([]);\n };\n\n //TODO: clean up clean targets\n return isPopUpVisible ? (\n
\n
\n
\n \n setInput(e.target.value)}\n />\n
\n \n
\n
\n
\n
\n
\n

What is the max number of connections?

\n setDegrees(Number(e.target.value))}\n className=\"block w-10 bg-white border-gray-400 hover:border-gray-500 my-auto ml-2 px-1 rounded shadow leading-tight focus:outline-none focus:shadow-outline\"\n value={degrees}\n >\n \n \n \n \n \n \n \n clear\n \n
\n\n
    \n {artistSelection.map(artist => (\n \n ))}\n
\n
\n ) : (\n <>\n );\n};\n\ninterface ConnectionArtistSelectProps {\n artist: any;\n removeArtist: (artist: any) => void;\n}\n\nconst ConnectionArtistSelect: React.FC = ({\n artist,\n removeArtist\n}) => {\n return (\n
\n \n
\n

{artist['name']}

\n \n );\n};\n","import { useState } from 'react';\nimport searchbarIcon from '../../../assets/search-dark.png';\nimport DatePicker from '../../../components/DatePicker';\nimport InputBox from '../../../components/header/InputBox';\nimport ToggleOuter from '../../../components/OuterTogger';\nimport { useComponentVisible } from '../../../helpers/hooks/ComponentVisibleHooks';\nimport { ConnectionAddTargets, ConnectionPopUp } from './ConnectionAddTargets';\n\ninterface ConnectionSearchProps {\n search: any;\n setSearch: React.Dispatch>;\n}\n\nconst ConnectionSearch: React.FC = ({ search, setSearch }) => {\n const { ref, isComponentVisible, setIsComponentVisible } = useComponentVisible(false);\n const [artist, setArtist] = useState(null);\n const [degrees, setDegrees] = useState(1);\n const [artistSelection, setArtistSelection] = useState([]);\n const [currentVersion, setCurrentVersion] = useState(search.versionDate);\n const [toggle, setToggle] = useState(false);\n\n const onSubmitHandler = (e: React.FormEvent) => {\n e.preventDefault();\n if (artist && artistSelection.length !== 0) {\n toggle\n ? setSearch({\n outer: toggle,\n degreesOfFreedom: degrees,\n end: JSON.stringify([artist['id']]),\n startName: artist['name'],\n start: JSON.stringify(artistSelection.map(artist => artist['id'])),\n versionDate: currentVersion\n })\n : setSearch({\n outer: toggle,\n degreesOfFreedom: degrees,\n start: JSON.stringify([artist['id']]),\n startName: artist['name'],\n end: JSON.stringify(artistSelection.map(artist => artist['id'])),\n versionDate: currentVersion\n });\n }\n };\n\n return (\n
\n \n
\n \n
\n \n
\n
\n \n \n\n \n \n \n \n );\n};\nexport default ConnectionSearch;\n","import { useState } from 'react';\nimport searchbarIcon from '../../../assets/search-dark.png';\nimport DatePicker from '../../../components/DatePicker';\nimport InputBox from '../../../components/header/InputBox';\nimport ToggleOuter from '../../../components/OuterTogger';\n\ninterface CommunitySearchProps {\n search: any;\n setSearch: React.Dispatch>;\n}\n\nconst CommunitySearch: React.FC = ({ search, setSearch }) => {\n const [artist, setArtist] = useState(null);\n const [currentVersion, setCurrentVersion] = useState(search.versionDate);\n const [toggle, setToggle] = useState(\n Object.prototype.hasOwnProperty.call(search, 'reversed') ? search.reversed : false\n );\n\n const onSubmitHandler = (e: React.FormEvent) => {\n e.preventDefault();\n if (artist) {\n setSearch({\n degreesOfFreedom: 2,\n start: artist['external_urls']['spotify'],\n startName: artist['name'],\n versionDate: currentVersion,\n reversed: toggle\n });\n }\n };\n\n return (\n
\n \n \n \n\n \n \n \n \n );\n};\nexport default CommunitySearch;\n","import { useState } from 'react';\nimport searchbarIcon from '../../../assets/search-dark.png';\nimport DatePicker from '../../../components/DatePicker';\n\ninterface NettwerkSearchProps {\n search: any;\n setSearch: React.Dispatch>;\n}\n\nconst NettwerkSearch: React.FC = ({ search, setSearch }) => {\n const [currentVersion, setCurrentVersion] = useState(search.versionDate);\n\n const onSubmitHandler = (e: React.FormEvent) => {\n e.preventDefault();\n if (currentVersion) {\n setSearch({ degreesOfFreedom: 2, versionDate: currentVersion });\n }\n };\n\n return (\n
\n \n \n \n );\n};\nexport default NettwerkSearch;\n","import { useEffect, useState } from 'react';\nimport searchbarIcon from '../../../assets/search-dark.png';\nimport DatePicker from '../../../components/DatePicker';\nimport { useFetchGenres } from '../../../dataHandlers/genresHandler';\nimport { useComponentVisible } from '../../../helpers/hooks/ComponentVisibleHooks';\n\ninterface GenreSearchProps {\n search: any;\n setSearch: React.Dispatch>;\n}\n\nconst GenreSearch: React.FC = ({ search, setSearch }) => {\n const { ref, isComponentVisible, setIsComponentVisible } = useComponentVisible(false);\n const [input, setInput] = useState('');\n const [genre, setGenre] = useState('');\n const [newGenre, setNewGenre] = useState(false);\n const [currentVersion, setCurrentVersion] = useState(search.versionDate);\n\n useEffect(() => {\n if (genre) {\n setInput(genre);\n setNewGenre(!newGenre);\n }\n }, [genre]);\n\n useEffect(() => {\n setIsComponentVisible(false);\n }, [newGenre]);\n\n const onSubmitHandler = (e: React.FormEvent) => {\n e.preventDefault();\n if (input) {\n setSearch({ genre: input, versionDate: currentVersion });\n }\n };\n\n return (\n
\n
\n \n setInput(e.target.value)}\n />\n \n
\n {' '}\n \n
\n
\n \n \n \n );\n};\n\ninterface SearchSuggestionProps {\n input: string;\n isComponentVisible: boolean;\n setIsComponentVisible: React.Dispatch>;\n setGenre: React.Dispatch;\n}\n\nconst SearchSuggestion: React.FC = ({\n input,\n isComponentVisible,\n setGenre,\n setIsComponentVisible\n}) => {\n const { data: genres } = useFetchGenres();\n\n const [seeMore, setSeeMore] = useState(false);\n\n const dynamicSearch = () => {\n if (genres && input != '') {\n const filteredGenres = genres.filter(value => value.includes(input.toLocaleLowerCase()));\n return filteredGenres;\n }\n return [];\n };\n\n useEffect(() => {\n setSeeMore(false);\n if (!isComponentVisible && input) {\n setIsComponentVisible(true);\n }\n }, [input]);\n\n const onClickHandler = (genre: string) => {\n setGenre(genre);\n };\n return input !== '' && isComponentVisible ? (\n
\n
\n
    \n {dynamicSearch()\n ?.slice(0, seeMore ? 10000 : 5)\n .map((genre: string, idx: number) => {\n return (\n onClickHandler(genre)}\n >\n

    {genre}

    \n \n );\n })}\n setSeeMore(!seeMore)}\n >\n {seeMore ? (\n

    show less

    \n ) : (\n

    \n show all {dynamicSearch().length}\n

    \n )}\n \n
\n
\n
\n ) : (\n <>\n );\n};\n\nexport default GenreSearch;\n","import { useState, useEffect } from 'react';\nimport { API, Auth } from 'aws-amplify';\n\nexport const useFetchGenres = () => {\n const [data, setData] = useState();\n const [error, setError] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n setIsLoading(true);\n setError(false);\n\n const fetchData = async (): Promise => {\n try {\n const user = await Auth.currentAuthenticatedUser();\n const token = user.signInUserSession.idToken.jwtToken;\n const requestInfo = {\n headers: {\n Authorization: token\n }\n };\n const res = await API.get('mappingApi', '/getSpotifyGenres', requestInfo);\n setData(res['genres']);\n } catch (error) {\n console.log(error);\n setError(true);\n }\n setIsLoading(false);\n };\n\n fetchData();\n }, []);\n\n return {\n data,\n error,\n isLoading\n };\n};\n","import React, { useState } from 'react';\nimport ConnectionSearch from '../../views/Mapping/Connection/ConnectionSearch';\nimport CommunitySearch from '../../views/Mapping/Community/CommunitySearch';\nimport NettwerkSearch from '../../views/Mapping/Nettwerk/NettwerkSearch';\nimport GenreSearch from '../../views/Mapping/Genre/GenreSearch';\n\ninterface InputSearchProps {\n search: any;\n setSearch: React.Dispatch>;\n graphType: string;\n}\n\nexport const InputSearch: React.FC = ({ graphType, search, setSearch }) => {\n switch (graphType) {\n case 'Connection':\n return ;\n case 'Community':\n return ;\n case 'Nettwerk':\n return ;\n case 'Genre':\n return ;\n }\n};\n","import React, { useState } from 'react';\nimport { IGraphData } from '../graph/GraphHooks';\nimport GraphTitle from './GraphTitle';\nimport { InputSearch } from './InputSearch';\nimport list from '../../assets/list.png';\nimport listLight from '../../assets/list-light.png';\nimport node from '../../assets/node.png';\nimport nodeLight from '../../assets/node-light.png';\n\ninterface ArtistGraphHeaderProps {\n subject: string;\n graphType: string;\n search: any;\n data: IGraphData;\n listView: boolean;\n setSearch: React.Dispatch>;\n setListView: React.Dispatch>;\n}\nexport const ArtistGraphHeader: React.FC = ({\n graphType,\n subject,\n search,\n listView,\n setListView,\n setSearch\n}) => {\n return (\n
\n
\n
\n \n
\n \n
\n
\n \n \n
\n
\n );\n};\n","import React from 'react';\n\ninterface LoadingProps {\n className: string;\n}\n\nexport const Loading: React.FC = ({ className }) => {\n return (\n \n );\n};\n\nexport default Loading;\n","import React from 'react';\n\ninterface GenreItemProps {\n genre: string;\n}\n\nconst GenreItem: React.FC = ({ genre }) => {\n return (\n
\n

{genre}

\n
\n );\n};\n\nexport default GenreItem;\n","import React from 'react';\nimport { IArtistDetail, INonNettwerkAffinity } from '../graph/GraphHooks';\nimport GenreItem from './GenreItem';\nimport { useLocation } from 'react-router';\n\ninterface ArtistDetailProps {\n artistDetail: IArtistDetail | undefined;\n}\n\nconst ArtistDetail: React.FC = ({ artistDetail }) => {\n const location = useLocation();\n const [showCluster, setShowCluster] = React.useState(false);\n\n return (\n
\n {\n e.preventDefault();\n artistDetail ? (window.location.href = artistDetail.url) : (window.location.href = '');\n }}\n className=\"absolute right-0 top-1 py-1 md:px-2 lg:px-4 transform duration-500 ease-in-out text-xs hover:-translate-y-1 hover:scale-110 text-white bg-emerald rounded-l-lg\"\n >\n Spotify\n \n
\n\n
\n
\n
\n

\n
\n \n {artistDetail ? artistDetail.name : 'unknown'}\n \n
\n
\n
\n \n
\n

{artistDetail ? artistDetail.label : 'unknown'}

\n
\n
\n

\n \n {parseInt(artistDetail ? artistDetail.followers : '0').toLocaleString()}\n { artistDetail && {artistDetail.followerGrowth > 0 && '+' + artistDetail.followerGrowth + '%'}}\n

\n

Followers

\n
\n
\n

{artistDetail ? artistDetail.releases : 'unknown'}

\n

\n Releases (in the last year)\n

\n
\n
\n

{artistDetail ? artistDetail.popularity : '0'}

\n

Popularity

\n
\n
\n
\n
\n {artistDetail ? (\n artistDetail.genres.map(genre => {\n return ;\n })\n ) : (\n <>\n )}\n
\n
\n \n );\n};\n\nconst getClusterColor = (subcluster: string) => {\n switch (subcluster) {\n case '0':\n return 'border-jade'\n case '1':\n return 'border-emerald'\n case '2':\n return 'border-sapphire'\n case '3':\n return 'border-amethyst'\n case '4':\n return 'border-rose'\n case '5':\n return 'border-sunstone'\n case '6':\n return 'border-amber'\n default:\n return 'border-black'\n }\n}\nconst Cluster = ({ nonNettwerkAffinity, isNettwerk }: \n {nonNettwerkAffinity: INonNettwerkAffinity, isNettwerk: boolean}) => {\n \n if (nonNettwerkAffinity === 0) {\n return Cluster data unavailable for date\n }\n if(nonNettwerkAffinity){\n return <> {nonNettwerkAffinity.parent} ({nonNettwerkAffinity.subcluster}){`${nonNettwerkAffinity.pct_affinity !== null ? (': ' + nonNettwerkAffinity.pct_affinity + '%'): ''}`} \n }\n return <>No cluster found\n }\nexport default ArtistDetail;\n","import React from 'react';\nimport { ICheckbox } from './FilterHooks';\n\ninterface checkboxProps {\n onChangeFilter: (filterType: string, name: string, value: boolean) => void;\n filterType: string;\n checkbox: ICheckbox;\n}\n\nexport const Checkbox: React.FC = ({ onChangeFilter, checkbox, filterType }) => {\n return (\n
\n {\n \n }\n
\n );\n};\n\ninterface AllCheckBoxProps {\n checkbox: ICheckbox;\n filterType: string;\n selectAll: (filterType: string, value: boolean) => void;\n}\n\nexport const AllCheckBox: React.FC = ({ selectAll, checkbox, filterType }) => {\n return (\n
\n {\n \n }\n
\n );\n};\n","import React, { useState } from 'react'\nimport InputRange from 'react-input-range';\nimport \"react-input-range/lib/css/index.css\"\n\n\nfunction FilterFollowerRange(props) {\n\n return (\n
\n
\n

Followers

\n value === 100000 ? `${value}+` : value}\n value={props.followersScale}\n onChange={props.onChangeFilterFollowerScale} />\n
\n
\n
\n
\n );\n}\nexport default FilterFollowerRange","import React, { useState } from 'react';\nimport { Checkbox } from './Checkbox';\nimport downArrow from '../../assets/down-arrow.png';\nimport upArrow from '../../assets/up-arrow.png';\nimport resetArrow from '../../assets/arrow-circle.png';\nimport { IFilter } from './FilterHooks';\nimport FilterFollowerRange from './FilterFollowerRange';\n\ninterface FilterContainerProps {\n filters: IFilter[] | undefined;\n onChangeFilter: (filterType: string, name: string, value: boolean) => void;\n resetFilters: () => void;\n selectAll: (currentFilters: IFilter[], value: boolean) => void;\n followersScale: {\n min: number;\n max: number;\n };\n onChangeFilterFollowerScale: (value: { min: number; max: number }) => void;\n}\n\nconst FilterContainer: React.FC = ({\n filters,\n onChangeFilter,\n onChangeFilterFollowerScale,\n resetFilters,\n selectAll,\n followersScale\n}) => {\n return (\n
\n
\n

Filters

\n \n
\n
\n {filters?.map(function(filter) {\n if (filter.filterType === 'unSigned') {\n return (\n
\n \n
\n );\n } else if (filter.filterType === 'active') {\n return (\n
\n \n
\n );\n }\n })}\n
\n \n\n {/*
\n
\n

{\"genre\"}

\n
\n
\n

{\"genre\"}

\n
\n
*/}\n \n \n \n \n \n \n\n
\n );\n};\n\ninterface DisplayCheckboxesProps {\n filters: IFilter[] | undefined;\n onChangeFilter: (filterType: string, name: string, value: boolean) => void;\n selectAll: (currentFilters: IFilter[], value: boolean) => void;\n filterType: string;\n}\n\nconst DisplayCheckboxes: React.FC = ({\n filters,\n filterType,\n onChangeFilter,\n selectAll\n}) => {\n const [showCheckboxes, setShowCheckboxes] = useState(false);\n const [search, setSearch] = useState('');\n\n const dynamicSearch = () => {\n if (filters) {\n return filters.filter(\n item =>\n item.filterType === filterType && item.name.toLowerCase().includes(search.toLowerCase())\n );\n }\n return [];\n };\n return (\n
\n \n {showCheckboxes ? (\n
\n
\n \n \n
\n setSearch(e.target.value)}\n />\n\n
\n {dynamicSearch()?.map(filter =>\n filter.filterType === filterType ? (\n \n ) : (\n <>\n )\n )}\n
\n
\n ) : (\n <>\n )}\n
\n );\n};\n\nexport default FilterContainer;\n","import React from 'react';\nimport { IArtistDetail } from '../graph/GraphHooks';\nimport ArtistDetail from './ArtistDetail';\nimport FilterContainer from './FilterContainer';\nimport { IFilter } from './FilterHooks';\n\ninterface SettingsContainerProps {\n filters: IFilter[] | undefined;\n followersScale: {\n min: number;\n max: number;\n };\n artistDetail: IArtistDetail | undefined;\n resetFilters: () => void;\n selectAll: (currentFilters: IFilter[], value: boolean) => void;\n onChangeFilter: (filterType: string, name: string, value: boolean) => void;\n onChangeFilterFollowerScale: (value: { min: number; max: number }) => void;\n}\n\nconst SettingsContainer: React.FC = ({\n filters,\n onChangeFilter,\n onChangeFilterFollowerScale,\n resetFilters,\n selectAll,\n followersScale,\n artistDetail\n}) => {\n return (\n
\n \n \n
\n );\n};\nexport default SettingsContainer;\n","import React from 'react';\n\ninterface SummaryPointProps {\n amount: string;\n description: string;\n}\n\nconst SummaryPoint: React.FC = ({ amount, description }) => {\n return (\n

\n {amount} {description}\n

\n );\n};\nexport default SummaryPoint;\n","import React from 'react';\n\ninterface SummaryTitleProps {\n title: string;\n}\n\nconst SummaryTitle: React.FC = ({ title }) => {\n return

{title}

;\n};\n\nexport default SummaryTitle;\n","import React from 'react';\nimport { ISummaryOverview } from '../graph/GraphHooks';\nimport SummaryPoint from './SummaryPoint';\nimport SummaryTitle from './SummaryTitle';\n\ninterface OverviewProps {\n overview: ISummaryOverview | undefined;\n}\n\nconst Overview: React.FC = ({ overview }) => {\n return (\n
\n \n \n \n \n \n \n
\n );\n};\n\nexport default Overview;\n","import React, { useState } from 'react';\n\ninterface ToolTipProps {\n mainText: React.ReactNode;\n toolTipText: string;\n}\n\nconst ToolTip: React.FC = ({ mainText, toolTipText }) => {\n const [visible, setVisible] = useState(false);\n const handleOnMouseOver = () => {\n setVisible(true);\n };\n const handleOnMouseOut = () => {\n setVisible(false);\n };\n\n return (\n \n {mainText}\n \n {toolTipText}\n \n \n );\n};\n\nexport default ToolTip;\n","import { IGraphNode, ISummaryArtist, ISummaryCommunity, ISummaryOverview } from \"../../components/graph/GraphHooks\"\nimport { objectInObjectArray, sortArrayOfObjects } from \"./arrayOfObjects\"\n\n//returns a list of active artists\nexport const getActiveArtists = (nodes: IGraphNode[]) =>{\n const activeArtists = nodes.filter((element) => parseInt(element.lastReleases) > 0 )\n return activeArtists.map((item)=>{\n return item.id\n })\n}\n//returns a list of unsigned artists\nexport const getUnsignedArtists = (nodes: IGraphNode[]) =>{\n const unsignedArtists = nodes.filter((element) => element.unsigned === null ? element.id == element.label : element.unsigned )\n return unsignedArtists.map((item)=>{\n return item.id\n })\n}\n//returns a summary community genre\nexport const getCommunitySummary = (nodes: IGraphNode[]) =>{\n const genreDict : ISummaryCommunity[]= []\n \n for (let i = 0; i < nodes.length; i++) {\n for (let j = 0; j < nodes[i][\"genres\"].length; j++) {\n if(objectInObjectArray(\"genre\",nodes[i].genres[j], genreDict )){\n const objIndex = genreDict.findIndex((obj => obj.genre == nodes[i].genres[j]))\n genreDict[objIndex].numberOfArtists = genreDict[objIndex].numberOfArtists + 1\n }else{\n genreDict.push({genre:nodes[i].genres[j], numberOfArtists: 1 })\n }\n }\n \n } \n const newGenreDict = sortArrayOfObjects(genreDict, \"numberOfArtists\") \n return newGenreDict\n}\n\nexport const getArtistSummary = (nodes: IGraphNode[]) =>{\n const artistsDict: ISummaryArtist[] = []\n for (let i = 0; i < nodes.length; i++) {\n artistsDict.push({artist:nodes[i].id, followers: parseInt(nodes[i].followers) })\n }\n const newArtistDict = sortArrayOfObjects(artistsDict, \"followers\")\n return newArtistDict\n } \n\n\nexport const getOverviewSummary = (nodes: IGraphNode[]) => {\n const overview: ISummaryOverview = {artists: nodes.length, avgFollowers:getAverageFollowers(nodes), avgReleases: getAverageReleases(nodes), totalFollowers: getTotalFollowers(nodes), avgPopularity: getAveragePopularity(nodes) }\n return overview\n\n}\n\nconst getTotalFollowers =(nodes: IGraphNode[])=>{\n if (!nodes.length){\n return 0 \n }\n let totalFollowers = 0;\n for (let i = 0; i < nodes.length; i++) {\n totalFollowers = totalFollowers + parseInt(nodes[i].followers)\n }\n return totalFollowers\n}\n\nconst getAverageFollowers = (nodes: IGraphNode[]) =>{\n if (!nodes.length){\n return 0 \n }\n \n let averageFollowers = 0;\n for (let i = 0; i < nodes.length; i++) {\n averageFollowers = averageFollowers + parseInt(nodes[i].followers)\n }\n return Math.floor(averageFollowers / nodes.length)\n}\nconst getAverageReleases = (nodes: IGraphNode[]) =>{\n if (!nodes.length){\n return 0 \n }\n let averageReleases = 0;\n for (let i = 0; i < nodes.length; i++) {\n averageReleases = averageReleases + parseInt(nodes[i].lastReleases)\n }\n return Math.round((averageReleases / nodes.length)*10)/10\n}\n\nconst getAveragePopularity = (nodes: IGraphNode[]) =>{\n if (!nodes.length){\n return 0 \n }\n \n let averagePopularity = 0;\n for (let i = 0; i < nodes.length; i++) {\n \n averagePopularity = averagePopularity + nodes[i].popularity\n }\n return Math.round((averagePopularity / nodes.length))\n}\n\nexport const getClusterName = (node: IGraphNode) =>{\n return node.nonNettwerkAffinity === 0 ? 'Data unavailable' : node.nonNettwerkAffinity ? `${node.nonNettwerkAffinity.parent} (${node.nonNettwerkAffinity.subcluster})`: 'No cluster found';\n\n}\n\n\n\n\n\n\n","import React, { useState } from 'react';\nimport { countValueInArrayOfObjects } from '../../helpers/functions/arrayOfObjects';\nimport { IGraphNode, ILegendPoint, ISummaryArtist } from '../graph/GraphHooks';\nimport SummaryPoint from './SummaryPoint';\nimport SummaryTitle from './SummaryTitle';\nimport downloadArrow from '../../assets/download-arrow.png';\nimport downloadArrowActive from '../../assets/download-arrow-active.png';\nimport { CSVLink } from 'react-csv';\nimport ToolTip from '../toolTip/ToolTip';\nimport { getClusterName } from '../../helpers/functions/graphHelpers';\n\ninterface TopArtistsProps {\n legend: ILegendPoint[];\n artists: ISummaryArtist[] | undefined;\n nodes: IGraphNode[];\n}\n\nexport const TopArtists: React.FC = ({ artists, nodes, legend }) => {\n return (\n
\n
\n \n
\n {artists ? (\n [\n artists.length > 0 ? (\n \n ) : (\n <>\n ),\n artists.length > 1 ? (\n \n ) : (\n <>\n ),\n artists.length > 2 ? (\n \n ) : (\n <>\n )\n ]\n ) : (\n <>\n )}\n
\n );\n};\n\ninterface TopArtistsListViewProps {\n filteredNodes: Map;\n legend: ILegendPoint[];\n sortedNodes: IGraphNode[];\n onClick: (nodeId: string) => void;\n}\n\nexport const TopArtistsListView: React.FC = ({\n legend,\n sortedNodes,\n filteredNodes,\n onClick\n}) => {\n const uniqueColors = sortedNodes\n .map(node => node.color)\n .filter((value, index, self) => self.indexOf(value) === index);\n const cleanLegend = legend.filter(legendItem => uniqueColors.includes(legendItem.color));\n\n const nodesWithCluster = sortedNodes.map(node => (\n {\n ...node,\n nonNettwerkAffinity: getClusterName(node)\n }\n ))\n\n const [src, setSrc] = useState(downloadArrow);\n\n return (\n
\n \n setSrc(downloadArrow)}\n onMouseOver={e => setSrc(downloadArrowActive)}\n className=\"flex bg-white text-gray-600 p-2 px-4 hover:text-green-400 hover:border-green-400 mr-auto mb-4\"\n >\n \"Export\n

Export

\n \n
\n
\n {cleanLegend.map(legendItem => (\n
\n

\n {legendItem.description}\n \n {countValueInArrayOfObjects(sortedNodes, 'color', legendItem.color)}\n \n

\n
\n {sortedNodes.map((node, idx) =>\n node.color === legendItem.color ? (\n \n ) : (\n <>\n )\n )}\n
\n
\n ))}\n
\n
\n
\n );\n};\n\ninterface ArtistColorProps {\n color: string;\n nettwerk: boolean;\n name: string;\n nodeId: string;\n filtered: boolean;\n followers: string;\n followerGrowth: number;\n popularity: string;\n handleClick: (nodeId: string) => void;\n}\nconst ArtistColor: React.FC = ({\n color,\n nettwerk,\n name,\n followers,\n popularity,\n nodeId,\n filtered,\n followerGrowth,\n handleClick\n}) => {\n return (\n handleClick(nodeId)}\n className={`flex my-1 p-2 rounded hover:bg-gray-90 w-full pr-8 pl-4 ${\n filtered ? 'opacity-30' : ''\n }`}\n >\n
\n

\n
\n \n {name}\n \n\n
\n {followers} {followerGrowth>0 ? '+' + followerGrowth + '%' : ''}} toolTipText=\"Followers\" />\n <> / \n\n \n
\n \n );\n};\n","import React from 'react';\nimport { ISummaryCommunity } from '../graph/GraphHooks';\nimport SummaryPoint from './SummaryPoint';\nimport SummaryTitle from './SummaryTitle';\n\ninterface TopGenresProps {\n community: ISummaryCommunity[] | undefined;\n}\n\nconst TopGenres: React.FC = ({ community }) => {\n return (\n
\n \n {community ? (\n [\n community.length > 0 ? (\n \n ) : (\n <>\n ),\n community.length > 1 ? (\n \n ) : (\n <>\n ),\n community.length > 2 ? (\n \n ) : (\n <>\n )\n ]\n ) : (\n <>\n )}\n
\n );\n};\n\nexport default TopGenres;\n","import React from 'react';\nimport { IGraphNode, ILegendPoint, ISummary } from '../graph/GraphHooks';\nimport Overview from './Overview';\nimport { TopArtists } from './TopArtists';\nimport TopGenres from './TopGenres';\n\ninterface summaryContainerProps {\n legend: ILegendPoint[];\n graphSummary: ISummary | undefined;\n nodes: IGraphNode[];\n}\n\nconst SummaryContainer: React.FC = ({ graphSummary, nodes, legend }) => {\n return (\n
\n \n \n \n
\n );\n};\nexport default SummaryContainer;\n","import { IFilter } from \"../../components/settings/FilterHooks\";\n\nexport const objectInFilter = (obj:IFilter, filters:IFilter[]) => {\n \n for (let i = 0; i < filters.length; i++) {\n if (filters[i].filterType === obj.filterType && filters[i].name === obj.name) {\n return true;\n }\n }\n return false;\n}\n\nexport const sortFilters = (items: IFilter[]) =>{\n return items.sort(function(a, b) {\n const nameA = a.name.toUpperCase(); // ignore upper and lowercase\n const nameB = b.name.toUpperCase(); // ignore upper and lowercase\n if (nameA < nameB) {\n return -1;\n }\n else if (nameA > nameB) {\n return 1;\n }\n \n // names must be equal\n return 0;\n });\n}\n\nexport const isFilterActive = (filters: IFilter[], filterType: string, name:string)=>{\n \n for (let i = 0; i < filters.length; i++) {\n if(filters[i].filterType === filterType && filters[i].name === name){\n return filters[i].value\n }\n }\n return false\n }\n\nexport const isFilterActiveType = (filters: IFilter[], filterType: string)=>{\n for (let i = 0; i < filters.length; i++) {\n if(filters[i].filterType === filterType){\n return filters[i].value\n }\n }\n return false\n}","import React, { useEffect, useState } from 'react';\nimport FilterGenre from '../settings/GenreItem';\nimport { useFilter, ICheckbox, IFilter } from '../settings/FilterHooks';\nimport { objectInFilter, sortFilters } from '../../helpers/functions/filterHelpers';\nimport {\n getActiveArtists,\n getArtistSummary,\n getClusterName,\n getCommunitySummary,\n getOverviewSummary,\n getUnsignedArtists\n} from '../../helpers/functions/graphHelpers';\nimport { useFetchGraphData } from '../../dataHandlers/graphHandler';\n\nexport type INonNettwerkAffinity = \n{ parent: string;\n pct_affinity: number;\n subcluster: string } | null | 0;\n\nexport interface IGraphNode {\n id: string;\n fontColor: string;\n description?: string;\n uri: string;\n followers: string;\n imgUrl: string;\n unsigned: boolean | null;\n popularity: number;\n color: string;\n size: number;\n linkColor: string;\n label: string;\n genres: string[];\n lastReleases: string;\n opacity?: number;\n followerGrowth?: number;\n nonNettwerkAffinity:INonNettwerkAffinity;\n}\nexport interface IDatePage {\n [page: number]: string[];\n}\n\nexport interface ISummaryCommunity {\n genre: string;\n numberOfArtists: number;\n}\n\nexport interface ISummaryArtist {\n artist: string;\n followers: number;\n}\nexport interface ISummaryOverview {\n artists: number;\n avgFollowers: number;\n avgReleases: number;\n totalFollowers: number;\n avgPopularity: number;\n}\n\nexport interface ISummary {\n overview: ISummaryOverview;\n community: ISummaryCommunity[];\n artists: ISummaryArtist[];\n}\nexport interface ILegendPoint {\n color: string;\n description: string;\n}\n\nexport interface IGraphData {\n legend: ILegendPoint[];\n nodes: IGraphNode[];\n links: (\n | {\n source: string;\n target: string;\n strokeWidth: number;\n }\n | {\n source: string;\n target: string;\n }\n )[];\n}\n\nexport interface IArtistDetail {\n img: string;\n name: string;\n url: string;\n popularity: number;\n label: string;\n releases: string;\n followers: string;\n genres: string[];\n color: string;\n followerGrowth: number;\n nonNettwerkAffinity: INonNettwerkAffinity;\n\n}\n\nexport const useGraph = (path: string, params: any) => {\n const {\n filters,\n setFilters,\n onChangeFilter,\n resetFilters,\n selectAll,\n checkFilterConditions,\n followersScale,\n onChangeFilterFollowerScale,\n setUnsignedArtists,\n setActiveArtists\n } = useFilter();\n\n const [search, setSearch] = useState(params);\n\n const {\n data: incomingGraphData,\n isLoading: graphDataIsLoading,\n error\n } = useFetchGraphData(path, search);\n\n const [data, setData] = useState();\n const [graphSummary, setGraphSummary] = useState();\n const [artistDetail, setArtistDetail] = useState();\n const [filteredNodes, setFilteredNodes] = useState>(new Map());\n\n useEffect(() => {\n if (!graphDataIsLoading && incomingGraphData) {\n setFilteredNodes(new Map());\n setData(incomingGraphData);\n setIncomingFilters(incomingGraphData);\n setIncomingSummary(incomingGraphData);\n setIncomingStartArtist(incomingGraphData);\n }\n }, [graphDataIsLoading]);\n\n //sets up filters\n\n const setIncomingStartArtist = (data: IGraphData) => {\n \n if (data.nodes.length >= 1)\n setArtistDetail({\n img: data['nodes'][0]['imgUrl'],\n name: data['nodes'][0]['id'],\n url: data['nodes'][0]['uri'],\n label: data['nodes'][0]['label'],\n popularity: data['nodes'][0]['popularity'],\n releases: data['nodes'][0]['lastReleases'],\n followers: data['nodes'][0]['followers'],\n genres: data['nodes'][0]['genres'],\n color: data['nodes'][0]['color'],\n followerGrowth: data['nodes'][0]['followerGrowth'],\n nonNettwerkAffinity: data['nodes'][0]['nonNettwerkAffinity']\n });\n };\n\n const setIncomingFilters = (data: IGraphData) => {\n const newFilter: IFilter[] = [];\n for (let i = 0; i < data.nodes.length; i++) {\n const currentNode = data.nodes[i];\n const cluster = getClusterName(currentNode);\n for (let g = 0; g < currentNode.genres.length; g++) {\n //set genre filter\n if (\n !objectInFilter(\n { filterType: 'genre', name: currentNode.genres[g], value: true },\n newFilter\n )\n ) {\n newFilter.push({\n filterType: 'genre',\n name: currentNode.genres[g],\n value: true\n });\n }\n }\n if (\n !objectInFilter({ filterType: 'label', name: currentNode.label, value: true }, newFilter)\n ) {\n //set label filter\n newFilter.push({\n filterType: 'label',\n name: currentNode.label,\n value: true\n });\n }\n //set artist filter\n if (\n !objectInFilter({ filterType: 'artist', name: currentNode.id, value: true }, newFilter)\n ) {\n newFilter.push({\n filterType: 'artist',\n name: currentNode.id,\n value: true\n }); \n }\n //set cluster filter\n if (\n !objectInFilter({ filterType: 'cluster', name: cluster, value: true }, newFilter)\n ) {\n newFilter.push({\n filterType: 'cluster',\n name: cluster,\n value: true\n }); \n }\n }\n newFilter.push({\n filterType: 'unSigned',\n name: 'not signed',\n value: false\n }); //add unSigned\n newFilter.push({\n filterType: 'active',\n name: 'active in the last year',\n value: false\n }); //add active\n // var newFilter = newFilter.concat(data.nodes.map(node=> node.color).filter((value, index, self) => self.indexOf(value) === index).map(color => ({filterType: 'color',name: data.legend[getIndexOfObject(data.legend, 'color', color)].description, value:true})))\n const sortedFilter = sortFilters(newFilter);\n data.legend.map(legend =>\n sortedFilter.push({\n filterType: 'community',\n name: legend.description,\n value: true\n })\n );\n setFilters(sortedFilter);\n };\n\n const setIncomingSummary = (data: IGraphData) => {\n setActiveArtists(getActiveArtists(data.nodes));\n setUnsignedArtists(getUnsignedArtists(data.nodes));\n setGraphSummary({\n overview: getOverviewSummary(data.nodes),\n artists: getArtistSummary(data.nodes),\n community: getCommunitySummary(data.nodes)\n });\n };\n\n useEffect(() => {\n if (data) {\n filterGraph(data.nodes);\n updateSummary(data.nodes);\n }\n }, [filters, followersScale]);\n\n const updateSummary = (nodes: IGraphNode[]) => {\n if (data) {\n const newNodes = [];\n for (let i = 0; i < nodes.length; i++) {\n if (checkFilterConditions(nodes[i])) {\n newNodes.push(nodes[i]);\n }\n }\n\n setGraphSummary({\n overview: getOverviewSummary(newNodes),\n artists: getArtistSummary(newNodes),\n community: getCommunitySummary(newNodes)\n });\n }\n };\n\n const filterGraph = (nodes: IGraphNode[]) => {\n if (data) {\n const newNodes: IGraphNode[] = [];\n const newFilteredNodes = new Map();\n for (let i = 0; i < nodes.length; i++) {\n const isFiltered = checkFilterConditions(nodes[i]);\n if (!isFiltered) {\n newFilteredNodes.set(nodes[i].id, nodes[i]);\n }\n newNodes.push(isFiltered ? { ...nodes[i], opacity: 1 } : { ...nodes[i], opacity: 0.2 });\n }\n setFilteredNodes(newFilteredNodes);\n }\n };\n\n return {\n data,\n filters,\n followersScale,\n artistDetail,\n graphSummary,\n graphDataIsLoading,\n error,\n search,\n filteredNodes,\n setFilteredNodes,\n setSearch,\n onChangeFilter,\n onChangeFilterFollowerScale,\n setArtistDetail,\n resetFilters,\n selectAll\n };\n};\n","import { useState } from 'react';\nimport { isFilterActiveType, objectInFilter } from '../../helpers/functions/filterHelpers';\nimport { IGraphNode } from '../graph/GraphHooks';\nimport { getClusterName } from '../../helpers/functions/graphHelpers';\n\nexport interface ICheckbox {\n name: string;\n isChecked: boolean;\n}\n\nexport interface IFilter {\n filterType: string;\n name: string;\n value: boolean;\n}\n\nexport const useFilter = () => {\n //main Filters\n const [filters, setFilters] = useState([]);\n\n //follower filter\n const [followersScale, setFollowersScale] = useState({\n min: 0,\n max: 100000\n });\n\n //added below to fix the issue with initialZoom BUG\n //if initialZoom bug is fixed then we can move config back into\n const [isFiltered, setIsFiltered] = useState(false);\n\n //active artist list\n const [activeArtists, setActiveArtists] = useState([]);\n //unsigned artist list\n const [unsignedArtists, setUnsignedArtists] = useState([]);\n\n const onChangeFilterFollowerScale = (value: { min: number; max: number }) => {\n setIsFiltered(true);\n setFollowersScale(value);\n };\n const onChangeFilter = (filterType: string, name: string, value: boolean) => {\n setIsFiltered(true);\n switch (filterType) {\n case 'unSigned':\n unsigned(value);\n break;\n case 'active':\n active(value);\n break;\n default:\n updateFilter(filterType, name, value);\n }\n };\n\n //if name==label or label == name\n const unsigned = (value: boolean) => {\n if (value) {\n setFilters(\n filters?.map(function(filter) {\n if (filter.value) {\n if (filter.filterType === 'artist' && !unsignedArtists.includes(filter.name)) {\n return { ...filter, value: false };\n }\n }\n if ('unSigned' === filter.filterType) {\n return { ...filter, value: true };\n }\n return filter;\n })\n );\n //turning off active\n } else {\n setFilters(\n filters?.map(function(filter) {\n if (\n filter.filterType === 'artist' &&\n !(!activeArtists.includes(filter.name) && isFilterActiveType(filters, 'active'))\n ) {\n return { ...filter, value: true };\n } else if ('unSigned' === filter.filterType) {\n return { ...filter, value: false };\n }\n return filter;\n })\n );\n }\n };\n\n const active = (value: boolean) => {\n if (value) {\n setFilters(\n filters?.map(function(filter) {\n if (filter.value) {\n if (filter.filterType === 'artist' && !activeArtists.includes(filter.name)) {\n return { ...filter, value: false };\n }\n }\n if ('active' === filter.filterType) {\n return { ...filter, value: true };\n }\n return filter;\n })\n );\n //turning off active\n } else {\n setFilters(\n filters?.map(function(filter) {\n if (\n filter.filterType === 'artist' &&\n !(!unsignedArtists.includes(filter.name) && isFilterActiveType(filters, 'unSigned'))\n ) {\n return { ...filter, value: true };\n } else if ('active' === filter.filterType) {\n return { ...filter, value: false };\n }\n return filter;\n })\n );\n }\n };\n\n const resetFilters = () => {\n setFilters(\n filters?.map(filter =>\n 'unSigned' == filter.filterType || 'active' == filter.filterType\n ? { ...filter, value: false }\n : { ...filter, value: true }\n )\n );\n setFollowersScale({\n min: 0,\n max: 100000\n });\n };\n\n const updateFilter = (filterType: string, name: string, value: boolean) => {\n const newFilters = filters?.map(filter =>\n filterType == filter.filterType && name == filter.name ? { ...filter, value: value } : filter\n );\n setFilters(newFilters);\n };\n\n const selectAll = (currentFilters: IFilter[], value: boolean) => {\n setFilters(\n filters?.map(filter =>\n objectInFilter(filter, currentFilters) ? { ...filter, value: value } : filter\n )\n );\n };\n\n const checkFilter = (filterType: string, name: string) => {\n const filter = filters.find(elem => elem.filterType == filterType && elem.name == name);\n if (filter) {\n return filter.value;\n } else {\n return false;\n }\n };\n\n const checkFilterConditions = (node: IGraphNode) => {\n let a = 0;\n let b = 0;\n a += filterGenre(node.genres) ? 1 : 0;\n b += 1;\n a += checkFilter('label', node.label) ? 1 : 0;\n b += 1;\n a += checkFilter('artist', node.id) ? 1 : 0;\n b += 1;\n a += checkFilter('community', node.description) ? 1 : 0;\n b += 1;\n a += checkFilter('cluster', getClusterName(node)) ? 1 : 0;\n b += 1;\n a += filterFollowers(parseInt(node.followers)) ? 1 : 0;\n b += 1;\n return a === b;\n };\n\n const filterFollowers = (followers: number) => {\n if (followersScale.min <= followers && followersScale.max >= followers) {\n return true;\n } else if (followersScale.min <= followers && followersScale.max === 100000) {\n return true;\n }\n return false;\n };\n\n const filterGenre = (genres: string[]) => {\n for (let i = 0; i < filters.length; i++) {\n if (filters[i].filterType == 'genre') {\n if (genres.includes(filters[i].name) && filters[i].value) return true;\n }\n }\n return false;\n };\n\n return {\n filters,\n setFilters,\n onChangeFilter,\n selectAll,\n checkFilterConditions,\n followersScale,\n onChangeFilterFollowerScale,\n resetFilters,\n setActiveArtists,\n setUnsignedArtists,\n isFiltered,\n setIsFiltered\n };\n};\n","import { useState, useEffect } from 'react';\nimport { IGraphData, IGraphNode } from '../components/graph/GraphHooks';\nimport { API, Auth } from 'aws-amplify';\nimport { toastError } from '../helpers/functions/toasts';\nimport { sortArrayOfObjects } from '../helpers/functions/arrayOfObjects';\n\nexport const useFetchGraphData = (path: string, params: any) => {\n const [data, setData] = useState();\n const [error, setError] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n setIsLoading(true);\n setError(false);\n\n const fetchData = async (): Promise => {\n try {\n const user = await Auth.currentAuthenticatedUser();\n const token = user.signInUserSession.idToken.jwtToken;\n \n const requestInfo = {\n queryStringParameters: params,\n headers: {\n Authorization: token\n }\n };\n const res = await API.get('mappingApi', path, requestInfo);\n\n if (res['nodes'].length !== 0) {\n const sortedNodes: IGraphNode[] = sortArrayOfObjects(res.nodes.slice(1), 'followers');\n sortedNodes.unshift(res.nodes[0]);\n\n setData({\n links: res.links,\n nodes: sortedNodes,\n legend: res.legend\n });\n } else {\n setError(true);\n }\n } catch (error) {\n console.log(error);\n setError(true);\n }\n\n setIsLoading(false);\n };\n\n fetchData();\n }, [params]);\n\n useEffect(() => {\n const handleErrors = () => {\n if (error) {\n switch (path) {\n case '/community':\n toastError('Artist not found');\n break;\n case '/genre':\n toastError('Genre does not exist');\n break;\n case '/connection':\n toastError('No connection found');\n break;\n case '/nettwerk':\n break;\n }\n }\n };\n handleErrors();\n }, [error]);\n\n return {\n data,\n error,\n isLoading\n };\n};\n","import { each } from '@antv/util';\n// 自定义 Behavior 时候共有的方法\nexport default {\n getDefaultCfg: function getDefaultCfg() {\n return {};\n },\n /**\n * register event handler, behavior will auto bind events\n * for example:\n * return {\n * click: 'onClick'\n * }\n */\n getEvents: function getEvents() {\n return {};\n },\n updateCfg: function updateCfg(cfg) {\n Object.assign(this, cfg);\n return true;\n },\n shouldBegin: function shouldBegin() {\n return true;\n },\n shouldUpdate: function shouldUpdate() {\n return true;\n },\n shouldEnd: function shouldEnd() {\n return true;\n },\n /**\n * auto bind events when register behavior\n * @param graph Graph instance\n */\n bind: function bind(graph) {\n var _this = this;\n var events = this.events;\n this.graph = graph;\n if (this.type === 'drag-canvas' || this.type === 'brush-select' || this.type === 'lasso-select') {\n graph.get('canvas').set('draggable', true);\n }\n each(events, function (handler, event) {\n graph.on(event, handler);\n });\n // To avoid the tabs switching makes the keydown related behaviors disable\n document.addEventListener('visibilitychange', function () {\n _this.keydown = false;\n });\n },\n unbind: function unbind(graph) {\n var events = this.events;\n var draggable = graph.get('canvas').get('draggable');\n if (this.type === 'drag-canvas' || this.type === 'brush-select' || this.type === 'lasso-select') {\n graph.get('canvas').set('draggable', false);\n }\n each(events, function (handler, event) {\n graph.off(event, handler);\n });\n graph.get('canvas').set('draggable', draggable);\n },\n get: function get(val) {\n return this[val];\n },\n set: function set(key, val) {\n this[key] = val;\n return this;\n }\n};","import { clone, each, wrapBehavior } from '@antv/util';\nimport behaviorOption from './behaviorOption';\nvar Behavior = /** @class */function () {\n function Behavior() {}\n /**\n * 自定义 Behavior\n * @param type Behavior 名称\n * @param behavior Behavior 定义的方法集合\n */\n Behavior.registerBehavior = function (type, behavior) {\n if (!behavior) {\n throw new Error(\"please specify handler for this behavior: \".concat(type));\n }\n var prototype = clone(behaviorOption);\n Object.assign(prototype, behavior);\n // eslint-disable-next-line func-names\n var base = function base(cfg) {\n var _this = this;\n Object.assign(this, this.getDefaultCfg(), cfg);\n var events = this.getEvents();\n this.events = null;\n var eventsToBind = {};\n if (events) {\n each(events, function (handle, event) {\n eventsToBind[event] = wrapBehavior(_this, handle);\n });\n this.events = eventsToBind;\n }\n };\n base.prototype = prototype;\n Behavior.types[type] = base;\n };\n Behavior.hasBehavior = function (type) {\n return !!Behavior.types[type];\n };\n Behavior.getBehavior = function (type) {\n return Behavior.types[type];\n };\n // 所有自定义的 Behavior 的实例\n Behavior.types = {};\n return Behavior;\n}();\nexport default Behavior;","import Behavior from './behavior';\nexport default Behavior;","interface EventType {\n readonly callback: Function;\n readonly once: boolean;\n}\n\ntype EventsType = Record;\n\nconst WILDCARD = '*';\n\n/* event-emitter */\nexport default class EventEmitter {\n private _events: EventsType = {};\n\n /**\n * 监听一个事件\n * @param evt\n * @param callback\n * @param once\n */\n on(evt: string, callback: Function, once?: boolean) {\n if (!this._events[evt]) {\n this._events[evt] = [];\n }\n this._events[evt].push({\n callback,\n once: !!once,\n });\n return this;\n }\n\n /**\n * 监听一个事件一次\n * @param evt\n * @param callback\n */\n once(evt: string, callback: Function) {\n return this.on(evt, callback, true);\n }\n\n /**\n * 触发一个事件\n * @param evt\n * @param args\n */\n emit(evt: string, ...args: any[]) {\n const events = this._events[evt] || [];\n const wildcardEvents = this._events[WILDCARD] || [];\n\n // 实际的处理 emit 方法\n const doEmit = (es: EventType[]) => {\n let length = es.length;\n for (let i = 0; i < length; i++) {\n if (!es[i]) {\n continue;\n }\n const { callback, once } = es[i];\n\n if (once) {\n es.splice(i, 1);\n\n if (es.length === 0) {\n delete this._events[evt];\n }\n\n length--;\n i--;\n }\n\n callback.apply(this, args);\n }\n };\n\n doEmit(events);\n doEmit(wildcardEvents);\n }\n\n /**\n * 取消监听一个事件,或者一个channel\n * @param evt\n * @param callback\n */\n off(evt?: string, callback?: Function) {\n if (!evt) {\n // evt 为空全部清除\n this._events = {};\n } else {\n if (!callback) {\n // evt 存在,callback 为空,清除事件所有方法\n delete this._events[evt];\n } else {\n // evt 存在,callback 存在,清除匹配的\n const events = this._events[evt] || [];\n\n let length = events.length;\n for (let i = 0; i < length; i++) {\n if (events[i].callback === callback) {\n events.splice(i, 1);\n length--;\n i--;\n }\n }\n\n if (events.length === 0) {\n delete this._events[evt];\n }\n }\n }\n\n return this;\n }\n\n /* 当前所有的事件 */\n getEvents() {\n return this._events;\n }\n}\n","var adjMatrix = function adjMatrix(graphData, directed) {\n var nodes = graphData.nodes,\n edges = graphData.edges;\n var matrix = []; // map node with index in data.nodes\n\n var nodeMap = {};\n\n if (!nodes) {\n throw new Error(\"invalid nodes data!\");\n }\n\n if (nodes) {\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = i;\n var row = [];\n matrix.push(row);\n });\n }\n\n if (edges) {\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sIndex = nodeMap[source];\n var tIndex = nodeMap[target];\n if (!sIndex && sIndex !== 0 || !tIndex && tIndex !== 0) return;\n matrix[sIndex][tIndex] = 1;\n\n if (!directed) {\n matrix[tIndex][sIndex] = 1;\n }\n });\n }\n\n return matrix;\n};\n\nexport default adjMatrix;","var defaultComparator = function defaultComparator(a, b) {\n if (a === b) {\n return true;\n }\n\n return false;\n};\n/**\n * 链表中单个元素节点\n */\n\n\nvar LinkedListNode =\n/** @class */\nfunction () {\n function LinkedListNode(value, next) {\n if (next === void 0) {\n next = null;\n }\n\n this.value = value;\n this.next = next;\n }\n\n LinkedListNode.prototype.toString = function (callback) {\n return callback ? callback(this.value) : \"\".concat(this.value);\n };\n\n return LinkedListNode;\n}();\n\nexport { LinkedListNode };\n\nvar LinkedList =\n/** @class */\nfunction () {\n function LinkedList(comparator) {\n if (comparator === void 0) {\n comparator = defaultComparator;\n }\n\n this.head = null;\n this.tail = null;\n this.compare = comparator;\n }\n /**\n * 将指定元素添加到链表头部\n * @param value\n */\n\n\n LinkedList.prototype.prepend = function (value) {\n // 在头部添加一个节点\n var newNode = new LinkedListNode(value, this.head);\n this.head = newNode;\n\n if (!this.tail) {\n this.tail = newNode;\n }\n\n return this;\n };\n /**\n * 将指定元素添加到链表中\n * @param value\n */\n\n\n LinkedList.prototype.append = function (value) {\n var newNode = new LinkedListNode(value); // 如果不存在头节点,则将创建的新节点作为头节点\n\n if (!this.head) {\n this.head = newNode;\n this.tail = newNode;\n return this;\n } // 将新节点附加到链表末尾\n\n\n this.tail.next = newNode;\n this.tail = newNode;\n return this;\n };\n /**\n * 删除指定元素\n * @param value 要删除的元素\n */\n\n\n LinkedList.prototype.delete = function (value) {\n if (!this.head) {\n return null;\n }\n\n var deleteNode = null; // 如果删除的是头部元素,则将next作为头元素\n\n while (this.head && this.compare(this.head.value, value)) {\n deleteNode = this.head;\n this.head = this.head.next;\n }\n\n var currentNode = this.head;\n\n if (currentNode !== null) {\n // 如果删除了节点以后,将next节点前移\n while (currentNode.next) {\n if (this.compare(currentNode.next.value, value)) {\n deleteNode = currentNode.next;\n currentNode.next = currentNode.next.next;\n } else {\n currentNode = currentNode.next;\n }\n }\n } // 检查尾部节点是否被删除\n\n\n if (this.compare(this.tail.value, value)) {\n this.tail = currentNode;\n }\n\n return deleteNode;\n };\n /**\n * 查找指定的元素\n * @param param0\n */\n\n\n LinkedList.prototype.find = function (_a) {\n var _b = _a.value,\n value = _b === void 0 ? undefined : _b,\n _c = _a.callback,\n callback = _c === void 0 ? undefined : _c;\n\n if (!this.head) {\n return null;\n }\n\n var currentNode = this.head;\n\n while (currentNode) {\n // 如果指定了 callback,则按指定的 callback 查找\n if (callback && callback(currentNode.value)) {\n return currentNode;\n } // 如果指定了 value,则按 value 查找\n\n\n if (value !== undefined && this.compare(currentNode.value, value)) {\n return currentNode;\n }\n\n currentNode = currentNode.next;\n }\n\n return null;\n };\n /**\n * 删除尾部节点\n */\n\n\n LinkedList.prototype.deleteTail = function () {\n var deletedTail = this.tail;\n\n if (this.head === this.tail) {\n // 链表中只有一个元素\n this.head = null;\n this.tail = null;\n return deletedTail;\n }\n\n var currentNode = this.head;\n\n while (currentNode.next) {\n if (!currentNode.next.next) {\n currentNode.next = null;\n } else {\n currentNode = currentNode.next;\n }\n }\n\n this.tail = currentNode;\n return deletedTail;\n };\n /**\n * 删除头部节点\n */\n\n\n LinkedList.prototype.deleteHead = function () {\n if (!this.head) {\n return null;\n }\n\n var deletedHead = this.head;\n\n if (this.head.next) {\n this.head = this.head.next;\n } else {\n this.head = null;\n this.tail = null;\n }\n\n return deletedHead;\n };\n /**\n * 将一组元素转成链表中的节点\n * @param values 链表中的元素\n */\n\n\n LinkedList.prototype.fromArray = function (values) {\n var _this = this;\n\n values.forEach(function (value) {\n return _this.append(value);\n });\n return this;\n };\n /**\n * 将链表中的节点转成数组元素\n */\n\n\n LinkedList.prototype.toArray = function () {\n var nodes = [];\n var currentNode = this.head;\n\n while (currentNode) {\n nodes.push(currentNode);\n currentNode = currentNode.next;\n }\n\n return nodes;\n };\n /**\n * 反转链表中的元素节点\n */\n\n\n LinkedList.prototype.reverse = function () {\n var currentNode = this.head;\n var prevNode = null;\n var nextNode = null;\n\n while (currentNode) {\n // 存储下一个元素节点\n nextNode = currentNode.next; // 更改当前节点的下一个节点,以便将它连接到上一个节点上\n\n currentNode.next = prevNode; // 将 prevNode 和 currentNode 向前移动一步\n\n prevNode = currentNode;\n currentNode = nextNode;\n }\n\n this.tail = this.head;\n this.head = prevNode;\n };\n\n LinkedList.prototype.toString = function (callback) {\n if (callback === void 0) {\n callback = undefined;\n }\n\n return this.toArray().map(function (node) {\n return node.toString(callback);\n }).toString();\n };\n\n return LinkedList;\n}();\n\nexport default LinkedList;","import LinkedList from './linked-list';\n\nvar Queue =\n/** @class */\nfunction () {\n function Queue() {\n this.linkedList = new LinkedList();\n }\n /**\n * 队列是否为空\n */\n\n\n Queue.prototype.isEmpty = function () {\n return !this.linkedList.head;\n };\n /**\n * 读取队列头部的元素, 不删除队列中的元素\n */\n\n\n Queue.prototype.peek = function () {\n if (!this.linkedList.head) {\n return null;\n }\n\n return this.linkedList.head.value;\n };\n /**\n * 在队列的尾部新增一个元素\n * @param value\n */\n\n\n Queue.prototype.enqueue = function (value) {\n this.linkedList.append(value);\n };\n /**\n * 删除队列中的头部元素,如果队列为空,则返回 null\n */\n\n\n Queue.prototype.dequeue = function () {\n var removeHead = this.linkedList.deleteHead();\n return removeHead ? removeHead.value : null;\n };\n\n Queue.prototype.toString = function (callback) {\n return this.linkedList.toString(callback);\n };\n\n return Queue;\n}();\n\nexport default Queue;","/**\n * 获取指定节点的所有邻居\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n * @param type 邻居类型\n */\nexport var getNeighbors = function getNeighbors(nodeId, edges, type) {\n if (edges === void 0) {\n edges = [];\n }\n\n var currentEdges = edges.filter(function (edge) {\n return edge.source === nodeId || edge.target === nodeId;\n });\n\n if (type === 'target') {\n // 当前节点为 source,它所指向的目标节点\n var neighhborsConverter_1 = function neighhborsConverter_1(edge) {\n return edge.source === nodeId;\n };\n\n return currentEdges.filter(neighhborsConverter_1).map(function (edge) {\n return edge.target;\n });\n }\n\n if (type === 'source') {\n // 当前节点为 target,它所指向的源节点\n var neighhborsConverter_2 = function neighhborsConverter_2(edge) {\n return edge.target === nodeId;\n };\n\n return currentEdges.filter(neighhborsConverter_2).map(function (edge) {\n return edge.source;\n });\n } // 若未指定 type ,则返回所有邻居\n\n\n var neighhborsConverter = function neighhborsConverter(edge) {\n return edge.source === nodeId ? edge.target : edge.source;\n };\n\n return currentEdges.map(neighhborsConverter);\n};\n/**\n * 获取指定节点的出边\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n */\n\nexport var getOutEdgesNodeId = function getOutEdgesNodeId(nodeId, edges) {\n return edges.filter(function (edge) {\n return edge.source === nodeId;\n });\n};\n/**\n * 获取指定节点的边,包括出边和入边\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n */\n\nexport var getEdgesByNodeId = function getEdgesByNodeId(nodeId, edges) {\n return edges.filter(function (edge) {\n return edge.source === nodeId || edge.target === nodeId;\n });\n};\n/**\n * 生成唯一的 ID,规则是序号 + 时间戳\n * @param index 序号\n */\n\nexport var uniqueId = function uniqueId(index) {\n if (index === void 0) {\n index = 0;\n }\n\n var random1 = \"\".concat(Math.random()).split('.')[1].substr(0, 5);\n var random2 = \"\".concat(Math.random()).split('.')[1].substr(0, 5);\n return \"\".concat(index, \"-\").concat(random1).concat(random2);\n};","import Queue from './structs/queue';\nimport { getNeighbors } from './util';\n/**\n *\n * @param callbacks\n * allowTraversal: 确定 BFS 是否从顶点沿着边遍历到其邻居,默认情况下,同一个节点只能遍历一次\n * enterNode: 当 BFS 访问某个节点时调用\n * leaveNode: 当 BFS 访问访问结束某个节点时调用\n */\n\nfunction initCallbacks(callbacks) {\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n var initiatedCallback = callbacks;\n\n var stubCallback = function stubCallback() {};\n\n var allowTraversalCallback = function () {\n var seen = {};\n return function (_a) {\n var next = _a.next;\n var id = next;\n\n if (!seen[id]) {\n seen[id] = true;\n return true;\n }\n\n return false;\n };\n }();\n\n initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback;\n initiatedCallback.enter = callbacks.enter || stubCallback;\n initiatedCallback.leave = callbacks.leave || stubCallback;\n return initiatedCallback;\n}\n/**\n * 广度优先遍历图\n * @param graph Graph 图实例\n * @param startNode 开始遍历的节点\n * @param originalCallbacks 回调\n */\n\n\nvar breadthFirstSearch = function breadthFirstSearch(graphData, startNodeId, originalCallbacks, directed) {\n if (directed === void 0) {\n directed = true;\n }\n\n var callbacks = initCallbacks(originalCallbacks);\n var nodeQueue = new Queue();\n var _a = graphData.edges,\n edges = _a === void 0 ? [] : _a; // 初始化队列元素\n\n nodeQueue.enqueue(startNodeId);\n var previousNode = '';\n\n var _loop_1 = function _loop_1() {\n var currentNode = nodeQueue.dequeue();\n callbacks.enter({\n current: currentNode,\n previous: previousNode\n }); // 将所有邻居添加到队列中以便遍历\n\n getNeighbors(currentNode, edges, directed ? 'target' : undefined).forEach(function (nextNode) {\n if (callbacks.allowTraversal({\n previous: previousNode,\n current: currentNode,\n next: nextNode\n })) {\n nodeQueue.enqueue(nextNode);\n }\n });\n callbacks.leave({\n current: currentNode,\n previous: previousNode\n }); // 下一次循环之前存储当前顶点\n\n previousNode = currentNode;\n }; // 遍历队列中的所有顶点\n\n\n while (!nodeQueue.isEmpty()) {\n _loop_1();\n }\n};\n\nexport default breadthFirstSearch;","import { getNeighbors } from \"./util\";\n/**\n * Generate all connected components for an undirected graph\n * @param graph\n */\n\nexport var detectConnectedComponents = function detectConnectedComponents(graphData) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var allComponents = [];\n var visited = {};\n var nodeStack = [];\n\n var getComponent = function getComponent(node) {\n nodeStack.push(node);\n visited[node.id] = true;\n var neighbors = getNeighbors(node.id, edges);\n\n var _loop_1 = function _loop_1(i) {\n var neighbor = neighbors[i];\n\n if (!visited[neighbor]) {\n var targetNode = nodes.filter(function (node) {\n return node.id === neighbor;\n });\n\n if (targetNode.length > 0) {\n getComponent(targetNode[0]);\n }\n }\n };\n\n for (var i = 0; i < neighbors.length; ++i) {\n _loop_1(i);\n }\n };\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n\n if (!visited[node.id]) {\n // 对于无向图进行dfs遍历,每一次调用后都得到一个连通分量\n getComponent(node);\n var component = [];\n\n while (nodeStack.length > 0) {\n component.push(nodeStack.pop());\n }\n\n allComponents.push(component);\n }\n }\n\n return allComponents;\n};\n/**\n * Tarjan's Algorithm 复杂度 O(|V|+|E|)\n * For directed graph only\n * a directed graph is said to be strongly connected if \"every vertex is reachable from every other vertex\".\n * refer: http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n * @param graph\n * @return a list of strongly connected components\n */\n\nexport var detectStrongConnectComponents = function detectStrongConnectComponents(graphData) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodeStack = [];\n var inStack = {}; // 辅助判断是否已经在stack中,减少查找开销\n\n var indices = {};\n var lowLink = {};\n var allComponents = [];\n var index = 0;\n\n var getComponent = function getComponent(node) {\n // Set the depth index for v to the smallest unused index\n indices[node.id] = index;\n lowLink[node.id] = index;\n index += 1;\n nodeStack.push(node);\n inStack[node.id] = true; // 考虑每个邻接点\n\n var neighbors = getNeighbors(node.id, edges, 'target').filter(function (n) {\n return nodes.map(function (node) {\n return node.id;\n }).indexOf(n) > -1;\n });\n\n var _loop_2 = function _loop_2(i) {\n var targetNodeID = neighbors[i];\n\n if (!indices[targetNodeID] && indices[targetNodeID] !== 0) {\n var targetNode = nodes.filter(function (node) {\n return node.id === targetNodeID;\n });\n\n if (targetNode.length > 0) {\n getComponent(targetNode[0]);\n } // tree edge\n\n\n lowLink[node.id] = Math.min(lowLink[node.id], lowLink[targetNodeID]);\n } else if (inStack[targetNodeID]) {\n // back edge, target node is in the current SCC\n lowLink[node.id] = Math.min(lowLink[node.id], indices[targetNodeID]);\n }\n };\n\n for (var i = 0; i < neighbors.length; i++) {\n _loop_2(i);\n } // If node is a root node, generate an SCC\n\n\n if (lowLink[node.id] === indices[node.id]) {\n var component = [];\n\n while (nodeStack.length > 0) {\n var tmpNode = nodeStack.pop();\n inStack[tmpNode.id] = false;\n component.push(tmpNode);\n if (tmpNode === node) break;\n }\n\n if (component.length > 0) {\n allComponents.push(component);\n }\n }\n };\n\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var node = nodes_1[_i];\n\n if (!indices[node.id] && indices[node.id] !== 0) {\n getComponent(node);\n }\n }\n\n return allComponents;\n};\nexport default function getConnectedComponents(graphData, directed) {\n if (directed) return detectStrongConnectComponents(graphData);\n return detectConnectedComponents(graphData);\n}","var degree = function degree(graphData) {\n var degrees = {};\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n nodes.forEach(function (node) {\n degrees[node.id] = {\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n });\n edges.forEach(function (edge) {\n degrees[edge.source].degree++;\n degrees[edge.source].outDegree++;\n degrees[edge.target].degree++;\n degrees[edge.target].inDegree++;\n });\n return degrees;\n};\n\nexport default degree;\n/**\n * 获取指定节点的入度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\nexport var getInDegree = function getInDegree(graphData, nodeId) {\n var nodeDegree = degree(graphData);\n\n if (nodeDegree[nodeId]) {\n return degree(graphData)[nodeId].inDegree;\n }\n\n return 0;\n};\n/**\n * 获取指定节点的出度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\nexport var getOutDegree = function getOutDegree(graphData, nodeId) {\n var nodeDegree = degree(graphData);\n\n if (nodeDegree[nodeId]) {\n return degree(graphData)[nodeId].outDegree;\n }\n\n return 0;\n};","import { getNeighbors } from './util';\n\nfunction initCallbacks(callbacks) {\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n var initiatedCallback = callbacks;\n\n var stubCallback = function stubCallback() {};\n\n var allowTraversalCallback = function () {\n var seen = {};\n return function (_a) {\n var next = _a.next;\n\n if (!seen[next]) {\n seen[next] = true;\n return true;\n }\n\n return false;\n };\n }();\n\n initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback;\n initiatedCallback.enter = callbacks.enter || stubCallback;\n initiatedCallback.leave = callbacks.leave || stubCallback;\n return initiatedCallback;\n}\n/**\n * @param {Graph} graph\n * @param {GraphNode} currentNode\n * @param {GraphNode} previousNode\n * @param {Callbacks} callbacks\n */\n\n\nfunction depthFirstSearchRecursive(graphData, currentNode, previousNode, callbacks) {\n callbacks.enter({\n current: currentNode,\n previous: previousNode\n });\n var _a = graphData.edges,\n edges = _a === void 0 ? [] : _a;\n getNeighbors(currentNode, edges, 'target').forEach(function (nextNode) {\n if (callbacks.allowTraversal({\n previous: previousNode,\n current: currentNode,\n next: nextNode\n })) {\n depthFirstSearchRecursive(graphData, nextNode, currentNode, callbacks);\n }\n });\n callbacks.leave({\n current: currentNode,\n previous: previousNode\n });\n}\n/**\n * 深度优先遍历图\n * @param data GraphData 图数据\n * @param startNodeId 开始遍历的节点的 ID\n * @param originalCallbacks 回调\n */\n\n\nexport default function depthFirstSearch(graphData, startNodeId, callbacks) {\n depthFirstSearchRecursive(graphData, startNodeId, '', initCallbacks(callbacks));\n}","import dfs from './dfs';\nimport getConnectedComponents, { detectStrongConnectComponents } from './connected-component';\nimport { getNeighbors } from './util';\n\nvar detectDirectedCycle = function detectDirectedCycle(graphData) {\n var cycle = null;\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a;\n var dfsParentMap = {}; // 所有没有被访问的节点集合\n\n var unvisitedSet = {}; // 正在被访问的节点集合\n\n var visitingSet = {}; // 所有已经被访问过的节点集合\n\n var visitedSet = {}; // 初始化 unvisitedSet\n\n nodes.forEach(function (node) {\n unvisitedSet[node.id] = node;\n });\n var callbacks = {\n enter: function enter(_a) {\n var currentNode = _a.current,\n previousNode = _a.previous;\n\n if (visitingSet[currentNode]) {\n // 如果当前节点正在访问中,则说明检测到环路了\n cycle = {};\n var currentCycleNode = currentNode;\n var previousCycleNode = previousNode;\n\n while (previousCycleNode !== currentNode) {\n cycle[currentCycleNode] = previousCycleNode;\n currentCycleNode = previousCycleNode;\n previousCycleNode = dfsParentMap[previousCycleNode];\n }\n\n cycle[currentCycleNode] = previousCycleNode;\n } else {\n // 如果不存在正在访问集合中,则将其放入正在访问集合,并从未访问集合中删除\n visitingSet[currentNode] = currentNode;\n delete unvisitedSet[currentNode]; // 更新 DSF parents 列表\n\n dfsParentMap[currentNode] = previousNode;\n }\n },\n leave: function leave(_a) {\n var currentNode = _a.current; // 如果所有的节点的子节点都已经访问过了,则从正在访问集合中删除掉,并将其移入到已访问集合中,\n // 同时也意味着当前节点的所有邻居节点都被访问过了\n\n visitedSet[currentNode] = currentNode;\n delete visitingSet[currentNode];\n },\n allowTraversal: function allowTraversal(_a) {\n var nextNode = _a.next; // 如果检测到环路则需要终止所有进一步的遍历,否则会导致无限循环遍历\n\n if (cycle) {\n return false;\n } // 仅允许遍历没有访问的节点,visitedSet 中的都已经访问过了\n\n\n return !visitedSet[nextNode];\n }\n }; // 开始遍历节点\n\n while (Object.keys(unvisitedSet).length) {\n // 从第一个节点开始进行 DFS 遍历\n var firsetUnVisitedKey = Object.keys(unvisitedSet)[0];\n dfs(graphData, firsetUnVisitedKey, callbacks);\n }\n\n return cycle;\n};\n/**\n * 检测无向图中的所有Base cycles\n * refer: https://www.codeproject.com/Articles/1158232/Enumerating-All-Cycles-in-an-Undirected-Graph\n * @param graph\n * @param nodeIds 节点 ID 的数组\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: INode}] 返回一组base cycles\n */\n\n\nexport var detectAllUndirectedCycle = function detectAllUndirectedCycle(graphData, nodeIds, include) {\n var _a, _b;\n\n if (include === void 0) {\n include = true;\n }\n\n var allCycles = [];\n var components = getConnectedComponents(graphData, false); // loop through all connected components\n\n for (var _i = 0, components_1 = components; _i < components_1.length; _i++) {\n var component = components_1[_i];\n if (!component.length) continue;\n var root = component[0];\n var rootId = root.id;\n var stack = [root];\n var parent_1 = (_a = {}, _a[rootId] = root, _a);\n var used = (_b = {}, _b[rootId] = new Set(), _b); // walk a spanning tree to find cycles\n\n while (stack.length > 0) {\n var curNode = stack.pop();\n var curNodeId = curNode.id;\n var neighbors = getNeighbors(curNodeId, graphData.edges);\n\n var _loop_1 = function _loop_1(i) {\n var _c;\n\n var neighborId = neighbors[i];\n var neighbor = graphData.nodes.find(function (node) {\n return node.id === neighborId;\n }); // const neighborId = neighbor.get('id');\n\n if (neighborId === curNodeId) {\n // 自环\n allCycles.push((_c = {}, _c[neighborId] = curNode, _c));\n } else if (!(neighborId in used)) {\n // visit a new node\n parent_1[neighborId] = curNode;\n stack.push(neighbor);\n used[neighborId] = new Set([curNode]);\n } else if (!used[curNodeId].has(neighbor)) {\n // a cycle found\n var cycleValid = true;\n var cyclePath = [neighbor, curNode];\n var p = parent_1[curNodeId];\n\n while (used[neighborId].size && !used[neighborId].has(p)) {\n cyclePath.push(p);\n if (p === parent_1[p.id]) break;else p = parent_1[p.id];\n }\n\n cyclePath.push(p);\n\n if (nodeIds && include) {\n // 如果有指定包含的节点\n cycleValid = false;\n\n if (cyclePath.findIndex(function (node) {\n return nodeIds.indexOf(node.id) > -1;\n }) > -1) {\n cycleValid = true;\n }\n } else if (nodeIds && !include) {\n // 如果有指定不包含的节点\n if (cyclePath.findIndex(function (node) {\n return nodeIds.indexOf(node.id) > -1;\n }) > -1) {\n cycleValid = false;\n }\n } // 把 node list 形式转换为 cycle 的格式\n\n\n if (cycleValid) {\n var cycle = {};\n\n for (var index = 1; index < cyclePath.length; index += 1) {\n cycle[cyclePath[index - 1].id] = cyclePath[index];\n }\n\n if (cyclePath.length) {\n cycle[cyclePath[cyclePath.length - 1].id] = cyclePath[0];\n }\n\n allCycles.push(cycle);\n }\n\n used[neighborId].add(curNode);\n }\n };\n\n for (var i = 0; i < neighbors.length; i += 1) {\n _loop_1(i);\n }\n }\n }\n\n return allCycles;\n};\n/**\n * Johnson's algorithm, 时间复杂度 O((V + E)(C + 1))$ and space bounded by O(V + E)\n * refer: https://www.cs.tufts.edu/comp/150GA/homeworks/hw1/Johnson%2075.PDF\n * refer: https://networkx.github.io/documentation/stable/_modules/networkx/algorithms/cycles.html#simple_cycles\n * @param graph\n * @param nodeIds 节点 ID 的数组\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: INode}] 返回所有的 simple cycles\n */\n\nexport var detectAllDirectedCycle = function detectAllDirectedCycle(graphData, nodeIds, include) {\n if (include === void 0) {\n include = true;\n }\n\n var path = []; // stack of nodes in current path\n\n var blocked = new Set();\n var B = []; // remember portions of the graph that yield no elementary circuit\n\n var allCycles = [];\n var idx2Node = {};\n var node2Idx = {}; // 辅助函数: unblock all blocked nodes\n\n var unblock = function unblock(thisNode) {\n var stack = [thisNode];\n\n while (stack.length > 0) {\n var node = stack.pop();\n\n if (blocked.has(node)) {\n blocked.delete(node);\n B[node.id].forEach(function (n) {\n stack.push(n);\n });\n B[node.id].clear();\n }\n }\n };\n\n var circuit = function circuit(node, start, adjList) {\n var closed = false; // whether a path is closed\n\n if (nodeIds && include === false && nodeIds.indexOf(node.id) > -1) return closed;\n path.push(node);\n blocked.add(node);\n var neighbors = adjList[node.id];\n\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = idx2Node[neighbors[i]];\n\n if (neighbor === start) {\n var cycle = {};\n\n for (var index = 1; index < path.length; index += 1) {\n cycle[path[index - 1].id] = path[index];\n }\n\n if (path.length) {\n cycle[path[path.length - 1].id] = path[0];\n }\n\n allCycles.push(cycle);\n closed = true;\n } else if (!blocked.has(neighbor)) {\n if (circuit(neighbor, start, adjList)) {\n closed = true;\n }\n }\n }\n\n if (closed) {\n unblock(node);\n } else {\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = idx2Node[neighbors[i]];\n\n if (!B[neighbor.id].has(node)) {\n B[neighbor.id].add(node);\n }\n }\n }\n\n path.pop();\n return closed;\n };\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a; // Johnson's algorithm 要求给节点赋顺序,先按节点在数组中的顺序\n\n for (var i = 0; i < nodes.length; i += 1) {\n var node = nodes[i];\n var nodeId = node.id;\n node2Idx[nodeId] = i;\n idx2Node[i] = node;\n } // 如果有指定包含的节点,则把指定节点排序在前,以便提早结束搜索\n\n\n if (nodeIds && include) {\n var _loop_2 = function _loop_2(i) {\n var nodeId = nodeIds[i];\n node2Idx[nodes[i].id] = node2Idx[nodeId];\n node2Idx[nodeId] = 0;\n idx2Node[0] = nodes.find(function (node) {\n return node.id === nodeId;\n });\n idx2Node[node2Idx[nodes[i].id]] = nodes[i];\n };\n\n for (var i = 0; i < nodeIds.length; i++) {\n _loop_2(i);\n }\n } // 返回 节点顺序 >= nodeOrder 的强连通分量的adjList\n\n\n var getMinComponentAdj = function getMinComponentAdj(components) {\n var _a;\n\n var minCompIdx;\n var minIdx = Infinity; // Find least component and the lowest node\n\n for (var i = 0; i < components.length; i += 1) {\n var comp = components[i];\n\n for (var j = 0; j < comp.length; j++) {\n var nodeIdx_1 = node2Idx[comp[j].id];\n\n if (nodeIdx_1 < minIdx) {\n minIdx = nodeIdx_1;\n minCompIdx = i;\n }\n }\n }\n\n var component = components[minCompIdx];\n var adjList = [];\n\n for (var i = 0; i < component.length; i += 1) {\n var node = component[i];\n adjList[node.id] = [];\n\n for (var _i = 0, _b = getNeighbors(node.id, graphData.edges, 'target').filter(function (n) {\n return component.map(function (c) {\n return c.id;\n }).indexOf(n) > -1;\n }); _i < _b.length; _i++) {\n var neighbor = _b[_i]; // 对自环情况 (点连向自身) 特殊处理:记录自环,但不加入adjList\n\n if (neighbor === node.id && !(include === false && nodeIds.indexOf(node.id) > -1)) {\n allCycles.push((_a = {}, _a[node.id] = node, _a));\n } else {\n adjList[node.id].push(node2Idx[neighbor]);\n }\n }\n }\n\n return {\n component: component,\n adjList: adjList,\n minIdx: minIdx\n };\n };\n\n var nodeIdx = 0;\n\n while (nodeIdx < nodes.length) {\n var subgraphNodes = nodes.filter(function (n) {\n return node2Idx[n.id] >= nodeIdx;\n });\n var sccs = detectStrongConnectComponents({\n nodes: subgraphNodes,\n edges: graphData.edges\n }).filter(function (component) {\n return component.length > 1;\n });\n if (sccs.length === 0) break;\n var scc = getMinComponentAdj(sccs);\n var minIdx = scc.minIdx,\n adjList = scc.adjList,\n component = scc.component;\n\n if (component.length > 1) {\n component.forEach(function (node) {\n B[node.id] = new Set();\n });\n var startNode = idx2Node[minIdx]; // startNode 不在指定要包含的节点中,提前结束搜索\n\n if (nodeIds && include && nodeIds.indexOf(startNode.id) === -1) return allCycles;\n circuit(startNode, startNode, adjList);\n nodeIdx = minIdx + 1;\n } else {\n break;\n }\n }\n\n return allCycles;\n};\n/**\n * 查找图中所有满足要求的圈\n * @param graph\n * @param directed 是否为有向图\n * @param nodeIds 节点 ID 的数组,若不指定,则返回图中所有的圈\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: Node}] 包含所有环的数组,每个环用一个Object表示,其中key为节点id,value为该节点在环中指向的下一个节点\n */\n\nexport var detectAllCycles = function detectAllCycles(graphData, directed, nodeIds, include) {\n if (include === void 0) {\n include = true;\n }\n\n if (directed) return detectAllDirectedCycle(graphData, nodeIds, include);\n return detectAllUndirectedCycle(graphData, nodeIds, include);\n};\nexport default detectDirectedCycle;","import { __spreadArray } from \"tslib\";\nimport { isArray } from '@antv/util';\nimport { getOutEdgesNodeId, getEdgesByNodeId } from './util';\n\nvar minVertex = function minVertex(D, nodes, marks) {\n // 找出最小的点\n var minDis = Infinity;\n var minNode;\n\n for (var i = 0; i < nodes.length; i++) {\n var nodeId = nodes[i].id;\n\n if (!marks[nodeId] && D[nodeId] <= minDis) {\n minDis = D[nodeId];\n minNode = nodes[i];\n }\n }\n\n return minNode;\n};\n\nvar dijkstra = function dijkstra(graphData, source, directed, weightPropertyName) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodeIds = [];\n var marks = {};\n var D = {};\n var prevs = {}; // key: 顶点, value: 顶点的前驱点数组(可能有多条等长的最短路径)\n\n nodes.forEach(function (node, i) {\n var id = node.id;\n nodeIds.push(id);\n D[id] = Infinity;\n if (id === source) D[id] = 0;\n });\n var nodeNum = nodes.length;\n\n var _loop_1 = function _loop_1(i) {\n // Process the vertices\n var minNode = minVertex(D, nodes, marks);\n var minNodeId = minNode.id;\n marks[minNodeId] = true;\n if (D[minNodeId] === Infinity) return \"continue\"; // Unreachable vertices cannot be the intermediate point\n\n var relatedEdges = [];\n if (directed) relatedEdges = getOutEdgesNodeId(minNodeId, edges);else relatedEdges = getEdgesByNodeId(minNodeId, edges);\n relatedEdges.forEach(function (edge) {\n var edgeTarget = edge.target;\n var edgeSource = edge.source;\n var w = edgeTarget === minNodeId ? edgeSource : edgeTarget;\n var weight = weightPropertyName && edge[weightPropertyName] ? edge[weightPropertyName] : 1;\n\n if (D[w] > D[minNode.id] + weight) {\n D[w] = D[minNode.id] + weight;\n prevs[w] = [minNode.id];\n } else if (D[w] === D[minNode.id] + weight) {\n prevs[w].push(minNode.id);\n }\n });\n };\n\n for (var i = 0; i < nodeNum; i++) {\n _loop_1(i);\n }\n\n prevs[source] = [source]; // 每个节点存可能存在多条最短路径\n\n var paths = {};\n\n for (var target in D) {\n if (D[target] !== Infinity) {\n findAllPaths(source, target, prevs, paths);\n }\n } // 兼容之前单路径\n\n\n var path = {};\n\n for (var target in paths) {\n path[target] = paths[target][0];\n }\n\n return {\n length: D,\n path: path,\n allPath: paths\n };\n};\n\nexport default dijkstra;\n\nfunction findAllPaths(source, target, prevs, foundPaths) {\n if (source === target) {\n return [source];\n }\n\n if (foundPaths[target]) {\n return foundPaths[target];\n }\n\n var paths = [];\n\n for (var _i = 0, _a = prevs[target]; _i < _a.length; _i++) {\n var prev = _a[_i];\n var prevPaths = findAllPaths(source, prev, prevs, foundPaths);\n if (!prevPaths) return;\n\n for (var _b = 0, prevPaths_1 = prevPaths; _b < prevPaths_1.length; _b++) {\n var prePath = prevPaths_1[_b];\n if (isArray(prePath)) paths.push(__spreadArray(__spreadArray([], prePath, true), [target], false));else paths.push([prePath, target]);\n }\n }\n\n foundPaths[target] = paths;\n return foundPaths[target];\n}","import dijkstra from './dijkstra';\nimport { getNeighbors } from './util';\nexport var findShortestPath = function findShortestPath(graphData, start, end, directed, weightPropertyName) {\n var _a = dijkstra(graphData, start, directed, weightPropertyName),\n length = _a.length,\n path = _a.path,\n allPath = _a.allPath;\n\n return {\n length: length[end],\n path: path[end],\n allPath: allPath[end]\n };\n};\nexport var findAllPath = function findAllPath(graphData, start, end, directed) {\n var _a;\n\n if (start === end) return [[start]];\n var _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var visited = [start];\n var isVisited = (_a = {}, _a[start] = true, _a);\n var stack = []; // 辅助栈,用于存储访问过的节点的邻居节点\n\n var allPath = [];\n var neighbors = directed ? getNeighbors(start, edges, 'target') : getNeighbors(start, edges);\n stack.push(neighbors);\n\n while (visited.length > 0 && stack.length > 0) {\n var children = stack[stack.length - 1];\n\n if (children.length) {\n var child = children.shift();\n\n if (child) {\n visited.push(child);\n isVisited[child] = true;\n neighbors = directed ? getNeighbors(child, edges, 'target') : getNeighbors(child, edges);\n stack.push(neighbors.filter(function (neighbor) {\n return !isVisited[neighbor];\n }));\n }\n } else {\n var node = visited.pop();\n isVisited[node] = false;\n stack.pop();\n continue;\n }\n\n if (visited[visited.length - 1] === end) {\n var path = visited.map(function (node) {\n return node;\n });\n allPath.push(path);\n var node = visited.pop();\n isVisited[node] = false;\n stack.pop();\n }\n }\n\n return allPath;\n};","import getAdjMatrix from \"./adjacent-matrix\";\n\nvar floydWarshall = function floydWarshall(graphData, directed) {\n var adjacentMatrix = getAdjMatrix(graphData, directed);\n var dist = [];\n var size = adjacentMatrix.length;\n\n for (var i = 0; i < size; i += 1) {\n dist[i] = [];\n\n for (var j = 0; j < size; j += 1) {\n if (i === j) {\n dist[i][j] = 0;\n } else if (adjacentMatrix[i][j] === 0 || !adjacentMatrix[i][j]) {\n dist[i][j] = Infinity;\n } else {\n dist[i][j] = adjacentMatrix[i][j];\n }\n }\n } // floyd\n\n\n for (var k = 0; k < size; k += 1) {\n for (var i = 0; i < size; i += 1) {\n for (var j = 0; j < size; j += 1) {\n if (dist[i][j] > dist[i][k] + dist[k][j]) {\n dist[i][j] = dist[i][k] + dist[k][j];\n }\n }\n }\n }\n\n return dist;\n};\n\nexport default floydWarshall;","import getAdjMatrix from './adjacent-matrix';\nimport { uniqueId } from './util';\n/**\n * 标签传播算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param maxIteration 最大迭代次数\n */\n\nvar labelPropagation = function labelPropagation(graphData, directed, weightPropertyName, maxIteration) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (maxIteration === void 0) {\n maxIteration = 1000;\n } // the origin data\n\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var clusters = {};\n var nodeMap = {}; // init the clusters and nodeMap\n\n nodes.forEach(function (node, i) {\n var cid = uniqueId();\n node.clusterId = cid;\n clusters[cid] = {\n id: cid,\n nodes: [node]\n };\n nodeMap[node.id] = {\n node: node,\n idx: i\n };\n }); // the adjacent matrix of calNodes inside clusters\n\n var adjMatrix = getAdjMatrix(graphData, directed); // the sum of each row in adjacent matrix\n\n var ks = [];\n /**\n * neighbor nodes (id for key and weight for value) for each node\n * neighbors = {\n * id(node_id): { id(neighbor_1_id): weight(weight of the edge), id(neighbor_2_id): weight(weight of the edge), ... },\n * ...\n * }\n */\n\n var neighbors = {};\n adjMatrix.forEach(function (row, i) {\n var k = 0;\n var iid = nodes[i].id;\n neighbors[iid] = {};\n row.forEach(function (entry, j) {\n if (!entry) return;\n k += entry;\n var jid = nodes[j].id;\n neighbors[iid][jid] = entry;\n });\n ks.push(k);\n });\n var iter = 0;\n\n var _loop_1 = function _loop_1() {\n var changed = false;\n nodes.forEach(function (node) {\n var neighborClusters = {};\n Object.keys(neighbors[node.id]).forEach(function (neighborId) {\n var neighborWeight = neighbors[node.id][neighborId];\n var neighborNode = nodeMap[neighborId].node;\n var neighborClusterId = neighborNode.clusterId;\n if (!neighborClusters[neighborClusterId]) neighborClusters[neighborClusterId] = 0;\n neighborClusters[neighborClusterId] += neighborWeight;\n }); // find the cluster with max weight\n\n var maxWeight = -Infinity;\n var bestClusterIds = [];\n Object.keys(neighborClusters).forEach(function (clusterId) {\n if (maxWeight < neighborClusters[clusterId]) {\n maxWeight = neighborClusters[clusterId];\n bestClusterIds = [clusterId];\n } else if (maxWeight === neighborClusters[clusterId]) {\n bestClusterIds.push(clusterId);\n }\n });\n if (bestClusterIds.length === 1 && bestClusterIds[0] === node.clusterId) return;\n var selfClusterIdx = bestClusterIds.indexOf(node.clusterId);\n if (selfClusterIdx >= 0) bestClusterIds.splice(selfClusterIdx, 1);\n\n if (bestClusterIds && bestClusterIds.length) {\n changed = true; // remove from origin cluster\n\n var selfCluster = clusters[node.clusterId];\n var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node);\n selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); // move the node to the best cluster\n\n var randomIdx = Math.floor(Math.random() * bestClusterIds.length);\n var bestCluster = clusters[bestClusterIds[randomIdx]];\n bestCluster.nodes.push(node);\n node.clusterId = bestCluster.id;\n }\n });\n if (!changed) return \"break\";\n iter++;\n };\n\n while (iter < maxIteration) {\n var state_1 = _loop_1();\n\n if (state_1 === \"break\") break;\n } // delete the empty clusters\n\n\n Object.keys(clusters).forEach(function (clusterId) {\n var cluster = clusters[clusterId];\n\n if (!cluster.nodes || !cluster.nodes.length) {\n delete clusters[clusterId];\n }\n }); // get the cluster edges\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var weight = edge[weightPropertyName] || 1;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].weight += weight;\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n weight: weight,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n var clustersArray = [];\n Object.keys(clusters).forEach(function (clusterId) {\n clustersArray.push(clusters[clusterId]);\n });\n return {\n clusters: clustersArray,\n clusterEdges: clusterEdges\n };\n};\n\nexport default labelPropagation;","/**\n * 向量运算\n */\nimport { clone } from '@antv/util';\n\nvar Vector =\n/** @class */\nfunction () {\n function Vector(arr) {\n this.arr = arr;\n }\n\n Vector.prototype.getArr = function () {\n return this.arr || [];\n };\n\n Vector.prototype.add = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return new Vector(otherArr);\n }\n\n if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return new Vector(this.arr);\n }\n\n if (this.arr.length === otherArr.length) {\n var res = [];\n\n for (var index in this.arr) {\n res[index] = this.arr[index] + otherArr[index];\n }\n\n return new Vector(res);\n }\n };\n\n Vector.prototype.subtract = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return new Vector(otherArr);\n }\n\n if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return new Vector(this.arr);\n }\n\n if (this.arr.length === otherArr.length) {\n var res = [];\n\n for (var index in this.arr) {\n res[index] = this.arr[index] - otherArr[index];\n }\n\n return new Vector(res);\n }\n };\n\n Vector.prototype.avg = function (length) {\n var res = [];\n\n if (length !== 0) {\n for (var index in this.arr) {\n res[index] = this.arr[index] / length;\n }\n }\n\n return new Vector(res);\n };\n\n Vector.prototype.negate = function () {\n var res = [];\n\n for (var index in this.arr) {\n res[index] = -this.arr[index];\n }\n\n return new Vector(res);\n }; // 平方欧式距离\n\n\n Vector.prototype.squareEuclideanDistance = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var index in this.arr) {\n res += Math.pow(this.arr[index] - otherVector.arr[index], 2);\n }\n\n return res;\n }\n }; // 欧式距离\n\n\n Vector.prototype.euclideanDistance = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var index in this.arr) {\n res += Math.pow(this.arr[index] - otherVector.arr[index], 2);\n }\n\n return Math.sqrt(res);\n } else {\n console.error('The two vectors are unequal in length.');\n }\n }; // 归一化处理\n\n\n Vector.prototype.normalize = function () {\n var res = [];\n var cloneArr = clone(this.arr);\n cloneArr.sort(function (a, b) {\n return a - b;\n });\n var max = cloneArr[cloneArr.length - 1];\n var min = cloneArr[0];\n\n for (var index in this.arr) {\n res[index] = (this.arr[index] - min) / (max - min);\n }\n\n return new Vector(res);\n }; // 2范数 or 模长\n\n\n Vector.prototype.norm2 = function () {\n var _a;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return 0;\n }\n\n var res = 0;\n\n for (var index in this.arr) {\n res += Math.pow(this.arr[index], 2);\n }\n\n return Math.sqrt(res);\n }; // 两个向量的点积\n\n\n Vector.prototype.dot = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var index in this.arr) {\n res += this.arr[index] * otherVector.arr[index];\n }\n\n return res;\n } else {\n console.error('The two vectors are unequal in length.');\n }\n }; // 两个向量比较\n\n\n Vector.prototype.equal = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) !== (otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return false;\n }\n\n for (var index in this.arr) {\n if (this.arr[index] !== otherArr[index]) {\n return false;\n }\n }\n\n return true;\n };\n\n return Vector;\n}();\n\nexport default Vector;","export var secondReg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/;\nexport var dateReg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2}) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})$/;","import { secondReg, dateReg } from '../constants/time'; // 获取所有属性并排序\n\nexport var getAllSortProperties = function getAllSortProperties(nodes, n) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n if (n === void 0) {\n n = 100;\n }\n\n var propertyKeyInfo = {};\n nodes.forEach(function (node) {\n if (!node.properties) {\n return;\n }\n\n Object.keys(node.properties).forEach(function (propertyKey) {\n // 目前过滤只保留可以转成数值型的或日期型的, todo: 统一转成one-hot特征向量或者embedding\n if (propertyKey === 'id' || !\"\".concat(node.properties[propertyKey]).match(secondReg) && !\"\".concat(node.properties[propertyKey]).match(dateReg) && isNaN(Number(node.properties[propertyKey]))) {\n if (propertyKeyInfo.hasOwnProperty(propertyKey)) {\n delete propertyKeyInfo[propertyKey];\n }\n\n return;\n }\n\n if (propertyKeyInfo.hasOwnProperty(propertyKey)) {\n propertyKeyInfo[propertyKey] += 1;\n } else {\n propertyKeyInfo[propertyKey] = 1;\n }\n });\n }); // 取top50的属性\n\n var sortKeys = Object.keys(propertyKeyInfo).sort(function (a, b) {\n return propertyKeyInfo[b] - propertyKeyInfo[a];\n });\n return sortKeys.length < n ? sortKeys : sortKeys.slice(0, n);\n};\n\nvar processProperty = function processProperty(properties, propertyKeys) {\n return propertyKeys.map(function (key) {\n if (properties.hasOwnProperty(key)) {\n // // 可以转成数值的直接转成数值\n // if (!isNaN(Number(properties[key]))) {\n // return Number(properties[key]);\n // }\n // // 时间型的转成时间戳\n // if (properties[key].match(secondReg) || properties[key].match(dateReg)) {\n // // @ts-ignore\n // return Number(Date.parse(new Date(properties[key]))) / 1000;\n // }\n return properties[key];\n }\n\n return 0;\n });\n}; // 获取属性特征权重\n\n\nexport var getPropertyWeight = function getPropertyWeight(nodes) {\n var propertyKeys = getAllSortProperties(nodes);\n var allPropertiesWeight = [];\n\n for (var i = 0; i < nodes.length; i++) {\n allPropertiesWeight[i] = processProperty(nodes[i].properties, propertyKeys);\n }\n\n return allPropertiesWeight;\n}; // 获取所有节点的属性集合\n\nexport var getAllProperties = function getAllProperties(nodes, key) {\n if (key === void 0) {\n key = undefined;\n }\n\n var allProperties = [];\n nodes.forEach(function (node) {\n if (key === undefined) {\n allProperties.push(node);\n }\n\n if (node[key] !== undefined) {\n allProperties.push(node[key]);\n }\n });\n return allProperties;\n};\nexport default {\n getAllSortProperties: getAllSortProperties,\n getPropertyWeight: getPropertyWeight,\n getAllProperties: getAllProperties\n};","export var DistanceType;\n\n(function (DistanceType) {\n DistanceType[\"EuclideanDistance\"] = \"euclideanDistance\";\n})(DistanceType || (DistanceType = {}));","import { uniq } from '@antv/util';\nimport { DistanceType } from '../types';\nimport Vector from './vector';\n/**\n * 获取数据中所有的属性及其对应的值\n * @param dataList 数据集\n * @param involvedKeys 参与计算的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n */\n\nexport var getAllKeyValueMap = function getAllKeyValueMap(dataList, involvedKeys, uninvolvedKeys) {\n var keys = []; // 指定了参与计算的keys时,使用指定的keys\n\n if (involvedKeys === null || involvedKeys === void 0 ? void 0 : involvedKeys.length) {\n keys = involvedKeys;\n } else {\n // 未指定抽取的keys时,提取数据中所有的key\n dataList.forEach(function (data) {\n keys = keys.concat(Object.keys(data));\n });\n keys = uniq(keys);\n } // 获取所有值非空的key的value数组\n\n\n var allKeyValueMap = {};\n keys.forEach(function (key) {\n var value = [];\n dataList.forEach(function (data) {\n if (data[key] !== undefined && data[key] !== '') {\n value.push(data[key]);\n }\n });\n\n if (value.length && !(uninvolvedKeys === null || uninvolvedKeys === void 0 ? void 0 : uninvolvedKeys.includes(key))) {\n allKeyValueMap[key] = uniq(value);\n }\n });\n return allKeyValueMap;\n};\n/**\n * one-hot编码:数据特征提取\n * @param dataList 数据集\n * @param involvedKeys 参与计算的的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n */\n\nexport var oneHot = function oneHot(dataList, involvedKeys, uninvolvedKeys) {\n // 获取数据中所有的属性/特征及其对应的值\n var allKeyValueMap = getAllKeyValueMap(dataList, involvedKeys, uninvolvedKeys);\n var oneHotCode = [];\n\n if (!Object.keys(allKeyValueMap).length) {\n return oneHotCode;\n } // 获取所有的属性/特征值\n\n\n var allValue = Object.values(allKeyValueMap); // 是否所有属性/特征的值都是数值型\n\n var isAllNumber = allValue.every(function (value) {\n return value.every(function (item) {\n return typeof item === 'number';\n });\n }); // 对数据进行one-hot编码\n\n dataList.forEach(function (data, index) {\n var code = [];\n Object.keys(allKeyValueMap).forEach(function (key) {\n var keyValue = data[key];\n var allKeyValue = allKeyValueMap[key];\n var valueIndex = allKeyValue.findIndex(function (value) {\n return keyValue === value;\n });\n var subCode = []; // 如果属性/特征所有的值都能转成数值型,不满足分箱,则直接用值(todo: 为了收敛更快,需做归一化处理)\n\n if (isAllNumber) {\n subCode.push(keyValue);\n } else {\n // 进行one-hot编码\n for (var i = 0; i < allKeyValue.length; i++) {\n if (i === valueIndex) {\n subCode.push(1);\n } else {\n subCode.push(0);\n }\n }\n }\n\n code = code.concat(subCode);\n });\n oneHotCode[index] = code;\n });\n return oneHotCode;\n};\n/**\n * getDistance:获取两个元素之间的距离\n * @param item\n * @param otherItem\n * @param distanceType 距离类型\n * @param graphData 图数据\n */\n\nexport var getDistance = function getDistance(item, otherItem, distanceType, graphData) {\n if (distanceType === void 0) {\n distanceType = DistanceType.EuclideanDistance;\n }\n\n var distance = 0;\n\n switch (distanceType) {\n case DistanceType.EuclideanDistance:\n distance = new Vector(item).euclideanDistance(new Vector(otherItem));\n break;\n\n default:\n break;\n }\n\n return distance;\n};\nexport default {\n getAllKeyValueMap: getAllKeyValueMap,\n oneHot: oneHot,\n getDistance: getDistance\n};","import { clone } from '@antv/util';\nimport getAdjMatrix from './adjacent-matrix';\nimport Vector from './utils/vector';\nimport { getAllProperties } from './utils/node-properties';\nimport { oneHot } from './utils/data-preprocessing';\n\nvar getModularity = function getModularity(nodes, adjMatrix, ks, m) {\n var length = adjMatrix.length;\n var param = 2 * m;\n var modularity = 0;\n\n for (var i = 0; i < length; i++) {\n var clusteri = nodes[i].clusterId;\n\n for (var j = 0; j < length; j++) {\n var clusterj = nodes[j].clusterId;\n if (clusteri !== clusterj) continue;\n var entry = adjMatrix[i][j] || 0;\n var ki = ks[i] || 0;\n var kj = ks[j] || 0;\n modularity += entry - ki * kj / param;\n }\n }\n\n modularity *= 1 / param;\n return modularity;\n}; // 模块惯性度,衡量属性相似度\n\n\nvar getInertialModularity = function getInertialModularity(nodes, allPropertiesWeight) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n var length = nodes.length;\n var totalProperties = new Vector([]);\n\n for (var i = 0; i < length; i++) {\n totalProperties = totalProperties.add(new Vector(allPropertiesWeight[i]));\n } // 均值向量\n\n\n var avgProperties = totalProperties.avg(length);\n avgProperties.normalize(); // 节点集合的方差: 节点v与均值向量的平方欧式距离之和\n\n var variance = 0;\n\n for (var i = 0; i < length; i++) {\n var propertiesi = new Vector(allPropertiesWeight[i]);\n var squareEuclideanDistance = propertiesi.squareEuclideanDistance(avgProperties);\n variance += squareEuclideanDistance;\n } // 任意两点间的欧式平方距离\n\n\n var squareEuclideanDistanceInfo = [];\n nodes.forEach(function () {\n squareEuclideanDistanceInfo.push([]);\n });\n\n for (var i = 0; i < length; i++) {\n var propertiesi = new Vector(allPropertiesWeight[i]);\n nodes[i]['clusterInertial'] = 0;\n\n for (var j = 0; j < length; j++) {\n if (i === j) {\n squareEuclideanDistanceInfo[i][j] = 0;\n continue;\n }\n\n var propertiesj = new Vector(allPropertiesWeight[j]);\n squareEuclideanDistanceInfo[i][j] = propertiesi.squareEuclideanDistance(propertiesj);\n nodes[i]['clusterInertial'] += squareEuclideanDistanceInfo[i][j];\n }\n } // 计算模块惯性度\n\n\n var inertialModularity = 0;\n var param = 2 * length * variance;\n\n for (var i = 0; i < length; i++) {\n var clusteri = nodes[i].clusterId;\n\n for (var j = 0; j < length; j++) {\n var clusterj = nodes[j].clusterId;\n if (i === j || clusteri !== clusterj) continue;\n var inertial = nodes[i].clusterInertial * nodes[j].clusterInertial / Math.pow(param, 2) - squareEuclideanDistanceInfo[i][j] / param;\n inertialModularity += inertial;\n }\n }\n\n return Number(inertialModularity.toFixed(4));\n};\n/**\n * 社区发现 louvain 算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param threshold 差值阈值\n * @param inertialModularity 是否使用惯性模块度(即节点属性相似性)\n * @param propertyKey 属性的字段名\n * @param involvedKeys 参与计算的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n * @param inertialWeight 惯性模块度权重\n */\n\n\nvar louvain = function louvain(graphData, directed, weightPropertyName, threshold, inertialModularity, propertyKey, involvedKeys, uninvolvedKeys, inertialWeight) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (threshold === void 0) {\n threshold = 0.0001;\n }\n\n if (inertialModularity === void 0) {\n inertialModularity = false;\n }\n\n if (propertyKey === void 0) {\n propertyKey = undefined;\n }\n\n if (involvedKeys === void 0) {\n involvedKeys = [];\n }\n\n if (uninvolvedKeys === void 0) {\n uninvolvedKeys = ['id'];\n }\n\n if (inertialWeight === void 0) {\n inertialWeight = 1;\n } // the origin data\n\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var allPropertiesWeight = [];\n\n if (inertialModularity) {\n nodes.forEach(function (node, index) {\n node.properties = node.properties || {};\n node.originIndex = index;\n });\n var nodeTypeInfo_1 = [];\n\n if (nodes.every(function (node) {\n return node.hasOwnProperty('nodeType');\n })) {\n nodeTypeInfo_1 = Array.from(new Set(nodes.map(function (node) {\n return node.nodeType;\n })));\n nodes.forEach(function (node) {\n node.properties.nodeType = nodeTypeInfo_1.findIndex(function (nodeType) {\n return nodeType === node.nodeType;\n });\n });\n } // 所有节点属性集合\n\n\n var properties = getAllProperties(nodes, propertyKey); // 所有节点属性one-hot特征向量集合\n\n allPropertiesWeight = oneHot(properties, involvedKeys, uninvolvedKeys);\n }\n\n var uniqueId = 1;\n var clusters = {};\n var nodeMap = {}; // init the clusters and nodeMap\n\n nodes.forEach(function (node, i) {\n var cid = String(uniqueId++);\n node.clusterId = cid;\n clusters[cid] = {\n id: cid,\n nodes: [node]\n };\n nodeMap[node.id] = {\n node: node,\n idx: i\n };\n }); // the adjacent matrix of calNodes inside clusters\n\n var adjMatrix = getAdjMatrix(graphData, directed); // the sum of each row in adjacent matrix\n\n var ks = [];\n /**\n * neighbor nodes (id for key and weight for value) for each node\n * neighbors = {\n * id(node_id): { id(neighbor_1_id): weight(weight of the edge), id(neighbor_2_id): weight(weight of the edge), ... },\n * ...\n * }\n */\n\n var neighbors = {}; // the sum of the weights of all edges in the graph\n\n var m = 0;\n adjMatrix.forEach(function (row, i) {\n var k = 0;\n var iid = nodes[i].id;\n neighbors[iid] = {};\n row.forEach(function (entry, j) {\n if (!entry) return;\n k += entry;\n var jid = nodes[j].id;\n neighbors[iid][jid] = entry;\n m += entry;\n });\n ks.push(k);\n });\n m /= 2;\n var totalModularity = Infinity;\n var previousModularity = Infinity;\n var iter = 0;\n var finalNodes = [];\n var finalClusters = {};\n\n while (true) {\n if (inertialModularity && nodes.every(function (node) {\n return node.hasOwnProperty('properties');\n })) {\n totalModularity = getModularity(nodes, adjMatrix, ks, m) + getInertialModularity(nodes, allPropertiesWeight) * inertialWeight;\n } else {\n totalModularity = getModularity(nodes, adjMatrix, ks, m);\n } // 第一次迭代previousModularity直接赋值\n\n\n if (iter === 0) {\n previousModularity = totalModularity;\n finalNodes = nodes;\n finalClusters = clusters;\n }\n\n var increaseWithinThreshold = totalModularity > 0 && totalModularity > previousModularity && totalModularity - previousModularity < threshold; // 总模块度增加才更新最优解\n\n if (totalModularity > previousModularity) {\n finalNodes = nodes.map(function (node) {\n return {\n node: node,\n clusterId: node.clusterId\n };\n });\n finalClusters = clone(clusters);\n previousModularity = totalModularity;\n } // whether to terminate the iterations\n\n\n if (increaseWithinThreshold || iter > 100) {\n break;\n }\n\n ;\n iter++; // pre compute some values for current clusters\n\n Object.keys(clusters).forEach(function (clusterId) {\n // sum of weights of edges to nodes in cluster\n var sumTot = 0;\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n\n if (sourceClusterId === clusterId && targetClusterId !== clusterId || targetClusterId === clusterId && sourceClusterId !== clusterId) {\n sumTot = sumTot + (edge[weightPropertyName] || 1);\n }\n });\n clusters[clusterId].sumTot = sumTot;\n }); // move the nodes to increase the delta modularity\n\n nodes.forEach(function (node, i) {\n var selfCluster = clusters[node.clusterId];\n var bestIncrease = 0;\n var bestCluster;\n var commonParam = ks[i] / (2 * m); // sum of weights of edges from node to nodes in cluster\n\n var kiin = 0;\n var selfClusterNodes = selfCluster.nodes;\n selfClusterNodes.forEach(function (scNode) {\n var scNodeIdx = nodeMap[scNode.id].idx;\n kiin += adjMatrix[i][scNodeIdx] || 0;\n }); // the modurarity for **removing** the node i from the origin cluster of node i\n\n var removeModurarity = kiin - selfCluster.sumTot * commonParam; // nodes for **removing** node i into this neighbor cluster\n\n var selfClusterNodesAfterRemove = selfClusterNodes.filter(function (scNode) {\n return scNode.id !== node.id;\n });\n var propertiesWeightRemove = [];\n selfClusterNodesAfterRemove.forEach(function (nodeRemove, index) {\n propertiesWeightRemove[index] = allPropertiesWeight[nodeRemove.originIndex];\n }); // the inertialModularity for **removing** the node i from the origin cluster of node i\n\n var removeInertialModularity = getInertialModularity(selfClusterNodesAfterRemove, allPropertiesWeight) * inertialWeight; // the neightbors of the node\n\n var nodeNeighborIds = neighbors[node.id];\n Object.keys(nodeNeighborIds).forEach(function (neighborNodeId) {\n var neighborNode = nodeMap[neighborNodeId].node;\n var neighborClusterId = neighborNode.clusterId; // if the node and the neighbor of node are in the same cluster, reutrn\n\n if (neighborClusterId === node.clusterId) return;\n var neighborCluster = clusters[neighborClusterId];\n var clusterNodes = neighborCluster.nodes; // if the cluster is empty, remove the cluster and return\n\n if (!clusterNodes || !clusterNodes.length) return; // sum of weights of edges from node to nodes in cluster\n\n var neighborClusterKiin = 0;\n clusterNodes.forEach(function (cNode) {\n var cNodeIdx = nodeMap[cNode.id].idx;\n neighborClusterKiin += adjMatrix[i][cNodeIdx] || 0;\n }); // the modurarity for **adding** node i into this neighbor cluster\n\n var addModurarity = neighborClusterKiin - neighborCluster.sumTot * commonParam; // nodes for **adding** node i into this neighbor cluster\n\n var clusterNodesAfterAdd = clusterNodes.concat([node]);\n var propertiesWeightAdd = [];\n clusterNodesAfterAdd.forEach(function (nodeAdd, index) {\n propertiesWeightAdd[index] = allPropertiesWeight[nodeAdd.originIndex];\n }); // the inertialModularity for **adding** node i into this neighbor cluster\n\n var addInertialModularity = getInertialModularity(clusterNodesAfterAdd, allPropertiesWeight) * inertialWeight; // the increase modurarity is the difference between addModurarity and removeModurarity\n\n var increase = addModurarity - removeModurarity;\n\n if (inertialModularity) {\n increase = addModurarity + addInertialModularity - (removeModurarity + removeInertialModularity);\n } // find the best cluster to move node i into\n\n\n if (increase > bestIncrease) {\n bestIncrease = increase;\n bestCluster = neighborCluster;\n }\n }); // if found a best cluster to move into\n\n if (bestIncrease > 0) {\n bestCluster.nodes.push(node);\n var previousClusterId_1 = node.clusterId;\n node.clusterId = bestCluster.id; // move the node to the best cluster\n\n var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node); // remove from origin cluster\n\n selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); // update sumTot for clusters\n // sum of weights of edges to nodes in cluster\n\n var neighborClusterSumTot_1 = 0;\n var selfClusterSumTot_1 = 0;\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n\n if (sourceClusterId === bestCluster.id && targetClusterId !== bestCluster.id || targetClusterId === bestCluster.id && sourceClusterId !== bestCluster.id) {\n neighborClusterSumTot_1 = neighborClusterSumTot_1 + (edge[weightPropertyName] || 1);\n }\n\n if (sourceClusterId === previousClusterId_1 && targetClusterId !== previousClusterId_1 || targetClusterId === previousClusterId_1 && sourceClusterId !== previousClusterId_1) {\n selfClusterSumTot_1 = selfClusterSumTot_1 + (edge[weightPropertyName] || 1);\n }\n }); // the nodes of the clusters to move into and remove are changed, update their sumTot\n\n bestCluster.sumTot = neighborClusterSumTot_1;\n selfCluster.sumTot = selfClusterSumTot_1;\n }\n });\n } // delete the empty clusters, assign increasing clusterId\n\n\n var newClusterIdMap = {};\n var clusterIdx = 0;\n Object.keys(finalClusters).forEach(function (clusterId) {\n var cluster = finalClusters[clusterId];\n\n if (!cluster.nodes || !cluster.nodes.length) {\n delete finalClusters[clusterId];\n return;\n }\n\n var newId = String(clusterIdx + 1);\n\n if (newId === clusterId) {\n return;\n }\n\n cluster.id = newId;\n cluster.nodes = cluster.nodes.map(function (item) {\n return {\n id: item.id,\n clusterId: newId\n };\n });\n finalClusters[newId] = cluster;\n newClusterIdMap[clusterId] = newId;\n delete finalClusters[clusterId];\n clusterIdx++;\n }); // restore node clusterId\n\n finalNodes.forEach(function (nodeInfo) {\n var node = nodeInfo.node,\n clusterId = nodeInfo.clusterId;\n if (!node) return;\n node.clusterId = clusterId;\n if (node.clusterId && newClusterIdMap[node.clusterId]) node.clusterId = newClusterIdMap[node.clusterId];\n }); // get the cluster edges\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var weight = edge[weightPropertyName] || 1;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n if (!sourceClusterId || !targetClusterId) return;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].weight += weight;\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n weight: weight,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n var clustersArray = [];\n Object.keys(finalClusters).forEach(function (clusterId) {\n clustersArray.push(finalClusters[clusterId]);\n });\n return {\n clusters: clustersArray,\n clusterEdges: clusterEdges\n };\n};\n\nexport default louvain;","import louvain from './louvain';\n/**\n * 社区发现 i-louvain 算法:模块度 + 惯性模块度(即节点属性相似性)\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param threshold 差值阈值\n * @param propertyKey 属性的字段名\n * @param involvedKeys 参与计算的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n * @param inertialWeight 惯性模块度权重\n */\n\nvar iLouvain = function iLouvain(graphData, directed, weightPropertyName, threshold, propertyKey, involvedKeys, uninvolvedKeys, inertialWeight) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (threshold === void 0) {\n threshold = 0.0001;\n }\n\n if (propertyKey === void 0) {\n propertyKey = undefined;\n }\n\n if (involvedKeys === void 0) {\n involvedKeys = [];\n }\n\n if (uninvolvedKeys === void 0) {\n uninvolvedKeys = ['id'];\n }\n\n if (inertialWeight === void 0) {\n inertialWeight = 1;\n }\n\n return louvain(graphData, directed, weightPropertyName, threshold, true, propertyKey, involvedKeys, uninvolvedKeys, inertialWeight);\n};\n\nexport default iLouvain;","import { clone } from '@antv/util';\nimport degree from './degree';\n/**\n * k-core算法 找出符合指定核心度的紧密关联的子图结构\n * @param graphData 图数据\n * @param k 核心度数\n */\n\nvar kCore = function kCore(graphData, k) {\n var _a;\n\n if (k === void 0) {\n k = 1;\n }\n\n var data = clone(graphData);\n var _b = data.nodes,\n nodes = _b === void 0 ? [] : _b;\n var _c = data.edges,\n edges = _c === void 0 ? [] : _c;\n\n var _loop_1 = function _loop_1() {\n // 获取图中节点的度数\n var degrees = degree({\n nodes: nodes,\n edges: edges\n });\n var nodeIds = Object.keys(degrees); // 按照度数进行排序\n\n nodeIds.sort(function (a, b) {\n var _a, _b;\n\n return ((_a = degrees[a]) === null || _a === void 0 ? void 0 : _a.degree) - ((_b = degrees[b]) === null || _b === void 0 ? void 0 : _b.degree);\n });\n var minIndexId = nodeIds[0];\n\n if (!nodes.length || ((_a = degrees[minIndexId]) === null || _a === void 0 ? void 0 : _a.degree) >= k) {\n return \"break\";\n }\n\n var originIndex = nodes.findIndex(function (node) {\n return node.id === minIndexId;\n }); // 移除度数小于k的节点\n\n nodes.splice(originIndex, 1); // 移除度数小于k的节点相关的边\n\n edges = edges.filter(function (edge) {\n return !(edge.source === minIndexId || edge.target === minIndexId);\n });\n };\n\n while (true) {\n var state_1 = _loop_1();\n\n if (state_1 === \"break\") break;\n }\n\n return {\n nodes: nodes,\n edges: edges\n };\n};\n\nexport default kCore;","import { isEqual, uniq } from '@antv/util';\nimport { getAllProperties } from './utils/node-properties';\nimport { oneHot, getDistance } from './utils/data-preprocessing';\nimport Vector from './utils/vector';\nimport { DistanceType } from './types'; // 获取质心\n\nvar getCentroid = function getCentroid(distanceType, allPropertiesWeight, index) {\n var centroid = [];\n\n switch (distanceType) {\n case DistanceType.EuclideanDistance:\n centroid = allPropertiesWeight[index];\n break;\n\n default:\n centroid = [];\n break;\n }\n\n return centroid;\n};\n/**\n * k-means算法 根据节点之间的距离将节点聚类为K个簇\n * @param data 图数据\n * @param k 质心(聚类中心)个数\n * @param propertyKey 属性的字段名\n * @param involvedKeys 参与计算的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n * @param distanceType 距离类型 默认节点属性的欧式距离\n */\n\n\nvar kMeans = function kMeans(data, k, propertyKey, involvedKeys, uninvolvedKeys, distanceType) {\n if (k === void 0) {\n k = 3;\n }\n\n if (propertyKey === void 0) {\n propertyKey = undefined;\n }\n\n if (involvedKeys === void 0) {\n involvedKeys = [];\n }\n\n if (uninvolvedKeys === void 0) {\n uninvolvedKeys = ['id'];\n }\n\n if (distanceType === void 0) {\n distanceType = DistanceType.EuclideanDistance;\n }\n\n var _a = data.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = data.edges,\n edges = _b === void 0 ? [] : _b;\n var defaultClusterInfo = {\n clusters: [{\n id: \"0\",\n nodes: nodes\n }],\n clusterEdges: []\n }; // 距离类型为欧式距离且没有属性时,直接return\n\n if (distanceType === DistanceType.EuclideanDistance && !nodes.every(function (node) {\n return node.hasOwnProperty(propertyKey);\n })) {\n return defaultClusterInfo;\n } // 所有节点属性集合\n\n\n var properties = []; // 所有节点属性one-hot特征向量集合\n\n var allPropertiesWeight = [];\n\n if (distanceType === DistanceType.EuclideanDistance) {\n properties = getAllProperties(nodes, propertyKey);\n allPropertiesWeight = oneHot(properties, involvedKeys, uninvolvedKeys);\n }\n\n if (!allPropertiesWeight.length) {\n return defaultClusterInfo;\n }\n\n var allPropertiesWeightUniq = uniq(allPropertiesWeight.map(function (item) {\n return item.join('');\n })); // 当输入节点数量或者属性集合的长度小于k时,k调整为其中最小的值\n\n var finalK = Math.min(k, nodes.length, allPropertiesWeightUniq.length); // 记录节点的原始index,与allPropertiesWeight对应\n\n for (var i = 0; i < nodes.length; i++) {\n nodes[i].originIndex = i;\n } // 初始化质心(聚类中心)\n\n\n var centroids = [];\n var centroidIndexList = [];\n var clusters = [];\n\n for (var i = 0; i < finalK; i++) {\n if (i === 0) {\n // 随机选取质心(聚类中心)\n var randomIndex = Math.floor(Math.random() * nodes.length);\n\n switch (distanceType) {\n case DistanceType.EuclideanDistance:\n centroids[i] = allPropertiesWeight[randomIndex];\n break;\n\n default:\n centroids[i] = [];\n break;\n }\n\n centroidIndexList.push(randomIndex);\n clusters[i] = [nodes[randomIndex]];\n nodes[randomIndex].clusterId = String(i);\n } else {\n var maxDistance = -Infinity;\n var maxDistanceNodeIndex = 0;\n\n var _loop_1 = function _loop_1(m) {\n if (!centroidIndexList.includes(m)) {\n var totalDistance = 0;\n\n for (var j = 0; j < centroids.length; j++) {\n // 求节点到质心的距离(默认节点属性的欧式距离)\n var distance = 0;\n\n switch (distanceType) {\n case DistanceType.EuclideanDistance:\n distance = getDistance(allPropertiesWeight[nodes[m].originIndex], centroids[j], distanceType);\n break;\n\n default:\n break;\n }\n\n totalDistance += distance;\n } // 节点到各质心的平均距离(默认欧式距离)\n\n\n var avgDistance = totalDistance / centroids.length; // 记录到已有质心最远的的距离和节点索引\n\n if (avgDistance > maxDistance && !centroids.find(function (centroid) {\n return isEqual(centroid, getCentroid(distanceType, allPropertiesWeight, nodes[m].originIndex));\n })) {\n maxDistance = avgDistance;\n maxDistanceNodeIndex = m;\n }\n }\n }; // 选取与已有质心平均距离最远的点做为新的质心\n\n\n for (var m = 0; m < nodes.length; m++) {\n _loop_1(m);\n }\n\n centroids[i] = getCentroid(distanceType, allPropertiesWeight, maxDistanceNodeIndex);\n centroidIndexList.push(maxDistanceNodeIndex);\n clusters[i] = [nodes[maxDistanceNodeIndex]];\n nodes[maxDistanceNodeIndex].clusterId = String(i);\n }\n }\n\n var iterations = 0;\n\n while (true) {\n for (var i = 0; i < nodes.length; i++) {\n var minDistanceIndex = 0;\n var minDistance = Infinity;\n\n if (!(iterations === 0 && centroidIndexList.includes(i))) {\n for (var j = 0; j < centroids.length; j++) {\n // 求节点到质心的距离(默认节点属性的欧式距离)\n var distance = 0;\n\n switch (distanceType) {\n case DistanceType.EuclideanDistance:\n distance = getDistance(allPropertiesWeight[i], centroids[j], distanceType);\n break;\n\n default:\n break;\n } // 记录节点最近的质心的索引\n\n\n if (distance < minDistance) {\n minDistance = distance;\n minDistanceIndex = j;\n }\n } // 从原来的类别删除节点\n\n\n if (nodes[i].clusterId !== undefined) {\n for (var n = clusters[Number(nodes[i].clusterId)].length - 1; n >= 0; n--) {\n if (clusters[Number(nodes[i].clusterId)][n].id === nodes[i].id) {\n clusters[Number(nodes[i].clusterId)].splice(n, 1);\n }\n }\n } // 将节点划分到距离最小的质心(聚类中心)所对应的类中\n\n\n nodes[i].clusterId = String(minDistanceIndex);\n clusters[minDistanceIndex].push(nodes[i]);\n }\n } // 是否存在质心(聚类中心)移动\n\n\n var centroidsEqualAvg = false;\n\n for (var i = 0; i < clusters.length; i++) {\n var clusterNodes = clusters[i];\n var totalVector = new Vector([]);\n\n for (var j = 0; j < clusterNodes.length; j++) {\n totalVector = totalVector.add(new Vector(allPropertiesWeight[clusterNodes[j].originIndex]));\n } // 计算每个类别的均值向量\n\n\n var avgVector = totalVector.avg(clusterNodes.length); // 如果均值向量不等于质心向量\n\n if (!avgVector.equal(new Vector(centroids[i]))) {\n centroidsEqualAvg = true; // 移动/更新每个类别的质心(聚类中心)到该均值向量\n\n centroids[i] = avgVector.getArr();\n }\n }\n\n iterations++; // 如果每个节点都归属了类别,且不存在质心(聚类中心)移动或者迭代次数超过1000,则停止\n\n if (nodes.every(function (node) {\n return node.clusterId !== undefined;\n }) && centroidsEqualAvg || iterations >= 1000) {\n break;\n }\n } // get the cluster edges\n\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var _a, _b;\n\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = (_a = nodes.find(function (node) {\n return node.id === source;\n })) === null || _a === void 0 ? void 0 : _a.clusterId;\n var targetClusterId = (_b = nodes.find(function (node) {\n return node.id === target;\n })) === null || _b === void 0 ? void 0 : _b.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n return {\n clusters: clusters,\n clusterEdges: clusterEdges\n };\n};\n\nexport default kMeans;","import Vector from './utils/vector';\n/**\n * cosine-similarity算法 计算余弦相似度\n * @param item 元素\n * @param targetItem 目标元素\n */\n\nvar cosineSimilarity = function cosineSimilarity(item, targetItem) {\n // 目标元素向量\n var targetItemVector = new Vector(targetItem); // 目标元素向量的模长\n\n var targetNodeNorm2 = targetItemVector.norm2(); // 元素向量\n\n var itemVector = new Vector(item); // 元素向量的模长\n\n var itemNorm2 = itemVector.norm2(); // 计算元素向量和目标元素向量的点积\n\n var dot = targetItemVector.dot(itemVector);\n var norm2Product = targetNodeNorm2 * itemNorm2; // 计算元素向量和目标元素向量的余弦相似度\n\n var cosineSimilarity = norm2Product ? dot / norm2Product : 0;\n return cosineSimilarity;\n};\n\nexport default cosineSimilarity;","import { clone } from '@antv/util';\nimport { getAllProperties } from './utils/node-properties';\nimport { oneHot } from './utils/data-preprocessing';\nimport cosineSimilarity from './cosine-similarity';\n/**\n * nodes-cosine-similarity算法 基于节点属性计算余弦相似度(基于种子节点寻找相似节点)\n * @param nodes 图节点数据\n * @param seedNode 种子节点\n * @param propertyKey 属性的字段名\n * @param involvedKeys 参与计算的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n */\n\nvar nodesCosineSimilarity = function nodesCosineSimilarity(nodes, seedNode, propertyKey, involvedKeys, uninvolvedKeys) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n if (propertyKey === void 0) {\n propertyKey = undefined;\n }\n\n if (involvedKeys === void 0) {\n involvedKeys = [];\n }\n\n if (uninvolvedKeys === void 0) {\n uninvolvedKeys = [];\n }\n\n var similarNodes = clone(nodes.filter(function (node) {\n return node.id !== seedNode.id;\n }));\n var seedNodeIndex = nodes.findIndex(function (node) {\n return node.id === seedNode.id;\n }); // 所有节点属性集合\n\n var properties = getAllProperties(nodes, propertyKey); // 所有节点属性one-hot特征向量集合\n\n var allPropertiesWeight = oneHot(properties, involvedKeys, uninvolvedKeys); // 种子节点属性\n\n var seedNodeProperties = allPropertiesWeight[seedNodeIndex];\n var allCosineSimilarity = [];\n similarNodes.forEach(function (node, index) {\n if (node.id !== seedNode.id) {\n // 节点属性\n var nodeProperties = allPropertiesWeight[index]; // 计算节点向量和种子节点向量的余弦相似度\n\n var cosineSimilarityValue = cosineSimilarity(nodeProperties, seedNodeProperties);\n allCosineSimilarity.push(cosineSimilarityValue);\n node.cosineSimilarity = cosineSimilarityValue;\n }\n }); // 将返回的节点按照余弦相似度大小排序\n\n similarNodes.sort(function (a, b) {\n return b.cosineSimilarity - a.cosineSimilarity;\n });\n return {\n allCosineSimilarity: allCosineSimilarity,\n similarNodes: similarNodes\n };\n};\n\nexport default nodesCosineSimilarity;","/**\n * 并查集 Disjoint set to support quick union\n */\nvar UnionFind =\n/** @class */\nfunction () {\n function UnionFind(items) {\n this.count = items.length;\n this.parent = {};\n\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var i = items_1[_i];\n this.parent[i] = i;\n }\n } // find the root of the item\n\n\n UnionFind.prototype.find = function (item) {\n while (this.parent[item] !== item) {\n item = this.parent[item];\n }\n\n return item;\n };\n\n UnionFind.prototype.union = function (a, b) {\n var rootA = this.find(a);\n var rootB = this.find(b);\n if (rootA === rootB) return; // make the element with smaller root the parent\n\n if (rootA < rootB) {\n if (this.parent[b] !== b) this.union(this.parent[b], a);\n this.parent[b] = this.parent[a];\n } else {\n if (this.parent[a] !== a) this.union(this.parent[a], b);\n this.parent[a] = this.parent[b];\n }\n }; // whether a and b are connected, i.e. a and b have the same root\n\n\n UnionFind.prototype.connected = function (a, b) {\n return this.find(a) === this.find(b);\n };\n\n return UnionFind;\n}();\n\nexport default UnionFind;","var defaultCompare = function defaultCompare(a, b) {\n return a - b;\n};\n\nvar MinBinaryHeap =\n/** @class */\nfunction () {\n function MinBinaryHeap(compareFn) {\n if (compareFn === void 0) {\n compareFn = defaultCompare;\n }\n\n this.compareFn = compareFn;\n this.list = [];\n }\n\n MinBinaryHeap.prototype.getLeft = function (index) {\n return 2 * index + 1;\n };\n\n MinBinaryHeap.prototype.getRight = function (index) {\n return 2 * index + 2;\n };\n\n MinBinaryHeap.prototype.getParent = function (index) {\n if (index === 0) {\n return null;\n }\n\n return Math.floor((index - 1) / 2);\n };\n\n MinBinaryHeap.prototype.isEmpty = function () {\n return this.list.length <= 0;\n };\n\n MinBinaryHeap.prototype.top = function () {\n return this.isEmpty() ? undefined : this.list[0];\n };\n\n MinBinaryHeap.prototype.delMin = function () {\n var top = this.top();\n var bottom = this.list.pop();\n\n if (this.list.length > 0) {\n this.list[0] = bottom;\n this.moveDown(0);\n }\n\n return top;\n };\n\n MinBinaryHeap.prototype.insert = function (value) {\n if (value !== null) {\n this.list.push(value);\n var index = this.list.length - 1;\n this.moveUp(index);\n return true;\n }\n\n return false;\n };\n\n MinBinaryHeap.prototype.moveUp = function (index) {\n var parent = this.getParent(index);\n\n while (index && index > 0 && this.compareFn(this.list[parent], this.list[index]) > 0) {\n // swap\n var tmp = this.list[parent];\n this.list[parent] = this.list[index];\n this.list[index] = tmp; // [this.list[index], this.list[parent]] = [this.list[parent], this.list[index]]\n\n index = parent;\n parent = this.getParent(index);\n }\n };\n\n MinBinaryHeap.prototype.moveDown = function (index) {\n var _a;\n\n var element = index;\n var left = this.getLeft(index);\n var right = this.getRight(index);\n var size = this.list.length;\n\n if (left !== null && left < size && this.compareFn(this.list[element], this.list[left]) > 0) {\n element = left;\n } else if (right !== null && right < size && this.compareFn(this.list[element], this.list[right]) > 0) {\n element = right;\n }\n\n if (index !== element) {\n _a = [this.list[element], this.list[index]], this.list[index] = _a[0], this.list[element] = _a[1];\n this.moveDown(element);\n }\n };\n\n return MinBinaryHeap;\n}();\n\nexport default MinBinaryHeap;","import UnionFind from './structs/union-find';\nimport MinBinaryHeap from './structs/binary-heap';\nimport { getEdgesByNodeId } from './util';\n/**\n * Prim algorithm,use priority queue,复杂度 O(E+V*logV), V: 节点数量,E: 边的数量\n * refer: https://en.wikipedia.org/wiki/Prim%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n */\n\nvar primMST = function primMST(graphData, weight) {\n var selectedEdges = [];\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n\n if (nodes.length === 0) {\n return selectedEdges;\n } // 从nodes[0]开始\n\n\n var currNode = nodes[0];\n var visited = new Set();\n visited.add(currNode); // 用二叉堆维护距已加入节点的其他节点的边的权值\n\n var compareWeight = function compareWeight(a, b) {\n if (weight) {\n return a.weight - b.weight;\n }\n\n return 0;\n };\n\n var edgeQueue = new MinBinaryHeap(compareWeight);\n getEdgesByNodeId(currNode.id, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n\n while (!edgeQueue.isEmpty()) {\n // 选取与已加入的结点之间边权最小的结点\n var currEdge = edgeQueue.delMin();\n var source = currEdge.source;\n var target = currEdge.target;\n if (visited.has(source) && visited.has(target)) continue;\n selectedEdges.push(currEdge);\n\n if (!visited.has(source)) {\n visited.add(source);\n getEdgesByNodeId(source, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n }\n\n if (!visited.has(target)) {\n visited.add(target);\n getEdgesByNodeId(target, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n }\n }\n\n return selectedEdges;\n};\n/**\n * Kruskal algorithm,复杂度 O(E*logE), E: 边的数量\n * refer: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @return IEdge[] 返回构成MST的边的数组\n */\n\n\nvar kruskalMST = function kruskalMST(graphData, weight) {\n var selectedEdges = [];\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n\n if (nodes.length === 0) {\n return selectedEdges;\n } // 若指定weight,则将所有的边按权值从小到大排序\n\n\n var weightEdges = edges.map(function (edge) {\n return edge;\n });\n\n if (weight) {\n weightEdges.sort(function (a, b) {\n return a.weight - b.weight;\n });\n }\n\n var disjointSet = new UnionFind(nodes.map(function (n) {\n return n.id;\n })); // 从权值最小的边开始,如果这条边连接的两个节点于图G中不在同一个连通分量中,则添加这条边\n // 直到遍历完所有点或边\n\n while (weightEdges.length > 0) {\n var curEdge = weightEdges.shift();\n var source = curEdge.source;\n var target = curEdge.target;\n\n if (!disjointSet.connected(source, target)) {\n selectedEdges.push(curEdge);\n disjointSet.union(source, target);\n }\n }\n\n return selectedEdges;\n};\n/**\n * 最小生成树\n * refer: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @param algo 'prim' | 'kruskal' 算法类型\n * @return EdgeConfig[] 返回构成MST的边的数组\n */\n\n\nvar minimumSpanningTree = function minimumSpanningTree(graphData, weight, algo) {\n var algos = {\n prim: primMST,\n kruskal: kruskalMST\n };\n if (!algo) return kruskalMST(graphData, weight);\n return algos[algo](graphData, weight);\n};\n\nexport default minimumSpanningTree;","import degree from './degree';\nimport { getNeighbors } from \"./util\";\n/**\n * PageRank https://en.wikipedia.org/wiki/PageRank\n * refer: https://github.com/anvaka/ngraph.pagerank\n * @param graph\n * @param epsilon 判断是否收敛的精度值,默认 0.000001\n * @param linkProb 阻尼系数(dumping factor),指任意时刻,用户访问到某节点后继续访问该节点链接的下一个节点的概率,经验值 0.85\n */\n\nvar pageRank = function pageRank(graphData, epsilon, linkProb) {\n if (typeof epsilon !== 'number') epsilon = 0.000001;\n if (typeof linkProb !== 'number') linkProb = 0.85;\n var distance = 1;\n var leakedRank = 0;\n var maxIterations = 1000;\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodesCount = nodes.length;\n var currentRank;\n var curRanks = {};\n var prevRanks = {}; // Initialize pageranks 初始化\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n curRanks[nodeId] = 1 / nodesCount;\n prevRanks[nodeId] = 1 / nodesCount;\n }\n\n var nodeDegree = degree(graphData);\n\n while (maxIterations > 0 && distance > epsilon) {\n leakedRank = 0;\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n currentRank = 0;\n\n if (nodeDegree[node.id].inDegree === 0) {\n curRanks[nodeId] = 0;\n } else {\n var neighbors = getNeighbors(nodeId, edges, 'source');\n\n for (var i = 0; i < neighbors.length; ++i) {\n var neighbor = neighbors[i];\n var outDegree = nodeDegree[neighbor].outDegree;\n if (outDegree > 0) currentRank += prevRanks[neighbor] / outDegree;\n }\n\n curRanks[nodeId] = linkProb * currentRank;\n leakedRank += curRanks[nodeId];\n }\n }\n\n leakedRank = (1 - leakedRank) / nodesCount;\n distance = 0;\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n currentRank = curRanks[nodeId] + leakedRank;\n distance += Math.abs(currentRank - prevRanks[nodeId]);\n prevRanks[nodeId] = currentRank;\n }\n\n maxIterations -= 1;\n }\n\n return prevRanks;\n};\n\nexport default pageRank;","export var VACANT_EDGE_ID = -1;\nexport var VACANT_NODE_ID = -1;\nexport var VACANT_EDGE_LABEL = \"-1\";\nexport var VACANT_NODE_LABEL = \"-1\";\nexport var VACANT_GRAPH_ID = -1;\nexport var AUTO_EDGE_ID = \"-1\";\n\nvar Edge =\n/** @class */\nfunction () {\n function Edge(id, from, to, label) {\n if (id === void 0) {\n id = VACANT_EDGE_ID;\n }\n\n if (from === void 0) {\n from = VACANT_NODE_ID;\n }\n\n if (to === void 0) {\n to = VACANT_NODE_ID;\n }\n\n if (label === void 0) {\n label = VACANT_EDGE_LABEL;\n }\n\n this.id = id;\n this.from = from;\n this.to = to;\n this.label = label;\n }\n\n return Edge;\n}();\n\nexport { Edge };\n\nvar Node =\n/** @class */\nfunction () {\n function Node(id, label) {\n if (id === void 0) {\n id = VACANT_NODE_ID;\n }\n\n if (label === void 0) {\n label = VACANT_NODE_LABEL;\n }\n\n this.id = id;\n this.label = label;\n this.edges = [];\n this.edgeMap = {};\n }\n\n Node.prototype.addEdge = function (edge) {\n this.edges.push(edge);\n this.edgeMap[edge.id] = edge;\n };\n\n return Node;\n}();\n\nexport { Node };\n\nvar Graph =\n/** @class */\nfunction () {\n function Graph(id, edgeIdAutoIncrease, directed) {\n if (id === void 0) {\n id = VACANT_NODE_ID;\n }\n\n if (edgeIdAutoIncrease === void 0) {\n edgeIdAutoIncrease = true;\n }\n\n if (directed === void 0) {\n directed = false;\n }\n\n this.id = id;\n this.edgeIdAutoIncrease = edgeIdAutoIncrease;\n this.edges = [];\n this.nodes = [];\n this.nodeMap = {};\n this.edgeMap = {};\n this.nodeLabelMap = {};\n this.edgeLabelMap = {};\n this.counter = 0;\n this.directed = directed;\n }\n\n Graph.prototype.getNodeNum = function () {\n return this.nodes.length;\n };\n\n Graph.prototype.addNode = function (id, label) {\n if (this.nodeMap[id]) return;\n var node = new Node(id, label);\n this.nodes.push(node);\n this.nodeMap[id] = node;\n if (!this.nodeLabelMap[label]) this.nodeLabelMap[label] = [];\n this.nodeLabelMap[label].push(id);\n };\n\n Graph.prototype.addEdge = function (id, from, to, label) {\n if (this.edgeIdAutoIncrease || id === undefined) id = this.counter++;\n if (this.nodeMap[from] && this.nodeMap[to] && this.nodeMap[to].edgeMap[id]) return;\n var edge = new Edge(id, from, to, label);\n this.edges.push(edge);\n this.edgeMap[id] = edge;\n this.nodeMap[from].addEdge(edge);\n if (!this.edgeLabelMap[label]) this.edgeLabelMap[label] = [];\n this.edgeLabelMap[label].push(edge);\n\n if (!this.directed) {\n var rEdge = new Edge(id, to, from, label);\n this.nodeMap[to].addEdge(rEdge);\n this.edgeLabelMap[label].push(rEdge);\n }\n };\n\n return Graph;\n}();\n\nexport { Graph };","import { clone } from \"@antv/util\";\nimport { Graph, VACANT_NODE_LABEL, VACANT_GRAPH_ID, VACANT_EDGE_LABEL } from \"./struct\";\n\nvar DFSedge =\n/** @class */\nfunction () {\n function DFSedge(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) {\n this.fromNode = fromNode;\n this.toNode = toNode;\n this.nodeEdgeNodeLabel = {\n nodeLabel1: fromNodeLabel || VACANT_NODE_LABEL,\n edgeLabel: edgeLabel || VACANT_EDGE_LABEL,\n nodeLabel2: toNodeLabel || VACANT_NODE_LABEL\n };\n }\n\n DFSedge.prototype.equalTo = function (other) {\n return this.fromNode === other.formNode && this.toNode === other.toNode && this.nodeEdgeNodeLabel === other.nodeEdgeNodeLabel;\n };\n\n DFSedge.prototype.notEqualTo = function (other) {\n return !this.equalTo(other);\n };\n\n return DFSedge;\n}(); // DFScode 是 DESedge 的数组\n\n\nvar DFScode =\n/** @class */\nfunction () {\n function DFScode() {\n this.rmpath = [];\n this.dfsEdgeList = [];\n }\n\n DFScode.prototype.equalTo = function (other) {\n var aLength = this.dfsEdgeList.length;\n var bLength = other.length;\n if (aLength !== bLength) return false;\n\n for (var i = 0; i < aLength; i++) {\n if (this.dfsEdgeList[i] !== other[i]) return false;\n }\n\n return true;\n };\n\n DFScode.prototype.notEqualTo = function (other) {\n return !this.equalTo(other);\n };\n /** 增加一条 edge 到 DFScode */\n\n\n DFScode.prototype.pushBack = function (fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) {\n this.dfsEdgeList.push(new DFSedge(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel));\n return this.dfsEdgeList;\n };\n /** 根据 dfs 构建图 */\n\n\n DFScode.prototype.toGraph = function (graphId, directed) {\n if (graphId === void 0) {\n graphId = VACANT_GRAPH_ID;\n }\n\n if (directed === void 0) {\n directed = false;\n }\n\n var graph = new Graph(graphId, true, directed);\n this.dfsEdgeList.forEach(function (dfsEdge) {\n var fromNodeId = dfsEdge.fromNode;\n var toNodeId = dfsEdge.toNode;\n var _a = dfsEdge.nodeEdgeNodeLabel,\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n if (nodeLabel1 !== VACANT_NODE_LABEL) graph.addNode(fromNodeId, nodeLabel1);\n if (nodeLabel2 !== VACANT_NODE_LABEL) graph.addNode(toNodeId, nodeLabel2);\n if (nodeLabel1 !== VACANT_NODE_LABEL && nodeLabel2 !== nodeLabel1) graph.addEdge(undefined, fromNodeId, toNodeId, edgeLabel);\n });\n return graph;\n }; // 建立 rightmost path\n\n\n DFScode.prototype.buildRmpath = function () {\n this.rmpath = [];\n var oldFrom = undefined;\n var selfLength = this.dfsEdgeList.length;\n\n for (var i = selfLength - 1; i >= 0; i--) {\n var dfsEdge = this.dfsEdgeList[i];\n var fromNodeIdx = dfsEdge.fromNode;\n var toNodeIdx = dfsEdge.toNode;\n\n if (fromNodeIdx < toNodeIdx && (oldFrom === undefined || toNodeIdx === oldFrom)) {\n this.rmpath.push(i);\n oldFrom = fromNodeIdx;\n }\n }\n\n return this.rmpath;\n };\n\n DFScode.prototype.getNodeNum = function () {\n var nodeMap = {};\n this.dfsEdgeList.forEach(function (dfsEdge) {\n if (!nodeMap[dfsEdge.fromNode]) nodeMap[dfsEdge.fromNode] = true;\n if (!nodeMap[dfsEdge.toNode]) nodeMap[dfsEdge.toNode] = true;\n });\n return Object.keys(nodeMap).length;\n };\n\n return DFScode;\n}();\n\nvar History =\n/** @class */\nfunction () {\n function History(pdfs) {\n this.his = {};\n this.nodesUsed = {};\n this.edgesUsed = {};\n this.edges = [];\n if (!pdfs) return;\n\n while (pdfs) {\n var e = pdfs.edge;\n this.edges.push(e);\n this.nodesUsed[e.from] = 1;\n this.nodesUsed[e.to] = 1;\n this.edgesUsed[e.id] = 1;\n pdfs = pdfs.preNode;\n } // 倒序\n\n\n this.edges = this.edges.reverse();\n }\n\n History.prototype.hasNode = function (node) {\n return this.nodesUsed[node.id] === 1;\n };\n\n History.prototype.hasEdge = function (edge) {\n return this.edgesUsed[edge.id] === 1;\n };\n\n return History;\n}();\n\nvar GSpan =\n/** @class */\nfunction () {\n function GSpan(_a) {\n var graphs = _a.graphs,\n _b = _a.minSupport,\n minSupport = _b === void 0 ? 2 : _b,\n _c = _a.minNodeNum,\n minNodeNum = _c === void 0 ? 1 : _c,\n _d = _a.maxNodeNum,\n maxNodeNum = _d === void 0 ? 4 : _d,\n _e = _a.top,\n top = _e === void 0 ? 10 : _e,\n _f = _a.directed,\n directed = _f === void 0 ? false : _f,\n _g = _a.verbose,\n verbose = _g === void 0 ? false : _g; // -------- 第零步,初始化-------\n\n this.graphs = graphs;\n this.dfsCode = new DFScode();\n this.support = 0;\n this.frequentSize1Subgraphs = [];\n this.frequentSubgraphs = [];\n this.minSupport = minSupport;\n this.top = top;\n this.directed = directed;\n this.counter = 0; // TODO? timestamp = {}\n\n this.maxNodeNum = maxNodeNum;\n this.minNodeNum = minNodeNum;\n this.verbose = verbose;\n if (this.maxNodeNum < this.minNodeNum) this.maxNodeNum = this.minNodeNum;\n this.reportDF = []; // matrix\n } // Line 352\n\n\n GSpan.prototype.findForwardRootEdges = function (graph, fromNode) {\n var _this = this;\n\n var result = [];\n var nodeMap = graph.nodeMap;\n fromNode.edges.forEach(function (edge) {\n if (_this.directed || fromNode.label <= nodeMap[edge.to].label) result.push(edge);\n });\n return result;\n };\n\n GSpan.prototype.findBackwardEdge = function (graph, edge1, edge2, history) {\n if (!this.directed && edge1 === edge2) return null;\n var nodeMap = graph.nodeMap;\n var edge2To = nodeMap[edge2.to];\n var edge2ToEdges = edge2To.edges;\n var edgeLength = edge2ToEdges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edge2ToEdges[i];\n if (history.hasEdge(edge) || edge.to !== edge1.from) continue;\n\n if (!this.directed) {\n if (edge1.label < edge.label || edge1.label === edge.label && nodeMap[edge1.to].label <= nodeMap[edge2.to].label) {\n return edge;\n }\n } else {\n if (nodeMap[edge1.from].label < nodeMap[edge2.to].label || nodeMap[edge1.from].label === nodeMap[edge2.to].label && edge1.label <= edge.label) {\n return edge;\n }\n }\n }\n\n return null;\n };\n\n GSpan.prototype.findForwardPureEdges = function (graph, rightmostEdge, minNodeLabel, history) {\n var result = [];\n var rightmostEdgeToId = rightmostEdge.to;\n var edges = graph.nodeMap[rightmostEdgeToId].edges;\n var edgeLength = edges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var toNode = graph.nodeMap[edge.to];\n\n if (minNodeLabel <= toNode.label && !history.hasNode(toNode)) {\n result.push(edge);\n }\n }\n\n return result;\n };\n\n GSpan.prototype.findForwardRmpathEdges = function (graph, rightmostEdge, minNodeLabel, history) {\n var result = [];\n var nodeMap = graph.nodeMap;\n var toNodeLabel = nodeMap[rightmostEdge.to].label;\n var fromNode = nodeMap[rightmostEdge.from];\n var edges = fromNode.edges;\n var edgeLength = edges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var newToNodeLabel = nodeMap[edge.to].label;\n\n if (rightmostEdge.to === edge.to || minNodeLabel > newToNodeLabel || history.hasNode(nodeMap[edge.to])) {\n continue;\n }\n\n if (rightmostEdge.label < edge.label || rightmostEdge.label === edge.label && toNodeLabel <= newToNodeLabel) {\n result.push(edge);\n }\n }\n\n return result;\n };\n\n GSpan.prototype.getSupport = function (projected) {\n var graphMap = {};\n projected.forEach(function (pro) {\n if (!graphMap[pro.graphId]) graphMap[pro.graphId] = true;\n });\n return Object.keys(graphMap).length;\n };\n\n GSpan.prototype.findMinLabel = function (obj) {\n var minLabel = undefined;\n Object.keys(obj).forEach(function (nodeEdgeNodeLabel) {\n var _a = obj[nodeEdgeNodeLabel],\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n if (!minLabel) {\n minLabel = {\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n return;\n }\n\n if (nodeLabel1 < minLabel.nodeLabel1 || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel < minLabel.edgeLabel || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel === minLabel.edgeLabel && nodeLabel2 < minLabel.nodeLabel2) {\n minLabel = {\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n }\n });\n return minLabel;\n };\n\n GSpan.prototype.isMin = function () {\n var _this = this;\n\n var dfsCode = this.dfsCode;\n if (this.verbose) console.log(\"isMin checking\", dfsCode);\n if (dfsCode.dfsEdgeList.length === 1) return true;\n var directed = this.directed;\n var graph = dfsCode.toGraph(VACANT_GRAPH_ID, directed);\n var nodeMap = graph.nodeMap;\n var dfsCodeMin = new DFScode();\n var root = {};\n graph.nodes.forEach(function (node) {\n var forwardEdges = _this.findForwardRootEdges(graph, node);\n\n forwardEdges.forEach(function (edge) {\n var otherNode = nodeMap[edge.to];\n var nodeEdgeNodeLabel = \"\".concat(node.label, \"-\").concat(edge.label, \"-\").concat(otherNode.label);\n if (!root[nodeEdgeNodeLabel]) root[nodeEdgeNodeLabel] = {\n projected: [],\n nodeLabel1: node.label,\n edgeLabel: edge.label,\n nodeLabel2: otherNode.label\n };\n var pdfs = {\n graphId: graph.id,\n edge: edge,\n preNode: null\n };\n root[nodeEdgeNodeLabel].projected.push(pdfs);\n });\n }); // 比较 root 中每一项的 nodeEdgeNodeLabel 大小,按照 nodeLabel1、edgeLabe、nodeLabel2 的顺序比较\n\n var minLabel = this.findMinLabel(root); // line 419\n\n if (!minLabel) return;\n dfsCodeMin.dfsEdgeList.push(new DFSedge(0, 1, minLabel.nodeLabel1, minLabel.edgeLabel, minLabel.nodeLabel2)); // line 423\n\n var projectIsMin = function projectIsMin(projected) {\n // right most path\n var rmpath = dfsCodeMin.buildRmpath();\n var minNodeLabel = dfsCodeMin.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1;\n var maxToC = dfsCodeMin.dfsEdgeList[rmpath[0]].toNode; // node id\n\n var backwardRoot = {};\n var flag = false,\n newTo = 0;\n var end = directed ? -1 : 0; // 遍历到 1 还是到 0\n\n var _loop_1 = function _loop_1(i) {\n if (flag) return \"break\"; // line 435\n\n projected.forEach(function (p) {\n var history = new History(p);\n\n var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i]], history.edges[rmpath[0]], history);\n\n if (backwardEdge) {\n // Line 441\n if (!backwardRoot[backwardEdge.label]) {\n backwardRoot[backwardEdge.label] = {\n projected: [],\n edgeLabel: backwardEdge.label\n };\n }\n\n backwardRoot[backwardEdge.label].projected.push({\n graphId: graph.id,\n edge: backwardRoot,\n preNode: p\n });\n newTo = dfsCodeMin.dfsEdgeList[rmpath[i]].fromNode;\n flag = true;\n }\n });\n };\n\n for (var i = rmpath.length - 1; i > end; i--) {\n var state_1 = _loop_1(i);\n\n if (state_1 === \"break\") break;\n }\n\n if (flag) {\n var minBackwardEdgeLabel = _this.findMinLabel(backwardRoot);\n\n dfsCodeMin.dfsEdgeList.push(new DFSedge(maxToC, newTo, VACANT_NODE_LABEL, minBackwardEdgeLabel.edgeLabel, VACANT_NODE_LABEL));\n var idx_1 = dfsCodeMin.dfsEdgeList.length - 1;\n if (_this.dfsCode.dfsEdgeList[idx_1] !== dfsCodeMin.dfsEdgeList[idx_1]) return false;\n return projectIsMin(backwardRoot[minBackwardEdgeLabel.edgeLabel].projected);\n }\n\n var forwardRoot = {};\n flag = false;\n var newFrom = 0;\n projected.forEach(function (p) {\n var history = new History(p);\n\n var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history);\n\n if (forwardPureEdges.length > 0) {\n flag = true;\n newFrom = maxToC;\n forwardPureEdges.forEach(function (edge) {\n var key = \"\".concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: graph.id,\n edge: edge,\n preNode: p\n });\n });\n }\n });\n var pathLength = rmpath.length;\n\n var _loop_2 = function _loop_2(i) {\n if (flag) return \"break\";\n var value = rmpath[i];\n projected.forEach(function (p) {\n var history = new History(p);\n\n var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[value], minNodeLabel, history);\n\n if (forwardRmpathEdges.length > 0) {\n flag = true;\n newFrom = dfsCodeMin.dfsEdgeList[value].fromNode;\n forwardRmpathEdges.forEach(function (edge) {\n var key = \"\".concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: graph.id,\n edge: edge,\n preNode: p\n });\n });\n }\n });\n };\n\n for (var i = 0; i < pathLength; i++) {\n var state_2 = _loop_2(i);\n\n if (state_2 === \"break\") break;\n }\n\n if (!flag) return true;\n\n var forwardMinEdgeNodeLabel = _this.findMinLabel(forwardRoot);\n\n dfsCodeMin.dfsEdgeList.push(new DFSedge(newFrom, maxToC + 1, VACANT_NODE_LABEL, forwardMinEdgeNodeLabel.edgeLabel, forwardMinEdgeNodeLabel.nodeLabel2));\n var idx = dfsCodeMin.dfsEdgeList.length - 1;\n if (dfsCode.dfsEdgeList[idx] !== dfsCodeMin.dfsEdgeList[idx]) return false;\n return projectIsMin(forwardRoot[\"\".concat(forwardMinEdgeNodeLabel.edgeLabel, \"-\").concat(forwardMinEdgeNodeLabel.nodeLabel2)].projected);\n };\n\n var key = \"\".concat(minLabel.nodeLabel1, \"-\").concat(minLabel.edgeLabel, \"-\").concat(minLabel.nodeLabel2);\n return projectIsMin(root[key].projected);\n };\n\n GSpan.prototype.report = function () {\n if (this.dfsCode.getNodeNum() < this.minNodeNum) return;\n this.counter++;\n var graph = this.dfsCode.toGraph(this.counter, this.directed);\n this.frequentSubgraphs.push(clone(graph));\n };\n\n GSpan.prototype.subGraphMining = function (projected) {\n var _this = this;\n\n var support = this.getSupport(projected);\n if (support < this.minSupport) return;\n if (!this.isMin()) return;\n this.report();\n var nodeNum = this.dfsCode.getNodeNum();\n var rmpath = this.dfsCode.buildRmpath();\n var maxToC = this.dfsCode.dfsEdgeList[rmpath[0]].toNode;\n var minNodeLabel = this.dfsCode.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1;\n var forwardRoot = {};\n var backwardRoot = {};\n projected.forEach(function (p) {\n var graph = _this.graphs[p.graphId];\n var nodeMap = graph.nodeMap;\n var history = new History(p); // backward Line 526\n\n for (var i = rmpath.length - 1; i >= 0; i--) {\n var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i]], history.edges[rmpath[0]], history);\n\n if (backwardEdge) {\n var key = \"\".concat(_this.dfsCode.dfsEdgeList[rmpath[i]].fromNode, \"-\").concat(backwardEdge.label);\n if (!backwardRoot[key]) backwardRoot[key] = {\n projected: [],\n toNodeId: _this.dfsCode.dfsEdgeList[rmpath[i]].fromNode,\n edgeLabel: backwardEdge.label\n };\n backwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: backwardEdge,\n preNode: p\n });\n }\n } // pure forward\n\n\n if (nodeNum >= _this.maxNodeNum) return;\n\n var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history);\n\n forwardPureEdges.forEach(function (edge) {\n var key = \"\".concat(maxToC, \"-\").concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n fromNodeId: maxToC,\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: edge,\n preNode: p\n });\n });\n\n var _loop_3 = function _loop_3(i) {\n var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[rmpath[i]], minNodeLabel, history);\n\n forwardRmpathEdges.forEach(function (edge) {\n var key = \"\".concat(_this.dfsCode.dfsEdgeList[rmpath[i]].fromNode, \"-\").concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n fromNodeId: _this.dfsCode.dfsEdgeList[rmpath[i]].fromNode,\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: edge,\n preNode: p\n });\n });\n }; // rmpath forward\n\n\n for (var i = 0; i < rmpath.length; i++) {\n _loop_3(i);\n }\n }); // backward\n\n Object.keys(backwardRoot).forEach(function (key) {\n var _a = backwardRoot[key],\n toNodeId = _a.toNodeId,\n edgeLabel = _a.edgeLabel;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(maxToC, toNodeId, \"-1\", edgeLabel, \"-1\"));\n\n _this.subGraphMining(backwardRoot[key].projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n }); // forward\n\n Object.keys(forwardRoot).forEach(function (key) {\n var _a = forwardRoot[key],\n fromNodeId = _a.fromNodeId,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(fromNodeId, maxToC + 1, VACANT_NODE_LABEL, edgeLabel, nodeLabel2));\n\n _this.subGraphMining(forwardRoot[key].projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n });\n };\n\n GSpan.prototype.generate1EdgeFrequentSubGraphs = function () {\n var graphs = this.graphs;\n var directed = this.directed;\n var minSupport = this.minSupport;\n var frequentSize1Subgraphs = this.frequentSize1Subgraphs;\n var nodeLabelCounter = {},\n nodeEdgeNodeCounter = {}; // 保存各个图和各自节点的关系 map,key 格式为 graphKey-node类型\n\n var nodeLableCounted = {}; // 保存各个图和各自边的关系 map,key 格式为 graphKey-fromNode类型-edge类型-toNode类型\n\n var nodeEdgeNodeLabelCounted = {};\n Object.keys(graphs).forEach(function (key) {\n // Line 271\n var graph = graphs[key];\n var nodeMap = graph.nodeMap; // 遍历节点,记录对应图 与 每个节点的 label 到 nodeLableCounted\n\n graph.nodes.forEach(function (node, i) {\n // Line 272\n var nodeLabel = node.label;\n var graphNodeKey = \"\".concat(key, \"-\").concat(nodeLabel);\n\n if (!nodeLableCounted[graphNodeKey]) {\n var counter = nodeLabelCounter[nodeLabel] || 0;\n counter++;\n nodeLabelCounter[nodeLabel] = counter;\n }\n\n nodeLableCounted[graphNodeKey] = {\n graphKey: key,\n label: nodeLabel\n }; // 遍历该节点的所有边,记录各个图和各自边的关系到 nodeEdgeNodeLabelCounted. Line 276\n\n node.edges.forEach(function (edge) {\n var nodeLabel1 = nodeLabel;\n var nodeLabel2 = nodeMap[edge.to].label;\n\n if (!directed && nodeLabel1 > nodeLabel2) {\n var tmp = nodeLabel2;\n nodeLabel2 = nodeLabel1;\n nodeLabel1 = tmp;\n }\n\n var edgeLabel = edge.label;\n var graphNodeEdgeNodeKey = \"\".concat(key, \"-\").concat(nodeLabel1, \"-\").concat(edgeLabel, \"-\").concat(nodeLabel2);\n var nodeEdgeNodeKey = \"\".concat(nodeLabel1, \"-\").concat(edgeLabel, \"-\").concat(nodeLabel2);\n\n if (!nodeEdgeNodeCounter[nodeEdgeNodeKey]) {\n var counter = nodeEdgeNodeCounter[nodeEdgeNodeKey] || 0;\n counter++;\n nodeEdgeNodeCounter[nodeEdgeNodeKey] = counter; // Line281\n }\n\n nodeEdgeNodeLabelCounted[graphNodeEdgeNodeKey] = {\n graphId: key,\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n });\n });\n }); // 计算频繁的节点\n\n Object.keys(nodeLabelCounter).forEach(function (label) {\n var count = nodeLabelCounter[label];\n if (count < minSupport) return;\n var g = {\n nodes: [],\n edges: []\n };\n g.nodes.push({\n id: \"0\",\n label: label\n });\n frequentSize1Subgraphs.push(g); // if (minNodeNum <= 1) reportSize1 TODO\n });\n return frequentSize1Subgraphs;\n };\n\n GSpan.prototype.run = function () {\n var _this = this; // -------- 第一步, _generate_1edge_frequent_subgraphs:频繁的单个节点-------\n\n\n this.frequentSize1Subgraphs = this.generate1EdgeFrequentSubGraphs();\n if (this.maxNodeNum < 2) return;\n var graphs = this.graphs;\n var directed = this.directed; // PDFS 数组的 map Line 304\n\n var root = {};\n Object.keys(graphs).forEach(function (graphId) {\n var graph = graphs[graphId];\n var nodeMap = graph.nodeMap; // Line 306\n\n graph.nodes.forEach(function (node) {\n var forwardRootEdges = _this.findForwardRootEdges(graph, node); // Line 308\n\n\n forwardRootEdges.forEach(function (edge) {\n var toNode = nodeMap[edge.to];\n var nodeEdgeNodeLabel = \"\".concat(node.label, \"-\").concat(edge.label, \"-\").concat(toNode.label);\n if (!root[nodeEdgeNodeLabel]) root[nodeEdgeNodeLabel] = {\n projected: [],\n nodeLabel1: node.label,\n edgeLabel: edge.label,\n nodeLabel2: toNode.label\n };\n var pdfs = {\n graphId: graphId,\n edge: edge,\n preNode: null\n };\n root[nodeEdgeNodeLabel].projected.push(pdfs);\n });\n });\n }); // Line 313\n\n Object.keys(root).forEach(function (nodeEdgeNodeLabel) {\n var _a = root[nodeEdgeNodeLabel],\n projected = _a.projected,\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(0, 1, nodeLabel1, edgeLabel, nodeLabel2));\n\n _this.subGraphMining(projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n });\n };\n\n return GSpan;\n}();\n\nvar formatGraphs = function formatGraphs(graphs, directed, nodeLabelProp, edgeLabelProp) {\n var result = {};\n Object.keys(graphs).forEach(function (key, i) {\n var graph = graphs[key];\n var fGraph = new Graph(i, true, directed);\n var nodeIdxMap = {};\n graph.nodes.forEach(function (node, j) {\n fGraph.addNode(j, node[nodeLabelProp]);\n nodeIdxMap[node.id] = j;\n });\n graph.edges.forEach(function (edge, k) {\n var sourceIdx = nodeIdxMap[edge.source];\n var targetIdx = nodeIdxMap[edge.target];\n fGraph.addEdge(-1, sourceIdx, targetIdx, edge[edgeLabelProp]);\n });\n if (fGraph && fGraph.getNodeNum()) result[fGraph.id] = fGraph;\n });\n return result;\n};\n\nvar toGraphDatas = function toGraphDatas(graphs, nodeLabelProp, edgeLabelProp) {\n var result = [];\n graphs.forEach(function (graph) {\n var graphData = {\n nodes: [],\n edges: []\n };\n graph.nodes.forEach(function (node) {\n var _a;\n\n graphData.nodes.push((_a = {\n id: \"\".concat(node.id)\n }, _a[nodeLabelProp] = node.label, _a));\n });\n graph.edges.forEach(function (edge) {\n var _a;\n\n graphData.edges.push((_a = {\n source: \"\".concat(edge.from),\n target: \"\".concat(edge.to)\n }, _a[edgeLabelProp] = edge.label, _a));\n });\n result.push(graphData);\n });\n return result;\n};\n\nvar DEFAULT_LABEL_NAME = \"cluster\";\n/**\n * gSpan 频繁子图计算算法(frequent graph mining)\n * @param params 参数\n */\n\nvar gSpan = function gSpan(params) {\n // ------- 将图数据 GraphData 的 map 转换为格式 -------\n var graphs = params.graphs,\n _a = params.directed,\n directed = _a === void 0 ? false : _a,\n _b = params.nodeLabelProp,\n nodeLabelProp = _b === void 0 ? DEFAULT_LABEL_NAME : _b,\n _c = params.edgeLabelProp,\n edgeLabelProp = _c === void 0 ? DEFAULT_LABEL_NAME : _c;\n var formattedGraphs = formatGraphs(graphs, directed, nodeLabelProp, edgeLabelProp);\n var minSupport = params.minSupport,\n maxNodeNum = params.maxNodeNum,\n minNodeNum = params.minNodeNum,\n verbose = params.verbose,\n top = params.top; // ------- 初始化与执行算法 -------\n\n var algoParams = {\n graphs: formattedGraphs,\n minSupport: minSupport,\n maxNodeNum: maxNodeNum,\n minNodeNum: minNodeNum,\n top: top,\n verbose: verbose,\n directed: directed\n };\n var calculator = new GSpan(algoParams);\n calculator.run();\n var result = toGraphDatas(calculator.frequentSubgraphs, nodeLabelProp, edgeLabelProp);\n return result;\n};\n\nexport default gSpan;","import { __spreadArray } from \"tslib\";\nimport floydWarshall from './floydWarshall';\nimport gSpan from './gSpan/gSpan';\nimport dijkstra from './dijkstra';\nimport { uniqueId } from './util';\n/**\n * 为 graphData 中每个节点生成邻居单元数组\n * @param graphData\n * @param spm\n * @param nodeLabelProp\n * @param k k-近邻\n */\n\nvar findKNeighborUnits = function findKNeighborUnits(graphData, spm, nodeLabelProp, k) {\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (k === void 0) {\n k = 2;\n }\n\n var units = [];\n var nodes = graphData.nodes;\n spm.forEach(function (row, i) {\n units.push(findKNeighborUnit(nodes, row, i, nodeLabelProp, k));\n });\n return units;\n};\n\nvar findKNeighborUnit = function findKNeighborUnit(nodes, row, i, nodeLabelProp, k) {\n var unitNodeIdxs = [i];\n var neighbors = [];\n var labelCountMap = {};\n row.forEach(function (v, j) {\n if (v <= k && i !== j) {\n unitNodeIdxs.push(j);\n neighbors.push(nodes[j]);\n var label = nodes[j][nodeLabelProp];\n if (!labelCountMap[label]) labelCountMap[label] = {\n count: 1,\n dists: [v]\n };else {\n labelCountMap[label].count++;\n labelCountMap[label].dists.push(v);\n }\n }\n }); // 将 labelCountMap 中的 dists 按照从小到大排序,方便后面使用\n\n Object.keys(labelCountMap).forEach(function (label) {\n labelCountMap[label].dists = labelCountMap[label].dists.sort(function (a, b) {\n return a - b;\n });\n });\n return {\n nodeIdx: i,\n nodeId: nodes[i].id,\n nodeIdxs: unitNodeIdxs,\n neighbors: neighbors,\n neighborNum: unitNodeIdxs.length - 1,\n nodeLabelCountMap: labelCountMap\n };\n};\n/**\n * 随机寻找点对,满足距离小于 k\n * @param k 参数 k,表示 k-近邻\n * @param nodeNum 参数 length\n * @param maxNodePairNum 寻找点对的数量不超过 maxNodePairNum\n * @param spm 最短路径矩阵\n */\n\n\nvar findNodePairsRandomly = function findNodePairsRandomly(k, nodeNum, maxNodePairNum, kNeighborUnits, spm) {\n // 每个节点需要随机找出的点对数\n var nodePairNumEachNode = Math.ceil(maxNodePairNum / nodeNum);\n var nodePairMap = {};\n var foundNodePairCount = 0; // 遍历节点,为每个节点随机找出 nodePairNumEachNode 个点对,满足距离小于 k。找到的点对数量超过 maxNodePairNum 或所有节点遍历结束时终止\n\n kNeighborUnits.forEach(function (unit, i) {\n // 若未达到 nodePairNumEachNode,或循环次数小于最大循环次数(2 * nodeNum),继续循环\n var nodePairForICount = 0;\n var outerLoopCount = 0;\n var neighbors = unit.nodeIdxs; // the first one is the center node\n\n var neighborNum = unit.neighborNum - 1;\n\n while (nodePairForICount < nodePairNumEachNode) {\n // 另一端节点在节点数组中的的 index\n var oidx = neighbors[1 + Math.floor(Math.random() * neighborNum)];\n var innerLoopCount = 0; // 若随机得到的另一端 idx 不符合条件,则继续 random。条件是不是同一个节点、这个点对没有被记录过、距离小于 k\n\n while (nodePairMap[\"\".concat(i, \"-\").concat(oidx)] || nodePairMap[\"\".concat(oidx, \"-\").concat(i)]) {\n oidx = Math.floor(Math.random() * nodeNum);\n innerLoopCount++;\n if (innerLoopCount > 2 * nodeNum) break; // 循环次数大于最大循环次数(2 * nodeNum)跳出循环,避免死循环\n }\n\n if (innerLoopCount < 2 * nodeNum) {\n // 未达到最大循环次数,说明找到了合适的另一端\n nodePairMap[\"\".concat(i, \"-\").concat(oidx)] = {\n start: i,\n end: oidx,\n distance: spm[i][oidx]\n };\n nodePairForICount++;\n foundNodePairCount++; // 如果当前找到的点对数量达到了上限,返回结果\n\n if (foundNodePairCount >= maxNodePairNum) return nodePairMap;\n }\n\n outerLoopCount++;\n if (outerLoopCount > 2 * nodeNum) break; // 循环次数大于最大循环次数(2 * nodeNum)跳出循环,避免死循环\n } // 这个节点没有找到足够 nodePairNumEachNode 的点对。更新 nodePairNumEachNode,让后续节点找更多的点对\n\n\n if (nodePairForICount < nodePairNumEachNode) {\n var gap = nodePairNumEachNode - nodePairForICount;\n nodePairNumEachNode = (nodePairNumEachNode + gap) / (nodeNum - i - 1);\n }\n });\n return nodePairMap;\n};\n/**\n * 计算所有 nodePairMap 中节点对的相交邻居诱导子图\n * @param nodePairMap 节点对 map,key 为 node1.id-node2.id,value 为 { startNodeIdx, endNodeIdx, distance }\n * @param neighborUnits 每个节点的邻居元数组\n * @param graphData 原图数据\n * @param edgeMap 边的 map,方便检索\n * @param cachedInducedGraphMap 缓存的结果,下次进入该函数将继续更新该缓存,若 key 在缓存中存在则不需要重复计算\n */\n\n\nvar getIntersectNeighborInducedGraph = function getIntersectNeighborInducedGraph(nodePairMap, neighborUnits, graphData, cachedInducedGraphMap) {\n var nodes = graphData.nodes;\n if (!cachedInducedGraphMap) cachedInducedGraphMap = {};\n Object.keys(nodePairMap).forEach(function (key) {\n var _a, _b;\n\n if (cachedInducedGraphMap && cachedInducedGraphMap[key]) return;\n cachedInducedGraphMap[key] = {\n nodes: [],\n edges: []\n };\n var pair = nodePairMap[key];\n var startUnitNodeIds = (_a = neighborUnits[pair.start]) === null || _a === void 0 ? void 0 : _a.nodeIdxs;\n var endUnitNodeIds = (_b = neighborUnits[pair.end]) === null || _b === void 0 ? void 0 : _b.nodeIdxs;\n if (!startUnitNodeIds || !endUnitNodeIds) return; // 不存在邻元,返回空图\n\n var endSet = new Set(endUnitNodeIds);\n var intersect = startUnitNodeIds.filter(function (x) {\n return endSet.has(x);\n }); // 可能会爆栈(在 1580 + 6 nodes full-connected 时出现)\n\n if (!intersect || !intersect.length) return; // 没有交集,返回空图\n\n var intersectIdMap = {};\n var intersectLength = intersect.length;\n\n for (var i = 0; i < intersectLength; i++) {\n var node = nodes[intersect[i]];\n cachedInducedGraphMap[key].nodes.push(node); // 将交集中的点加入诱导子图\n\n intersectIdMap[node.id] = true;\n } // 遍历所有边数据,如果边的两端都在交集中,将该边加入诱导子图\n\n\n graphData.edges.forEach(function (edge) {\n if (intersectIdMap[edge.source] && intersectIdMap[edge.target]) cachedInducedGraphMap[key].edges.push(edge);\n });\n });\n return cachedInducedGraphMap;\n};\n/**\n * 计算 strcutre 在 graph 上的匹配数量\n * @param graph 图数据\n * @param structure 目前支持只有两个节点一条边的最简单结构\n * @param nodeLabelProp 节点类型字段名\n * @param edgeLabelProp 边类型字段名\n */\n\n\nvar getMatchedCount = function getMatchedCount(graph, structure, nodeLabelProp, edgeLabelProp) {\n var _a, _b;\n\n var nodeMap = {};\n graph.nodes.forEach(function (node) {\n nodeMap[node.id] = node;\n });\n var count = 0;\n if (!((_a = structure === null || structure === void 0 ? void 0 : structure.edges) === null || _a === void 0 ? void 0 : _a.length) || ((_b = structure === null || structure === void 0 ? void 0 : structure.nodes) === null || _b === void 0 ? void 0 : _b.length) < 2) return 0;\n graph.edges.forEach(function (e) {\n var sourceLabel = nodeMap[e.source][nodeLabelProp];\n var targetLabel = nodeMap[e.target][nodeLabelProp];\n var strNodeLabel1 = structure === null || structure === void 0 ? void 0 : structure.nodes[0][nodeLabelProp];\n var strNodeLabel2 = structure === null || structure === void 0 ? void 0 : structure.nodes[1][nodeLabelProp];\n var strEdgeLabel = structure === null || structure === void 0 ? void 0 : structure.edges[0][edgeLabelProp];\n if (e[edgeLabelProp] !== strEdgeLabel) return;\n\n if (sourceLabel === strNodeLabel1 && targetLabel === strNodeLabel2 || sourceLabel === strNodeLabel2 && targetLabel === strNodeLabel1) {\n count++;\n }\n });\n return count;\n};\n/**\n * structures 中寻找最具有代表性的一个。这个结构是使得 matchedCountMap 的分组方式类内间距最小,类间间距最大\n * @param matchedCountMap 每个 structure 分类后的各图匹配数量,格式 { [strcture.idx]: { [interInducedGraphKey]: count } }\n * @param structureNum strcuture 个数,与 matchedCountMap.length 对应\n * @param structures\n */\n\n\nvar findRepresentStructure = function findRepresentStructure(matchedCountMap, structureNum, structures) {\n var maxOffset = Infinity,\n representClusterType = 0;\n\n var _loop_1 = function _loop_1(i) {\n // 一种分组的 map,key 是 intGraph 的 key,value 是 structures[i] 的匹配个数\n var countMapI = matchedCountMap[i]; // 按照 value 为该组排序,生成 keys 的数组:\n\n var sortedGraphKeys = Object.keys(countMapI).sort(function (a, b) {\n return countMapI[a] - countMapI[b];\n }); // 共 100 个 graphKeys,将 graphKeys 按顺序分为 groupNum 组\n\n var groupNum = 10;\n var clusters = []; // 总共有 groupNum 个项\n\n sortedGraphKeys.forEach(function (key, j) {\n if (!clusters[j % groupNum]) clusters[j % groupNum] = {\n graphs: [],\n totalCount: 0,\n aveCount: 0\n };\n clusters[j % groupNum].graphs.push(key);\n clusters[j % groupNum].totalCount += countMapI[key];\n }); // 计算 cluster 与 cluster 之间的距离 innerDist,每个 cluster 内部的距离 intraDist\n\n var aveIntraDist = 0; // 该类的类内平均值\n\n var aveCounts = []; // 类内平均匹配数量,将用于计算类间距离\n\n clusters.forEach(function (graphsInCluster) {\n // 类内均值\n var aveCount = graphsInCluster.totalCount / graphsInCluster.graphs.length;\n graphsInCluster.aveCount = aveCount;\n aveCounts.push(aveCount); // 对于每类,计算类内间距平均值\n\n var aveIntraPerCluster = 0;\n var graphsNum = graphsInCluster.length;\n graphsInCluster.graphs.forEach(function (graphKey1, j) {\n var graph1Count = countMapI[graphKey1];\n graphsInCluster.graphs.forEach(function (graphKey2, k) {\n if (j === k) return;\n aveIntraPerCluster += Math.abs(graph1Count - countMapI[graphKey2]);\n });\n });\n aveIntraPerCluster /= graphsNum * (graphsNum - 1) / 2;\n aveIntraDist += aveIntraPerCluster;\n });\n aveIntraDist /= clusters.length; // 用类内均值计算类间距\n\n var aveInterDist = 0; // 类间间距平均值\n\n aveCounts.forEach(function (aveCount1, j) {\n aveCounts.forEach(function (aveCount2, k) {\n if (j === k) return;\n aveInterDist += Math.abs(aveCount1 - aveCount2);\n });\n aveInterDist /= aveCounts.length * (aveCounts.length - 1) / 2;\n }); // 寻找 (类间间距均值-类内间距均值) 最大的一种分组方式(对应的 structure 就是最终要找的唯一 DS(G))\n\n var offset = aveInterDist - aveIntraDist;\n\n if (maxOffset < offset) {\n maxOffset = offset;\n representClusterType = i;\n }\n };\n\n for (var i = 0; i < structureNum; i++) {\n _loop_1(i);\n }\n\n return {\n structure: structures[representClusterType],\n structureCountMap: matchedCountMap[representClusterType]\n };\n};\n\nvar getNodeMaps = function getNodeMaps(nodes, nodeLabelProp) {\n var nodeMap = {},\n nodeLabelMap = {};\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = {\n idx: i,\n node: node,\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n var label = node[nodeLabelProp];\n if (!nodeLabelMap[label]) nodeLabelMap[label] = [];\n nodeLabelMap[label].push(node);\n });\n return {\n nodeMap: nodeMap,\n nodeLabelMap: nodeLabelMap\n };\n};\n\nvar getEdgeMaps = function getEdgeMaps(edges, edgeLabelProp, nodeMap) {\n var edgeMap = {},\n edgeLabelMap = {};\n edges.forEach(function (edge, i) {\n edgeMap[\"\".concat(uniqueId)] = {\n idx: i,\n edge: edge\n };\n var label = edge[edgeLabelProp];\n if (!edgeLabelMap[label]) edgeLabelMap[label] = [];\n edgeLabelMap[label].push(edge);\n var sourceNode = nodeMap[edge.source];\n\n if (sourceNode) {\n sourceNode.degree++;\n sourceNode.outDegree++;\n }\n\n var targetNode = nodeMap[edge.target];\n\n if (targetNode) {\n targetNode.degree++;\n targetNode.inDegree++;\n }\n });\n return {\n edgeMap: edgeMap,\n edgeLabelMap: edgeLabelMap\n };\n};\n/**\n * 输出最短路径的 map,key 为 sourceNode.id-targetNode.id,value 为这两个节点的最短路径长度\n * @param nodes\n * @param spm\n * @param directed\n */\n\n\nvar getSpmMap = function getSpmMap(nodes, spm, directed) {\n var length = spm.length;\n var map = {};\n spm.forEach(function (row, i) {\n var start = directed ? 0 : i + 1;\n var iId = nodes[i].id;\n\n for (var j = start; j < length; j++) {\n if (i === j) continue;\n var jId = nodes[j].id;\n var dist = row[j];\n map[\"\".concat(iId, \"-\").concat(jId)] = dist;\n if (!directed) map[\"\".concat(jId, \"-\").concat(iId)] = dist;\n }\n });\n return map;\n};\n/**\n * 计算一对节点(node1,node2)的 NDS 距离\n * @param graph 原图数据\n * @param node1\n * @param node2\n */\n\n\nvar getNDSDist = function getNDSDist(graph, node1, node2, nodeMap, spDist, kNeighborUnits, structure, nodeLabelProp, edgeLabelProp, cachedNDSMap, cachedInterInducedGraph) {\n var _a;\n\n var key = \"\".concat(node1.id, \"-\").concat(node2.id);\n if (cachedNDSMap && cachedNDSMap[key]) return cachedNDSMap[key];\n var interInducedGraph = cachedInterInducedGraph ? cachedInterInducedGraph[key] : undefined; // 若没有缓存相交邻居诱导子图,计算\n\n if (!interInducedGraph) {\n var pairMap = (_a = {}, _a[key] = {\n start: nodeMap[node1.id].idx,\n end: nodeMap[node2.id].idx,\n distance: spDist\n }, _a);\n cachedInterInducedGraph = getIntersectNeighborInducedGraph(pairMap, kNeighborUnits, graph, cachedInterInducedGraph);\n interInducedGraph = cachedInterInducedGraph[key];\n }\n\n return getMatchedCount(interInducedGraph, structure, nodeLabelProp, edgeLabelProp);\n};\n/**\n * 计算 pattern 上绩点的度数并存储到 minPatternNodeLabelDegreeMap\n */\n\n\nvar stashPatternNodeLabelDegreeMap = function stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap) {\n var _a, _b, _c;\n\n var minPatternNodeLabelDegree = (_a = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _a === void 0 ? void 0 : _a.degree;\n var minPatternNodeLabelInDegree = (_b = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _b === void 0 ? void 0 : _b.inDegree;\n var minPatternNodeLabelOutDegree = (_c = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _c === void 0 ? void 0 : _c.outDegree;\n\n if (minPatternNodeLabelDegreeMap[neighborLabel] === undefined) {\n minPatternNodeLabelDegree = Infinity;\n minPatternNodeLabelInDegree = Infinity;\n minPatternNodeLabelOutDegree = Infinity;\n patternNodeLabelMap[neighborLabel].forEach(function (patternNodeWithLabel) {\n var patternNodeDegree = patternNodeMap[patternNodeWithLabel.id].degree;\n if (minPatternNodeLabelDegree > patternNodeDegree) minPatternNodeLabelDegree = patternNodeDegree;\n var patternNodeInDegree = patternNodeMap[patternNodeWithLabel.id].inDegree;\n if (minPatternNodeLabelInDegree > patternNodeInDegree) minPatternNodeLabelInDegree = patternNodeInDegree;\n var patternNodeOutDegree = patternNodeMap[patternNodeWithLabel.id].outDegree;\n if (minPatternNodeLabelOutDegree > patternNodeOutDegree) minPatternNodeLabelOutDegree = patternNodeOutDegree;\n });\n minPatternNodeLabelDegreeMap[neighborLabel] = {\n degree: minPatternNodeLabelDegree,\n inDegree: minPatternNodeLabelInDegree,\n outDegree: minPatternNodeLabelOutDegree\n };\n }\n\n return {\n minPatternNodeLabelDegree: minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree: minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree: minPatternNodeLabelOutDegree\n };\n};\n/**\n * GADDI 模式匹配\n * @param graphData 原图数据\n * @param pattern 搜索图(需要在原图上搜索的模式)数据\n * @param directed 是否计算有向图,默认 false\n * @param k 参数 k,表示 k-近邻\n * @param length 参数 length\n * @param nodeLabelProp 节点数据中代表节点标签(分类信息)的属性名。默认为 cluster\n * @param edgeLabelProp 边数据中代表边标签(分类信息)的属性名。默认为 cluster\n */\n\n\nvar GADDI = function GADDI(graphData, pattern, directed, k, length, nodeLabelProp, edgeLabelProp) {\n var _a;\n\n if (directed === void 0) {\n directed = false;\n }\n\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (edgeLabelProp === void 0) {\n edgeLabelProp = 'cluster';\n }\n\n if (!graphData || !graphData.nodes) return; // 分为三步:\n // 0. 预计算:节点/边数,邻接矩阵、最短路径矩阵\n // 1. 处理原图 graphData。再分为 1~5 小步\n // 2. 匹配\n // console.log(\"----- stage-pre: preprocessing -------\");\n // -------- 第零步,预计算:节点/边数,邻接矩阵、最短路径矩阵-------\n\n var nodeNum = graphData.nodes.length;\n if (!nodeNum) return; // console.log(\"----- stage-pre.1: calc shortest path matrix for graph -------\");\n\n var spm = floydWarshall(graphData, directed); // console.log(\n // \"----- stage-pre.2: calc shortest path matrix for pattern -------\"\n // );\n\n var patternSpm = floydWarshall(pattern, directed); // console.log(\n // \"----- stage-pre.3: calc shortest path matrix map for graph -------\"\n // );\n\n var spmMap = getSpmMap(graphData.nodes, spm, directed); // console.log(\n // \"----- stage-pre.4: calc shortest path matrix map for pattern -------\"\n // );\n\n var patternSpmMap = getSpmMap(pattern.nodes, patternSpm, directed); // console.log(\"----- stage-pre.5: establish maps -------\");\n // 节点的 map,以 id 为 id 映射,方便后续快速检索\n\n var _b = getNodeMaps(graphData.nodes, nodeLabelProp),\n nodeMap = _b.nodeMap,\n nodeLabelMap = _b.nodeLabelMap;\n\n var _c = getNodeMaps(pattern.nodes, nodeLabelProp),\n patternNodeMap = _c.nodeMap,\n patternNodeLabelMap = _c.nodeLabelMap; // 计算节点度数\n\n\n getEdgeMaps(graphData.edges, edgeLabelProp, nodeMap);\n var patternEdgeLabelMap = getEdgeMaps(pattern.edges, edgeLabelProp, patternNodeMap).edgeLabelMap; // 若未指定 length,自动计算 pattern 半径(最短路径最大值)\n\n var patternSpmSpread = [];\n patternSpm === null || patternSpm === void 0 ? void 0 : patternSpm.forEach(function (row) {\n patternSpmSpread = patternSpmSpread.concat(row);\n });\n if (!length) length = Math.max.apply(Math, __spreadArray(__spreadArray([], patternSpmSpread, false), [2], false));\n if (!k) k = length; // console.log(\"params\", directed, length, k);\n // console.log(\"----- stage-pre.6: calc k neighbor units -------\");\n // 计算每个节点的 k 邻元集合\n\n var kNeighborUnits = findKNeighborUnits(graphData, spm, nodeLabelProp, k);\n var patternKNeighborUnits = findKNeighborUnits(pattern, patternSpm, nodeLabelProp, k); // console.log(\n // \"----- stage0: going to processing graph and find intersect neighbor induced graphs -------\"\n // );\n // console.log(\"----- stage0.1: going to select random node pairs -------\");\n // -------- 第一步,处理原图 graphData-------\n // 1.1. 随机选择最多 100 个点对,满足距离小于 Length 和 k\n // 当 graphData 少于 20 个节点,则不能找出 100 个点对,只找出不多于 n(n-1)/2 个点对\n\n var maxNodePairNum = Math.min(100, nodeNum * (nodeNum - 1) / 2);\n var nodePairsMap = findNodePairsRandomly(k, nodeNum, maxNodePairNum, kNeighborUnits, spm); // console.log(\n // \"----- stage0.2: going to calculate intersect neighbor induced graphs -------\"\n // );\n // 1.2. 生成上面节点对的相应相交邻居诱导子图。格式为 {'beginNodeIdx-endNodeIdx': {nodes: [], edges: []}}\n\n var intGMap = getIntersectNeighborInducedGraph(nodePairsMap, kNeighborUnits, graphData); // 1.3. 使用 gSpan 算法(frequent graph mining)计算 ISIntG 的前 10 个频率最高的子结构(3-4条边)\n\n var top = 10,\n minSupport = 1,\n minNodeNum = 1,\n maxNodeNum = 4;\n var params = {\n graphs: intGMap,\n nodeLabelProp: nodeLabelProp,\n edgeLabelProp: edgeLabelProp,\n minSupport: minSupport,\n minNodeNum: minNodeNum,\n maxNodeNum: maxNodeNum,\n directed: directed\n }; // console.log(\n // \"----- stage1: (gSpan) going to find frequent structure dsG -------\"\n // );\n // console.log(\"----- stage1.1: going to run gSpan -------\");\n // 暂时假设生成的 sub structure 都只有一条边\n\n var freStructures = gSpan(params).slice(0, top); // structureNum 可能小于 top\n\n var structureNum = freStructures.length; // 1.4. 计算上述 10 个子结构在 intGMap 中每个诱导子图的匹配个数\n\n var matchedCountMap = [];\n freStructures.forEach(function (structure, i) {\n matchedCountMap[i] = {};\n Object.keys(intGMap).forEach(function (key) {\n var graph = intGMap[key];\n var subStructureCount = getMatchedCount(graph, structure, nodeLabelProp, edgeLabelProp);\n matchedCountMap[i][key] = subStructureCount;\n });\n }); // console.log(\n // \"----- stage1.1: going to find the most represent strucutre -------\"\n // );\n // 1.5. 对于每个子结构,根据匹配个数为 intGMap 中的诱导子图分组,生成 structureNum 种分组\n // 计算每种分组的类间距和类内间距,找到类间距最大、类内间距最小的一种分组,这种分组对应的子结构被选为唯一代表性子结构 DS(G)\n\n var _d = findRepresentStructure(matchedCountMap, structureNum, freStructures),\n dsG = _d.structure,\n ndsDist = _d.structureCountMap; // -------- 第二步,匹配-------\n // 2.1 找到从 Q 中的一个节点作为起始节点,寻找 G 中的匹配。这个其实节点的标签可以在 G 中找到最多的节点\n\n\n var beginPNode = pattern.nodes[0],\n candidates = [],\n label = (_a = pattern.nodes[0]) === null || _a === void 0 ? void 0 : _a[nodeLabelProp],\n maxNodeNumWithSameLabel = -Infinity;\n pattern.nodes.forEach(function (node) {\n var pLabel = node[nodeLabelProp];\n var nodesWithSameLabel = nodeLabelMap[pLabel];\n\n if ((nodesWithSameLabel === null || nodesWithSameLabel === void 0 ? void 0 : nodesWithSameLabel.length) > maxNodeNumWithSameLabel) {\n maxNodeNumWithSameLabel = nodesWithSameLabel.length;\n candidates = nodesWithSameLabel;\n label = pLabel;\n beginPNode = node;\n }\n }); // console.log(\"----- stage2: going to find candidates -------\");\n // 全局缓存,避免重复计算\n\n var minPatternNodeLabelDegreeMap = {}; // key 是 label,value 是该 label 节点的最小度数\n\n var patternIntGraphMap = {},\n patternNDSDist = {},\n // key 为 node.id-node.id\n patternNDSDistMap = {}; // key 为 node.id-label2,value nds距离值数组(按从大到小排序,无需关心具体对应哪个 node2)\n // 2.2.2 对于 Q 中的另一个标签的 k 个节点,计算它们到 node 的最短路径以及 NDS 距离\n\n var patternSpDist = {};\n var patternSpDistBack = {};\n Object.keys(patternNodeLabelMap).forEach(function (label2, j) {\n patternSpDist[label2] = [];\n\n if (directed) {\n patternSpDistBack[label2] = [];\n }\n\n var maxDist = -Infinity;\n var patternNodesWithLabel2 = patternNodeLabelMap[label2];\n var patternNodePairMap = {};\n patternNodesWithLabel2.forEach(function (nodeWithLabel2) {\n var dist = patternSpmMap[\"\".concat(beginPNode.id, \"-\").concat(nodeWithLabel2.id)];\n dist && patternSpDist[label2].push(dist);\n if (maxDist < dist) maxDist = dist;\n patternNodePairMap[\"\".concat(beginPNode.id, \"-\").concat(nodeWithLabel2.id)] = {\n start: 0,\n end: patternNodeMap[nodeWithLabel2.id].idx,\n distance: dist\n };\n\n if (directed) {\n var distBack = patternSpmMap[\"\".concat(nodeWithLabel2.id, \"-\").concat(beginPNode.id)];\n distBack && patternSpDistBack[label2].push(distBack);\n }\n }); // spDist[label2] 按照从小到大排序\n\n patternSpDist[label2] = patternSpDist[label2].sort(function (a, b) {\n return a - b;\n });\n if (directed) patternSpDistBack[label2] = patternSpDistBack[label2].sort(function (a, b) {\n return a - b;\n }); // 计算 Q 中所有 label2 节点到 beginPNode 的 NDS 距离\n // 所有 label2 节点到 beginPNode 的邻居相交诱导子图:\n // key: node1.id-node2.id\n\n patternIntGraphMap = getIntersectNeighborInducedGraph(patternNodePairMap, patternKNeighborUnits, pattern, patternIntGraphMap); // pattern 中 beginNode 到当前 label2 节点 的 NDS 距离(数组,无需关心具体对应到哪个节点)\n\n var currentPatternNDSDistArray = [];\n Object.keys(patternNodePairMap).forEach(function (key) {\n if (patternNDSDist[key]) {\n currentPatternNDSDistArray.push(patternNDSDist[key]);\n return; // 缓存过则不需要再次计算\n }\n\n var patternIntGraph = patternIntGraphMap[key];\n patternNDSDist[key] = getMatchedCount(patternIntGraph, dsG, nodeLabelProp, edgeLabelProp);\n currentPatternNDSDistArray.push(patternNDSDist[key]);\n }); // 根据值为 currentPatternNDSDist 从大到小排序\n\n currentPatternNDSDistArray = currentPatternNDSDistArray.sort(function (a, b) {\n return b - a;\n });\n patternNDSDistMap[\"\".concat(beginPNode.id, \"-\").concat(label2)] = currentPatternNDSDistArray;\n if (label2 === label) return;\n var candidatesNum = (candidates === null || candidates === void 0 ? void 0 : candidates.length) || 0;\n\n var _loop_4 = function _loop_4(m) {\n var cNode = candidates[m]; // prune1:若 candidates 中节点 cNode 的 kNeighborUnits 中标签为 label2 的节点个数少于 pattern 中 label2 个数,删去它\n\n var graphNeighborUnit = kNeighborUnits[nodeMap[cNode.id].idx];\n var graphNeighborUnitCountMap = graphNeighborUnit.nodeLabelCountMap[label2];\n var patternLabel2Num = patternNodeLabelMap[label2].length;\n\n if (!graphNeighborUnitCountMap || graphNeighborUnitCountMap.count < patternLabel2Num) {\n candidates.splice(m, 1);\n return \"continue\";\n } // prune2:若 candidates 中节点 cNode 到 kNeighborUnits 中标签为 label2 的节点最短路径大于 patternSpDist[label2],删去它\n // (prune2 规则即:candidate 相关的最短路径的最大 spDist[label2].length 个,按照大小顺序依次和 patternSpDist[label2] 中的值比较,只要遇到一个是 G > Q 的,就删去这个 candidate)\n\n\n var prune2Invalid = false;\n\n for (var n = 0; n < patternLabel2Num; n++) {\n if (graphNeighborUnitCountMap.dists[n] > patternSpDist[label2][n]) {\n prune2Invalid = true;\n break;\n }\n }\n\n if (prune2Invalid) {\n candidates.splice(m, 1);\n return \"continue\";\n } // prune3:若 candidates 中节点 cNode 到 kNeighborUnits 中标签为 label2 的节点 NDS 距离小于 patternNDSDist[beginNode.id-label2],删去它\n // TODO:prune3,currentPatternNDSDistArray 与 currentNDSDist 的比较\n // 计算 G 中所有 label2 节点到 cNode 的 NDS 距离\n // 所有 label2 节点到 cNode 的邻居相交诱导子图:\n\n\n var cNodePairMap = {};\n graphNeighborUnit.neighbors.forEach(function (neighborNode) {\n var dist = spmMap[\"\".concat(cNode.id, \"-\").concat(neighborNode.id)];\n cNodePairMap[\"\".concat(cNode.id, \"-\").concat(neighborNode.id)] = {\n start: nodeMap[cNode.id].idx,\n end: nodeMap[neighborNode.id].idx,\n distance: dist\n };\n }); // 更新 intGMap\n\n intGMap = getIntersectNeighborInducedGraph(cNodePairMap, kNeighborUnits, graphData, intGMap); // candidate 到它周围 label2 节点的 NDS 距离, key 是 node.id-node.id\n\n var currentNDSDistArray = [];\n Object.keys(cNodePairMap).forEach(function (key) {\n if (ndsDist[key]) {\n currentNDSDistArray.push(ndsDist[key]);\n return; // 缓存过则不需要再次计算\n }\n\n var intGraph = intGMap[key];\n ndsDist[key] = getMatchedCount(intGraph, dsG, nodeLabelProp, edgeLabelProp);\n currentNDSDistArray.push(ndsDist[key]);\n }); // 根据值为 currentNDSDistArray 从大到小排序\n\n currentNDSDistArray = currentNDSDistArray.sort(function (a, b) {\n return b - a;\n });\n var prune3Invalid = false;\n\n for (var n = 0; n < patternLabel2Num; n++) {\n if (currentNDSDistArray[n] < currentPatternNDSDistArray[n]) {\n prune3Invalid = true;\n break;\n }\n }\n\n if (prune3Invalid) {\n candidates.splice(m, 1);\n return \"continue\";\n }\n };\n\n for (var m = candidatesNum - 1; m >= 0; m--) {\n _loop_4(m);\n }\n });\n var candidateGraphs = []; // console.log(\n // \"----- stage3: going to splice neighbors for each candidate graph -------\"\n // );\n // candidates 经过筛选后,以每个 candidate 为中心,生成 Length-neighbor 的邻居诱导子图\n // 并在诱导子图中去除不可能在 Q 上找到匹配的点:在 Q 上不存在的 label,其他 label 到 candidate 的最大最短距离符合 Q、NDS 距离符合 Q\n\n candidates === null || candidates === void 0 ? void 0 : candidates.forEach(function (candidate) {\n var nodeIdx = nodeMap[candidate.id].idx;\n var lengthNeighborUnit = findKNeighborUnit(graphData.nodes, spm[nodeIdx], nodeIdx, nodeLabelProp, length);\n var neighborNodes = lengthNeighborUnit.neighbors; // 删除不可能找到匹配的邻居点\n\n var neighborNum = neighborNodes.length;\n var unmatched = false;\n\n for (var i = neighborNum - 1; i >= 0; i--) {\n // 如果通过裁剪,符合条件的节点数量已过少,说明不能匹配这个 candidate 相关的图\n if (neighborNodes.length + 1 < pattern.nodes.length) {\n unmatched = true;\n return;\n }\n\n var neighborNode = neighborNodes[i];\n var neighborLabel = neighborNode[nodeLabelProp]; // prune1: 若该邻居点的 label 不存在于 pattern 中,移除这个点\n\n if (!patternNodeLabelMap[neighborLabel] || !patternNodeLabelMap[neighborLabel].length) {\n neighborNodes.splice(i, 1);\n continue;\n } // prune2: 若该邻居点到 candidate 的最短路径比和它有相同 label 的节点到 beginPNode 的最大最短路径长度长,移除这个点\n // prune2.1: 如果没有这个标签到 beginPNode 的距离记录,说明 pattern 上(可能 beginPNode 是这个 label)没有其他这个 label 的节点\n\n\n if (!patternSpDist[neighborLabel] || !patternSpDist[neighborLabel].length) {\n neighborNodes.splice(i, 1);\n continue;\n }\n\n var key = \"\".concat(candidate.id, \"-\").concat(neighborNode.id); // prune2.2\n\n var distToCandidate = spmMap[key];\n var idx = patternSpDist[neighborLabel].length - 1;\n var maxDistWithLabelInPattern = patternSpDist[neighborLabel][idx]; // patternSpDist[neighborLabel] 已经按照从小到大排序\n\n if (distToCandidate > maxDistWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n }\n\n if (directed) {\n var keyBack = \"\".concat(neighborNode.id, \"-\").concat(candidate.id);\n var distFromCandidate = spmMap[keyBack];\n idx = patternSpDistBack[neighborLabel].length - 1;\n var maxBackDistWithLabelInPattern = patternSpDistBack[neighborLabel][idx];\n\n if (distFromCandidate > maxBackDistWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n }\n } // prune3: 若该邻居点到 candidate 的 NDS 距离比和它有相同 label 的节点到 beginPNode 的最小 NDS 距离小,移除这个点\n\n\n var ndsToCandidate = ndsDist[key] ? ndsDist[key] : getNDSDist(graphData, candidate, neighborNode, nodeMap, distToCandidate, kNeighborUnits, dsG, nodeLabelProp, edgeLabelProp, ndsDist, intGMap);\n var patternKey = \"\".concat(beginPNode.id, \"-\").concat(neighborLabel);\n var minNdsWithLabelInPattern = patternNDSDistMap[patternKey][patternNDSDistMap[patternKey].length - 1]; // patternNDSDist[key] 一定存在\n\n if (ndsToCandidate < minNdsWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n } // prune4: 若该邻居点的度数小于 pattern 同 label 节点最小度数,删去该点\n\n\n var _a = stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap),\n minPatternNodeLabelDegree = _a.minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree = _a.minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree = _a.minPatternNodeLabelOutDegree;\n\n if (nodeMap[neighborNode.id].degree < minPatternNodeLabelDegree) {\n neighborNodes.splice(i, 1);\n continue;\n }\n } // 节点在个数上符合匹配(不少于 pattern 的节点个数),现在筛选相关边\n\n\n if (!unmatched) {\n candidateGraphs.push({\n nodes: [candidate].concat(neighborNodes)\n });\n }\n }); // console.log(\n // \"----- stage4: going to splice edges and neighbors for each candidate graph -------\"\n // );\n\n var undirectedLengthsToBeginPNode = dijkstra(pattern, beginPNode.id, false).length;\n var undirectedLengthsToBeginPNodeLabelMap = {};\n\n if (directed) {\n Object.keys(undirectedLengthsToBeginPNode).forEach(function (nodeId) {\n var nodeLabel = patternNodeMap[nodeId].node[nodeLabelProp];\n if (!undirectedLengthsToBeginPNodeLabelMap[nodeLabel]) undirectedLengthsToBeginPNodeLabelMap[nodeLabel] = [undirectedLengthsToBeginPNode[nodeId]];else undirectedLengthsToBeginPNodeLabelMap[nodeLabel].push(undirectedLengthsToBeginPNode[nodeId]);\n });\n Object.keys(undirectedLengthsToBeginPNodeLabelMap).forEach(function (pLabel) {\n undirectedLengthsToBeginPNodeLabelMap[pLabel].sort(function (a, b) {\n return a - b;\n });\n });\n } else {\n undirectedLengthsToBeginPNodeLabelMap = patternSpDist;\n } // 现在 candidateGraphs 里面只有节点,进行边的筛选\n\n\n var candidateGraphNum = candidateGraphs.length;\n\n var _loop_2 = function _loop_2(i) {\n var candidateGraph = candidateGraphs[i];\n var candidate = candidateGraph.nodes[0];\n var candidateNodeLabelCountMap = {};\n var candidateNodeMap = {};\n candidateGraph.nodes.forEach(function (node, q) {\n candidateNodeMap[node.id] = {\n idx: q,\n node: node,\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n var cNodeLabel = node[nodeLabelProp];\n if (!candidateNodeLabelCountMap[cNodeLabel]) candidateNodeLabelCountMap[cNodeLabel] = 1;else candidateNodeLabelCountMap[cNodeLabel]++;\n }); // 根据 candidate 和 neighborNodes 中的节点生成 G 的诱导子图\n // 即,将 graphData 上两端都在 candidateGraph.nodes 中的边放入 candidateEdges\n\n var candidateEdges = [];\n var edgeLabelCountMap = {};\n graphData.edges.forEach(function (edge) {\n if (candidateNodeMap[edge.source] && candidateNodeMap[edge.target]) {\n candidateEdges.push(edge);\n if (!edgeLabelCountMap[edge[edgeLabelProp]]) edgeLabelCountMap[edge[edgeLabelProp]] = 1;else edgeLabelCountMap[edge[edgeLabelProp]]++;\n candidateNodeMap[edge.source].degree++;\n candidateNodeMap[edge.target].degree++;\n candidateNodeMap[edge.source].outDegree++;\n candidateNodeMap[edge.target].inDegree++;\n }\n }); // prune:若有一个 edgeLabel 在 candidateGraph 上的个数少于 pattern,去除该图\n\n var pattenrEdgeLabelNum = Object.keys(patternEdgeLabelMap).length;\n var prunedByEdgeLabel = false;\n\n for (var e = 0; e < pattenrEdgeLabelNum; e++) {\n var label_1 = Object.keys(patternEdgeLabelMap)[e];\n\n if (!edgeLabelCountMap[label_1] || edgeLabelCountMap[label_1] < patternEdgeLabelMap[label_1].length) {\n prunedByEdgeLabel = true;\n break;\n }\n }\n\n if (prunedByEdgeLabel) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n } // 遍历 candidateEdges,进行边的筛选\n\n\n var candidateEdgeNum = candidateEdges.length; // prune:若边数过少,去除该图\n\n if (candidateEdgeNum < pattern.edges.length) {\n candidateGraphs.splice(i, 1);\n return \"break\";\n }\n\n var candidateGraphInvalid = false;\n\n var _loop_5 = function _loop_5(e) {\n var edge = candidateEdges[e];\n var edgeLabel = edge[edgeLabelProp];\n var patternEdgesWithLabel = patternEdgeLabelMap[edgeLabel]; // prune 1: 若边的 label 不存在于 pattern 边 label 中,去除该边\n\n if (!patternEdgesWithLabel || !patternEdgesWithLabel.length) {\n edgeLabelCountMap[edgeLabel]--; // 若这个 label 的 count 减少之后,该 label 的边数不足,去除该图\n\n if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel] < patternEdgesWithLabel.length) {\n candidateGraphInvalid = true;\n return \"break\";\n }\n\n candidateEdges.splice(e, 1);\n candidateNodeMap[edge.source].degree--;\n candidateNodeMap[edge.target].degree--;\n candidateNodeMap[edge.source].outDegree--;\n candidateNodeMap[edge.target].inDegree--;\n return \"continue\";\n } // prune 2: 若边的 label +两端 label 的三元组关系不能在 pattern 中找到,去除该边\n\n\n var sourceLabel = candidateNodeMap[edge.source].node[nodeLabelProp];\n var targetLabel = candidateNodeMap[edge.target].node[nodeLabelProp];\n var edgeMatched = false;\n patternEdgesWithLabel.forEach(function (patternEdge) {\n var patternSource = patternNodeMap[patternEdge.source].node;\n var patternTarget = patternNodeMap[patternEdge.target].node;\n if (patternSource[nodeLabelProp] === sourceLabel && patternTarget[nodeLabelProp] === targetLabel) edgeMatched = true;\n if (!directed && patternSource[nodeLabelProp] === targetLabel && patternTarget[nodeLabelProp] === sourceLabel) edgeMatched = true;\n });\n\n if (!edgeMatched) {\n edgeLabelCountMap[edgeLabel]--; // 若这个 label 的 count 减少之后,该 label 的边数不足,去除该图\n\n if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel] < patternEdgesWithLabel.length) {\n candidateGraphInvalid = true;\n return \"break\";\n }\n\n candidateEdges.splice(e, 1);\n candidateNodeMap[edge.source].degree--;\n candidateNodeMap[edge.target].degree--;\n candidateNodeMap[edge.source].outDegree--;\n candidateNodeMap[edge.target].inDegree--;\n return \"continue\";\n }\n };\n\n for (var e = candidateEdgeNum - 1; e >= 0; e--) {\n var state_2 = _loop_5(e);\n\n if (state_2 === \"break\") break;\n } // prune2: 删除边的过程中,发现边数过少/边 label 数过少时,去除该图\n\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n\n candidateGraph.edges = candidateEdges;\n var lengthsToCandidate = dijkstra(candidateGraph, candidateGraph.nodes[0].id, false).length;\n Object.keys(lengthsToCandidate).reverse().forEach(function (targetId) {\n if (targetId === candidateGraph.nodes[0].id || candidateGraphInvalid) return; // prune4: 通过上述裁剪,可能导致该邻居子图变为不连通。裁剪掉目前在这个邻居子图中和 candidate(第一个节点)不连通的节点\n\n if (lengthsToCandidate[targetId] === Infinity) {\n var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp];\n candidateNodeLabelCountMap[targetNodeLabel]--;\n\n if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) {\n candidateGraphInvalid = true;\n return;\n }\n\n var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node);\n candidateGraph.nodes.splice(idx, 1);\n candidateNodeMap[targetId] = undefined;\n return;\n } // prune5: 经过边裁剪后,可能又出现了最短路径过长的节点 (比 pattern 中同 label 的节点到 beginNode 最大最短距离远),删去这些节点\n\n\n var nLabel = nodeMap[targetId].node[nodeLabelProp];\n\n if (!undirectedLengthsToBeginPNodeLabelMap[nLabel] || !undirectedLengthsToBeginPNodeLabelMap[nLabel].length || lengthsToCandidate[targetId] > undirectedLengthsToBeginPNodeLabelMap[nLabel][undirectedLengthsToBeginPNodeLabelMap[nLabel].length - 1]) {\n var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp];\n candidateNodeLabelCountMap[targetNodeLabel]--;\n\n if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) {\n candidateGraphInvalid = true;\n return;\n }\n\n var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node);\n candidateGraph.nodes.splice(idx, 1);\n candidateNodeMap[targetId] = undefined;\n }\n });\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n\n var degreeChanged = true;\n var loopCount = 0;\n\n while (degreeChanged && !candidateGraphInvalid) {\n degreeChanged = false; // candidate 度数不足,删去该图\n\n var condition = directed ? candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree || candidateNodeMap[candidate.id].inDegree < patternNodeMap[beginPNode.id].inDegree || candidateNodeMap[candidate.id].outDegree < patternNodeMap[beginPNode.id].outDegree : candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree;\n\n if (condition) {\n candidateGraphInvalid = true;\n break;\n } // candidate label 个数不足,删去该图\n\n\n if (candidateNodeLabelCountMap[candidate[nodeLabelProp]] < patternNodeLabelMap[candidate[nodeLabelProp]].length) {\n candidateGraphInvalid = true;\n break;\n } // prune6:去除度数过小的节点\n\n\n var currentCandidateNodeNum = candidateGraph.nodes.length;\n\n for (var o = currentCandidateNodeNum - 1; o >= 0; o--) {\n var cgNode = candidateGraph.nodes[o];\n var nodeDegree = candidateNodeMap[cgNode.id].degree;\n var nodeInDegree = candidateNodeMap[cgNode.id].inDegree;\n var nodeOutDegree = candidateNodeMap[cgNode.id].outDegree;\n var cNodeLabel = cgNode[nodeLabelProp];\n\n var _e = stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, cNodeLabel, patternNodeMap, patternNodeLabelMap),\n minPatternNodeLabelDegree = _e.minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree = _e.minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree = _e.minPatternNodeLabelOutDegree;\n\n var deleteCondition = directed ? nodeDegree < minPatternNodeLabelDegree || nodeInDegree < minPatternNodeLabelInDegree || nodeOutDegree < minPatternNodeLabelOutDegree : nodeDegree < minPatternNodeLabelDegree;\n\n if (deleteCondition) {\n candidateNodeLabelCountMap[cgNode[nodeLabelProp]]--; // 节点 label 个数不足\n\n if (candidateNodeLabelCountMap[cgNode[nodeLabelProp]] < patternNodeLabelMap[cgNode[nodeLabelProp]].length) {\n candidateGraphInvalid = true;\n break;\n }\n\n candidateGraph.nodes.splice(o, 1);\n candidateNodeMap[cgNode.id] = undefined;\n degreeChanged = true;\n }\n }\n\n if (candidateGraphInvalid || !degreeChanged && loopCount !== 0) break; // 经过 prune5 节点裁剪,删去端点已经不在 candidateGraph 中的边\n\n candidateEdgeNum = candidateEdges.length;\n\n for (var y = candidateEdgeNum - 1; y >= 0; y--) {\n var cedge = candidateEdges[y];\n\n if (!candidateNodeMap[cedge.source] || !candidateNodeMap[cedge.target]) {\n candidateEdges.splice(y, 1);\n var edgeLabel = cedge[edgeLabelProp];\n edgeLabelCountMap[edgeLabel]--;\n\n if (candidateNodeMap[cedge.source]) {\n candidateNodeMap[cedge.source].degree--;\n candidateNodeMap[cedge.source].outDegree--;\n }\n\n if (candidateNodeMap[cedge.target]) {\n candidateNodeMap[cedge.target].degree--;\n candidateNodeMap[cedge.target].inDegree--;\n } // 边 label 数量不足\n\n\n if (patternEdgeLabelMap[edgeLabel] && edgeLabelCountMap[edgeLabel] < patternEdgeLabelMap[edgeLabel].length) {\n candidateGraphInvalid = true;\n break;\n }\n\n degreeChanged = true;\n }\n }\n\n loopCount++;\n }\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n } // prune: 若节点/边数过少,节点/边 label 过少,去掉这个图\n\n\n if (candidateGraphInvalid || candidateGraph.nodes.length < pattern.nodes.length || candidateEdges.length < pattern.edges.length) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n };\n\n for (var i = candidateGraphNum - 1; i >= 0; i--) {\n var state_1 = _loop_2(i);\n\n if (state_1 === \"break\") break;\n } // 此时已经生成的多个 candidateGraphs,可能有重复\n // console.log(\n // \"----- stage5: going to splice dulplicated candidate graphs -------\"\n // );\n // 删去 candidateGraphs 中一模一样的子图,通过边的 node-node-edgeLabel 作为 key,这类边个数作为 value,进行匹配\n\n\n var currentLength = candidateGraphs.length;\n\n var _loop_3 = function _loop_3(i) {\n var cg1 = candidateGraphs[i];\n var cg1EdgeMap = {}; // [node1.id-node2.id-edge.label]: count\n\n cg1.edges.forEach(function (edge) {\n var key = \"\".concat(edge.source, \"-\").concat(edge.target, \"-\").concat(edge.label);\n if (!cg1EdgeMap[key]) cg1EdgeMap[key] = 1;else cg1EdgeMap[key]++;\n });\n\n var _loop_6 = function _loop_6(j) {\n var cg2 = candidateGraphs[j];\n var cg2EdgeMap = {}; // [node1.id-node2.id-edge.label]: count\n\n cg2.edges.forEach(function (edge) {\n var key = \"\".concat(edge.source, \"-\").concat(edge.target, \"-\").concat(edge.label);\n if (!cg2EdgeMap[key]) cg2EdgeMap[key] = 1;else cg2EdgeMap[key]++;\n });\n var same = true;\n\n if (Object.keys(cg2EdgeMap).length !== Object.keys(cg1EdgeMap).length) {\n same = false;\n } else {\n Object.keys(cg1EdgeMap).forEach(function (key) {\n if (cg2EdgeMap[key] !== cg1EdgeMap[key]) same = false;\n });\n }\n\n if (same) {\n candidateGraphs.splice(j, 1);\n }\n };\n\n for (var j = currentLength - 1; j > i; j--) {\n _loop_6(j);\n }\n\n currentLength = candidateGraphs.length;\n };\n\n for (var i = 0; i <= currentLength - 1; i++) {\n _loop_3(i);\n }\n\n return candidateGraphs;\n};\n\nexport default GADDI;","import LinkedList from './linked-list';\n\nvar Stack =\n/** @class */\nfunction () {\n function Stack(maxStep) {\n if (maxStep === void 0) {\n maxStep = 10;\n }\n\n this.linkedList = new LinkedList();\n this.maxStep = maxStep;\n }\n\n Object.defineProperty(Stack.prototype, \"length\", {\n get: function get() {\n return this.linkedList.toArray().length;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * 判断栈是否为空,如果链表中没有头部元素,则栈为空\n */\n\n Stack.prototype.isEmpty = function () {\n return !this.linkedList.head;\n };\n /**\n * 是否到定义的栈的最大长度,如果达到最大长度后,不再允许入栈\n */\n\n\n Stack.prototype.isMaxStack = function () {\n return this.toArray().length >= this.maxStep;\n };\n /**\n * 访问顶端元素\n */\n\n\n Stack.prototype.peek = function () {\n if (this.isEmpty()) {\n return null;\n } // 返回头部元素,不删除元素\n\n\n return this.linkedList.head.value;\n };\n\n Stack.prototype.push = function (value) {\n this.linkedList.prepend(value);\n\n if (this.length > this.maxStep) {\n this.linkedList.deleteTail();\n }\n };\n\n Stack.prototype.pop = function () {\n var removeHead = this.linkedList.deleteHead();\n return removeHead ? removeHead.value : null;\n };\n\n Stack.prototype.toArray = function () {\n return this.linkedList.toArray().map(function (node) {\n return node.value;\n });\n };\n\n Stack.prototype.clear = function () {\n while (!this.isEmpty()) {\n this.pop();\n }\n };\n\n return Stack;\n}();\n\nexport default Stack;","import getAdjMatrix from './adjacent-matrix';\nimport breadthFirstSearch from './bfs';\nimport connectedComponent from './connected-component';\nimport getDegree from './degree';\nimport { getInDegree, getOutDegree } from './degree';\nimport detectCycle, { detectAllCycles, detectAllDirectedCycle, detectAllUndirectedCycle } from './detect-cycle';\nimport depthFirstSearch from './dfs';\nimport dijkstra from './dijkstra';\nimport { findAllPath, findShortestPath } from './find-path';\nimport floydWarshall from './floydWarshall';\nimport labelPropagation from './label-propagation';\nimport louvain from './louvain';\nimport iLouvain from './i-louvain';\nimport kCore from './k-core';\nimport kMeans from './k-means';\nimport cosineSimilarity from './cosine-similarity';\nimport nodesCosineSimilarity from './nodes-cosine-similarity';\nimport minimumSpanningTree from './mts';\nimport pageRank from './pageRank';\nimport GADDI from './gaddi';\nimport Stack from './structs/stack';\nimport { getNeighbors } from './util';\nvar detectDirectedCycle = detectCycle;\nexport { getAdjMatrix, breadthFirstSearch, connectedComponent, getDegree, getInDegree, getOutDegree, detectCycle, detectDirectedCycle, detectAllCycles, detectAllDirectedCycle, detectAllUndirectedCycle, depthFirstSearch, dijkstra, findAllPath, findShortestPath, floydWarshall, labelPropagation, louvain, iLouvain, kCore, kMeans, cosineSimilarity, nodesCosineSimilarity, minimumSpanningTree, pageRank, getNeighbors, Stack, GADDI };\nexport default {\n getAdjMatrix: getAdjMatrix,\n breadthFirstSearch: breadthFirstSearch,\n connectedComponent: connectedComponent,\n getDegree: getDegree,\n getInDegree: getInDegree,\n getOutDegree: getOutDegree,\n detectCycle: detectCycle,\n detectDirectedCycle: detectDirectedCycle,\n detectAllCycles: detectAllCycles,\n detectAllDirectedCycle: detectAllDirectedCycle,\n detectAllUndirectedCycle: detectAllUndirectedCycle,\n depthFirstSearch: depthFirstSearch,\n dijkstra: dijkstra,\n findAllPath: findAllPath,\n findShortestPath: findShortestPath,\n floydWarshall: floydWarshall,\n labelPropagation: labelPropagation,\n louvain: louvain,\n iLouvain: iLouvain,\n kCore: kCore,\n kMeans: kMeans,\n cosineSimilarity: cosineSimilarity,\n nodesCosineSimilarity: nodesCosineSimilarity,\n minimumSpanningTree: minimumSpanningTree,\n pageRank: pageRank,\n getNeighbors: getNeighbors,\n Stack: Stack,\n GADDI: GADDI\n};","import { mat3, vec3, ext, vec2 } from '@antv/matrix-util';\nimport { isArray, each } from '@antv/util';\nvar transform = ext.transform;\n/**\n * 对比对象,用于对象数组排序\n * @param {string} attributeName 排序依据的字段名称\n * @param {number} min 最小值\n * @param {number} max 最大值\n * @return {boolean} bool 布尔\n */\nexport var compare = function compare(attributeName) {\n return function (m, n) {\n return m[attributeName] - n[attributeName];\n };\n};\n/**\n * 是否在区间内\n * @param {number} value 值\n * @param {number} min 最小值\n * @param {number} max 最大值\n * @return {boolean} bool 布尔\n */\nvar isBetween = function isBetween(value, min, max) {\n return value >= min && value <= max;\n};\n/**\n * 获取两条线段的交点\n * @param {Point} p0 第一条线段起点\n * @param {Point} p1 第一条线段终点\n * @param {Point} p2 第二条线段起点\n * @param {Point} p3 第二条线段终点\n * @return {Point} 交点\n */\nexport var getLineIntersect = function getLineIntersect(p0, p1, p2, p3) {\n var tolerance = 0.0001;\n var E = {\n x: p2.x - p0.x,\n y: p2.y - p0.y\n };\n var D0 = {\n x: p1.x - p0.x,\n y: p1.y - p0.y\n };\n var D1 = {\n x: p3.x - p2.x,\n y: p3.y - p2.y\n };\n var kross = D0.x * D1.y - D0.y * D1.x;\n var sqrKross = kross * kross;\n var invertKross = 1 / kross;\n var sqrLen0 = D0.x * D0.x + D0.y * D0.y;\n var sqrLen1 = D1.x * D1.x + D1.y * D1.y;\n if (sqrKross > tolerance * sqrLen0 * sqrLen1) {\n var s = (E.x * D1.y - E.y * D1.x) * invertKross;\n var t = (E.x * D0.y - E.y * D0.x) * invertKross;\n if (!isBetween(s, 0, 1) || !isBetween(t, 0, 1)) return null;\n return {\n x: p0.x + s * D0.x,\n y: p0.y + s * D0.y\n };\n }\n return null;\n};\n/**\n * point and rectangular intersection point\n * @param {IRect} rect rect\n * @param {Point} point point\n * @return {PointPoint} rst;\n */\nexport var getRectIntersectByPoint = function getRectIntersectByPoint(rect, point) {\n var x = rect.x,\n y = rect.y,\n width = rect.width,\n height = rect.height;\n var cx = x + width / 2;\n var cy = y + height / 2;\n var points = [];\n var center = {\n x: cx,\n y: cy\n };\n points.push({\n x: x,\n y: y\n });\n points.push({\n x: x + width,\n y: y\n });\n points.push({\n x: x + width,\n y: y + height\n });\n points.push({\n x: x,\n y: y + height\n });\n points.push({\n x: x,\n y: y\n });\n var rst = null;\n for (var i = 1; i < points.length; i++) {\n rst = getLineIntersect(points[i - 1], points[i], center, point);\n if (rst) {\n break;\n }\n }\n return rst;\n};\n/**\n * get point and circle inIntersect\n * @param {ICircle} circle 圆点,x,y,r\n * @param {Point} point 点 x,y\n * @return {Point} applied point\n */\nexport var getCircleIntersectByPoint = function getCircleIntersectByPoint(circle, point) {\n var cx = circle.x,\n cy = circle.y,\n r = circle.r;\n var x = point.x,\n y = point.y;\n var dx = x - cx;\n var dy = y - cy;\n if (dx * dx + dy * dy < r * r) {\n return null;\n }\n var angle = Math.atan(dy / dx);\n return {\n x: cx + Math.abs(r * Math.cos(angle)) * Math.sign(dx),\n y: cy + Math.abs(r * Math.sin(angle)) * Math.sign(dy)\n };\n};\n/**\n * get point and ellipse inIntersect\n * @param {Object} ellipse 椭圆 x,y,rx,ry\n * @param {Object} point 点 x,y\n * @return {object} applied point\n */\nexport var getEllipseIntersectByPoint = function getEllipseIntersectByPoint(ellipse, point) {\n var a = ellipse.rx;\n var b = ellipse.ry;\n var cx = ellipse.x;\n var cy = ellipse.y;\n var dx = point.x - cx;\n var dy = point.y - cy;\n // 直接通过 x,y 求夹角,求出来的范围是 -PI, PI\n var angle = Math.atan2(dy / b, dx / a);\n if (angle < 0) {\n angle += 2 * Math.PI; // 转换到 0,2PI\n }\n\n return {\n x: cx + a * Math.cos(angle),\n y: cy + b * Math.sin(angle)\n };\n};\n/**\n * coordinate matrix transformation\n * @param {number} point coordinate\n * @param {Matrix} matrix matrix\n * @param {number} tag could be 0 or 1\n * @return {Point} transformed point\n */\nexport var applyMatrix = function applyMatrix(point, matrix, tag) {\n if (tag === void 0) {\n tag = 1;\n }\n var vector = [point.x, point.y, tag];\n if (!matrix || isNaN(matrix[0])) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n vec3.transformMat3(vector, vector, matrix);\n return {\n x: vector[0],\n y: vector[1]\n };\n};\n/**\n * coordinate matrix invert transformation\n * @param {number} point coordinate\n * @param {number} matrix matrix\n * @param {number} tag could be 0 or 1\n * @return {object} transformed point\n */\nexport var invertMatrix = function invertMatrix(point, matrix, tag) {\n if (tag === void 0) {\n tag = 1;\n }\n if (!matrix || isNaN(matrix[0])) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n var inversedMatrix = mat3.invert([1, 0, 0, 0, 1, 0, 0, 0, 1], matrix);\n if (!inversedMatrix) {\n inversedMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n var vector = [point.x, point.y, tag];\n vec3.transformMat3(vector, vector, inversedMatrix);\n return {\n x: vector[0],\n y: vector[1]\n };\n};\n/**\n *\n * @param p1 First coordinate\n * @param p2 second coordinate\n * @param p3 three coordinate\n */\nexport var getCircleCenterByPoints = function getCircleCenterByPoints(p1, p2, p3) {\n var a = p1.x - p2.x;\n var b = p1.y - p2.y;\n var c = p1.x - p3.x;\n var d = p1.y - p3.y;\n var e = (p1.x * p1.x - p2.x * p2.x - p2.y * p2.y + p1.y * p1.y) / 2;\n var f = (p1.x * p1.x - p3.x * p3.x - p3.y * p3.y + p1.y * p1.y) / 2;\n var denominator = b * c - a * d;\n return {\n x: -(d * e - b * f) / denominator,\n y: -(a * f - c * e) / denominator\n };\n};\n/**\n * get distance by two points\n * @param p1 first point\n * @param p2 second point\n */\nexport var distance = function distance(p1, p2) {\n var vx = p1.x - p2.x;\n var vy = p1.y - p2.y;\n return Math.sqrt(vx * vx + vy * vy);\n};\n/**\n * scale matrix\n * @param matrix [ [], [], [] ]\n * @param ratio\n */\nexport var scaleMatrix = function scaleMatrix(matrix, ratio) {\n var result = [];\n matrix.forEach(function (row) {\n var newRow = [];\n row.forEach(function (v) {\n newRow.push(v * ratio);\n });\n result.push(newRow);\n });\n return result;\n};\n/**\n * Floyd Warshall algorithm for shortest path distances matrix\n * @param {array} adjMatrix adjacency matrix\n * @return {array} distances shortest path distances matrix\n */\nexport var floydWarshall = function floydWarshall(adjMatrix) {\n // initialize\n var dist = [];\n var size = adjMatrix.length;\n for (var i = 0; i < size; i += 1) {\n dist[i] = [];\n for (var j = 0; j < size; j += 1) {\n if (i === j) {\n dist[i][j] = 0;\n } else if (adjMatrix[i][j] === 0 || !adjMatrix[i][j]) {\n dist[i][j] = Infinity;\n } else {\n dist[i][j] = adjMatrix[i][j];\n }\n }\n }\n // floyd\n for (var k = 0; k < size; k += 1) {\n for (var i = 0; i < size; i += 1) {\n for (var j = 0; j < size; j += 1) {\n if (dist[i][j] > dist[i][k] + dist[k][j]) {\n dist[i][j] = dist[i][k] + dist[k][j];\n }\n }\n }\n }\n return dist;\n};\n/**\n * get adjacency matrix\n * @param data graph data\n * @param directed whether it's a directed graph\n */\nexport var getAdjMatrix = function getAdjMatrix(data, directed) {\n var nodes = data.nodes,\n edges = data.edges;\n var matrix = [];\n // map node with index in data.nodes\n var nodeMap = {};\n if (!nodes) {\n throw new Error('invalid nodes data!');\n }\n if (nodes) {\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = i;\n var row = [];\n matrix.push(row);\n });\n }\n if (edges) {\n edges.forEach(function (e) {\n var source = e.source,\n target = e.target;\n var sIndex = nodeMap[source];\n var tIndex = nodeMap[target];\n matrix[sIndex][tIndex] = 1;\n if (!directed) {\n matrix[tIndex][sIndex] = 1;\n }\n });\n }\n return matrix;\n};\n/**\n * 平移group\n * @param group Group 实例\n * @param vec 移动向量\n */\nexport var translate = function translate(group, vec) {\n group.translate(vec.x, vec.y);\n};\n/**\n * 移动到指定坐标点\n * @param group Group 实例\n * @param point 移动到的坐标点\n */\nexport var move = function move(group, point, animate, animateCfg) {\n if (animateCfg === void 0) {\n animateCfg = {\n duration: 500\n };\n }\n var matrix = group.getMatrix();\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n var bbox = group.getCanvasBBox();\n var vx = point.x - bbox.minX;\n var vy = point.y - bbox.minY;\n if (animate) {\n var dx_1 = vx * matrix[0];\n var dy_1 = vy * matrix[4];\n var lastX_1 = 0;\n var lastY_1 = 0;\n var newX_1 = 0;\n var newY_1 = 0;\n group.animate(function (ratio) {\n newX_1 = dx_1 * ratio;\n newY_1 = dy_1 * ratio;\n matrix = transform(matrix, [['t', newX_1 - lastX_1, newY_1 - lastY_1]]);\n lastX_1 = newX_1;\n lastY_1 = newY_1;\n return {\n matrix: matrix\n };\n }, animateCfg);\n } else {\n var movedMatrix = transform(matrix, [['t', vx, vy]]);\n group.setMatrix(movedMatrix);\n }\n};\n/**\n * 缩放 group\n * @param group Group 实例\n * @param point 在x 和 y 方向上的缩放比例\n */\nexport var scale = function scale(group, ratio) {\n var matrix = group.getMatrix();\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n var scaleXY = ratio;\n if (!isArray(ratio)) {\n scaleXY = [ratio, ratio];\n }\n if (isArray(ratio) && ratio.length === 1) {\n scaleXY = [ratio[0], ratio[0]];\n }\n matrix = transform(matrix, [['s', scaleXY[0], scaleXY[1]]]);\n group.setMatrix(matrix);\n};\n/**\n *\n * @param group Group 实例\n * @param ratio 选择角度\n */\nexport var rotate = function rotate(group, angle) {\n var matrix = group.getMatrix();\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n matrix = transform(matrix, [['r', angle]]);\n group.setMatrix(matrix);\n};\nexport var getDegree = function getDegree(n, nodeIdxMap, edges) {\n var degrees = [];\n for (var i = 0; i < n; i++) {\n degrees[i] = 0;\n }\n edges.forEach(function (e) {\n if (e.source) {\n degrees[nodeIdxMap[e.source]] += 1;\n }\n if (e.target) {\n degrees[nodeIdxMap[e.target]] += 1;\n }\n });\n return degrees;\n};\n// 判断点Q是否在p1和p2的线段上\nfunction onSegment(p1, p2, q) {\n if ((q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) && Math.min(p1[0], p2[0]) <= q[0] && q[0] <= Math.max(p1[0], p2[0]) && Math.min(p1[1], p2[1]) <= q[1] && q[1] <= Math.max(p1[1], p2[1])) {\n return true;\n }\n return false;\n}\n/**\n * 判断点P在多边形内-射线法. Borrow from https://github.com/antvis/util/blob/master/packages/path-util/src/point-in-polygon.ts\n * @param points\n * @param x\n * @param y\n */\nexport var isPointInPolygon = function isPointInPolygon(points, x, y) {\n var isHit = false;\n var n = points.length;\n // 判断两个double在eps精度下的大小关系\n var tolerance = 1e-6;\n function dcmp(xValue) {\n if (Math.abs(xValue) < tolerance) {\n return 0;\n }\n return xValue < 0 ? -1 : 1;\n }\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n for (var i = 0; i < n; i++) {\n var p1 = points[i];\n var p2 = points[(i + 1) % n];\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n }\n // 前一个判断min(p1[1],p2[1]) 0 !== dcmp(p2[1] - y) > 0 && dcmp(x - (y - p1[1]) * (p1[0] - p2[0]) / (p1[1] - p2[1]) - p1[0]) < 0) {\n isHit = !isHit;\n }\n }\n return isHit;\n};\n// 判断两个BBox是否相交\nexport var intersectBBox = function intersectBBox(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n};\nvar lineIntersectPolygon = function lineIntersectPolygon(lines, line) {\n var isIntersect = false;\n each(lines, function (l) {\n if (getLineIntersect(l.from, l.to, line.from, line.to)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n};\n/**\n * 判断两个polygon是否相交。\n * borrow from @antv/path-util\n * @param points1 polygon1的顶点数组\n * @param points2 polygon2的顶点数组\n */\nexport var isPolygonsIntersect = function isPolygonsIntersect(points1, points2) {\n var getBBox = function getBBox(points) {\n var xArr = points.map(function (p) {\n return p[0];\n });\n var yArr = points.map(function (p) {\n return p[1];\n });\n return {\n minX: Math.min.apply(null, xArr),\n maxX: Math.max.apply(null, xArr),\n minY: Math.min.apply(null, yArr),\n maxY: Math.max.apply(null, yArr)\n };\n };\n var parseToLines = function parseToLines(points) {\n var lines = [];\n var count = points.length;\n for (var i = 0; i < count - 1; i++) {\n var point = points[i];\n var next = points[i + 1];\n lines.push({\n from: {\n x: point[0],\n y: point[1]\n },\n to: {\n x: next[0],\n y: next[1]\n }\n });\n }\n if (lines.length > 1) {\n var first = points[0];\n var last = points[count - 1];\n lines.push({\n from: {\n x: last[0],\n y: last[1]\n },\n to: {\n x: first[0],\n y: first[1]\n }\n });\n }\n return lines;\n };\n // 空数组,或者一个点返回 false\n if (points1.length < 2 || points2.length < 2) {\n return false;\n }\n var bbox1 = getBBox(points1);\n var bbox2 = getBBox(points2);\n // 判定包围盒是否相交,比判定点是否在多边形内要快的多,可以筛选掉大多数情况\n if (!intersectBBox(bbox1, bbox2)) {\n return false;\n }\n var isIn = false;\n // 判定点是否在多边形内部,一旦有一个点在另一个多边形内,则返回\n each(points2, function (point) {\n if (isPointInPolygon(points1, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n if (isIn) {\n return true;\n }\n each(points1, function (point) {\n if (isPointInPolygon(points2, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n if (isIn) {\n return true;\n }\n var lines1 = parseToLines(points1);\n var lines2 = parseToLines(points2);\n var isIntersect = false;\n each(lines2, function (line) {\n if (lineIntersectPolygon(lines1, line)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n};\nvar Line = /** @class */function () {\n function Line(x1, y1, x2, y2) {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n }\n Line.prototype.getBBox = function () {\n var minX = Math.min(this.x1, this.x2);\n var minY = Math.min(this.y1, this.y2);\n var maxX = Math.max(this.x1, this.x2);\n var maxY = Math.max(this.y1, this.y2);\n var res = {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n return res;\n };\n return Line;\n}();\nexport { Line };\nexport var getBBoxBoundLine = function getBBoxBoundLine(bbox, direction) {\n var bounds = {\n top: [bbox.minX, bbox.minY, bbox.maxX, bbox.minY],\n left: [bbox.minX, bbox.minY, bbox.minX, bbox.maxY],\n bottom: [bbox.minX, bbox.maxY, bbox.maxX, bbox.maxY],\n right: [bbox.maxX, bbox.minY, bbox.maxX, bbox.maxY]\n };\n return bounds[direction];\n};\n/**\n * 计算两条线段相交时,相交点对第一条线段上的分割比例\n */\nvar fractionAlongLineA = function fractionAlongLineA(la, lb) {\n var uaT = (lb.x2 - lb.x1) * (la.y1 - lb.y1) - (lb.y2 - lb.y1) * (la.x1 - lb.x1);\n var ubT = (la.x2 - la.x1) * (la.y1 - lb.y1) - (la.y2 - la.y1) * (la.x1 - lb.x1);\n var uB = (lb.y2 - lb.y1) * (la.x2 - la.x1) - (lb.x2 - lb.x1) * (la.y2 - la.y1);\n if (uB) {\n var ua = uaT / uB;\n var ub = ubT / uB;\n if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) {\n return ua;\n }\n }\n return Number.POSITIVE_INFINITY;\n};\nexport var itemIntersectByLine = function itemIntersectByLine(item, line) {\n var directions = ['top', 'left', 'bottom', 'right'];\n var bbox = item.getBBox();\n var countIntersections = 0;\n var intersections = [];\n for (var i = 0; i < 4; i++) {\n var _a = getBBoxBoundLine(bbox, directions[i]),\n x1 = _a[0],\n y1 = _a[1],\n x2 = _a[2],\n y2 = _a[3];\n intersections[i] = getLineIntersect({\n x: line.x1,\n y: line.y1\n }, {\n x: line.x2,\n y: line.y2\n }, {\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n });\n if (intersections[i]) {\n countIntersections += 1;\n }\n }\n return [intersections, countIntersections];\n};\nexport var fractionToLine = function fractionToLine(item, line) {\n var directions = ['top', 'left', 'bottom', 'right'];\n var bbox = item.getBBox();\n var minDistance = Number.POSITIVE_INFINITY;\n var countIntersections = 0;\n for (var i = 0; i < 4; i++) {\n var _a = getBBoxBoundLine(bbox, directions[i]),\n x1 = _a[0],\n y1 = _a[1],\n x2 = _a[2],\n y2 = _a[3];\n var testDistance = fractionAlongLineA(line, new Line(x1, y1, x2, y2));\n testDistance = Math.abs(testDistance - 0.5);\n if (testDistance >= 0 && testDistance <= 1) {\n countIntersections += 1;\n minDistance = testDistance < minDistance ? testDistance : minDistance;\n }\n }\n if (countIntersections === 0) return -1;\n return minDistance;\n};\nexport var getPointsCenter = function getPointsCenter(points) {\n var centerX = 0;\n var centerY = 0;\n if (points.length > 0) {\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n centerX += point.x;\n centerY += point.y;\n }\n centerX /= points.length;\n centerY /= points.length;\n }\n return {\n x: centerX,\n y: centerY\n };\n};\nexport var squareDist = function squareDist(a, b) {\n return Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2);\n};\nexport var pointLineSquareDist = function pointLineSquareDist(point, line) {\n var x1 = line.x1;\n var y1 = line.y1;\n var x2 = line.x2 - x1;\n var y2 = line.y2 - y1;\n var px = point.x - x1;\n var py = point.y - y1;\n var dotprod = px * x2 + py * y2;\n var projlenSq;\n if (dotprod <= 0) {\n projlenSq = 0;\n } else {\n px = x2 - px;\n py = y2 - py;\n dotprod = px * x2 + py * y2;\n if (dotprod <= 0) {\n projlenSq = 0;\n } else {\n projlenSq = dotprod * dotprod / (x2 * x2 + y2 * y2);\n }\n }\n var lenSq = px * px + py * py - projlenSq;\n if (lenSq < 0) {\n lenSq = 0;\n }\n return lenSq;\n};\nexport var isPointsOverlap = function isPointsOverlap(p1, p2, e) {\n if (e === void 0) {\n e = 1e-3;\n }\n return Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2) < Math.pow(e, 2);\n};\n/**\n * 点到矩形的距离的平方:矩形内部点视作距离为0,外部的点若投影落在矩形边上则为点到矩形边的最近的垂直距离,否则为点到矩形顶点的距离,\n * @param point IPoint\n * @param rect IRect\n */\nexport var pointRectSquareDist = function pointRectSquareDist(point, rect) {\n var isLeft = point.x < rect.x;\n var isRight = point.x > rect.x + rect.width;\n var isTop = point.y > rect.y + rect.height;\n var isBottom = point.y < rect.y;\n var isPointOutside = isLeft || isRight || isTop || isBottom;\n if (!isPointOutside) {\n return 0;\n }\n if (isTop && !isLeft && !isRight) {\n return Math.pow(rect.y + rect.height - point.y, 2);\n }\n if (isBottom && !isLeft && !isRight) {\n return Math.pow(point.y - rect.y, 2);\n }\n if (isLeft && !isTop && !isBottom) {\n return Math.pow(rect.x - point.x, 2);\n }\n if (isRight && !isTop && !isBottom) {\n return Math.pow(rect.x + rect.width - point.x, 2);\n }\n var dx = Math.min(Math.abs(rect.x - point.x), Math.abs(rect.x + rect.width - point.x));\n var dy = Math.min(Math.abs(rect.y - point.y), Math.abs(rect.y + rect.height - point.y));\n return dx * dx + dy * dy;\n};\n/**\n * point to line distance\n * @param {array} line 线的四个顶点 [x1, y1, x2, y2]\n * @param {object} point 坐标点 {x, y}\n * @return {Number|NaN} distance\n */\nexport var pointLineDistance = function pointLineDistance(line, point) {\n var x1 = line[0],\n y1 = line[1],\n x2 = line[2],\n y2 = line[3];\n var x = point.x,\n y = point.y;\n var d = [x2 - x1, y2 - y1];\n if (vec2.exactEquals(d, [0, 0])) {\n return NaN;\n }\n var u = [-d[1], d[0]];\n // @ts-ignore\n vec2.normalize(u, u);\n var a = [x - x1, y - y1];\n // @ts-ignore\n return Math.abs(vec2.dot(a, u));\n};\n/**\n * Linearly interpolate between start and end, where alpha is the percent distance along the line.\n * alpha = 0 will be start, and alpha = 1 will be end.\n * @param {number} start\n * @param {number} end\n * @param {number} alpha interpolation factor, typically in the closed interval [0, 1]\n * @returns {number}\n */\nexport var lerp = function lerp(start, end, alpha) {\n return start + (end - start) * alpha;\n};\n/**\n * Linearly interpolate between start and end arrays, where alpha is the percent distance along the line.\n * alpha = 0 will be start, and alpha = 1 will be end.\n * @param {number[]} start\n * @param {number[]} end\n * @param {number} alpha interpolation factor, typically in the closed interval [0, 1]\n * @returns {number[]}\n */\nexport var lerpArray = function lerpArray(start, end, alpha) {\n var len = Math.min(start.length, end.length);\n var out = new Array(len);\n for (var i = 0; i < len; i++) {\n out[i] = lerp(start[i], end[i], alpha);\n }\n return out;\n};","var subjectColor = 'rgb(95, 149, 255)';\nvar backColor = 'rgb(255, 255, 255)';\nvar textColor = 'rgb(0, 0, 0)';\nvar activeFill = 'rgb(247, 250, 255)';\nvar nodeMainFill = 'rgb(239, 244, 255)';\nvar comboFill = 'rgb(253, 253, 253)';\nvar disabledFill = 'rgb(250, 250, 250)';\nvar edgeMainStroke = 'rgb(224, 224, 224)';\nvar edgeInactiveStroke = 'rgb(234, 234, 234)';\nvar edgeDisablesStroke = 'rgb(245, 245, 245)';\nvar inactiveStroke = 'rgb(191, 213, 255)';\nvar highlightStroke = '#4572d9';\nvar highlightFill = 'rgb(223, 234, 255)';\nvar colorSet = {\n // for nodes\n mainStroke: subjectColor,\n mainFill: nodeMainFill,\n activeStroke: subjectColor,\n activeFill: activeFill,\n inactiveStroke: inactiveStroke,\n inactiveFill: activeFill,\n selectedStroke: subjectColor,\n selectedFill: backColor,\n highlightStroke: highlightStroke,\n highlightFill: highlightFill,\n disableStroke: edgeMainStroke,\n disableFill: disabledFill,\n // for edges\n edgeMainStroke: edgeMainStroke,\n edgeActiveStroke: subjectColor,\n edgeInactiveStroke: edgeInactiveStroke,\n edgeSelectedStroke: subjectColor,\n edgeHighlightStroke: subjectColor,\n edgeDisableStroke: edgeDisablesStroke,\n // for combos\n comboMainStroke: edgeMainStroke,\n comboMainFill: comboFill,\n comboActiveStroke: subjectColor,\n comboActiveFill: activeFill,\n comboInactiveStroke: edgeMainStroke,\n comboInactiveFill: comboFill,\n comboSelectedStroke: subjectColor,\n comboSelectedFill: comboFill,\n comboHighlightStroke: highlightStroke,\n comboHighlightFill: comboFill,\n comboDisableStroke: edgeInactiveStroke,\n comboDisableFill: disabledFill\n};\nexport default {\n version: '0.8.3',\n rootContainerClassName: 'root-container',\n nodeContainerClassName: 'node-container',\n edgeContainerClassName: 'edge-container',\n comboContainerClassName: 'combo-container',\n delegateContainerClassName: 'delegate-container',\n defaultLoopPosition: 'top',\n nodeLabel: {\n style: {\n fill: '#000',\n fontSize: 12,\n textAlign: 'center',\n textBaseline: 'middle'\n },\n offset: 4 // 节点的默认文本不居中时的偏移量\n },\n\n defaultNode: {\n type: 'circle',\n style: {\n lineWidth: 1,\n stroke: colorSet.mainStroke,\n fill: nodeMainFill\n },\n size: 20,\n color: colorSet.mainStroke,\n linkPoints: {\n size: 8,\n lineWidth: 1,\n fill: colorSet.activeFill,\n stroke: colorSet.activeStroke\n }\n },\n // 节点应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n nodeStateStyles: {\n active: {\n fill: colorSet.activeFill,\n stroke: colorSet.activeStroke,\n lineWidth: 2,\n shadowColor: colorSet.mainStroke,\n shadowBlur: 10\n },\n selected: {\n fill: colorSet.selectedFill,\n stroke: colorSet.selectedStroke,\n lineWidth: 4,\n shadowColor: colorSet.selectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n fill: colorSet.highlightFill,\n stroke: colorSet.highlightStroke,\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n fill: colorSet.inactiveFill,\n stroke: colorSet.inactiveStroke,\n lineWidth: 1\n },\n disable: {\n fill: colorSet.disableFill,\n stroke: colorSet.disableStroke,\n lineWidth: 1\n }\n },\n edgeLabel: {\n style: {\n fill: textColor,\n textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 12\n }\n },\n defaultEdge: {\n type: 'line',\n size: 1,\n style: {\n stroke: colorSet.edgeMainStroke,\n lineAppendWidth: 2\n },\n color: colorSet.edgeMainStroke\n },\n // 边应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n edgeStateStyles: {\n active: {\n stroke: colorSet.edgeActiveStroke,\n lineWidth: 1\n },\n selected: {\n stroke: colorSet.edgeSelectedStroke,\n lineWidth: 2,\n shadowColor: colorSet.edgeSelectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n stroke: colorSet.edgeHighlightStroke,\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n stroke: colorSet.edgeInactiveStroke,\n lineWidth: 1\n },\n disable: {\n stroke: colorSet.edgeDisableStroke,\n lineWidth: 1\n }\n },\n comboLabel: {\n style: {\n fill: textColor,\n // textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 12\n },\n refY: 10,\n refX: 10 // Combo 的默认文本不居中时的偏移量\n },\n\n defaultCombo: {\n type: 'circle',\n style: {\n fill: colorSet.comboMainFill,\n lineWidth: 1,\n stroke: colorSet.comboMainStroke,\n r: 5,\n width: 20,\n height: 10\n },\n size: [20, 5],\n color: colorSet.comboMainStroke,\n padding: [25, 20, 15, 20]\n },\n // combo 应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n comboStateStyles: {\n active: {\n stroke: colorSet.comboActiveStroke,\n lineWidth: 1,\n fill: colorSet.comboActiveFill\n },\n selected: {\n stroke: colorSet.comboSelectedStroke,\n lineWidth: 2,\n fill: colorSet.comboSelectedFill,\n shadowColor: colorSet.comboSelectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n stroke: colorSet.comboHighlightStroke,\n lineWidth: 2,\n fill: colorSet.comboHighlightFill,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n stroke: colorSet.comboInactiveStroke,\n fill: colorSet.comboInactiveFill,\n lineWidth: 1\n },\n disable: {\n stroke: colorSet.comboDisableStroke,\n fill: colorSet.comboDisableFill,\n lineWidth: 1\n }\n },\n delegateStyle: {\n fill: '#F3F9FF',\n fillOpacity: 0.5,\n stroke: '#1890FF',\n strokeOpacity: 0.9,\n lineDash: [5, 5]\n },\n windowFontFamily: typeof window !== 'undefined' && window.getComputedStyle && document.body ? window.getComputedStyle(document.body, null).getPropertyValue('font-family') || 'Arial, sans-serif' : 'Arial, sans-serif'\n};","export default {\n ' ': 0.3329986572265625,\n a: 0.5589996337890625,\n A: 0.6569992065429687,\n b: 0.58599853515625,\n B: 0.6769989013671875,\n c: 0.5469985961914062,\n C: 0.7279998779296875,\n d: 0.58599853515625,\n D: 0.705999755859375,\n e: 0.554998779296875,\n E: 0.63699951171875,\n f: 0.37299957275390627,\n F: 0.5769989013671875,\n g: 0.5909988403320312,\n G: 0.7479995727539063,\n h: 0.555999755859375,\n H: 0.7199996948242188,\n i: 0.255999755859375,\n I: 0.23699951171875,\n j: 0.26699981689453123,\n J: 0.5169998168945312,\n k: 0.5289993286132812,\n K: 0.6899993896484375,\n l: 0.23499908447265624,\n L: 0.5879989624023437,\n m: 0.854998779296875,\n M: 0.8819992065429687,\n n: 0.5589996337890625,\n N: 0.7189987182617188,\n o: 0.58599853515625,\n O: 0.7669998168945312,\n p: 0.58599853515625,\n P: 0.6419998168945312,\n q: 0.58599853515625,\n Q: 0.7669998168945312,\n r: 0.3649993896484375,\n R: 0.6759994506835938,\n s: 0.504998779296875,\n S: 0.6319992065429687,\n t: 0.354998779296875,\n T: 0.6189987182617187,\n u: 0.5599990844726562,\n U: 0.7139999389648437,\n v: 0.48199920654296874,\n V: 0.6389999389648438,\n w: 0.754998779296875,\n W: 0.929998779296875,\n x: 0.5089996337890625,\n X: 0.63699951171875,\n y: 0.4959991455078125,\n Y: 0.66199951171875,\n z: 0.48699951171875,\n Z: 0.6239990234375,\n '0': 0.6,\n '1': 0.40099945068359377,\n '2': 0.6,\n '3': 0.6,\n '4': 0.6,\n '5': 0.6,\n '6': 0.6,\n '7': 0.5469985961914062,\n '8': 0.6,\n '9': 0.6,\n '[': 0.3329986572265625,\n ']': 0.3329986572265625,\n ',': 0.26399993896484375,\n '.': 0.26399993896484375,\n ';': 0.26399993896484375,\n ':': 0.26399993896484375,\n '{': 0.3329986572265625,\n '}': 0.3329986572265625,\n '\\\\': 0.5,\n '|': 0.19499969482421875,\n '=': 0.604998779296875,\n '+': 0.604998779296875,\n '-': 0.604998779296875,\n _: 0.5,\n '`': 0.3329986572265625,\n ' ~': 0.8329986572265625,\n '!': 0.3329986572265625,\n '@': 0.8579986572265625,\n '#': 0.6,\n $: 0.6,\n '%': 0.9699996948242188,\n '^': 0.517999267578125,\n '&': 0.7259994506835937,\n '*': 0.505999755859375,\n '(': 0.3329986572265625,\n ')': 0.3329986572265625,\n '<': 0.604998779296875,\n '>': 0.604998779296875,\n '/': 0.5,\n '?': 0.53699951171875\n};","import { __assign } from \"tslib\";\nimport { vec2 } from '@antv/matrix-util';\nimport Global from '../global';\nimport { applyMatrix } from './math';\nimport letterAspectRatio from './letterAspectRatio';\nimport { isString, clone, isNumber, isObject, isArray } from '@antv/util';\nvar PI = Math.PI,\n sin = Math.sin,\n cos = Math.cos;\n// 一共支持8个方向的自环,每个环占的角度是45度,在计算时再二分,为22.5度\nvar SELF_LINK_SIN = sin(PI / 8);\nvar SELF_LINK_COS = cos(PI / 8);\nexport var getBBox = function getBBox(element, group) {\n var bbox = element.getBBox();\n var leftTop = {\n x: bbox.minX,\n y: bbox.minY\n };\n var rightBottom = {\n x: bbox.maxX,\n y: bbox.maxY\n };\n // 根据父元素变换矩阵\n if (group) {\n var matrix = group.getMatrix();\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n leftTop = applyMatrix(leftTop, matrix);\n rightBottom = applyMatrix(rightBottom, matrix);\n }\n var lx = leftTop.x,\n ly = leftTop.y;\n var rx = rightBottom.x,\n ry = rightBottom.y;\n return {\n x: lx,\n y: ly,\n minX: lx,\n minY: ly,\n maxX: rx,\n maxY: ry,\n width: rx - lx,\n height: ry - ly\n };\n};\n/**\n * get loop edge config\n * @param cfg edge config\n */\nexport var getLoopCfgs = function getLoopCfgs(cfg) {\n var item = cfg.sourceNode || cfg.targetNode;\n var container = item.get('group');\n var containerMatrix = container.getMatrix();\n if (!containerMatrix) containerMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var keyShape = item.getKeyShape();\n var bbox = keyShape.getBBox();\n var loopCfg = cfg.loopCfg || {};\n // 距离keyShape边的最高距离\n var dist = loopCfg.dist || Math.max(bbox.width, bbox.height) * 2;\n // 自环边与keyShape的相对位置关系\n var position = loopCfg.position || Global.defaultLoopPosition;\n // 中心取group上真实位置\n var center = [containerMatrix[6], containerMatrix[7]];\n var startPoint = [cfg.startPoint.x, cfg.startPoint.y];\n var endPoint = [cfg.endPoint.x, cfg.endPoint.y];\n var halfOfHeight = bbox.height / 2;\n var halfOfWidth = bbox.width / 2;\n var rstart = halfOfHeight;\n var rend = halfOfHeight;\n var sinDeltaStart = rstart * SELF_LINK_SIN;\n var cosDeltaStart = rstart * SELF_LINK_COS;\n var sinDeltaEnd = rend * SELF_LINK_SIN;\n var cosDeltaEnd = rend * SELF_LINK_COS;\n var shapeType = keyShape.get('type');\n // 美观考虑,pointPadding 默认取宽高中最小的1/4\n var defaultPointPadding = Math.min(halfOfHeight / 2, halfOfWidth / 2);\n var maxPointPadding = Math.min(halfOfHeight, halfOfWidth);\n // 对于非圆形节点设置的连接点与节点中心坐标(`top-right`,`bottom-right`,`top-left`,`bottom-left`较特殊,为四个角坐标)在 x 轴或 y 轴方向的偏移量,默认为  `节点宽高中最小值的1/4`\n var pointPadding = (loopCfg === null || loopCfg === void 0 ? void 0 : loopCfg.pointPadding) ? Math.min(maxPointPadding, loopCfg === null || loopCfg === void 0 ? void 0 : loopCfg.pointPadding) : defaultPointPadding;\n // 如果定义了锚点的,直接用锚点坐标,否则,根据自环的 cfg 计算\n if (startPoint[0] === endPoint[0] && startPoint[1] === endPoint[1]) {\n switch (position) {\n case 'top':\n if (shapeType === 'circle') {\n startPoint = [center[0] - sinDeltaStart, center[1] - cosDeltaStart];\n endPoint = [center[0] + sinDeltaEnd, center[1] - cosDeltaEnd];\n } else {\n startPoint = [center[0] - pointPadding, center[1] - halfOfHeight];\n endPoint = [center[0] + pointPadding, center[1] - halfOfHeight];\n }\n break;\n case 'top-right':\n rstart = halfOfHeight;\n rend = halfOfWidth;\n if (shapeType === 'circle') {\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] + sinDeltaStart, center[1] - cosDeltaStart];\n endPoint = [center[0] + cosDeltaEnd, center[1] - sinDeltaEnd];\n } else {\n startPoint = [center[0] + halfOfWidth - pointPadding, center[1] - halfOfHeight];\n endPoint = [center[0] + halfOfWidth, center[1] - halfOfHeight + pointPadding];\n }\n break;\n case 'right':\n rstart = halfOfWidth;\n rend = halfOfWidth;\n if (shapeType === 'circle') {\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] + cosDeltaStart, center[1] - sinDeltaStart];\n endPoint = [center[0] + cosDeltaEnd, center[1] + sinDeltaEnd];\n } else {\n startPoint = [center[0] + halfOfWidth, center[1] - pointPadding];\n endPoint = [center[0] + halfOfWidth, center[1] + pointPadding];\n }\n break;\n case 'bottom-right':\n rstart = halfOfWidth;\n rend = halfOfHeight;\n if (shapeType === 'circle') {\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] + cosDeltaStart, center[1] + sinDeltaStart];\n endPoint = [center[0] + sinDeltaEnd, center[1] + cosDeltaEnd];\n } else {\n startPoint = [center[0] + halfOfWidth, center[1] + halfOfHeight - pointPadding];\n endPoint = [center[0] + halfOfWidth - pointPadding, center[1] + halfOfHeight];\n }\n break;\n case 'bottom':\n rstart = halfOfHeight;\n rend = halfOfHeight;\n if (shapeType === 'circle') {\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] + sinDeltaStart, center[1] + cosDeltaStart];\n endPoint = [center[0] - sinDeltaEnd, center[1] + cosDeltaEnd];\n } else {\n startPoint = [center[0] - pointPadding, center[1] + halfOfHeight];\n endPoint = [center[0] + pointPadding, center[1] + halfOfHeight];\n }\n break;\n case 'bottom-left':\n rstart = halfOfHeight;\n rend = halfOfWidth;\n if (shapeType === 'circle') {\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] - sinDeltaStart, center[1] + cosDeltaStart];\n endPoint = [center[0] - cosDeltaEnd, center[1] + sinDeltaEnd];\n } else {\n startPoint = [center[0] - halfOfWidth, center[1] + halfOfHeight - pointPadding];\n endPoint = [center[0] - halfOfWidth + pointPadding, center[1] + halfOfHeight];\n }\n break;\n case 'left':\n rstart = halfOfWidth;\n rend = halfOfWidth;\n if (shapeType === 'circle') {\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] - cosDeltaStart, center[1] + sinDeltaStart];\n endPoint = [center[0] - cosDeltaEnd, center[1] - sinDeltaEnd];\n } else {\n startPoint = [center[0] - halfOfWidth, center[1] - pointPadding];\n endPoint = [center[0] - halfOfWidth, center[1] + pointPadding];\n }\n break;\n case 'top-left':\n rstart = halfOfWidth;\n rend = halfOfHeight;\n if (shapeType === 'circle') {\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] - cosDeltaStart, center[1] - sinDeltaStart];\n endPoint = [center[0] - sinDeltaEnd, center[1] - cosDeltaEnd];\n } else {\n startPoint = [center[0] - halfOfWidth + pointPadding, center[1] - halfOfHeight];\n endPoint = [center[0] - halfOfWidth, center[1] - halfOfHeight + pointPadding];\n }\n break;\n default:\n rstart = halfOfWidth;\n rend = halfOfWidth;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] - sinDeltaStart, center[1] - cosDeltaStart];\n endPoint = [center[0] + sinDeltaEnd, center[1] - cosDeltaEnd];\n }\n // 如果逆时针画,交换起点和终点\n if (loopCfg.clockwise === false) {\n var swap = [startPoint[0], startPoint[1]];\n startPoint = [endPoint[0], endPoint[1]];\n endPoint = [swap[0], swap[1]];\n }\n }\n var startVec = [startPoint[0] - center[0], startPoint[1] - center[1]];\n var scaleRateStart = (rstart + dist) / rstart;\n var scaleRateEnd = (rend + dist) / rend;\n if (loopCfg.clockwise === false) {\n scaleRateStart = (rend + dist) / rend;\n scaleRateEnd = (rstart + dist) / rstart;\n }\n var startExtendVec = vec2.scale([0, 0], startVec, scaleRateStart);\n var controlPoint1 = [center[0] + startExtendVec[0], center[1] + startExtendVec[1]];\n var endVec = [endPoint[0] - center[0], endPoint[1] - center[1]];\n var endExtendVec = vec2.scale([0, 0], endVec, scaleRateEnd);\n var controlPoint2 = [center[0] + endExtendVec[0], center[1] + endExtendVec[1]];\n cfg.startPoint = {\n x: startPoint[0],\n y: startPoint[1]\n };\n cfg.endPoint = {\n x: endPoint[0],\n y: endPoint[1]\n };\n cfg.controlPoints = [{\n x: controlPoint1[0],\n y: controlPoint1[1]\n }, {\n x: controlPoint2[0],\n y: controlPoint2[1]\n }];\n return cfg;\n};\n/**\n * 根据 label 所在线条的位置百分比,计算 label 坐标\n * @param {object} pathShape G 的 path 实例,一般是 Edge 实例的 keyShape\n * @param {number} percent 范围 0 - 1 的线条百分比\n * @param {number} refX x 轴正方向为基准的 label 偏移\n * @param {number} refY y 轴正方向为基准的 label 偏移\n * @param {boolean} rotate 是否根据线条斜率旋转文本\n * @return {object} 文本的 x, y, 文本的旋转角度\n */\nexport var getLabelPosition = function getLabelPosition(pathShape, percent, refX, refY, rotate) {\n var TAN_OFFSET = 0.0001;\n var vector = [];\n var point = pathShape === null || pathShape === void 0 ? void 0 : pathShape.getPoint(percent);\n if (!point) {\n return {\n x: 0,\n y: 0,\n angle: 0\n };\n }\n // 头尾最可能,放在最前面,使用 g path 上封装的方法\n if (percent < TAN_OFFSET) {\n vector = pathShape.getStartTangent().reverse();\n } else if (percent > 1 - TAN_OFFSET) {\n vector = pathShape.getEndTangent();\n } else {\n // 否则取指定位置的点,与少量偏移的点,做微分向量\n var offsetPoint = pathShape === null || pathShape === void 0 ? void 0 : pathShape.getPoint(percent + TAN_OFFSET);\n vector.push([point.x, point.y]);\n vector.push([offsetPoint.x, offsetPoint.y]);\n }\n var rad = Math.atan2(vector[1][1] - vector[0][1], vector[1][0] - vector[0][0]);\n if (rad < 0) {\n rad += PI * 2;\n }\n if (refX) {\n point.x += cos(rad) * refX;\n point.y += sin(rad) * refX;\n }\n if (refY) {\n // 默认方向是 x 轴正方向,法线是 求出角度 - 90°\n var normal = rad - PI / 2;\n // 若法线角度在 y 轴负方向,切到正方向,保证 refY 相对于 y 轴正方向\n if (rad > 1 / 2 * PI && rad < 3 * 1 / 2 * PI) {\n normal -= PI;\n }\n point.x += cos(normal) * refY;\n point.y += sin(normal) * refY;\n }\n var result = {\n x: point.x,\n y: point.y,\n angle: rad\n };\n if (rotate) {\n if (rad > 0.5 * PI && rad < 1.5 * PI) {\n rad -= PI;\n }\n return __assign({\n rotate: rad\n }, result);\n }\n return result;\n};\n/**\n * depth first traverse, from root to leaves, children in inverse order\n * if the fn returns false, terminate the traverse\n */\nvar traverse = function traverse(data, parent, index, fn) {\n if (fn(data, parent, index) === false) {\n return false;\n }\n if (data && data.children) {\n for (var i = data.children.length - 1; i >= 0; i--) {\n if (!traverse(data.children[i], data, i, fn)) return false;\n }\n }\n return true;\n};\n/**\n * depth first traverse, from leaves to root, children in inverse order\n * if the fn returns false, terminate the traverse\n */\nvar traverseUp = function traverseUp(data, parent, index, fn) {\n if (data && data.children) {\n for (var i = data.children.length - 1; i >= 0; i--) {\n if (!traverseUp(data.children[i], data, i, fn)) return;\n }\n }\n if (fn(data, parent, index) === false) {\n return false;\n }\n return true;\n};\n/**\n * depth first traverse, from root to leaves, children in inverse order\n * if the fn returns false, terminate the traverse\n */\nexport var traverseTree = function traverseTree(data, fn) {\n if (typeof fn !== 'function') {\n return;\n }\n traverse(data, null, -1, fn);\n};\n/**\n * depth first traverse, from leaves to root, children in inverse order\n * if the fn returns false, terminate the traverse\n */\nexport var traverseTreeUp = function traverseTreeUp(data, fn) {\n if (typeof fn !== 'function') {\n return;\n }\n traverseUp(data, null, -1, fn);\n};\n/**\n *\n * @param letter the letter\n * @param fontSize\n * @return the letter's width\n */\nexport var getLetterWidth = function getLetterWidth(letter, fontSize) {\n return fontSize * (letterAspectRatio[letter] || 1);\n};\n/**\n *\n * @param text the text\n * @param fontSize\n * @return the text's size\n */\nexport var getTextSize = function getTextSize(text, fontSize) {\n var width = 0;\n var pattern = new RegExp(\"[\\u4E00-\\u9FA5]+\");\n text.split('').forEach(function (letter) {\n if (pattern.test(letter)) {\n // 中文字符\n width += fontSize;\n } else {\n width += getLetterWidth(letter, fontSize);\n }\n });\n return [width, fontSize];\n};\nexport var truncateLabelByLength = function truncateLabelByLength(text, length) {\n if (typeof length !== 'number' || length <= 0 || length >= text.length) {\n return text;\n }\n return text.substring(0, length) + '...';\n};\n/**\n * construct the trees from combos data\n * @param array the combos array\n * @param nodes the nodes array\n * @return the tree\n */\nexport var plainCombosToTrees = function plainCombosToTrees(array, nodes) {\n var result = [];\n var addedMap = {};\n var modelMap = {};\n array.forEach(function (d) {\n modelMap[d.id] = d;\n });\n array.forEach(function (d, i) {\n var cd = clone(d);\n cd.itemType = 'combo';\n cd.children = undefined;\n if (cd.parentId === cd.id) {\n console.warn(\"The parentId for combo \".concat(cd.id, \" can not be the same as the combo's id\"));\n delete cd.parentId;\n } else if (cd.parentId && !modelMap[cd.parentId]) {\n console.warn(\"The parent combo for combo \".concat(cd.id, \" does not exist!\"));\n delete cd.parentId;\n }\n var mappedObj = addedMap[cd.id];\n if (mappedObj) {\n cd.children = mappedObj.children;\n addedMap[cd.id] = cd;\n mappedObj = cd;\n if (!mappedObj.parentId) {\n result.push(mappedObj);\n return;\n }\n var mappedParent = addedMap[mappedObj.parentId];\n if (mappedParent) {\n if (mappedParent.children) mappedParent.children.push(cd);else mappedParent.children = [cd];\n } else {\n var parent_1 = {\n id: mappedObj.parentId,\n children: [mappedObj]\n };\n addedMap[mappedObj.parentId] = parent_1;\n addedMap[cd.id] = cd;\n }\n return;\n }\n if (isString(d.parentId)) {\n var parent_2 = addedMap[d.parentId];\n if (parent_2) {\n if (parent_2.children) parent_2.children.push(cd);else parent_2.children = [cd];\n addedMap[cd.id] = cd;\n } else {\n var pa = {\n id: d.parentId,\n children: [cd]\n };\n addedMap[pa.id] = pa;\n addedMap[cd.id] = cd;\n }\n } else {\n result.push(cd);\n addedMap[cd.id] = cd;\n }\n });\n // proccess the nodes\n var nodeMap = {};\n (nodes || []).forEach(function (node) {\n nodeMap[node.id] = node;\n var combo = addedMap[node.comboId];\n if (combo) {\n var cnode = {\n id: node.id,\n comboId: node.comboId\n };\n if (combo.children) combo.children.push(cnode);else combo.children = [cnode];\n cnode.itemType = 'node';\n addedMap[node.id] = cnode;\n }\n });\n // assign the depth for each element\n var maxDepth = 0;\n result.forEach(function (tree) {\n tree.depth = maxDepth + 10;\n traverseTree(tree, function (child) {\n var parent;\n var itemType = addedMap[child.id].itemType;\n if (itemType === 'node') {\n parent = addedMap[child.comboId];\n } else {\n parent = addedMap[child.parentId];\n }\n if (parent) {\n if (itemType === 'node') child.depth = maxDepth + 1;else child.depth = maxDepth + 10;\n } else {\n child.depth = maxDepth + 10;\n }\n if (maxDepth < child.depth) maxDepth = child.depth;\n var oriNodeModel = nodeMap[child.id];\n if (oriNodeModel) {\n oriNodeModel.depth = child.depth;\n }\n return true;\n });\n });\n return result;\n};\nexport var reconstructTree = function reconstructTree(trees, subtreeId, newParentId) {\n var _a;\n var brothers = trees;\n var subtree;\n var comboChildsMap = {\n root: {\n children: trees\n }\n };\n var foundSubTree = false;\n var oldParentId = 'root';\n (trees || []).forEach(function (tree) {\n if (foundSubTree) return;\n if (tree.id === subtreeId) {\n subtree = tree;\n if (tree.itemType === 'combo') {\n subtree.parentId = newParentId;\n } else {\n subtree.comboId = newParentId;\n }\n foundSubTree = true;\n return;\n }\n traverseTree(tree, function (child) {\n var _a;\n comboChildsMap[child.id] = {\n children: (child === null || child === void 0 ? void 0 : child.children) || []\n };\n // store the old parent id to delete the subtree from the old parent's children in next recursion\n brothers = (_a = comboChildsMap[child.parentId || child.comboId || 'root']) === null || _a === void 0 ? void 0 : _a.children;\n if (child && (child.removed || subtreeId === child.id) && brothers) {\n oldParentId = child.parentId || child.comboId || 'root';\n subtree = child;\n // re-assign the parentId or comboId for the moved subtree\n if (child.itemType === 'combo') {\n subtree.parentId = newParentId;\n } else {\n subtree.comboId = newParentId;\n }\n foundSubTree = true;\n return false;\n }\n return true;\n });\n });\n brothers = (_a = comboChildsMap[oldParentId]) === null || _a === void 0 ? void 0 : _a.children;\n var index = brothers ? brothers.indexOf(subtree) : -1;\n if (index > -1) brothers.splice(index, 1);\n // 如果遍历完整棵树还没有找到,说明之前就不在树中\n if (!foundSubTree) {\n subtree = {\n id: subtreeId,\n itemType: 'node',\n comboId: newParentId\n };\n comboChildsMap[subtreeId] = {\n children: undefined\n };\n }\n // append to new parent\n if (subtreeId) {\n var found_1 = false;\n // newParentId is undefined means the subtree will have no parent\n if (newParentId) {\n var newParentDepth_1 = 0;\n (trees || []).forEach(function (tree) {\n if (found_1) return; // terminate\n traverseTree(tree, function (child) {\n // append subtree to the new parent ans assign the depth to the subtree\n if (newParentId === child.id) {\n found_1 = true;\n if (child.children) child.children.push(subtree);else child.children = [subtree];\n newParentDepth_1 = child.depth;\n if (subtree.itemType === 'node') subtree.depth = newParentDepth_1 + 2;else subtree.depth = newParentDepth_1 + 1;\n return false; // terminate\n }\n\n return true;\n });\n });\n } else if ((!newParentId || !found_1) && subtree.itemType !== 'node') {\n // if the newParentId is undefined or it is not found in the tree, add the subTree to the root\n trees.push(subtree);\n }\n // update the depth of the subtree and its children from the subtree\n var currentDepth_1 = subtree.depth;\n traverseTree(subtree, function (child) {\n if (child.itemType === 'node') currentDepth_1 += 2;else currentDepth_1 += 1;\n child.depth = currentDepth_1;\n return true;\n });\n }\n return trees;\n};\nexport var getComboBBox = function getComboBBox(children, graph, combo) {\n var comboBBox = {\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity,\n x: undefined,\n y: undefined,\n width: undefined,\n height: undefined,\n centerX: undefined,\n centerY: undefined\n };\n if (!children || children.length === 0) {\n var comboModel = combo === null || combo === void 0 ? void 0 : combo.getModel();\n var _a = comboModel || {},\n x = _a.x,\n y = _a.y,\n fixSize = _a.fixSize,\n collapsed = _a.collapsed,\n fixCollapseSize = _a.fixCollapseSize;\n var useFixSize = collapsed ? fixCollapseSize : fixSize;\n var _b = isArray(useFixSize) ? useFixSize : [useFixSize, useFixSize],\n width = _b[0],\n height = _b[1];\n var halfSize = [width / 2, height / 2];\n return {\n minX: x - halfSize[0],\n minY: y - halfSize[1],\n maxX: x + halfSize[0],\n maxY: y + halfSize[1],\n x: x,\n y: y,\n width: width,\n height: height\n };\n }\n children.forEach(function (child) {\n var childItem = graph.findById(child.id);\n if (!childItem || !childItem.isVisible()) return; // ignore hidden children\n childItem.set('bboxCanvasCache', undefined);\n var childBBox = childItem.getCanvasBBox();\n if (childBBox.x && comboBBox.minX > childBBox.minX) comboBBox.minX = childBBox.minX;\n if (childBBox.y && comboBBox.minY > childBBox.minY) comboBBox.minY = childBBox.minY;\n if (childBBox.x && comboBBox.maxX < childBBox.maxX) comboBBox.maxX = childBBox.maxX;\n if (childBBox.y && comboBBox.maxY < childBBox.maxY) comboBBox.maxY = childBBox.maxY;\n });\n comboBBox.x = (comboBBox.minX + comboBBox.maxX) / 2;\n comboBBox.y = (comboBBox.minY + comboBBox.maxY) / 2;\n comboBBox.width = comboBBox.maxX - comboBBox.minX;\n comboBBox.height = comboBBox.maxY - comboBBox.minY;\n comboBBox.centerX = (comboBBox.minX + comboBBox.maxX) / 2;\n comboBBox.centerY = (comboBBox.minY + comboBBox.maxY) / 2;\n // if it is a circle combo, diagnal length of the children's bbox should be the diameter of the combo's bbox\n if ((combo === null || combo === void 0 ? void 0 : combo.getKeyShape().get('type')) === 'circle') {\n comboBBox.width = Math.hypot(comboBBox.height, comboBBox.width);\n comboBBox.height = comboBBox.width;\n }\n Object.keys(comboBBox).forEach(function (key) {\n if (comboBBox[key] === Infinity || comboBBox[key] === -Infinity) {\n comboBBox[key] = undefined;\n }\n });\n return comboBBox;\n};\nexport var shouldRefreshEdge = function shouldRefreshEdge(cfg) {\n var refreshEdge = isNumber(cfg.x) || isNumber(cfg.y) || cfg.type || cfg.anchorPoints || cfg.size;\n if (cfg.style) refreshEdge = refreshEdge || isNumber(cfg.style.r) || isNumber(cfg.style.width) || isNumber(cfg.style.height) || isNumber(cfg.style.rx) || isNumber(cfg.style.ry);\n return refreshEdge;\n};\nexport var cloneBesidesImg = function cloneBesidesImg(obj) {\n var clonedObj = {};\n Object.keys(obj).forEach(function (key1) {\n var obj2 = obj[key1];\n if (isObject(obj2) && !isArray(obj2)) {\n var clonedObj2_1 = {};\n Object.keys(obj2).forEach(function (key2) {\n var v = obj2[key2];\n if (key2 === 'img' && !isString(v)) return;\n clonedObj2_1[key2] = clone(v);\n });\n clonedObj[key1] = clonedObj2_1;\n } else {\n clonedObj[key1] = clone(obj2);\n }\n });\n return clonedObj;\n};\nexport var getAnimateCfgWithCallback = function getAnimateCfgWithCallback(_a) {\n var animateCfg = _a.animateCfg,\n callback = _a.callback;\n var animateConfig;\n if (!animateCfg) {\n animateConfig = {\n duration: 500,\n callback: callback\n };\n } else {\n animateConfig = clone(animateCfg);\n if (animateCfg.callback) {\n var animateCfgCallback_1 = animateCfg.callback;\n animateConfig.callback = function () {\n callback();\n animateCfgCallback_1();\n };\n } else {\n animateConfig.callback = callback;\n }\n }\n return animateConfig;\n};","import { __spreadArray } from \"tslib\";\nimport { isString } from '@antv/util';\nimport { traverseTree } from './graphic';\n/**\n * 验证关系图或树图数据的合法性,必须符合以下规则才会渲染图:\n * 1. 必须传入数据\n * 2. 节点的 ID 必须为字符串,暂不支持数字类型,如果支持数字类型,会出现类似 123 与 '123' 是否相等的问题\n * 3. 边的 source 和 target 值必须在节点 ID 中存在\n * @param data 关系图或树图数据\n * @return boolean 全部验证通过返回 true,否则返回 false\n */\nexport var dataValidation = function dataValidation(data) {\n // 1. 必须传入数据\n if (!data) {\n console.error('G6 Error Tips: the data must be defined');\n return false;\n }\n // 2. 节点的 ID 必须为字符串或数字类型\n var nodes = data.nodes,\n edges = data.edges,\n _a = data.combos,\n combos = _a === void 0 ? [] : _a;\n if (!nodes && !edges) {\n var validated_1 = true;\n // 不存在 nodes 和 edges,则说明是 TreeGraphData,按 TreeGraphData 规则验证\n traverseTree(data, function (param) {\n if (!isString(param.id)) {\n validated_1 = false;\n return false;\n }\n return true;\n });\n return validated_1;\n }\n var nonNode = (nodes || []).find(function (node) {\n return !isString(node.id);\n });\n if (nonNode) {\n console.warn(\"G6 Warning Tips: missing 'id' property, or %c\".concat(nonNode.id, \"%c is not a string.\"), 'font-size: 20px; color: red;', '');\n return false;\n }\n // 3. 边的 source 和 target 必须存在于节点 或 Combo中\n var nodeIds = (nodes || []).map(function (node) {\n return node.id;\n });\n var comboIds = combos === null || combos === void 0 ? void 0 : combos.map(function (combo) {\n return combo.id;\n });\n var ids = __spreadArray(__spreadArray([], nodeIds, true), comboIds, true);\n var nonEdges = (edges || []).find(function (edge) {\n return !ids.includes(edge.source) || !ids.includes(edge.target);\n });\n if (nonEdges) {\n console.warn(\"G6 Warning Tips: The source %c\".concat(nonEdges.source, \"%c or the target %c\").concat(nonEdges.target, \"%c of the edge do not exist in the nodes or combos.\"), 'font-size: 20px; color: red;', '', 'font-size: 20px; color: red;', '');\n return false;\n }\n return true;\n};\n/**\n * 验证添加节点、边或从combo时的数据\n * @param type 节点、边或从combo\n * @param data 添加的单条数据\n * @return boolean 全部验证通过返回 true,否则返回 false\n */\nexport var singleDataValidation = function singleDataValidation(type, data) {\n if (type === 'node' || type === 'combo') {\n // 必须有 id 字段,且id必须为字符串类型\n if (data.id && !isString(data.id)) {\n console.warn(\"G6 Warning Tips: missing 'id' property, or the 'id' %c\".concat(data.id, \"%c is not a string.\"), 'font-size: 20px; color: red;', '');\n return false;\n }\n } else if (type === 'edge') {\n // 必须有 source 和 target 字段\n if (!data.source || !data.target) {\n console.warn(\"G6 Warning Tips: missing 'source' or 'target' for the edge.\");\n return false;\n }\n }\n return true;\n};","import { each, isArray, isString } from '@antv/util';\nimport Behavior from '../../behavior/behavior';\nvar ModeController = /** @class */function () {\n function ModeController(graph) {\n this.graph = graph;\n this.destroyed = false;\n this.modes = graph.get('modes') || {\n default: []\n };\n this.formatModes();\n this.mode = graph.get('defaultMode') || 'default';\n this.currentBehaves = [];\n this.setMode(this.mode);\n }\n ModeController.prototype.formatModes = function () {\n var modes = this.modes;\n each(modes, function (mode) {\n each(mode, function (behavior, i) {\n if (isString(behavior)) {\n mode[i] = {\n type: behavior\n };\n }\n });\n });\n };\n ModeController.prototype.setBehaviors = function (mode) {\n var graph = this.graph;\n var behaviors = this.modes[mode];\n var behaves = [];\n var behave;\n each(behaviors || [], function (behavior) {\n var BehaviorInstance = Behavior.getBehavior(behavior.type || behavior);\n if (!BehaviorInstance) {\n return;\n }\n behave = new BehaviorInstance(behavior);\n if (behave) {\n behave.bind(graph);\n behaves.push(behave);\n }\n });\n this.currentBehaves = behaves;\n };\n ModeController.mergeBehaviors = function (modeBehaviors, behaviors) {\n each(behaviors, function (behavior) {\n if (modeBehaviors.indexOf(behavior) < 0) {\n if (isString(behavior)) {\n behavior = {\n type: behavior\n };\n }\n modeBehaviors.push(behavior);\n }\n });\n return modeBehaviors;\n };\n ModeController.filterBehaviors = function (modeBehaviors, behaviors) {\n var result = [];\n modeBehaviors.forEach(function (behavior) {\n var type = '';\n if (isString(behavior)) {\n type = behavior;\n } else {\n // eslint-disable-next-line prefer-destructuring\n type = behavior.type;\n }\n if (behaviors.indexOf(type) < 0) {\n result.push(behavior);\n }\n });\n return result;\n };\n ModeController.prototype.setMode = function (mode) {\n var _a = this,\n modes = _a.modes,\n graph = _a.graph;\n var current = mode;\n var behaviors = modes[current];\n if (!behaviors) {\n return;\n }\n graph.emit('beforemodechange', {\n mode: mode\n });\n each(this.currentBehaves, function (behave) {\n if (behave.delegate) behave.delegate.remove();\n behave.unbind(graph);\n });\n this.setBehaviors(current);\n graph.emit('aftermodechange', {\n mode: mode\n });\n this.mode = mode;\n };\n ModeController.prototype.getMode = function () {\n return this.mode;\n };\n /**\n * 动态增加或删除 Behavior\n *\n * @param {ModeType[]} behaviors\n * @param {(ModeType[] | ModeType)} modes\n * @param {boolean} isAdd\n * @returns {Mode}\n * @memberof Mode\n */\n ModeController.prototype.manipulateBehaviors = function (behaviors, modes, isAdd) {\n var _this = this;\n var behaves;\n if (!isArray(behaviors)) {\n behaves = [behaviors];\n } else {\n behaves = behaviors;\n }\n if (isArray(modes)) {\n each(modes, function (mode) {\n if (!_this.modes[mode]) {\n if (isAdd) {\n _this.modes[mode] = behaves;\n }\n } else if (isAdd) {\n _this.modes[mode] = ModeController.mergeBehaviors(_this.modes[mode] || [], behaves);\n } else {\n _this.modes[mode] = ModeController.filterBehaviors(_this.modes[mode] || [], behaves);\n }\n });\n return this;\n }\n var currentMode = modes;\n if (!modes) {\n currentMode = this.mode; // isString(this.mode) ? this.mode : this.mode.type\n }\n\n if (!this.modes[currentMode]) {\n if (isAdd) {\n this.modes[currentMode] = behaves;\n }\n }\n if (isAdd) {\n this.modes[currentMode] = ModeController.mergeBehaviors(this.modes[currentMode] || [], behaves);\n } else {\n this.modes[currentMode] = ModeController.filterBehaviors(this.modes[currentMode] || [], behaves);\n }\n this.formatModes();\n this.setMode(this.mode);\n return this;\n };\n /**\n * 更新行为参数\n * @param {string | ModeOption | ModeType} behavior 需要更新的行为\n * @param {string | string[]} modes 指定的模式中的行为,不指定则为 default\n * @return {Graph} Graph\n */\n ModeController.prototype.updateBehavior = function (behavior, newCfg, mode) {\n if (isString(behavior)) {\n behavior = {\n type: behavior\n };\n }\n var behaviorSet = [];\n if (!mode || mode === this.mode || mode === 'default') {\n behaviorSet = this.currentBehaves;\n if (!behaviorSet || !behaviorSet.length) {\n console.warn('Update behavior failed! There is no behaviors in this mode on the graph.');\n return this;\n }\n var length_1 = behaviorSet.length;\n for (var i = 0; i < length_1; i++) {\n var behave = behaviorSet[i];\n if (behave.type === behavior.type) {\n behave.updateCfg(newCfg);\n return this;\n }\n if (i === length_1 - 1) console.warn('Update behavior failed! There is no such behavior in the mode');\n }\n } else {\n behaviorSet = this.modes[mode];\n if (!behaviorSet || !behaviorSet.length) {\n console.warn('Update behavior failed! There is no behaviors in this mode on the graph.');\n return this;\n }\n var length_2 = behaviorSet.length;\n for (var i = 0; i < length_2; i++) {\n var behave = behaviorSet[i];\n if (behave.type === behavior.type || behave === behavior.type) {\n if (behave === behavior.type) behave = {\n type: behave\n };\n Object.assign(behave, newCfg);\n behaviorSet[i] = behave;\n return this;\n }\n if (i === length_2 - 1) console.warn('Update behavior failed! There is no such behavior in the mode');\n }\n }\n return this;\n };\n ModeController.prototype.destroy = function () {\n this.graph = null;\n this.modes = null;\n this.currentBehaves = null;\n this.destroyed = true;\n };\n return ModeController;\n}();\nexport default ModeController;","import { each, isArray } from '@antv/util';\nimport { PathCommand } from '../types';\n\nconst SPACES =\n '\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029';\nconst PATH_COMMAND = new RegExp(\n `([a-z])[${SPACES},]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[${SPACES}]*,?[${SPACES}]*)+)`,\n 'ig'\n);\nconst PATH_VALUES = new RegExp(`(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[${SPACES}]*,?[${SPACES}]*`, 'ig');\n// Parse given path string into an array of arrays of path segments\nconst parsePathString = function (pathString: string): PathCommand[] {\n if (!pathString) {\n return null;\n }\n\n if (isArray(pathString)) {\n return pathString as unknown as PathCommand[];\n }\n const paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0,\n };\n const data = [];\n\n String(pathString).replace(PATH_COMMAND, (a, b, c) => {\n const params = [];\n let name = b.toLowerCase();\n c.replace(PATH_VALUES, (a, b) => {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([b].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([b, params[0]]);\n }\n if (name === 'r') {\n data.push([b].concat(params));\n } else {\n while (params.length >= paramCounts[name]) {\n data.push([b].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return pathString;\n });\n\n return data;\n};\n\n// http://schepers.cc/getting-to-the-point\nconst catmullRomToBezier = function (crp, z) {\n const d = [];\n // @ts-ignore\n for (let i = 0, iLen = crp.length; iLen - 2 * !z > i; i += 2) {\n const p = [\n {\n x: +crp[i - 2],\n y: +crp[i - 1],\n },\n {\n x: +crp[i],\n y: +crp[i + 1],\n },\n {\n x: +crp[i + 2],\n y: +crp[i + 3],\n },\n {\n x: +crp[i + 4],\n y: +crp[i + 5],\n },\n ];\n if (z) {\n if (!i) {\n p[0] = {\n x: +crp[iLen - 2],\n y: +crp[iLen - 1],\n };\n } else if (iLen - 4 === i) {\n p[3] = {\n x: +crp[0],\n y: +crp[1],\n };\n } else if (iLen - 2 === i) {\n p[2] = {\n x: +crp[0],\n y: +crp[1],\n };\n p[3] = {\n x: +crp[2],\n y: +crp[3],\n };\n }\n } else {\n if (iLen - 4 === i) {\n p[3] = p[2];\n } else if (!i) {\n p[0] = {\n x: +crp[i],\n y: +crp[i + 1],\n };\n }\n }\n d.push([\n 'C',\n (-p[0].x + 6 * p[1].x + p[2].x) / 6,\n (-p[0].y + 6 * p[1].y + p[2].y) / 6,\n (p[1].x + 6 * p[2].x - p[3].x) / 6,\n (p[1].y + 6 * p[2].y - p[3].y) / 6,\n p[2].x,\n p[2].y,\n ]);\n }\n\n return d;\n};\n\nconst ellipsePath = function (x, y, rx, ry, a?) {\n let res = [];\n if (a === null && ry === null) {\n ry = rx;\n }\n x = +x;\n y = +y;\n rx = +rx;\n ry = +ry;\n if (a !== null) {\n const rad = Math.PI / 180;\n const x1 = x + rx * Math.cos(-ry * rad);\n const x2 = x + rx * Math.cos(-a * rad);\n const y1 = y + rx * Math.sin(-ry * rad);\n const y2 = y + rx * Math.sin(-a * rad);\n res = [\n ['M', x1, y1],\n ['A', rx, rx, 0, +(a - ry > 180), 0, x2, y2],\n ];\n } else {\n res = [['M', x, y], ['m', 0, -ry], ['a', rx, ry, 0, 1, 1, 0, 2 * ry], ['a', rx, ry, 0, 1, 1, 0, -2 * ry], ['z']];\n }\n return res;\n};\n\nconst pathToAbsolute = function (pathArray) {\n pathArray = parsePathString(pathArray);\n\n if (!pathArray || !pathArray.length) {\n return [['M', 0, 0]];\n }\n let res = [];\n let x = 0;\n let y = 0;\n let mx = 0;\n let my = 0;\n let start = 0;\n let pa0;\n let dots;\n if (pathArray[0][0] === 'M') {\n x = +pathArray[0][1];\n y = +pathArray[0][2];\n mx = x;\n my = y;\n start++;\n res[0] = ['M', x, y];\n }\n const crz =\n pathArray.length === 3 &&\n pathArray[0][0] === 'M' &&\n pathArray[1][0].toUpperCase() === 'R' &&\n pathArray[2][0].toUpperCase() === 'Z';\n for (let r, pa, i = start, ii = pathArray.length; i < ii; i++) {\n res.push((r = []));\n pa = pathArray[i];\n pa0 = pa[0];\n if (pa0 !== pa0.toUpperCase()) {\n r[0] = pa0.toUpperCase();\n switch (r[0]) {\n case 'A':\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +pa[6] + x;\n r[7] = +pa[7] + y;\n break;\n case 'V':\n r[1] = +pa[1] + y;\n break;\n case 'H':\n r[1] = +pa[1] + x;\n break;\n case 'R':\n dots = [x, y].concat(pa.slice(1));\n for (let j = 2, jj = dots.length; j < jj; j++) {\n dots[j] = +dots[j] + x;\n dots[++j] = +dots[j] + y;\n }\n res.pop();\n res = res.concat(catmullRomToBezier(dots, crz));\n break;\n case 'O':\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n break;\n case 'U':\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = ['U'].concat(res[res.length - 1].slice(-2));\n break;\n case 'M':\n mx = +pa[1] + x;\n my = +pa[2] + y;\n break; // for lint\n default:\n for (let j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +pa[j] + (j % 2 ? x : y);\n }\n }\n } else if (pa0 === 'R') {\n dots = [x, y].concat(pa.slice(1));\n res.pop();\n res = res.concat(catmullRomToBezier(dots, crz));\n r = ['R'].concat(pa.slice(-2));\n } else if (pa0 === 'O') {\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n } else if (pa0 === 'U') {\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = ['U'].concat(res[res.length - 1].slice(-2));\n } else {\n for (let k = 0, kk = pa.length; k < kk; k++) {\n r[k] = pa[k];\n }\n }\n pa0 = pa0.toUpperCase();\n if (pa0 !== 'O') {\n switch (r[0]) {\n case 'Z':\n x = +mx;\n y = +my;\n break;\n case 'H':\n x = r[1];\n break;\n case 'V':\n y = r[1];\n break;\n case 'M':\n mx = r[r.length - 2];\n my = r[r.length - 1];\n break; // for lint\n default:\n x = r[r.length - 2];\n y = r[r.length - 1];\n }\n }\n }\n\n return res;\n};\n\nconst l2c = function (x1, y1, x2, y2) {\n return [x1, y1, x2, y2, x2, y2];\n};\n\nconst q2c = function (x1, y1, ax, ay, x2, y2) {\n const _13 = 1 / 3;\n const _23 = 2 / 3;\n return [_13 * x1 + _23 * ax, _13 * y1 + _23 * ay, _13 * x2 + _23 * ax, _13 * y2 + _23 * ay, x2, y2];\n};\n\nconst a2c = function (x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) {\n // for more information of where this math came from visit:\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n if (rx === ry) {\n rx += 1;\n }\n\n const _120 = (Math.PI * 120) / 180;\n const rad = (Math.PI / 180) * (+angle || 0);\n let res = [];\n let xy;\n let f1;\n let f2;\n let cx;\n let cy;\n const rotate = function (x, y, rad) {\n const X = x * Math.cos(rad) - y * Math.sin(rad);\n const Y = x * Math.sin(rad) + y * Math.cos(rad);\n return {\n x: X,\n y: Y,\n };\n };\n if (!recursive) {\n xy = rotate(x1, y1, -rad);\n x1 = xy.x;\n y1 = xy.y;\n xy = rotate(x2, y2, -rad);\n x2 = xy.x;\n y2 = xy.y;\n if (x1 === x2 && y1 === y2) {\n // 若弧的起始点和终点重叠则错开一点\n x2 += 1;\n y2 += 1;\n }\n // const cos = Math.cos(Math.PI / 180 * angle);\n // const sin = Math.sin(Math.PI / 180 * angle);\n const x = (x1 - x2) / 2;\n const y = (y1 - y2) / 2;\n let h = (x * x) / (rx * rx) + (y * y) / (ry * ry);\n if (h > 1) {\n h = Math.sqrt(h);\n rx = h * rx;\n ry = h * ry;\n }\n const rx2 = rx * rx;\n const ry2 = ry * ry;\n const k =\n (large_arc_flag === sweep_flag ? -1 : 1) *\n Math.sqrt(Math.abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x)));\n cx = (k * rx * y) / ry + (x1 + x2) / 2;\n cy = (k * -ry * x) / rx + (y1 + y2) / 2;\n // @ts-ignore\n f1 = Math.asin(((y1 - cy) / ry).toFixed(9));\n // @ts-ignore\n f2 = Math.asin(((y2 - cy) / ry).toFixed(9));\n\n f1 = x1 < cx ? Math.PI - f1 : f1;\n f2 = x2 < cx ? Math.PI - f2 : f2;\n f1 < 0 && (f1 = Math.PI * 2 + f1);\n f2 < 0 && (f2 = Math.PI * 2 + f2);\n if (sweep_flag && f1 > f2) {\n f1 = f1 - Math.PI * 2;\n }\n if (!sweep_flag && f2 > f1) {\n f2 = f2 - Math.PI * 2;\n }\n } else {\n f1 = recursive[0];\n f2 = recursive[1];\n cx = recursive[2];\n cy = recursive[3];\n }\n let df = f2 - f1;\n if (Math.abs(df) > _120) {\n const f2old = f2;\n const x2old = x2;\n const y2old = y2;\n f2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1);\n x2 = cx + rx * Math.cos(f2);\n y2 = cy + ry * Math.sin(f2);\n res = a2c(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy]);\n }\n df = f2 - f1;\n const c1 = Math.cos(f1);\n const s1 = Math.sin(f1);\n const c2 = Math.cos(f2);\n const s2 = Math.sin(f2);\n const t = Math.tan(df / 4);\n const hx = (4 / 3) * rx * t;\n const hy = (4 / 3) * ry * t;\n const m1 = [x1, y1];\n const m2 = [x1 + hx * s1, y1 - hy * c1];\n const m3 = [x2 + hx * s2, y2 - hy * c2];\n const m4 = [x2, y2];\n m2[0] = 2 * m1[0] - m2[0];\n m2[1] = 2 * m1[1] - m2[1];\n if (recursive) {\n return [m2, m3, m4].concat(res);\n }\n res = [m2, m3, m4].concat(res).join().split(',');\n const newres = [];\n for (let i = 0, ii = res.length; i < ii; i++) {\n newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x;\n }\n return newres;\n};\n\nconst pathToCurve = function (path, path2?) {\n const p = pathToAbsolute(path);\n const p2 = path2 && pathToAbsolute(path2);\n const attrs = {\n x: 0,\n y: 0,\n bx: 0,\n by: 0,\n X: 0,\n Y: 0,\n qx: null,\n qy: null,\n };\n const attrs2 = {\n x: 0,\n y: 0,\n bx: 0,\n by: 0,\n X: 0,\n Y: 0,\n qx: null,\n qy: null,\n };\n const pcoms1 = []; // path commands of original path p\n const pcoms2 = []; // path commands of original path p2\n let pfirst = ''; // temporary holder for original path command\n let pcom = ''; // holder for previous path command of original path\n let ii;\n const processPath = function (path, d, pcom) {\n let nx;\n let ny;\n if (!path) {\n return ['C', d.x, d.y, d.x, d.y, d.x, d.y];\n }\n !(\n path[0] in\n {\n T: 1,\n Q: 1,\n }\n ) && (d.qx = d.qy = null);\n switch (path[0]) {\n case 'M':\n d.X = path[1];\n d.Y = path[2];\n break;\n case 'A':\n path = ['C'].concat(a2c.apply(0, [d.x, d.y].concat(path.slice(1))));\n break;\n case 'S':\n if (pcom === 'C' || pcom === 'S') {\n // In \"S\" case we have to take into account, if the previous command is C/S.\n nx = d.x * 2 - d.bx; // And reflect the previous\n ny = d.y * 2 - d.by; // command's control point relative to the current point.\n } else {\n // or some else or nothing\n nx = d.x;\n ny = d.y;\n }\n path = ['C', nx, ny].concat(path.slice(1));\n break;\n case 'T':\n if (pcom === 'Q' || pcom === 'T') {\n // In \"T\" case we have to take into account, if the previous command is Q/T.\n d.qx = d.x * 2 - d.qx; // And make a reflection similar\n d.qy = d.y * 2 - d.qy; // to case \"S\".\n } else {\n // or something else or nothing\n d.qx = d.x;\n d.qy = d.y;\n }\n path = ['C'].concat(q2c(d.x, d.y, d.qx, d.qy, path[1], path[2]));\n break;\n case 'Q':\n d.qx = path[1];\n d.qy = path[2];\n path = ['C'].concat(q2c(d.x, d.y, path[1], path[2], path[3], path[4]));\n break;\n case 'L':\n path = ['C'].concat(l2c(d.x, d.y, path[1], path[2]));\n break;\n case 'H':\n path = ['C'].concat(l2c(d.x, d.y, path[1], d.y));\n break;\n case 'V':\n path = ['C'].concat(l2c(d.x, d.y, d.x, path[1]));\n break;\n case 'Z':\n path = ['C'].concat(l2c(d.x, d.y, d.X, d.Y));\n break;\n default:\n break;\n }\n return path;\n };\n const fixArc = function (pp, i) {\n if (pp[i].length > 7) {\n pp[i].shift();\n const pi = pp[i];\n while (pi.length) {\n pcoms1[i] = 'A'; // if created multiple C:s, their original seg is saved\n p2 && (pcoms2[i] = 'A'); // the same as above\n pp.splice(i++, 0, ['C'].concat(pi.splice(0, 6)));\n }\n pp.splice(i, 1);\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n }\n };\n const fixM = function (path1, path2, a1, a2, i) {\n if (path1 && path2 && path1[i][0] === 'M' && path2[i][0] !== 'M') {\n path2.splice(i, 0, ['M', a2.x, a2.y]);\n a1.bx = 0;\n a1.by = 0;\n a1.x = path1[i][1];\n a1.y = path1[i][2];\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n }\n };\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n for (let i = 0; i < ii; i++) {\n p[i] && (pfirst = p[i][0]); // save current path command\n\n if (pfirst !== 'C') {\n // C is not saved yet, because it may be result of conversion\n pcoms1[i] = pfirst; // Save current path command\n i && (pcom = pcoms1[i - 1]); // Get previous path command pcom\n }\n p[i] = processPath(p[i], attrs, pcom); // Previous path command is inputted to processPath\n\n if (pcoms1[i] !== 'A' && pfirst === 'C') pcoms1[i] = 'C'; // A is the only command\n // which may produce multiple C:s\n // so we have to make sure that C is also C in original path\n\n fixArc(p, i); // fixArc adds also the right amount of A:s to pcoms1\n\n if (p2) {\n // the same procedures is done to p2\n p2[i] && (pfirst = p2[i][0]);\n if (pfirst !== 'C') {\n pcoms2[i] = pfirst;\n i && (pcom = pcoms2[i - 1]);\n }\n p2[i] = processPath(p2[i], attrs2, pcom);\n\n if (pcoms2[i] !== 'A' && pfirst === 'C') {\n pcoms2[i] = 'C';\n }\n\n fixArc(p2, i);\n }\n fixM(p, p2, attrs, attrs2, i);\n fixM(p2, p, attrs2, attrs, i);\n const seg = p[i];\n const seg2 = p2 && p2[i];\n const seglen = seg.length;\n const seg2len = p2 && seg2.length;\n attrs.x = seg[seglen - 2];\n attrs.y = seg[seglen - 1];\n attrs.bx = parseFloat(seg[seglen - 4]) || attrs.x;\n attrs.by = parseFloat(seg[seglen - 3]) || attrs.y;\n attrs2.bx = p2 && (parseFloat(seg2[seg2len - 4]) || attrs2.x);\n attrs2.by = p2 && (parseFloat(seg2[seg2len - 3]) || attrs2.y);\n attrs2.x = p2 && seg2[seg2len - 2];\n attrs2.y = p2 && seg2[seg2len - 1];\n }\n\n return p2 ? [p, p2] : p;\n};\n\nconst p2s = /,?([a-z]),?/gi;\nconst parsePathArray = function (path) {\n return path.join(',').replace(p2s, '$1');\n};\n\nconst base3 = function (t, p1, p2, p3, p4) {\n const t1 = -3 * p1 + 9 * p2 - 9 * p3 + 3 * p4;\n const t2 = t * t1 + 6 * p1 - 12 * p2 + 6 * p3;\n return t * t2 - 3 * p1 + 3 * p2;\n};\n\nconst bezlen = function (x1, y1, x2, y2, x3, y3, x4, y4, z) {\n if (z === null) {\n z = 1;\n }\n z = z > 1 ? 1 : z < 0 ? 0 : z;\n const z2 = z / 2;\n const n = 12;\n const Tvalues = [\n -0.1252, 0.1252, -0.3678, 0.3678, -0.5873, 0.5873, -0.7699, 0.7699, -0.9041, 0.9041, -0.9816, 0.9816,\n ];\n const Cvalues = [0.2491, 0.2491, 0.2335, 0.2335, 0.2032, 0.2032, 0.1601, 0.1601, 0.1069, 0.1069, 0.0472, 0.0472];\n let sum = 0;\n for (let i = 0; i < n; i++) {\n const ct = z2 * Tvalues[i] + z2;\n const xbase = base3(ct, x1, x2, x3, x4);\n const ybase = base3(ct, y1, y2, y3, y4);\n const comb = xbase * xbase + ybase * ybase;\n sum += Cvalues[i] * Math.sqrt(comb);\n }\n return z2 * sum;\n};\n\nconst curveDim = function (x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [];\n const bounds = [[], []];\n let a;\n let b;\n let c;\n let t;\n\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (t > 0 && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n const b2ac = b * b - 4 * c * a;\n const sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n const t1 = (-b + sqrtb2ac) / (2 * a);\n if (t1 > 0 && t1 < 1) {\n tvalues.push(t1);\n }\n const t2 = (-b - sqrtb2ac) / (2 * a);\n if (t2 > 0 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length;\n const jlen = j;\n let mt;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3;\n bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return {\n min: {\n x: Math.min.apply(0, bounds[0]),\n y: Math.min.apply(0, bounds[1]),\n },\n max: {\n x: Math.max.apply(0, bounds[0]),\n y: Math.max.apply(0, bounds[1]),\n },\n };\n};\n\nconst intersect = function (x1, y1, x2, y2, x3, y3, x4, y4) {\n if (\n Math.max(x1, x2) < Math.min(x3, x4) ||\n Math.min(x1, x2) > Math.max(x3, x4) ||\n Math.max(y1, y2) < Math.min(y3, y4) ||\n Math.min(y1, y2) > Math.max(y3, y4)\n ) {\n return;\n }\n const nx = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4);\n const ny = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4);\n const denominator = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n\n if (!denominator) {\n return;\n }\n const px = nx / denominator;\n const py = ny / denominator;\n const px2 = +px.toFixed(2);\n const py2 = +py.toFixed(2);\n if (\n px2 < +Math.min(x1, x2).toFixed(2) ||\n px2 > +Math.max(x1, x2).toFixed(2) ||\n px2 < +Math.min(x3, x4).toFixed(2) ||\n px2 > +Math.max(x3, x4).toFixed(2) ||\n py2 < +Math.min(y1, y2).toFixed(2) ||\n py2 > +Math.max(y1, y2).toFixed(2) ||\n py2 < +Math.min(y3, y4).toFixed(2) ||\n py2 > +Math.max(y3, y4).toFixed(2)\n ) {\n return;\n }\n return {\n x: px,\n y: py,\n };\n};\n\nconst isPointInsideBBox = function (bbox, x, y) {\n return x >= bbox.x && x <= bbox.x + bbox.width && y >= bbox.y && y <= bbox.y + bbox.height;\n};\n\nconst rectPath = function (x, y, w, h, r?) {\n if (r) {\n return [\n ['M', +x + +r, y],\n ['l', w - r * 2, 0],\n ['a', r, r, 0, 0, 1, r, r],\n ['l', 0, h - r * 2],\n ['a', r, r, 0, 0, 1, -r, r],\n ['l', r * 2 - w, 0],\n ['a', r, r, 0, 0, 1, -r, -r],\n ['l', 0, r * 2 - h],\n ['a', r, r, 0, 0, 1, r, -r],\n ['z'],\n ];\n }\n const res = [['M', x, y], ['l', w, 0], ['l', 0, h], ['l', -w, 0], ['z']];\n // @ts-ignore\n res.parsePathArray = parsePathArray;\n return res;\n};\n\nconst box = function (x?, y?, width?, height?) {\n if (x === null) {\n x = y = width = height = 0;\n }\n if (y === null) {\n y = x.y;\n width = x.width;\n height = x.height;\n x = x.x;\n }\n return {\n x,\n y,\n width,\n w: width,\n height,\n h: height,\n x2: x + width,\n y2: y + height,\n cx: x + width / 2,\n cy: y + height / 2,\n r1: Math.min(width, height) / 2,\n r2: Math.max(width, height) / 2,\n r0: Math.sqrt(width * width + height * height) / 2,\n path: rectPath(x, y, width, height),\n vb: [x, y, width, height].join(' '),\n };\n};\n\nconst isBBoxIntersect = function (bbox1, bbox2) {\n bbox1 = box(bbox1);\n bbox2 = box(bbox2);\n return (\n isPointInsideBBox(bbox2, bbox1.x, bbox1.y) ||\n isPointInsideBBox(bbox2, bbox1.x2, bbox1.y) ||\n isPointInsideBBox(bbox2, bbox1.x, bbox1.y2) ||\n isPointInsideBBox(bbox2, bbox1.x2, bbox1.y2) ||\n isPointInsideBBox(bbox1, bbox2.x, bbox2.y) ||\n isPointInsideBBox(bbox1, bbox2.x2, bbox2.y) ||\n isPointInsideBBox(bbox1, bbox2.x, bbox2.y2) ||\n isPointInsideBBox(bbox1, bbox2.x2, bbox2.y2) ||\n (((bbox1.x < bbox2.x2 && bbox1.x > bbox2.x) || (bbox2.x < bbox1.x2 && bbox2.x > bbox1.x)) &&\n ((bbox1.y < bbox2.y2 && bbox1.y > bbox2.y) || (bbox2.y < bbox1.y2 && bbox2.y > bbox1.y)))\n );\n};\n\nconst bezierBBox = function (p1x, p1y?, c1x?, c1y?, c2x?, c2y?, p2x?, p2y?) {\n if (!isArray(p1x)) {\n p1x = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y];\n }\n const bbox = curveDim.apply(null, p1x);\n return box(bbox.min.x, bbox.min.y, bbox.max.x - bbox.min.x, bbox.max.y - bbox.min.y);\n};\n\nconst findDotsAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n const t1 = 1 - t;\n const t13 = Math.pow(t1, 3);\n const t12 = Math.pow(t1, 2);\n const t2 = t * t;\n const t3 = t2 * t;\n const x = t13 * p1x + t12 * 3 * t * c1x + t1 * 3 * t * t * c2x + t3 * p2x;\n const y = t13 * p1y + t12 * 3 * t * c1y + t1 * 3 * t * t * c2y + t3 * p2y;\n const mx = p1x + 2 * t * (c1x - p1x) + t2 * (c2x - 2 * c1x + p1x);\n const my = p1y + 2 * t * (c1y - p1y) + t2 * (c2y - 2 * c1y + p1y);\n const nx = c1x + 2 * t * (c2x - c1x) + t2 * (p2x - 2 * c2x + c1x);\n const ny = c1y + 2 * t * (c2y - c1y) + t2 * (p2y - 2 * c2y + c1y);\n const ax = t1 * p1x + t * c1x;\n const ay = t1 * p1y + t * c1y;\n const cx = t1 * c2x + t * p2x;\n const cy = t1 * c2y + t * p2y;\n const alpha = 90 - (Math.atan2(mx - nx, my - ny) * 180) / Math.PI;\n // (mx > nx || my < ny) && (alpha += 180);\n return {\n x,\n y,\n m: {\n x: mx,\n y: my,\n },\n n: {\n x: nx,\n y: ny,\n },\n start: {\n x: ax,\n y: ay,\n },\n end: {\n x: cx,\n y: cy,\n },\n alpha,\n };\n};\n\nconst interHelper = function (bez1, bez2, justCount) {\n const bbox1 = bezierBBox(bez1);\n const bbox2 = bezierBBox(bez2);\n if (!isBBoxIntersect(bbox1, bbox2)) {\n return justCount ? 0 : [];\n }\n const l1 = bezlen.apply(0, bez1);\n const l2 = bezlen.apply(0, bez2);\n const n1 = ~~(l1 / 8);\n const n2 = ~~(l2 / 8);\n const dots1 = [];\n const dots2 = [];\n const xy = {};\n let res = justCount ? 0 : [];\n for (let i = 0; i < n1 + 1; i++) {\n const d = findDotsAtSegment.apply(0, bez1.concat(i / n1));\n dots1.push({\n x: d.x,\n y: d.y,\n t: i / n1,\n });\n }\n for (let i = 0; i < n2 + 1; i++) {\n const d = findDotsAtSegment.apply(0, bez2.concat(i / n2));\n dots2.push({\n x: d.x,\n y: d.y,\n t: i / n2,\n });\n }\n for (let i = 0; i < n1; i++) {\n for (let j = 0; j < n2; j++) {\n const di = dots1[i];\n const di1 = dots1[i + 1];\n const dj = dots2[j];\n const dj1 = dots2[j + 1];\n const ci = Math.abs(di1.x - di.x) < 0.001 ? 'y' : 'x';\n const cj = Math.abs(dj1.x - dj.x) < 0.001 ? 'y' : 'x';\n const is = intersect(di.x, di.y, di1.x, di1.y, dj.x, dj.y, dj1.x, dj1.y);\n if (is) {\n if (xy[is.x.toFixed(4)] === is.y.toFixed(4)) {\n continue;\n }\n xy[is.x.toFixed(4)] = is.y.toFixed(4);\n const t1 = di.t + Math.abs((is[ci] - di[ci]) / (di1[ci] - di[ci])) * (di1.t - di.t);\n const t2 = dj.t + Math.abs((is[cj] - dj[cj]) / (dj1[cj] - dj[cj])) * (dj1.t - dj.t);\n if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1) {\n if (justCount) {\n // @ts-ignore\n res += 1;\n } else {\n // @ts-ignore\n res.push({\n x: is.x,\n y: is.y,\n t1,\n t2,\n });\n }\n }\n }\n }\n }\n return res;\n};\n\nconst interPathHelper = function (path1, path2, justCount?) {\n path1 = pathToCurve(path1);\n path2 = pathToCurve(path2);\n let x1;\n let y1;\n let x2;\n let y2;\n let x1m;\n let y1m;\n let x2m;\n let y2m;\n let bez1;\n let bez2;\n let res = justCount ? 0 : [];\n for (let i = 0, ii = path1.length; i < ii; i++) {\n const pi = path1[i];\n if (pi[0] === 'M') {\n x1 = x1m = pi[1];\n y1 = y1m = pi[2];\n } else {\n if (pi[0] === 'C') {\n bez1 = [x1, y1].concat(pi.slice(1));\n x1 = bez1[6];\n y1 = bez1[7];\n } else {\n bez1 = [x1, y1, x1, y1, x1m, y1m, x1m, y1m];\n x1 = x1m;\n y1 = y1m;\n }\n for (let j = 0, jj = path2.length; j < jj; j++) {\n const pj = path2[j];\n if (pj[0] === 'M') {\n x2 = x2m = pj[1];\n y2 = y2m = pj[2];\n } else {\n if (pj[0] === 'C') {\n bez2 = [x2, y2].concat(pj.slice(1));\n x2 = bez2[6];\n y2 = bez2[7];\n } else {\n bez2 = [x2, y2, x2, y2, x2m, y2m, x2m, y2m];\n x2 = x2m;\n y2 = y2m;\n }\n const intr = interHelper(bez1, bez2, justCount);\n if (justCount) {\n // @ts-ignore\n res += intr;\n } else {\n // @ts-ignore\n for (let k = 0, kk = intr.length; k < kk; k++) {\n intr[k].segment1 = i;\n intr[k].segment2 = j;\n intr[k].bez1 = bez1;\n intr[k].bez2 = bez2;\n }\n // @ts-ignore\n res = res.concat(intr);\n }\n }\n }\n }\n }\n return res;\n};\n\nconst intersection = function (path1, path2) {\n return interPathHelper(path1, path2);\n};\n\nfunction decasteljau(points, t) {\n const left = [];\n const right = [];\n\n function recurse(points, t) {\n if (points.length === 1) {\n left.push(points[0]);\n right.push(points[0]);\n } else {\n const middlePoints = [];\n for (let i = 0; i < points.length - 1; i++) {\n if (i === 0) {\n left.push(points[0]);\n }\n if (i === points.length - 2) {\n right.push(points[i + 1]);\n }\n middlePoints[i] = [\n (1 - t) * points[i][0] + t * points[i + 1][0],\n (1 - t) * points[i][1] + t * points[i + 1][1],\n ];\n }\n recurse(middlePoints, t);\n }\n }\n if (points.length) {\n recurse(points, t);\n }\n return { left, right: right.reverse() };\n}\n\nfunction splitCurve(start, end, count) {\n const points = [[start[1], start[2]]];\n count = count || 2;\n const segments = [];\n if (end[0] === 'A') {\n points.push(end[6]);\n points.push(end[7]);\n } else if (end[0] === 'C') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n points.push([end[5], end[6]]);\n } else if (end[0] === 'S' || end[0] === 'Q') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n } else {\n points.push([end[1], end[2]]);\n }\n\n let leftSegments = points;\n const t = 1 / count;\n\n for (let i = 0; i < count - 1; i++) {\n const rt = t / (1 - t * i);\n const split = decasteljau(leftSegments, rt);\n segments.push(split.left);\n leftSegments = split.right;\n }\n segments.push(leftSegments);\n const result = segments.map((segment) => {\n let cmd = [];\n if (segment.length === 4) {\n cmd.push('C');\n cmd = cmd.concat(segment[2]);\n }\n if (segment.length >= 3) {\n if (segment.length === 3) {\n cmd.push('Q');\n }\n cmd = cmd.concat(segment[1]);\n }\n if (segment.length === 2) {\n cmd.push('L');\n }\n cmd = cmd.concat(segment[segment.length - 1]);\n return cmd;\n });\n return result;\n}\n\nconst splitSegment = function (start, end, count) {\n if (count === 1) {\n return [[].concat(start)];\n }\n let segments = [];\n if (end[0] === 'L' || end[0] === 'C' || end[0] === 'Q') {\n segments = segments.concat(splitCurve(start, end, count));\n } else {\n const temp = [].concat(start);\n if (temp[0] === 'M') {\n temp[0] = 'L';\n }\n for (let i = 0; i <= count - 1; i++) {\n segments.push(temp);\n }\n }\n return segments;\n};\n\nconst fillPath = function (source, target) {\n if (source.length === 1) {\n return source;\n }\n const sourceLen = source.length - 1;\n const targetLen = target.length - 1;\n const ratio = sourceLen / targetLen;\n const segmentsToFill = [];\n if (source.length === 1 && source[0][0] === 'M') {\n for (let i = 0; i < targetLen - sourceLen; i++) {\n source.push(source[0]);\n }\n return source;\n }\n for (let i = 0; i < targetLen; i++) {\n const index = Math.floor(ratio * i);\n segmentsToFill[index] = (segmentsToFill[index] || 0) + 1;\n }\n const filled = segmentsToFill.reduce((filled, count, i) => {\n if (i === sourceLen) {\n return filled.concat(source[sourceLen]);\n }\n return filled.concat(splitSegment(source[i], source[i + 1], count));\n }, []);\n filled.unshift(source[0]);\n if (target[targetLen] === 'Z' || target[targetLen] === 'z') {\n filled.push('Z');\n }\n return filled;\n};\n\nconst isEqual = function (obj1, obj2) {\n if (obj1.length !== obj2.length) {\n return false;\n }\n let result = true;\n each(obj1, (item, i) => {\n if (item !== obj2[i]) {\n result = false;\n return false;\n }\n });\n return result;\n};\nfunction getMinDiff(del, add, modify) {\n let type = null;\n let min = modify;\n if (add < min) {\n min = add;\n type = 'add';\n }\n if (del < min) {\n min = del;\n type = 'del';\n }\n return {\n type,\n min,\n };\n}\n\n/*\n * https://en.wikipedia.org/wiki/Levenshtein_distance\n * 计算两条path的编辑距离\n */\nconst levenshteinDistance = function (source, target) {\n const sourceLen = source.length;\n const targetLen = target.length;\n let sourceSegment;\n let targetSegment;\n let temp = 0;\n if (sourceLen === 0 || targetLen === 0) {\n return null;\n }\n const dist = [];\n for (let i = 0; i <= sourceLen; i++) {\n dist[i] = [];\n dist[i][0] = { min: i };\n }\n for (let j = 0; j <= targetLen; j++) {\n dist[0][j] = { min: j };\n }\n\n for (let i = 1; i <= sourceLen; i++) {\n sourceSegment = source[i - 1];\n for (let j = 1; j <= targetLen; j++) {\n targetSegment = target[j - 1];\n if (isEqual(sourceSegment, targetSegment)) {\n temp = 0;\n } else {\n temp = 1;\n }\n const del = dist[i - 1][j].min + 1;\n const add = dist[i][j - 1].min + 1;\n const modify = dist[i - 1][j - 1].min + temp;\n dist[i][j] = getMinDiff(del, add, modify);\n }\n }\n return dist;\n};\n\nconst fillPathByDiff = function (source, target) {\n const diffMatrix = levenshteinDistance(source, target);\n let sourceLen = source.length;\n const targetLen = target.length;\n const changes = [];\n let index = 1;\n let minPos = 1;\n // 如果source和target不是完全不相等\n if (diffMatrix[sourceLen][targetLen].min !== sourceLen) {\n // 获取从source到target所需改动\n for (let i = 1; i <= sourceLen; i++) {\n let min = diffMatrix[i][i].min;\n minPos = i;\n for (let j = index; j <= targetLen; j++) {\n if (diffMatrix[i][j].min < min) {\n min = diffMatrix[i][j].min;\n minPos = j;\n }\n }\n index = minPos;\n if (diffMatrix[i][index].type) {\n changes.push({ index: i - 1, type: diffMatrix[i][index].type });\n }\n }\n // 对source进行增删path\n for (let i = changes.length - 1; i >= 0; i--) {\n index = changes[i].index;\n if (changes[i].type === 'add') {\n source.splice(index, 0, [].concat(source[index]));\n } else {\n source.splice(index, 1);\n }\n }\n }\n // source尾部补齐\n sourceLen = source.length;\n const diff = targetLen - sourceLen;\n if (sourceLen < targetLen) {\n for (let i = 0; i < diff; i++) {\n if (source[sourceLen - 1][0] === 'z' || source[sourceLen - 1][0] === 'Z') {\n source.splice(sourceLen - 2, 0, source[sourceLen - 2]);\n } else {\n source.push(source[sourceLen - 1]);\n }\n sourceLen += 1;\n }\n }\n return source;\n};\n\n// 将两个点均分成count个点\nfunction _splitPoints(points, former, count) {\n const result = [].concat(points);\n let index;\n let t = 1 / (count + 1);\n const formerEnd = _getSegmentPoints(former)[0];\n for (let i = 1; i <= count; i++) {\n t *= i;\n index = Math.floor(points.length * t);\n if (index === 0) {\n result.unshift([formerEnd[0] * t + points[index][0] * (1 - t), formerEnd[1] * t + points[index][1] * (1 - t)]);\n } else {\n result.splice(index, 0, [\n formerEnd[0] * t + points[index][0] * (1 - t),\n formerEnd[1] * t + points[index][1] * (1 - t),\n ]);\n }\n }\n return result;\n}\n\n/*\n * 抽取pathSegment中的关键点\n * M,L,A,Q,H,V一个端点\n * Q, S抽取一个端点,一个控制点\n * C抽取一个端点,两个控制点\n */\nfunction _getSegmentPoints(segment) {\n const points = [];\n switch (segment[0]) {\n case 'M':\n points.push([segment[1], segment[2]]);\n break;\n case 'L':\n points.push([segment[1], segment[2]]);\n break;\n case 'A':\n points.push([segment[6], segment[7]]);\n break;\n case 'Q':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'T':\n points.push([segment[1], segment[2]]);\n break;\n case 'C':\n points.push([segment[5], segment[6]]);\n points.push([segment[1], segment[2]]);\n points.push([segment[3], segment[4]]);\n break;\n case 'S':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'H':\n points.push([segment[1], segment[1]]);\n break;\n case 'V':\n points.push([segment[1], segment[1]]);\n break;\n default:\n }\n return points;\n}\n\nconst formatPath = function (fromPath, toPath) {\n if (fromPath.length <= 1) {\n return fromPath;\n }\n let points;\n for (let i = 0; i < toPath.length; i++) {\n if (fromPath[i][0] !== toPath[i][0]) {\n // 获取fromPath的pathSegment的端点,根据toPath的指令对其改造\n points = _getSegmentPoints(fromPath[i]);\n switch (toPath[i][0]) {\n case 'M':\n fromPath[i] = ['M'].concat(points[0]);\n break;\n case 'L':\n fromPath[i] = ['L'].concat(points[0]);\n break;\n case 'A':\n fromPath[i] = [].concat(toPath[i]);\n fromPath[i][6] = points[0][0];\n fromPath[i][7] = points[0][1];\n break;\n case 'Q':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n } else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['Q'].concat(\n points.reduce((arr, i) => {\n return arr.concat(i);\n }, [])\n );\n break;\n case 'T':\n fromPath[i] = ['T'].concat(points[0]);\n break;\n case 'C':\n if (points.length < 3) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 2);\n } else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['C'].concat(\n points.reduce((arr, i) => {\n return arr.concat(i);\n }, [])\n );\n break;\n case 'S':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n } else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['S'].concat(\n points.reduce((arr, i) => {\n return arr.concat(i);\n }, [])\n );\n break;\n default:\n fromPath[i] = toPath[i];\n }\n }\n }\n return fromPath;\n};\n\nexport {\n catmullRomToBezier,\n fillPath,\n fillPathByDiff,\n formatPath,\n intersection,\n parsePathArray,\n parsePathString,\n pathToAbsolute,\n pathToCurve,\n rectPath,\n};\n","import { IShape } from '../interfaces';\nimport { LooseObject } from '../types';\n\nclass GraphEvent {\n /**\n * 事件类型\n * @type {string}\n */\n type: string;\n /**\n * 事件名称\n * @type {string}\n */\n name: string;\n /**\n * 画布上的位置 x\n * @type {number}\n */\n x: number;\n /**\n * 画布上的位置 y\n * @type {number}\n */\n y: number;\n /**\n * 窗口上的位置 x\n * @type {number}\n */\n clientX: number;\n /**\n * 窗口上的位置 y\n * @type {number}\n */\n clientY: number;\n /**\n * 是否允许冒泡\n * @type {boolean}\n */\n bubbles: boolean = true;\n /**\n * 触发对象\n * @type {object}\n */\n target: LooseObject = null;\n /**\n * 监听对象\n * @type {object}\n */\n currentTarget: LooseObject = null;\n /**\n * 委托对象\n * @type {object}\n */\n delegateTarget: LooseObject = null;\n /**\n * 委托事件监听对象的代理对象,即 ev.delegateObject = ev.currentTarget.get('delegateObject')\n * @type {object}\n */\n delegateObject: object = null;\n /**\n * 是否阻止了原生事件\n * @type {boolean}\n */\n defaultPrevented: boolean = false;\n /**\n * 是否阻止传播(向上冒泡)\n * @type {boolean}\n */\n propagationStopped: boolean = false;\n /**\n * 触发事件的图形\n * @type {IShape}\n */\n shape: IShape = null;\n /**\n * 开始触发事件的图形\n * @type {IShape}\n */\n fromShape: IShape = null;\n /**\n * 事件结束时的触发图形\n * @type {IShape}\n */\n toShape: IShape = null;\n\n /**\n * 触发时的时间\n * @type {number}\n */\n timeStamp: number;\n\n /**\n * 触发时的对象\n * @type {object}\n */\n originalEvent: Event;\n\n // 触发事件的路径\n propagationPath: any[] = [];\n\n constructor(type, event) {\n this.type = type;\n this.name = type;\n this.originalEvent = event;\n this.timeStamp = event.timeStamp;\n }\n\n /**\n * 阻止浏览器默认的行为\n */\n preventDefault() {\n this.defaultPrevented = true;\n if (this.originalEvent.preventDefault) {\n this.originalEvent.preventDefault();\n }\n }\n\n /**\n * 阻止冒泡\n */\n stopPropagation() {\n this.propagationStopped = true;\n }\n\n toString() {\n const type = this.type;\n return `[Event (type=${type})]`;\n }\n\n save() {}\n\n restore() {}\n}\n\nexport default GraphEvent;\n","import { IBase } from '../interfaces';\nexport function removeFromArray(arr: any[], obj: any) {\n const index = arr.indexOf(obj);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\n\nexport const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nexport { isNil, isFunction, isString, isObject, isArray, mix, each, upperFirst } from '@antv/util';\n\n// 是否元素的父容器\nexport function isParent(container, shape) {\n // 所有 shape 都是 canvas 的子元素\n if (container.isCanvas()) {\n return true;\n }\n let parent = shape.getParent();\n let isParent = false;\n while (parent) {\n if (parent === container) {\n isParent = true;\n break;\n }\n parent = parent.getParent();\n }\n return isParent;\n}\n\nexport function isAllowCapture(element: IBase): boolean {\n // @ts-ignore\n return element.cfg.visible && element.cfg.capture;\n}\n","import EE from '@antv/event-emitter';\nimport { IBase } from '../interfaces';\nimport { mix } from '../util/util';\nimport { LooseObject } from '../types';\nabstract class Base extends EE implements IBase {\n /**\n * 内部属性,用于 get,set,但是可以用于优化性能使用\n * @type {object}\n */\n cfg: LooseObject;\n\n /**\n * 是否被销毁\n * @type {boolean}\n */\n destroyed: boolean = false;\n\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n getDefaultCfg() {\n return {};\n }\n\n constructor(cfg) {\n super();\n const defaultCfg = this.getDefaultCfg();\n this.cfg = mix(defaultCfg, cfg);\n }\n\n // 实现接口的方法\n get(name) {\n return this.cfg[name];\n }\n // 实现接口的方法\n set(name, value) {\n this.cfg[name] = value;\n }\n\n // 实现接口的方法\n destroy() {\n this.cfg = {\n destroyed: true,\n };\n this.off();\n this.destroyed = true;\n }\n}\n\nexport default Base;\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n","/**\n * @fileoverview 矩阵运算,本来是要引入 gl-matrix, 但是考虑到 g-mobile 对大小有限制,同时 g-webgl 使用的 matrix 不一致\n * 所以,这里仅实现 2D 几个运算,上层自己引入 gl-matrix\n * @author dxq613@gmail.com\n */\n\n/**\n * 3阶矩阵相乘\n * @param {number[]} a 矩阵1\n * @param {number[]} b 矩阵2\n */\nexport function multiplyMatrix(a: number[], b: number[]) {\n const out = [];\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n\n const a10 = a[3];\n const a11 = a[4];\n const a12 = a[5];\n const a20 = a[6];\n const a21 = a[7];\n const a22 = a[8];\n\n const b00 = b[0];\n const b01 = b[1];\n const b02 = b[2];\n const b10 = b[3];\n const b11 = b[4];\n const b12 = b[5];\n const b20 = b[6];\n const b21 = b[7];\n const b22 = b[8];\n\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n\n/**\n * 3阶矩阵同2阶向量相乘\n * @param {number[]} m 矩阵\n * @param {number[]} v 二阶向量\n */\nexport function multiplyVec2(m: number[], v: number[]) {\n const out = [];\n const x = v[0];\n const y = v[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n\n/**\n * 矩阵的逆\n * @param {number[]} a 矩阵\n */\nexport function invert(a: number[]) {\n const out = [];\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n const a10 = a[3];\n const a11 = a[4];\n const a12 = a[5];\n const a20 = a[6];\n const a21 = a[7];\n const a22 = a[8];\n\n const b01 = a22 * a11 - a12 * a21;\n const b11 = -a22 * a10 + a12 * a20;\n const b21 = a21 * a10 - a11 * a20;\n\n // Calculate the determinant\n let det = a00 * b01 + a01 * b11 + a02 * b21;\n\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n","import { each, isEqual, isFunction, isNumber, isObject, isArray, noop, mix, upperFirst, uniqueId } from '@antv/util';\nimport { ext } from '@antv/matrix-util';\nimport { IElement, IShape, IGroup, ICanvas, ICtor } from '../interfaces';\nimport { ClipCfg, ChangeType, OnFrame, ShapeAttrs, AnimateCfg, Animation, BBox, ShapeBase } from '../types';\nimport { removeFromArray, isParent } from '../util/util';\nimport { multiplyMatrix, multiplyVec2, invert } from '../util/matrix';\nimport Base from './base';\nimport GraphEvent from '../event/graph-event';\n\nconst { transform } = ext;\n\nconst MATRIX = 'matrix';\nconst CLONE_CFGS = ['zIndex', 'capture', 'visible', 'type'];\n\n// 可以在 toAttrs 中设置,但不属于绘图属性的字段\nconst RESERVED_PORPS = ['repeat'];\n\nconst DELEGATION_SPLIT = ':';\nconst WILDCARD = '*';\n\n// 需要考虑数组嵌套数组的场景\n// 数组嵌套对象的场景不考虑\nfunction _cloneArrayAttr(arr) {\n const result = [];\n for (let i = 0; i < arr.length; i++) {\n if (isArray(arr[i])) {\n result.push([].concat(arr[i]));\n } else {\n result.push(arr[i]);\n }\n }\n return result;\n}\n\nfunction getFormatFromAttrs(toAttrs, shape) {\n const fromAttrs = {};\n const attrs = shape.attrs;\n for (const k in toAttrs) {\n fromAttrs[k] = attrs[k];\n }\n return fromAttrs;\n}\n\nfunction getFormatToAttrs(props, shape) {\n const toAttrs = {};\n const attrs = shape.attr();\n each(props, (v, k) => {\n if (RESERVED_PORPS.indexOf(k) === -1 && !isEqual(attrs[k], v)) {\n toAttrs[k] = v;\n }\n });\n return toAttrs;\n}\n\nfunction checkExistedAttrs(animations: Animation[], animation: Animation) {\n if (animation.onFrame) {\n return animations;\n }\n const { startTime, delay, duration } = animation;\n const hasOwnProperty = Object.prototype.hasOwnProperty;\n each(animations, (item) => {\n // 后一个动画开始执行的时间 < 前一个动画的结束时间 && 后一个动画的执行时间 > 前一个动画的延迟\n if (startTime + delay < item.startTime + item.delay + item.duration && duration > item.delay) {\n each(animation.toAttrs, (v, k) => {\n if (hasOwnProperty.call(item.toAttrs, k)) {\n delete item.toAttrs[k];\n delete item.fromAttrs[k];\n }\n });\n }\n });\n\n return animations;\n}\n\nabstract class Element extends Base implements IElement {\n /**\n * @protected\n * 图形属性\n * @type {ShapeAttrs}\n */\n attrs: ShapeAttrs = {};\n\n constructor(cfg) {\n super(cfg);\n const attrs = this.getDefaultAttrs();\n mix(attrs, cfg.attrs);\n this.attrs = attrs;\n this.initAttrs(attrs);\n this.initAnimate(); // 初始化动画\n }\n\n // override\n getDefaultCfg() {\n return {\n visible: true,\n capture: true,\n zIndex: 0,\n };\n }\n\n /**\n * @protected\n * 获取默认的属相\n */\n getDefaultAttrs() {\n return {\n matrix: this.getDefaultMatrix(),\n opacity: 1,\n };\n }\n\n abstract getShapeBase(): ShapeBase;\n abstract getGroupBase(): ICtor;\n\n /**\n * @protected\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n onCanvasChange(changeType: ChangeType) {}\n\n /**\n * @protected\n * 初始化属性,有些属性需要加工\n * @param {object} attrs 属性值\n */\n initAttrs(attrs: ShapeAttrs) {}\n\n /**\n * @protected\n * 初始化动画\n */\n initAnimate() {\n this.set('animable', true);\n this.set('animating', false);\n }\n\n isGroup() {\n return false;\n }\n\n getParent(): IGroup {\n return this.get('parent');\n }\n\n getCanvas(): ICanvas {\n return this.get('canvas');\n }\n\n attr(...args) {\n const [name, value] = args;\n if (!name) return this.attrs;\n if (isObject(name)) {\n for (const k in name) {\n this.setAttr(k, name[k]);\n }\n this.afterAttrsChange(name);\n return this;\n }\n if (args.length === 2) {\n this.setAttr(name, value);\n this.afterAttrsChange({\n [name]: value,\n });\n return this;\n }\n return this.attrs[name];\n }\n\n // 在子类上单独实现\n abstract getBBox(): BBox;\n // 子类上单独实现\n abstract getCanvasBBox(): BBox;\n\n // 是否被裁剪,被裁剪则不显示,不参与拾取\n isClipped(refX, refY): boolean {\n const clip = this.getClip();\n return clip && !clip.isHit(refX, refY);\n }\n\n /**\n * 内部设置属性值的接口\n * @param {string} name 属性名\n * @param {any} value 属性值\n */\n setAttr(name: string, value: any) {\n const originValue = this.attrs[name];\n if (originValue !== value) {\n this.attrs[name] = value;\n this.onAttrChange(name, value, originValue);\n }\n }\n\n /**\n * @protected\n * 属性值发生改变\n * @param {string} name 属性名\n * @param {any} value 属性值\n * @param {any} originValue 属性值\n */\n onAttrChange(name: string, value: any, originValue: any) {\n if (name === 'matrix') {\n this.set('totalMatrix', null);\n }\n }\n\n /**\n * 属性更改后需要做的事情\n * @protected\n */\n afterAttrsChange(targetAttrs) {\n if (this.cfg.isClipShape) {\n const applyTo = this.cfg.applyTo;\n if (applyTo) {\n applyTo.onCanvasChange('clip');\n }\n } else {\n this.onCanvasChange('attr');\n }\n }\n\n show() {\n // 不是高频操作直接使用 set\n this.set('visible', true);\n this.onCanvasChange('show');\n return this;\n }\n\n hide() {\n // 不是高频操作直接使用 set\n this.set('visible', false);\n this.onCanvasChange('hide');\n return this;\n }\n\n setZIndex(zIndex: number) {\n this.set('zIndex', zIndex);\n const parent = this.getParent();\n if (parent) {\n // 改变 zIndex 不应该立即触发渲染 (调用 onCanvasChange('zIndex')),需要经过 sort 再触发\n parent.sort();\n }\n return this;\n }\n\n toFront() {\n const parent = this.getParent();\n if (!parent) {\n return;\n }\n const children = parent.getChildren();\n const el = this.get('el');\n const index = children.indexOf(this);\n children.splice(index, 1);\n children.push(this);\n this.onCanvasChange('zIndex');\n }\n\n toBack() {\n const parent = this.getParent();\n if (!parent) {\n return;\n }\n const children = parent.getChildren();\n const el = this.get('el');\n const index = children.indexOf(this);\n children.splice(index, 1);\n children.unshift(this);\n this.onCanvasChange('zIndex');\n }\n\n remove(destroy = true) {\n const parent = this.getParent();\n if (parent) {\n removeFromArray(parent.getChildren(), this);\n if (!parent.get('clearing')) {\n // 如果父元素正在清理,当前元素不触发 remove\n this.onCanvasChange('remove');\n }\n } else {\n this.onCanvasChange('remove');\n }\n if (destroy) {\n this.destroy();\n }\n }\n\n resetMatrix() {\n this.attr(MATRIX, this.getDefaultMatrix());\n this.onCanvasChange('matrix');\n }\n\n getMatrix(): number[] {\n return this.attr(MATRIX);\n }\n\n setMatrix(m: number[]) {\n this.attr(MATRIX, m);\n this.onCanvasChange('matrix');\n }\n\n // 获取总的 matrix\n getTotalMatrix() {\n let totalMatrix = this.cfg.totalMatrix;\n if (!totalMatrix) {\n const currentMatrix = this.attr('matrix');\n const parentMatrix = this.cfg.parentMatrix;\n if (parentMatrix && currentMatrix) {\n totalMatrix = multiplyMatrix(parentMatrix, currentMatrix);\n } else {\n totalMatrix = currentMatrix || parentMatrix;\n }\n this.set('totalMatrix', totalMatrix);\n }\n return totalMatrix;\n }\n\n // 上层分组设置 matrix\n applyMatrix(matrix: number[]) {\n const currentMatrix = this.attr('matrix');\n let totalMatrix = null;\n if (matrix && currentMatrix) {\n totalMatrix = multiplyMatrix(matrix, currentMatrix);\n } else {\n totalMatrix = currentMatrix || matrix;\n }\n this.set('totalMatrix', totalMatrix);\n this.set('parentMatrix', matrix);\n }\n\n /**\n * @protected\n * 获取默认的矩阵\n * @returns {number[]|null} 默认的矩阵\n */\n getDefaultMatrix() {\n return null;\n }\n\n // 将向量应用设置的矩阵\n applyToMatrix(v: number[]): number[] {\n const matrix = this.attr('matrix');\n if (matrix) {\n return multiplyVec2(matrix, v);\n }\n return v;\n }\n\n // 根据设置的矩阵,将向量转换相对于图形/分组的位置\n invertFromMatrix(v: number[]): number[] {\n const matrix = this.attr('matrix');\n if (matrix) {\n const invertMatrix = invert(matrix);\n if (invertMatrix) {\n return multiplyVec2(invertMatrix, v);\n }\n }\n return v;\n }\n\n // 设置 clip\n setClip(clipCfg: ClipCfg) {\n const canvas = this.getCanvas();\n // 应该只设置当前元素的 clip,不应该去修改 clip 本身,方便 clip 被复用\n // TODO: setClip 的传参既 shape 配置,也支持 shape 对象\n // const preShape = this.get('clipShape');\n // if (preShape) {\n // // 将之前的 clipShape 销毁\n // preShape.destroy();\n // }\n let clipShape = null;\n // 如果配置项为 null,则不移除 clipShape\n if (clipCfg) {\n const ShapeBase = this.getShapeBase();\n const shapeType = upperFirst(clipCfg.type);\n const Cons = ShapeBase[shapeType];\n if (Cons) {\n clipShape = new Cons({\n type: clipCfg.type,\n isClipShape: true, // 增加一个标记\n applyTo: this,\n attrs: clipCfg.attrs,\n canvas, // 设置 canvas\n });\n }\n }\n\n this.set('clipShape', clipShape);\n this.onCanvasChange('clip');\n return clipShape;\n }\n\n getClip(): IShape {\n // 高频率调用的地方直接使用 this.cfg.xxx\n const clipShape = this.cfg.clipShape;\n // 未设置时返回 Null,保证一致性\n if (!clipShape) {\n return null;\n }\n return clipShape;\n }\n\n clone() {\n const originAttrs = this.attrs;\n const attrs = {};\n each(originAttrs, (i, k) => {\n if (isArray(originAttrs[k])) {\n attrs[k] = _cloneArrayAttr(originAttrs[k]);\n } else {\n attrs[k] = originAttrs[k];\n }\n });\n const cons = this.constructor;\n // @ts-ignore\n const clone = new cons({ attrs });\n each(CLONE_CFGS, (cfgName) => {\n clone.set(cfgName, this.get(cfgName));\n });\n return clone;\n }\n\n destroy() {\n const destroyed = this.destroyed;\n if (destroyed) {\n return;\n }\n this.attrs = {};\n super.destroy();\n // this.onCanvasChange('destroy');\n }\n\n /**\n * 是否处于动画暂停状态\n * @return {boolean} 是否处于动画暂停状态\n */\n isAnimatePaused() {\n return this.get('_pause').isPaused;\n }\n\n /**\n * 执行动画,支持多种函数签名\n * 1. animate(toAttrs: ElementAttrs, duration: number, easing?: string, callback?: () => void, delay?: number)\n * 2. animate(onFrame: OnFrame, duration: number, easing?: string, callback?: () => void, delay?: number)\n * 3. animate(toAttrs: ElementAttrs, cfg: AnimateCfg)\n * 4. animate(onFrame: OnFrame, cfg: AnimateCfg)\n * 各个参数的含义为:\n * toAttrs 动画最终状态\n * onFrame 自定义帧动画函数\n * duration 动画执行时间\n * easing 动画缓动效果\n * callback 动画执行后的回调\n * delay 动画延迟时间\n */\n animate(...args) {\n if (!this.get('timeline') && !this.get('canvas')) {\n return;\n }\n this.set('animating', true);\n let timeline = this.get('timeline');\n if (!timeline) {\n timeline = this.get('canvas').get('timeline');\n this.set('timeline', timeline);\n }\n let animations = this.get('animations') || [];\n // 初始化 tick\n if (!timeline.timer) {\n timeline.initTimer();\n }\n let [toAttrs, duration, easing = 'easeLinear', callback = noop, delay = 0] = args;\n let onFrame: OnFrame;\n let repeat: boolean;\n let pauseCallback;\n let resumeCallback;\n let animateCfg: AnimateCfg;\n // 第二个参数,既可以是动画最终状态 toAttrs,也可以是自定义帧动画函数 onFrame\n if (isFunction(toAttrs)) {\n onFrame = toAttrs as OnFrame;\n toAttrs = {};\n } else if (isObject(toAttrs) && (toAttrs as any).onFrame) {\n // 兼容 3.0 中的写法,onFrame 和 repeat 可在 toAttrs 中设置\n onFrame = (toAttrs as any).onFrame as OnFrame;\n repeat = (toAttrs as any).repeat;\n }\n // 第二个参数,既可以是执行时间 duration,也可以是动画参数 animateCfg\n if (isObject(duration)) {\n animateCfg = duration as AnimateCfg;\n duration = animateCfg.duration;\n easing = animateCfg.easing || 'easeLinear';\n delay = animateCfg.delay || 0;\n // animateCfg 中的设置优先级更高\n repeat = animateCfg.repeat || repeat || false;\n callback = animateCfg.callback || noop;\n pauseCallback = animateCfg.pauseCallback || noop;\n resumeCallback = animateCfg.resumeCallback || noop;\n } else {\n // 第四个参数,既可以是回调函数 callback,也可以是延迟时间 delay\n if (isNumber(callback)) {\n delay = callback;\n callback = null;\n }\n // 第三个参数,既可以是缓动参数 easing,也可以是回调函数 callback\n if (isFunction(easing)) {\n callback = easing;\n easing = 'easeLinear';\n } else {\n easing = easing || 'easeLinear';\n }\n }\n const formatToAttrs = getFormatToAttrs(toAttrs, this);\n const animation: Animation = {\n fromAttrs: getFormatFromAttrs(formatToAttrs, this),\n toAttrs: formatToAttrs,\n duration,\n easing,\n repeat,\n callback,\n pauseCallback,\n resumeCallback,\n delay,\n startTime: timeline.getTime(),\n id: uniqueId(),\n onFrame,\n pathFormatted: false,\n };\n // 如果动画元素队列中已经有这个图形了\n if (animations.length > 0) {\n // 先检查是否需要合并属性。若有相同的动画,将该属性从前一个动画中删除,直接用后一个动画中\n animations = checkExistedAttrs(animations, animation);\n } else {\n // 否则将图形添加到动画元素队列\n timeline.addAnimator(this);\n }\n animations.push(animation);\n this.set('animations', animations);\n this.set('_pause', { isPaused: false });\n }\n\n /**\n * 停止动画\n * @param {boolean} toEnd 是否到动画的最终状态\n */\n stopAnimate(toEnd = true) {\n const animations = this.get('animations');\n each(animations, (animation: Animation) => {\n // 将动画执行到最后一帧\n if (toEnd) {\n if (animation.onFrame) {\n this.attr(animation.onFrame(1));\n } else {\n this.attr(animation.toAttrs);\n }\n }\n if (animation.callback) {\n // 动画停止时的回调\n animation.callback();\n }\n });\n this.set('animating', false);\n this.set('animations', []);\n }\n\n /**\n * 暂停动画\n */\n pauseAnimate() {\n const timeline = this.get('timeline');\n const animations = this.get('animations');\n const pauseTime = timeline.getTime();\n each(animations, (animation: Animation) => {\n animation._paused = true;\n animation._pauseTime = pauseTime;\n if (animation.pauseCallback) {\n // 动画暂停时的回调\n animation.pauseCallback();\n }\n });\n // 记录下是在什么时候暂停的\n this.set('_pause', {\n isPaused: true,\n pauseTime,\n });\n return this;\n }\n\n /**\n * 恢复动画\n */\n resumeAnimate() {\n const timeline = this.get('timeline');\n const current = timeline.getTime();\n const animations = this.get('animations');\n const pauseTime = this.get('_pause').pauseTime;\n // 之后更新属性需要计算动画已经执行的时长,如果暂停了,就把初始时间调后\n each(animations, (animation: Animation) => {\n animation.startTime = animation.startTime + (current - pauseTime);\n animation._paused = false;\n animation._pauseTime = null;\n if (animation.resumeCallback) {\n animation.resumeCallback();\n }\n });\n this.set('_pause', {\n isPaused: false,\n });\n this.set('animations', animations);\n return this;\n }\n\n /**\n * 触发委托事件\n * @param {string} type 事件类型\n * @param {GraphEvent} eventObj 事件对象\n */\n emitDelegation(type: string, eventObj: GraphEvent) {\n const paths = eventObj.propagationPath;\n const events = this.getEvents();\n let relativeShape;\n if (type === 'mouseenter') {\n relativeShape = eventObj.fromShape;\n } else if (type === 'mouseleave') {\n relativeShape = eventObj.toShape;\n }\n // 至少有一个对象,且第一个对象为 shape\n for (let i = 0; i < paths.length; i++) {\n const element = paths[i];\n // 暂定跟 name 绑定\n const name = element.get('name');\n if (name) {\n // 第一个 mouseenter 和 mouseleave 的停止即可,因为后面的都是前面的 Parent\n if (\n // 只有 element 是 Group 或者 Canvas 的时候,才需要判断 isParent\n (element.isGroup() || (element.isCanvas && element.isCanvas())) &&\n relativeShape &&\n isParent(element, relativeShape)\n ) {\n break;\n }\n if (isArray(name)) {\n each(name, (subName) => {\n this.emitDelegateEvent(element, subName, eventObj);\n });\n } else {\n this.emitDelegateEvent(element, name, eventObj);\n }\n }\n }\n }\n\n private emitDelegateEvent(element, name: string, eventObj: GraphEvent) {\n const events = this.getEvents();\n // 事件委托的形式 name:type\n const eventName = name + DELEGATION_SPLIT + eventObj.type;\n if (events[eventName] || events[WILDCARD]) {\n // 对于通配符 *,事件名称 = 委托事件名称\n eventObj.name = eventName;\n eventObj.currentTarget = element;\n eventObj.delegateTarget = this;\n // 将委托事件的监听对象 delegateObject 挂载到事件对象上\n eventObj.delegateObject = element.get('delegateObject');\n this.emit(eventName, eventObj);\n }\n }\n\n /**\n * 移动元素\n * @param {number} translateX 水平移动距离\n * @param {number} translateY 垂直移动距离\n * @return {IElement} 元素\n */\n translate(translateX: number = 0, translateY: number = 0) {\n const matrix = this.getMatrix();\n const newMatrix = transform(matrix, [['t', translateX, translateY]]);\n this.setMatrix(newMatrix);\n return this;\n }\n\n /**\n * 移动元素到目标位置\n * @param {number} targetX 目标位置的水平坐标\n * @param {number} targetX 目标位置的垂直坐标\n * @return {IElement} 元素\n */\n move(targetX: number, targetY: number) {\n const x = this.attr('x') || 0;\n const y = this.attr('y') || 0;\n this.translate(targetX - x, targetY - y);\n return this;\n }\n\n /**\n * 移动元素到目标位置,等价于 move 方法。由于 moveTo 的语义性更强,因此在文档中推荐使用 moveTo 方法\n * @param {number} targetX 目标位置的 x 轴坐标\n * @param {number} targetY 目标位置的 y 轴坐标\n * @return {IElement} 元素\n */\n moveTo(targetX: number, targetY: number) {\n return this.move(targetX, targetY);\n }\n\n /**\n * 缩放元素\n * @param {number} ratioX 水平缩放比例\n * @param {number} ratioY 垂直缩放比例\n * @return {IElement} 元素\n */\n scale(ratioX: number, ratioY?: number) {\n const matrix = this.getMatrix();\n const newMatrix = transform(matrix, [['s', ratioX, ratioY || ratioX]]);\n this.setMatrix(newMatrix);\n return this;\n }\n\n /**\n * 以画布左上角 (0, 0) 为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n rotate(radian: number) {\n const matrix = this.getMatrix();\n const newMatrix = transform(matrix, [['r', radian]]);\n this.setMatrix(newMatrix);\n return this;\n }\n\n /**\n * 以起始点为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n rotateAtStart(rotate: number): IElement {\n const { x, y } = this.attr();\n const matrix = this.getMatrix();\n const newMatrix = transform(matrix, [\n ['t', -x, -y],\n ['r', rotate],\n ['t', x, y],\n ]);\n this.setMatrix(newMatrix);\n return this;\n }\n\n /**\n * 以任意点 (x, y) 为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n rotateAtPoint(x: number, y: number, rotate: number): IElement {\n const matrix = this.getMatrix();\n const newMatrix = transform(matrix, [\n ['t', -x, -y],\n ['r', rotate],\n ['t', x, y],\n ]);\n this.setMatrix(newMatrix);\n return this;\n }\n}\n\nexport default Element;\n","import { max, min } from '@antv/util';\nimport { IContainer, IShape, IGroup, IElement, ICanvas } from '../interfaces';\nimport { BBox, ElementFilterFn } from '../types';\nimport Timeline from '../animate/timeline';\nimport Element from './element';\nimport { isFunction, isObject, each, removeFromArray, upperFirst, isAllowCapture } from '../util/util';\n\nconst SHAPE_MAP = {};\nconst INDEX = '_INDEX';\n\n/**\n * 设置 canvas\n * @param {IElement} element 元素\n * @param {ICanvas} canvas 画布\n */\nfunction setCanvas(element: IElement, canvas: ICanvas) {\n element.set('canvas', canvas);\n if (element.isGroup()) {\n const children = element.get('children');\n if (children.length) {\n children.forEach((child) => {\n setCanvas(child, canvas);\n });\n }\n }\n}\n\n/**\n * 设置 timeline\n * @param {IElement} element 元素\n * @param {Timeline} timeline 时间轴\n */\nfunction setTimeline(element: IElement, timeline: Timeline) {\n element.set('timeline', timeline);\n if (element.isGroup()) {\n const children = element.get('children');\n if (children.length) {\n children.forEach((child) => {\n setTimeline(child, timeline);\n });\n }\n }\n}\n\nfunction contains(container: IContainer, element: IElement): boolean {\n const children = container.getChildren();\n return children.indexOf(element) >= 0;\n}\n\nfunction removeChild(container: IContainer, element: IElement, destroy: boolean = true) {\n // 不再调用 element.remove() 方法,会出现循环调用\n if (destroy) {\n element.destroy();\n } else {\n element.set('parent', null);\n element.set('canvas', null);\n }\n removeFromArray(container.getChildren(), element);\n}\n\nfunction getComparer(compare: Function) {\n return function (left, right) {\n const result = compare(left, right);\n return result === 0 ? left[INDEX] - right[INDEX] : result;\n };\n}\n\nabstract class Container extends Element implements IContainer {\n isCanvas() {\n return false;\n }\n\n // 根据子节点确定 BBox\n getBBox(): BBox {\n // 所有的值可能在画布的可视区外\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n const xArr = [];\n const yArr = [];\n // 将可见元素、图形以及不为空的图形分组筛选出来,用于包围盒合并\n const children = this.getChildren().filter(\n (child) =>\n child.get('visible') && (!child.isGroup() || (child.isGroup() && (child as IGroup).getChildren().length > 0))\n );\n if (children.length > 0) {\n each(children, (child: IElement) => {\n const box = child.getBBox();\n xArr.push(box.minX, box.maxX);\n yArr.push(box.minY, box.maxY);\n });\n minX = min(xArr);\n maxX = max(xArr);\n minY = min(yArr);\n maxY = max(yArr);\n } else {\n minX = 0;\n maxX = 0;\n minY = 0;\n maxY = 0;\n }\n const box = {\n x: minX,\n y: minY,\n minX,\n minY,\n maxX,\n maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n return box;\n }\n\n // 获取画布的包围盒\n getCanvasBBox(): BBox {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n const xArr = [];\n const yArr = [];\n // 将可见元素、图形以及不为空的图形分组筛选出来,用于包围盒合并\n const children = this.getChildren().filter(\n (child) =>\n child.get('visible') && (!child.isGroup() || (child.isGroup() && (child as IGroup).getChildren().length > 0))\n );\n if (children.length > 0) {\n each(children, (child: IElement) => {\n const box = child.getCanvasBBox();\n xArr.push(box.minX, box.maxX);\n yArr.push(box.minY, box.maxY);\n });\n minX = min(xArr);\n maxX = max(xArr);\n minY = min(yArr);\n maxY = max(yArr);\n } else {\n minX = 0;\n maxX = 0;\n minY = 0;\n maxY = 0;\n }\n const box = {\n x: minX,\n y: minY,\n minX,\n minY,\n maxX,\n maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n return box;\n }\n\n getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n cfg['children'] = [];\n return cfg;\n }\n\n onAttrChange(name, value, originValue) {\n super.onAttrChange(name, value, originValue);\n if (name === 'matrix') {\n const totalMatrix = this.getTotalMatrix();\n this._applyChildrenMarix(totalMatrix);\n }\n }\n\n // 不但应用到自己身上还要应用于子元素\n applyMatrix(matrix: number[]) {\n const preTotalMatrix = this.getTotalMatrix();\n super.applyMatrix(matrix);\n const totalMatrix = this.getTotalMatrix();\n // totalMatrix 没有发生变化时,这里仅考虑两者都为 null 时\n // 不继续向下传递矩阵\n if (totalMatrix === preTotalMatrix) {\n return;\n }\n this._applyChildrenMarix(totalMatrix);\n }\n\n // 在子元素上设置矩阵\n _applyChildrenMarix(totalMatrix) {\n const children = this.getChildren();\n each(children, (child) => {\n child.applyMatrix(totalMatrix);\n });\n }\n\n // 兼容老版本的接口\n addShape(...args): IShape {\n const type = args[0];\n let cfg = args[1];\n if (isObject(type)) {\n cfg = type;\n } else {\n cfg['type'] = type;\n }\n let shapeType = SHAPE_MAP[cfg.type];\n if (!shapeType) {\n shapeType = upperFirst(cfg.type);\n SHAPE_MAP[cfg.type] = shapeType;\n }\n const ShapeBase = this.getShapeBase();\n const shape = new ShapeBase[shapeType](cfg);\n this.add(shape);\n return shape;\n }\n\n addGroup(...args): IGroup {\n const [groupClass, cfg] = args;\n let group;\n if (isFunction(groupClass)) {\n if (cfg) {\n group = new groupClass(cfg);\n } else {\n group = new groupClass({\n // canvas,\n parent: this,\n });\n }\n } else {\n const tmpCfg = groupClass || {};\n const TmpGroupClass = this.getGroupBase();\n group = new TmpGroupClass(tmpCfg);\n }\n this.add(group);\n return group;\n }\n\n getCanvas() {\n let canvas;\n if (this.isCanvas()) {\n canvas = this;\n } else {\n canvas = this.get('canvas');\n }\n return canvas;\n }\n\n getShape(x: number, y: number, ev: Event): IShape {\n // 如果不支持拾取,则直接返回\n if (!isAllowCapture(this)) {\n return null;\n }\n const children = this.getChildren();\n let shape;\n // 如果容器是 group\n if (!this.isCanvas()) {\n let v = [x, y, 1];\n // 将 x, y 转换成对应于 group 的局部坐标\n v = this.invertFromMatrix(v);\n if (!this.isClipped(v[0], v[1])) {\n shape = this._findShape(children, v[0], v[1], ev);\n }\n } else {\n shape = this._findShape(children, x, y, ev);\n }\n return shape;\n }\n\n _findShape(children: IElement[], x: number, y: number, ev: Event) {\n let shape = null;\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i];\n if (isAllowCapture(child)) {\n if (child.isGroup()) {\n shape = (child as IGroup).getShape(x, y, ev);\n } else if ((child as IShape).isHit(x, y)) {\n shape = child;\n }\n }\n if (shape) {\n break;\n }\n }\n return shape;\n }\n\n add(element: IElement) {\n const canvas = this.getCanvas();\n const children = this.getChildren();\n const timeline = this.get('timeline');\n const preParent = element.getParent();\n if (preParent) {\n removeChild(preParent, element, false);\n }\n element.set('parent', this);\n if (canvas) {\n setCanvas(element, canvas);\n }\n if (timeline) {\n setTimeline(element, timeline);\n }\n children.push(element);\n element.onCanvasChange('add');\n this._applyElementMatrix(element);\n }\n\n // 将当前容器的矩阵应用到子元素\n _applyElementMatrix(element) {\n const totalMatrix = this.getTotalMatrix();\n // 添加图形或者分组时,需要把当前图元的矩阵设置进去\n if (totalMatrix) {\n element.applyMatrix(totalMatrix);\n }\n }\n\n getChildren(): IElement[] {\n return this.get('children') as IElement[];\n }\n\n sort() {\n const children = this.getChildren();\n // 稳定排序\n each(children, (child, index) => {\n child[INDEX] = index;\n return child;\n });\n children.sort(\n getComparer((obj1, obj2) => {\n return obj1.get('zIndex') - obj2.get('zIndex');\n })\n );\n this.onCanvasChange('sort');\n }\n\n clear() {\n this.set('clearing', true);\n if (this.destroyed) {\n return;\n }\n const children = this.getChildren();\n for (let i = children.length - 1; i >= 0; i--) {\n children[i].destroy(); // 销毁子元素\n }\n this.set('children', []);\n this.onCanvasChange('clear');\n this.set('clearing', false);\n }\n\n destroy() {\n if (this.get('destroyed')) {\n return;\n }\n this.clear();\n super.destroy();\n }\n\n /**\n * 获取第一个子元素\n * @return {IElement} 第一个元素\n */\n getFirst(): IElement {\n return this.getChildByIndex(0);\n }\n\n /**\n * 获取最后一个子元素\n * @return {IElement} 元素\n */\n getLast(): IElement {\n const children = this.getChildren();\n return this.getChildByIndex(children.length - 1);\n }\n\n /**\n * 根据索引获取子元素\n * @return {IElement} 第一个元素\n */\n getChildByIndex(index: number): IElement {\n const children = this.getChildren();\n return children[index];\n }\n\n /**\n * 子元素的数量\n * @return {number} 子元素数量\n */\n getCount(): number {\n const children = this.getChildren();\n return children.length;\n }\n\n /**\n * 是否包含对应元素\n * @param {IElement} element 元素\n * @return {boolean}\n */\n contain(element: IElement): boolean {\n const children = this.getChildren();\n return children.indexOf(element) > -1;\n }\n\n /**\n * 移除对应子元素\n * @param {IElement} element 子元素\n * @param {boolean} destroy 是否销毁子元素,默认为 true\n */\n removeChild(element: IElement, destroy = true) {\n if (this.contain(element)) {\n element.remove(destroy);\n }\n }\n\n /**\n * 查找所有匹配的元素\n * @param {ElementFilterFn} fn 匹配函数\n * @return {IElement[]} 元素数组\n */\n findAll(fn: ElementFilterFn): IElement[] {\n let rst: IElement[] = [];\n const children = this.getChildren();\n each(children, (element: IElement) => {\n if (fn(element)) {\n rst.push(element);\n }\n if (element.isGroup()) {\n rst = rst.concat((element as IGroup).findAll(fn));\n }\n });\n return rst;\n }\n\n /**\n * 查找元素,找到第一个返回\n * @param {ElementFilterFn} fn 匹配函数\n * @return {IElement|null} 元素,可以为空\n */\n find(fn: ElementFilterFn): IElement {\n let rst: IElement = null;\n const children = this.getChildren();\n each(children, (element: IElement) => {\n if (fn(element)) {\n rst = element;\n } else if (element.isGroup()) {\n rst = (element as IGroup).find(fn);\n }\n if (rst) {\n return false;\n }\n });\n return rst;\n }\n\n /**\n * 根据 ID 查找元素\n * @param {string} id 元素 id\n * @return {IElement|null} 元素\n */\n findById(id: string): IElement {\n return this.find((element) => {\n return element.get('id') === id;\n });\n }\n\n /**\n * 该方法即将废弃,不建议使用\n * 根据 className 查找元素\n * TODO: 该方式定义暂时只给 G6 3.3 以后的版本使用,待 G6 中的 findByClassName 方法移除后,G 也需要同步移除\n * @param {string} className 元素 className\n * @return {IElement | null} 元素\n */\n findByClassName(className: string): IElement {\n return this.find((element) => {\n return element.get('className') === className;\n });\n }\n\n /**\n * 根据 name 查找元素列表\n * @param {string} name 元素名称\n * @return {IElement[]} 元素\n */\n findAllByName(name: string): IElement[] {\n return this.findAll((element) => {\n return element.get('name') === name;\n });\n }\n}\n\nexport default Container;\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export function linear(t) {\n return +t;\n}\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * tpmt(-t) * Math.sin((s - t) / p)\n : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","import * as d3Ease from 'd3-ease';\n\ntype EaseFn = (t: number) => number;\n\ninterface EasingMap {\n [key: string]: EaseFn;\n}\n\nconst EASING_MAP: EasingMap = {};\n\n/**\n * 根据名称获取对应的动画缓动函数\n * @param type 动画缓动函数名称\n */\nexport function getEasing(type: string) {\n // 默认从 d3-ease 中获取\n return EASING_MAP[type.toLowerCase()] || d3Ease[type];\n}\n\n/**\n * 注册动画缓动函数\n * @param type 动画缓动函数名称\n * @param easeFn 动画缓动函数\n */\nexport function registerEasing(type: string, easeFn: EaseFn) {\n EASING_MAP[type.toLowerCase()] = easeFn;\n}\n","export const isColorProp = (prop) => ['fill', 'stroke', 'fillStyle', 'strokeStyle'].includes(prop);\n\nexport const isGradientColor = (val) => /^[r,R,L,l]{1}[\\s]*\\(/.test(val);\n","import { isEqual, isNumber, isFunction } from '@antv/util';\nimport * as d3Timer from 'd3-timer';\nimport { interpolate, interpolateArray } from 'd3-interpolate'; // 目前整体动画只需要数值和数组的差值计算\nimport { getEasing } from './register';\nimport * as PathUtil from '../util/path';\nimport { isColorProp, isGradientColor } from '../util/color';\nimport { ICanvas, IElement } from '../interfaces';\nimport { Animation } from '../types';\n\nconst IDENTITY_MATRIX = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n/**\n * 使用 ratio 进行插值计算来更新属性\n * @param {IElement} shape 元素\n * @param {Animation} animation 动画\n * @param {number} ratio 比例\n * @return {boolean} 动画是否执行完成\n */\nfunction _update(shape: IElement, animation: Animation, ratio: number) {\n const cProps = {}; // 此刻属性\n const { fromAttrs, toAttrs } = animation;\n if (shape.destroyed) {\n return;\n }\n let interf; // 差值函数\n for (const k in toAttrs) {\n if (!isEqual(fromAttrs[k], toAttrs[k])) {\n if (k === 'path') {\n let toPath = toAttrs[k];\n let fromPath = fromAttrs[k];\n if (toPath.length > fromPath.length) {\n toPath = PathUtil.parsePathString(toAttrs[k]); // 终点状态\n fromPath = PathUtil.parsePathString(fromAttrs[k]); // 起始状态\n fromPath = PathUtil.fillPathByDiff(fromPath, toPath);\n fromPath = PathUtil.formatPath(fromPath, toPath);\n animation.fromAttrs.path = fromPath;\n animation.toAttrs.path = toPath;\n } else if (!animation.pathFormatted) {\n toPath = PathUtil.parsePathString(toAttrs[k]);\n fromPath = PathUtil.parsePathString(fromAttrs[k]);\n fromPath = PathUtil.formatPath(fromPath, toPath);\n animation.fromAttrs.path = fromPath;\n animation.toAttrs.path = toPath;\n animation.pathFormatted = true;\n }\n cProps[k] = [];\n for (let i = 0; i < toPath.length; i++) {\n const toPathPoint = toPath[i];\n const fromPathPoint = fromPath[i];\n const cPathPoint = [];\n for (let j = 0; j < toPathPoint.length; j++) {\n if (isNumber(toPathPoint[j]) && fromPathPoint && isNumber(fromPathPoint[j])) {\n interf = interpolate(fromPathPoint[j], toPathPoint[j]);\n cPathPoint.push(interf(ratio));\n } else {\n cPathPoint.push(toPathPoint[j]);\n }\n }\n cProps[k].push(cPathPoint);\n }\n } else if (k === 'matrix') {\n /* \n 对矩阵进行插值时,需要保证矩阵不为空,为空则使用单位矩阵\n TODO: 二维和三维场景下单位矩阵不同,之后 WebGL 版需要做进一步处理\n */\n const matrixFn = interpolateArray(fromAttrs[k] || IDENTITY_MATRIX, toAttrs[k] || IDENTITY_MATRIX);\n const currentMatrix = matrixFn(ratio);\n cProps[k] = currentMatrix;\n } else if (isColorProp(k) && isGradientColor(toAttrs[k])) {\n cProps[k] = toAttrs[k];\n } else if (!isFunction(toAttrs[k])) {\n // 非函数类型的值才能做插值\n interf = interpolate(fromAttrs[k], toAttrs[k]);\n cProps[k] = interf(ratio);\n }\n }\n }\n shape.attr(cProps);\n}\n\n/**\n * 根据自定义帧动画函数 onFrame 来更新属性\n * @param {IElement} shape 元素\n * @param {Animation} animation 动画\n * @param {number} elapsed 动画执行时间(毫秒)\n * @return {boolean} 动画是否执行完成\n */\nfunction update(shape: IElement, animation: Animation, elapsed: number) {\n const { startTime, delay } = animation;\n // 如果还没有开始执行或暂停,先不更新\n if (elapsed < startTime + delay || animation._paused) {\n return false;\n }\n let ratio;\n const duration = animation.duration;\n const easing = animation.easing;\n const easeFn = getEasing(easing);\n\n // 已执行时间\n elapsed = elapsed - startTime - animation.delay;\n if (animation.repeat) {\n // 如果动画重复执行,则 elapsed > duration,计算 ratio 时需取模\n ratio = (elapsed % duration) / duration;\n ratio = easeFn(ratio);\n } else {\n ratio = elapsed / duration;\n if (ratio < 1) {\n // 动画未执行完\n ratio = easeFn(ratio);\n } else {\n // 动画已执行完\n if (animation.onFrame) {\n shape.attr(animation.onFrame(1));\n } else {\n shape.attr(animation.toAttrs);\n }\n return true;\n }\n }\n if (animation.onFrame) {\n const attrs = animation.onFrame(ratio);\n shape.attr(attrs);\n } else {\n _update(shape, animation, ratio);\n }\n return false;\n}\n\nclass Timeline {\n /**\n * 画布\n * @type {ICanvas}\n */\n canvas: ICanvas;\n /**\n * 执行动画的元素列表\n * @type {IElement[]}\n */\n animators: IElement[] = [];\n /**\n * 当前时间\n * @type {number}\n */\n current: number = 0;\n /**\n * 定时器\n * @type {d3Timer.Timer}\n */\n timer: d3Timer.Timer = null;\n\n /**\n * 时间轴构造函数,依赖于画布\n * @param {}\n */\n constructor(canvas: ICanvas) {\n this.canvas = canvas;\n }\n\n /**\n * 初始化定时器\n */\n initTimer() {\n let isFinished = false;\n let shape: IElement;\n let animations: Animation[];\n let animation: Animation;\n this.timer = d3Timer.timer((elapsed) => {\n this.current = elapsed;\n if (this.animators.length > 0) {\n for (let i = this.animators.length - 1; i >= 0; i--) {\n shape = this.animators[i];\n if (shape.destroyed) {\n // 如果已经被销毁,直接移出队列\n this.removeAnimator(i);\n continue;\n }\n if (!shape.isAnimatePaused()) {\n animations = shape.get('animations');\n for (let j = animations.length - 1; j >= 0; j--) {\n animation = animations[j];\n isFinished = update(shape, animation, elapsed);\n if (isFinished) {\n animations.splice(j, 1);\n isFinished = false;\n if (animation.callback) {\n animation.callback();\n }\n }\n }\n }\n if (animations.length === 0) {\n this.removeAnimator(i);\n }\n }\n const autoDraw = this.canvas.get('autoDraw');\n // 非自动渲染模式下,手动调用 canvas.draw() 重新渲染\n if (!autoDraw) {\n this.canvas.draw();\n }\n }\n });\n }\n\n /**\n * 增加动画元素\n */\n addAnimator(shape) {\n this.animators.push(shape);\n }\n\n /**\n * 移除动画元素\n */\n removeAnimator(index) {\n this.animators.splice(index, 1);\n }\n\n /**\n * 是否有动画在执行\n */\n isAnimating() {\n return !!this.animators.length;\n }\n\n /**\n * 停止定时器\n */\n stop() {\n if (this.timer) {\n this.timer.stop();\n }\n }\n\n /**\n * 停止时间轴上所有元素的动画,并置空动画元素列表\n * @param {boolean} toEnd 是否到动画的最终状态,用来透传给动画元素的 stopAnimate 方法\n */\n stopAllAnimations(toEnd = true) {\n this.animators.forEach((animator) => {\n animator.stopAnimate(toEnd);\n });\n this.animators = [];\n this.canvas.draw();\n }\n\n /**\n * 获取当前时间\n */\n getTime() {\n return this.current;\n }\n}\n\nexport default Timeline;\n","/**\n * @fileoverview 事件处理器\n * @author dxq613@gmail.com\n */\nimport GraphEvent from './graph-event';\nimport { ICanvas, IShape } from '../interfaces';\nimport { each, isParent } from '../util/util';\nconst CLICK_OFFSET = 40;\nconst LEFT_BTN_CODE = 0;\nconst DELEGATION_SPLIT = ':';\n\nconst EVENTS = [\n 'mousedown',\n 'mouseup',\n 'dblclick',\n 'mouseout',\n 'mouseover',\n 'mousemove',\n 'mouseleave',\n 'mouseenter',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'dragenter',\n 'dragover',\n 'dragleave',\n 'drop',\n 'contextmenu',\n 'mousewheel',\n];\n\n// 是否有委托事件监听\nfunction hasDelegation(events, type) {\n for (const key in events) {\n if (events.hasOwnProperty(key) && key.indexOf(DELEGATION_SPLIT + type) >= 0) {\n return true;\n }\n }\n return false;\n}\n\n// 触发目标事件,目标只能是 shape 或 canvas\nfunction emitTargetEvent(target, type, eventObj) {\n eventObj.name = type;\n eventObj.target = target;\n eventObj.currentTarget = target;\n eventObj.delegateTarget = target;\n target.emit(type, eventObj);\n}\n\n// 事件冒泡, enter 和 leave 需要对 fromShape 和 toShape 进行判同\nfunction bubbleEvent(container, type, eventObj) {\n if (eventObj.bubbles) {\n let relativeShape;\n let isOverEvent = false;\n if (type === 'mouseenter') {\n relativeShape = eventObj.fromShape;\n isOverEvent = true;\n } else if (type === 'mouseleave') {\n isOverEvent = true;\n relativeShape = eventObj.toShape;\n }\n // canvas 上的 mouseenter, mouseleave 事件,仅当进入或者移出 canvas 时触发\n if (container.isCanvas() && isOverEvent) {\n return;\n }\n // 如果相关图形同当前图形在同一个容器内,不触发事件\n if (relativeShape && isParent(container, relativeShape)) {\n // 阻止继续向上冒泡\n eventObj.bubbles = false;\n return;\n }\n // 事件名称可能在委托过程中被修改,因此事件冒泡时需要重新设置事件名称\n eventObj.name = type;\n eventObj.currentTarget = container;\n eventObj.delegateTarget = container;\n container.emit(type, eventObj);\n }\n}\n\nclass EventController {\n // 画布容器\n private canvas: ICanvas;\n // 正在被拖拽的图形\n private draggingShape: IShape = null;\n private dragging: boolean = false;\n // 当前鼠标/touch所在位置的图形\n private currentShape: IShape = null;\n private mousedownShape: IShape = null;\n private mousedownPoint = null;\n private mousedownTimeStamp;\n\n constructor(cfg) {\n this.canvas = cfg.canvas;\n }\n\n init() {\n this._bindEvents();\n }\n\n // 注册事件\n _bindEvents() {\n const el = this.canvas.get('el');\n each(EVENTS, (eventName) => {\n el.addEventListener(eventName, this._eventCallback);\n });\n\n if (document) {\n // 处理移动到外面没有触发 shape mouse leave 的事件\n // 处理拖拽到外部的问题\n document.addEventListener('mousemove', this._onDocumentMove);\n // 处理拖拽过程中在外部释放鼠标的问题\n document.addEventListener('mouseup', this._onDocumentMouseUp);\n }\n }\n\n // 清理事件\n _clearEvents() {\n const el = this.canvas.get('el');\n each(EVENTS, (eventName) => {\n el.removeEventListener(eventName, this._eventCallback);\n });\n if (document) {\n document.removeEventListener('mousemove', this._onDocumentMove);\n document.removeEventListener('mouseup', this._onDocumentMouseUp);\n }\n }\n\n _getEventObj(type, event, point, target, fromShape, toShape) {\n const eventObj = new GraphEvent(type, event);\n eventObj.fromShape = fromShape;\n eventObj.toShape = toShape;\n eventObj.x = point.x;\n eventObj.y = point.y;\n eventObj.clientX = point.clientX;\n eventObj.clientY = point.clientY;\n\n eventObj.propagationPath.push(target);\n // 事件的x,y应该是基于画布左上角的,与canvas的matrix无关\n return eventObj;\n }\n\n // 统一处理所有的回调\n _eventCallback = (ev) => {\n const type = ev.type;\n this._triggerEvent(type, ev);\n };\n\n // 根据点获取图形,提取成独立方法,便于后续优化\n _getShape(point, ev: Event) {\n return this.canvas.getShape(point.x, point.y, ev);\n }\n // 获取事件的当前点的信息\n _getPointInfo(ev) {\n const canvas = this.canvas;\n const clientPoint = canvas.getClientByEvent(ev);\n const point = canvas.getPointByEvent(ev);\n return {\n x: point.x,\n y: point.y,\n clientX: clientPoint.x,\n clientY: clientPoint.y,\n };\n }\n\n // 触发事件\n _triggerEvent(type, ev) {\n const pointInfo = this._getPointInfo(ev);\n // 每次都获取图形有一定成本,后期可以考虑进行缓存策略\n const shape = this._getShape(pointInfo, ev);\n const method = this[`_on${type}`];\n let leaveCanvas = false;\n if (method) {\n method.call(this, pointInfo, shape, ev);\n } else {\n const preShape = this.currentShape;\n // 如果进入、移出画布时存在图形,则要分别触发事件\n if (type === 'mouseenter' || type === 'dragenter' || type === 'mouseover') {\n this._emitEvent(type, ev, pointInfo, null, null, shape); // 先进入画布\n if (shape) {\n this._emitEvent(type, ev, pointInfo, shape, null, shape); // 再触发图形的事件\n }\n if (type === 'mouseenter' && this.draggingShape) {\n // 如果正在拖拽图形, 则触发 dragleave\n this._emitEvent('dragenter', ev, pointInfo, null);\n }\n } else if (type === 'mouseleave' || type === 'dragleave' || type === 'mouseout') {\n leaveCanvas = true;\n if (preShape) {\n this._emitEvent(type, ev, pointInfo, preShape, preShape, null); // 先触发图形的事件\n }\n this._emitEvent(type, ev, pointInfo, null, preShape, null); // 再触发离开画布事件\n if (type === 'mouseleave' && this.draggingShape) {\n this._emitEvent('dragleave', ev, pointInfo, null);\n }\n } else {\n this._emitEvent(type, ev, pointInfo, shape, null, null); // 一般事件中不需要考虑 from, to\n }\n }\n if (!leaveCanvas) {\n this.currentShape = shape;\n }\n // 当鼠标从画布移动到 shape 或者从 preShape 移动到 shape 时,应用 shape 上的鼠标样式\n if (shape && !shape.get('destroyed')) {\n const canvas = this.canvas;\n const el = canvas.get('el');\n el.style.cursor = shape.attr('cursor') || canvas.get('cursor');\n }\n }\n\n // 在 document 处理拖拽到画布外的事件,处理从图形上移除画布未被捕捉的问题\n _onDocumentMove = (ev: Event) => {\n const canvas = this.canvas;\n const el = canvas.get('el');\n if (el !== ev.target) {\n // 不在 canvas 上移动\n if (this.dragging || this.currentShape) {\n const pointInfo = this._getPointInfo(ev);\n // 还在拖拽过程中\n if (this.dragging) {\n this._emitEvent('drag', ev, pointInfo, this.draggingShape);\n }\n // 说明从某个图形直接移动到了画布外面,\n // 修复了 mouseleave 的 bug 后不再出现这种情况\n // if (this.currentShape) {\n // this._emitEvent('mouseleave', ev, pointInfo, this.currentShape, this.currentShape, null);\n // this.currentShape = null;\n // }\n }\n }\n };\n // 在 document 上处理拖拽到外面,释放鼠标时触发 dragend\n _onDocumentMouseUp = (ev) => {\n const canvas = this.canvas;\n const el = canvas.get('el');\n if (el !== ev.target) {\n // 不在 canvas 上移动\n if (this.dragging) {\n const pointInfo = this._getPointInfo(ev);\n if (this.draggingShape) {\n // 如果存在拖拽的图形,则也触发 drop 事件\n this._emitEvent('drop', ev, pointInfo, null);\n }\n this._emitEvent('dragend', ev, pointInfo, this.draggingShape);\n this._afterDrag(this.draggingShape, pointInfo, ev);\n }\n }\n };\n\n // 记录下点击的位置、图形,便于拖拽事件、click 事件的判定\n _onmousedown(pointInfo, shape, event) {\n // 只有鼠标左键的 mousedown 事件才会设置 mousedownShape 等属性,避免鼠标右键的 mousedown 事件引起其他事件发生\n if (event.button === LEFT_BTN_CODE) {\n this.mousedownShape = shape;\n this.mousedownPoint = pointInfo;\n this.mousedownTimeStamp = event.timeStamp;\n }\n this._emitEvent('mousedown', event, pointInfo, shape, null, null); // mousedown 不考虑fromShape, toShape\n }\n\n // mouseleave 和 mouseenter 都是成对存在的\n // mouseenter 和 mouseover 同时触发\n _emitMouseoverEvents(event, pointInfo, fromShape, toShape) {\n const el = this.canvas.get('el');\n if (fromShape !== toShape) {\n if (fromShape) {\n this._emitEvent('mouseout', event, pointInfo, fromShape, fromShape, toShape);\n this._emitEvent('mouseleave', event, pointInfo, fromShape, fromShape, toShape);\n // 当鼠标从 fromShape 移动到画布上时,重置鼠标样式\n if (!toShape || toShape.get('destroyed')) {\n el.style.cursor = this.canvas.get('cursor');\n }\n }\n if (toShape) {\n this._emitEvent('mouseover', event, pointInfo, toShape, fromShape, toShape);\n this._emitEvent('mouseenter', event, pointInfo, toShape, fromShape, toShape);\n }\n }\n }\n // dragover 不等同于 mouseover,而等同于 mousemove\n _emitDragoverEvents(event, pointInfo, fromShape, toShape, isCanvasEmit) {\n if (toShape) {\n if (toShape !== fromShape) {\n if (fromShape) {\n this._emitEvent('dragleave', event, pointInfo, fromShape, fromShape, toShape);\n }\n this._emitEvent('dragenter', event, pointInfo, toShape, fromShape, toShape);\n }\n if (!isCanvasEmit) {\n this._emitEvent('dragover', event, pointInfo, toShape);\n }\n } else if (fromShape) {\n // TODO: 此处判断有问题,当 drag 图形时,也会触发一次 dragleave 事件,因为此时 toShape 为 null,这不是所期望的\n // 经过空白区域\n this._emitEvent('dragleave', event, pointInfo, fromShape, fromShape, toShape);\n }\n\n if (isCanvasEmit) {\n this._emitEvent('dragover', event, pointInfo, toShape);\n }\n }\n\n // drag 完成后,需要做一些清理工作\n _afterDrag(draggingShape, pointInfo, event) {\n if (draggingShape) {\n draggingShape.set('capture', true); // 恢复可以拾取\n this.draggingShape = null;\n }\n this.dragging = false;\n // drag 完成后,有可能 draggingShape 已经移动到了当前位置,所以不能直接取当前图形\n const shape = this._getShape(pointInfo, event);\n // 拖拽完成后,进行 enter,leave 的判定\n if (shape !== draggingShape) {\n this._emitMouseoverEvents(event, pointInfo, draggingShape, shape);\n }\n this.currentShape = shape; // 更新当前 shape,如果不处理当前图形的 mouseleave 事件可能会出问题\n }\n // 按键抬起时,会终止拖拽、触发点击\n _onmouseup(pointInfo, shape, event) {\n // eevent.button === 0 表示鼠标左键事件,此处加上判断主要是为了避免右键鼠标会触发 mouseup 和 click 事件\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n if (event.button === LEFT_BTN_CODE) {\n const draggingShape = this.draggingShape;\n if (this.dragging) {\n // 存在可以拖拽的图形,同时拖拽到其他图形上时触发 drag 事件\n if (draggingShape) {\n this._emitEvent('drop', event, pointInfo, shape);\n }\n this._emitEvent('dragend', event, pointInfo, draggingShape);\n this._afterDrag(draggingShape, pointInfo, event);\n } else {\n this._emitEvent('mouseup', event, pointInfo, shape); // 先触发 mouseup 再触发 click\n if (shape === this.mousedownShape) {\n this._emitEvent('click', event, pointInfo, shape);\n }\n this.mousedownShape = null;\n this.mousedownPoint = null;\n }\n }\n }\n\n // 当触发浏览器的 dragover 事件时,不会再触发 mousemove ,所以这时候的 dragenter, dragleave 事件需要重新处理\n _ondragover(pointInfo, shape, event) {\n event.preventDefault(); // 如果不对 dragover 进行 preventDefault,则不会在 canvas 上触发 drop 事件\n const preShape = this.currentShape;\n this._emitDragoverEvents(event, pointInfo, preShape, shape, true);\n }\n\n // 大量的图形事件,都通过 mousemove 模拟\n _onmousemove(pointInfo, shape, event) {\n const canvas = this.canvas;\n const preShape = this.currentShape;\n let draggingShape = this.draggingShape;\n // 正在拖拽时\n if (this.dragging) {\n // 正在拖拽中\n if (draggingShape) {\n // 如果拖拽了 shape 会触发 dragenter, dragleave, dragover 和 drag 事件\n this._emitDragoverEvents(event, pointInfo, preShape, shape, false);\n }\n // 如果存在 draggingShape 则会在 draggingShape 上触发 drag 事件,冒泡到 canvas 上\n // 否则在 canvas 上触发 drag 事件\n this._emitEvent('drag', event, pointInfo, draggingShape);\n } else {\n const mousedownPoint = this.mousedownPoint;\n if (mousedownPoint) {\n // 当鼠标点击下去,同时移动时,进行 drag 判定\n const mousedownShape = this.mousedownShape;\n const now = event.timeStamp;\n const timeWindow = now - this.mousedownTimeStamp;\n const dx = mousedownPoint.clientX - pointInfo.clientX;\n const dy = mousedownPoint.clientY - pointInfo.clientY;\n const dist = dx * dx + dy * dy;\n if (timeWindow > 120 || dist > CLICK_OFFSET) {\n if (mousedownShape && mousedownShape.get('draggable')) {\n // 设置了 draggable 的 shape 才能触发 drag 相关的事件\n draggingShape = this.mousedownShape; // 拖动鼠标点下时的 shape\n draggingShape.set('capture', false); // 禁止继续拾取,否则无法进行 dragover,dragenter,dragleave,drop的判定\n this.draggingShape = draggingShape;\n this.dragging = true;\n this._emitEvent('dragstart', event, pointInfo, draggingShape);\n // 清理按下鼠标时缓存的值\n this.mousedownShape = null;\n this.mousedownPoint = null;\n } else if (!mousedownShape && canvas.get('draggable')) {\n // 设置了 draggable 的 canvas 才能触发 drag 相关的事件\n this.dragging = true;\n this._emitEvent('dragstart', event, pointInfo, null);\n // 清理按下鼠标时缓存的值\n this.mousedownShape = null;\n this.mousedownPoint = null;\n } else {\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n } else {\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n } else {\n // 没有按键按下时,则直接触发 mouse over 相关的各种事件\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n // 始终触发移动\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n }\n }\n\n // 触发事件\n _emitEvent(type, event, pointInfo, shape, fromShape?, toShape?) {\n const eventObj = this._getEventObj(type, event, pointInfo, shape, fromShape, toShape);\n // 存在 shape 触发,则进行冒泡处理\n if (shape) {\n eventObj.shape = shape;\n // 触发 shape 上的事件\n emitTargetEvent(shape, type, eventObj);\n let parent = shape.getParent();\n // 执行冒泡\n while (parent) {\n // 委托事件要先触发\n parent.emitDelegation(type, eventObj);\n // 事件冒泡停止,不能妨碍委托事件\n if (!eventObj.propagationStopped) {\n bubbleEvent(parent, type, eventObj);\n }\n eventObj.propagationPath.push(parent);\n parent = parent.getParent();\n }\n } else {\n // 如果没有 shape 直接在 canvas 上触发\n const canvas = this.canvas;\n // 直接触发 canvas 上的事件\n emitTargetEvent(canvas, type, eventObj);\n }\n }\n\n destroy() {\n // 清理事件\n this._clearEvents();\n // 清理缓存的对象\n this.canvas = null;\n this.currentShape = null;\n this.draggingShape = null;\n this.mousedownPoint = null;\n this.mousedownShape = null;\n this.mousedownTimeStamp = null;\n }\n}\n\nexport default EventController;\n","import { detect } from 'detect-browser';\nimport Container from './container';\nimport { ICanvas } from '../interfaces';\nimport { CanvasCfg, Point, Renderer, Cursor } from '../types';\nimport { isBrowser, isNil, isString } from '../util/util';\nimport Timeline from '../animate/timeline';\nimport EventController from '../event/event-contoller';\n\nconst PX_SUFFIX = 'px';\n\nconst browser = detect();\nconst isFirefox = browser && browser.name === 'firefox';\n\nabstract class Canvas extends Container implements ICanvas {\n constructor(cfg: CanvasCfg) {\n super(cfg);\n this.initContainer();\n this.initDom();\n this.initEvents();\n this.initTimeline();\n }\n\n getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n // set default cursor style for canvas\n cfg['cursor'] = 'default';\n // CSS transform 目前尚未经过长时间验证,为了避免影响上层业务,默认关闭,上层按需开启\n cfg['supportCSSTransform'] = false;\n return cfg;\n }\n\n /**\n * @protected\n * 初始化容器\n */\n initContainer() {\n let container = this.get('container');\n if (isString(container)) {\n container = document.getElementById(container);\n this.set('container', container);\n }\n }\n\n /**\n * @protected\n * 初始化 DOM\n */\n initDom() {\n const el = this.createDom();\n this.set('el', el);\n // 附加到容器\n const container = this.get('container');\n container.appendChild(el);\n // 设置初始宽度\n this.setDOMSize(this.get('width'), this.get('height'));\n }\n\n /**\n * 创建画布容器\n * @return {HTMLElement} 画布容器\n */\n abstract createDom(): HTMLElement | SVGSVGElement;\n\n /**\n * @protected\n * 初始化绑定的事件\n */\n initEvents() {\n const eventController = new EventController({\n canvas: this,\n });\n eventController.init();\n this.set('eventController', eventController);\n }\n\n /**\n * @protected\n * 初始化时间轴\n */\n initTimeline() {\n const timeline = new Timeline(this);\n this.set('timeline', timeline);\n }\n\n /**\n * @protected\n * 修改画布对应的 DOM 的大小\n * @param {number} width 宽度\n * @param {number} height 高度\n */\n setDOMSize(width: number, height: number) {\n const el = this.get('el');\n if (isBrowser) {\n el.style.width = width + PX_SUFFIX;\n el.style.height = height + PX_SUFFIX;\n }\n }\n\n // 实现接口\n changeSize(width: number, height: number) {\n this.setDOMSize(width, height);\n this.set('width', width);\n this.set('height', height);\n this.onCanvasChange('changeSize');\n }\n\n /**\n * 获取当前的渲染引擎\n * @return {Renderer} 返回当前的渲染引擎\n */\n getRenderer(): Renderer {\n return this.get('renderer');\n }\n\n /**\n * 获取画布的 cursor 样式\n * @return {Cursor}\n */\n getCursor(): Cursor {\n return this.get('cursor');\n }\n\n /**\n * 设置画布的 cursor 样式\n * @param {Cursor} cursor cursor 样式\n */\n setCursor(cursor: Cursor) {\n this.set('cursor', cursor);\n const el = this.get('el');\n if (isBrowser && el) {\n // 直接设置样式,不等待鼠标移动时再设置\n el.style.cursor = cursor;\n }\n }\n\n // 实现接口\n getPointByEvent(ev: Event): Point {\n const supportCSSTransform = this.get('supportCSSTransform');\n if (supportCSSTransform) {\n // For Firefox <= 38\n if (isFirefox && !isNil((ev as any).layerX) && (ev as any).layerX !== (ev as MouseEvent).offsetX) {\n return {\n x: (ev as any).layerX,\n y: (ev as any).layerY,\n };\n }\n if (!isNil((ev as MouseEvent).offsetX)) {\n // For IE6+, Firefox >= 39, Chrome, Safari, Opera\n return {\n x: (ev as MouseEvent).offsetX,\n y: (ev as MouseEvent).offsetY,\n };\n }\n }\n // should calculate by self for other cases, like Safari in ios\n // TODO: support CSS transform\n const { x: clientX, y: clientY } = this.getClientByEvent(ev);\n return this.getPointByClient(clientX, clientY);\n }\n\n // 获取 touch 事件的 clientX 和 clientY 需要单独处理\n getClientByEvent(ev: Event) {\n let clientInfo: MouseEvent | Touch = ev as MouseEvent;\n if ((ev as TouchEvent).touches) {\n if (ev.type === 'touchend') {\n clientInfo = (ev as TouchEvent).changedTouches[0];\n } else {\n clientInfo = (ev as TouchEvent).touches[0];\n }\n }\n return {\n x: clientInfo.clientX,\n y: clientInfo.clientY,\n };\n }\n\n // 实现接口\n getPointByClient(clientX: number, clientY: number): Point {\n const el = this.get('el');\n const bbox = el.getBoundingClientRect();\n return {\n x: clientX - bbox.left,\n y: clientY - bbox.top,\n };\n }\n\n // 实现接口\n getClientByPoint(x: number, y: number): Point {\n const el = this.get('el');\n const bbox = el.getBoundingClientRect();\n return {\n x: x + bbox.left,\n y: y + bbox.top,\n };\n }\n\n // 实现接口\n draw() {}\n\n /**\n * @protected\n * 销毁 DOM 容器\n */\n removeDom() {\n const el = this.get('el');\n el.parentNode.removeChild(el);\n }\n\n /**\n * @protected\n * 清理所有的事件\n */\n clearEvents() {\n const eventController = this.get('eventController');\n eventController.destroy();\n }\n\n isCanvas() {\n return true;\n }\n\n getParent() {\n return null;\n }\n\n destroy() {\n const timeline = this.get('timeline');\n if (this.get('destroyed')) {\n return;\n }\n this.clear();\n // 同初始化时相反顺序调用\n if (timeline) {\n // 画布销毁时自动停止动画\n timeline.stop();\n }\n this.clearEvents();\n this.removeDom();\n super.destroy();\n }\n}\n\nexport default Canvas;\n","import { IGroup } from '../interfaces';\nimport Container from './container';\n\nabstract class AbstractGroup extends Container implements IGroup {\n isGroup() {\n return true;\n }\n\n isEntityGroup() {\n return false;\n }\n\n clone() {\n const clone = super.clone();\n // 获取构造函数\n const children = this.getChildren();\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n clone.add(child.clone());\n }\n return clone;\n }\n}\n\nexport default AbstractGroup;\n","import { IShape } from '../interfaces';\nimport { ShapeCfg, ShapeAttrs, BBox } from '../types';\nimport Element from './element';\nimport { multiplyVec2 } from '../util/matrix';\nabstract class AbstractShape extends Element implements IShape {\n constructor(cfg: ShapeCfg) {\n super(cfg);\n }\n\n // 是否在包围盒内\n _isInBBox(refX, refY): boolean {\n const bbox = this.getBBox();\n return bbox.minX <= refX && bbox.maxX >= refX && bbox.minY <= refY && bbox.maxY >= refY;\n }\n\n /**\n * 属性更改后需要做的事情\n * @protected\n * @param {ShapeAttrs} targetAttrs 渲染的图像属性\n */\n afterAttrsChange(targetAttrs: ShapeAttrs) {\n super.afterAttrsChange(targetAttrs);\n this.clearCacheBBox();\n }\n // 计算包围盒时,需要缓存,这是一个高频的操作\n getBBox(): BBox {\n let bbox = this.cfg.bbox;\n if (!bbox) {\n bbox = this.calculateBBox();\n this.set('bbox', bbox);\n }\n return bbox;\n }\n // 计算相对于画布的包围盒\n getCanvasBBox(): BBox {\n let canvasBBox = this.cfg.canvasBBox;\n if (!canvasBBox) {\n canvasBBox = this.calculateCanvasBBox();\n this.set('canvasBBox', canvasBBox);\n }\n return canvasBBox;\n }\n\n /**\n * 计算包围盒的抽象方法\n * @return {BBox} 包围盒\n */\n abstract calculateBBox(): BBox;\n\n applyMatrix(matrix: number[]) {\n super.applyMatrix(matrix);\n // 清理掉缓存的包围盒\n this.set('canvasBBox', null);\n }\n\n /**\n * 计算相对于画布的包围盒,默认等同于 bbox\n * @return {BBox} 包围盒\n */\n calculateCanvasBBox() {\n const bbox = this.getBBox();\n const totalMatrix = this.getTotalMatrix();\n let { minX, minY, maxX, maxY } = bbox;\n if (totalMatrix) {\n const topLeft = multiplyVec2(totalMatrix, [bbox.minX, bbox.minY]);\n const topRight = multiplyVec2(totalMatrix, [bbox.maxX, bbox.minY]);\n const bottomLeft = multiplyVec2(totalMatrix, [bbox.minX, bbox.maxY]);\n const bottomRight = multiplyVec2(totalMatrix, [bbox.maxX, bbox.maxY]);\n minX = Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n maxX = Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n minY = Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n maxY = Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n }\n const attrs = this.attrs;\n // 如果存在 shadow 则计算 shadow\n if (attrs.shadowColor) {\n const { shadowBlur = 0, shadowOffsetX = 0, shadowOffsetY = 0 } = attrs;\n const shadowLeft = minX - shadowBlur + shadowOffsetX;\n const shadowRight = maxX + shadowBlur + shadowOffsetX;\n const shadowTop = minY - shadowBlur + shadowOffsetY;\n const shadowBottom = maxY + shadowBlur + shadowOffsetY;\n minX = Math.min(minX, shadowLeft);\n maxX = Math.max(maxX, shadowRight);\n minY = Math.min(minY, shadowTop);\n maxY = Math.max(maxY, shadowBottom);\n }\n return {\n x: minX,\n y: minY,\n minX,\n minY,\n maxX,\n maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n\n /**\n * @protected\n * 清理缓存的 bbox\n */\n clearCacheBBox() {\n this.set('bbox', null);\n this.set('canvasBBox', null);\n }\n\n // 实现接口\n isClipShape() {\n return this.get('isClipShape');\n }\n\n /**\n * @protected\n * 不同的图形自己实现是否在图形内部的逻辑,要判断边和填充区域\n * @param {number} refX 相对于图形的坐标 x\n * @param {number} refY 相对于图形的坐标 Y\n * @return {boolean} 点是否在图形内部\n */\n isInShape(refX: number, refY: number): boolean {\n return false;\n }\n\n /**\n * 是否仅仅使用 BBox 检测就可以判定拾取到图形\n * 默认是 false,但是有些图形例如 image、marker 等都可直接使用 BBox 的检测而不需要使用图形拾取\n * @return {Boolean} 仅仅使用 BBox 进行拾取\n */\n isOnlyHitBox() {\n return false;\n }\n\n // 不同的 Shape 各自实现\n isHit(x: number, y: number): boolean {\n const startArrowShape = this.get('startArrowShape');\n const endArrowShape = this.get('endArrowShape');\n let vec = [x, y, 1];\n vec = this.invertFromMatrix(vec);\n const [refX, refY] = vec;\n const inBBox = this._isInBBox(refX, refY);\n // 跳过图形的拾取,在某些图形中可以省略一倍的检测成本\n if (this.isOnlyHitBox()) {\n return inBBox;\n }\n // 被裁减掉的和不在包围盒内的不进行计算\n if (inBBox && !this.isClipped(refX, refY)) {\n // 对图形进行拾取判断\n if (this.isInShape(refX, refY)) {\n return true;\n }\n // 对起始箭头进行拾取判断\n if (startArrowShape && startArrowShape.isHit(refX, refY)) {\n return true;\n }\n // 对结束箭头进行拾取判断\n if (endArrowShape && endArrowShape.isHit(refX, refY)) {\n return true;\n }\n }\n return false;\n }\n}\n\nexport default AbstractShape;\n","import { SimpleBBox } from '../types';\nimport { IShape } from '../interfaces';\ntype BoxMethod = (shape: IShape) => SimpleBBox;\nconst cache: Map = new Map();\n\n/**\n * 注册计算包围盒的算法\n * @param type 方法名\n * @param method 方法\n */\nexport function register(type: string, method: BoxMethod) {\n cache.set(type, method);\n}\n\n/**\n * 获取计算包围盒的算法\n * @param type 方法名\n */\nexport function getMethod(type: string): BoxMethod {\n return cache.get(type);\n}\n","import { SimpleBBox } from '../types';\nimport { IShape } from '../interfaces';\n\nexport default function (shape: IShape): SimpleBBox {\n const attrs = shape.attr();\n const { x, y, width, height } = attrs;\n return {\n x,\n y,\n width,\n height,\n };\n}\n","import { SimpleBBox } from '../types';\nimport { IShape } from '../interfaces';\n\nexport default function (shape: IShape): SimpleBBox {\n const { x, y, r } = shape.attr();\n return {\n x: x - r,\n y: y - r,\n width: r * 2,\n height: r * 2,\n };\n}\n","import { max, min } from '@antv/util';\nimport { BBox } from './types';\n\n/**\n * 两点之间的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\nexport function distance(x1: number, y1: number, x2: number, y2: number) {\n const dx = x1 - x2;\n const dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nexport function isNumberEqual(v1: number, v2: number) {\n return Math.abs(v1 - v2) < 0.001;\n}\n\nexport function getBBoxByArray(xArr: number[], yArr: number[]): BBox {\n const minX = min(xArr);\n const minY = min(yArr);\n const maxX = max(xArr);\n const maxY = max(yArr);\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\n\nexport function getBBoxRange(x1: number, y1: number, x2: number, y2: number) {\n return {\n minX: min([x1, x2]),\n maxX: max([x1, x2]),\n minY: min([y1, y2]),\n maxY: max([y1, y2]),\n };\n}\n\nexport function piMod(angle: number) {\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}\n","import { distance, getBBoxByArray } from './util';\nimport * as vec2 from 'gl-matrix/vec2';\nimport { BBox, Point } from './types';\n\nexport default {\n /**\n * 计算线段的包围盒\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {object} 包围盒对象\n */\n box(x1: number, y1: number, x2: number, y2: number): BBox {\n return getBBoxByArray([x1, x2], [y1, y2]);\n },\n /**\n * 线段的长度\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\n length(x1: number, y1: number, x2: number, y2: number) {\n return distance(x1, y1, x2, y2);\n },\n /**\n * 根据比例获取点\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} t 指定比例\n * @return {object} 包含 x, y 的点\n */\n pointAt(x1: number, y1: number, x2: number, y2: number, t: number): Point {\n return {\n x: (1 - t) * x1 + t * x2,\n y: (1 - t) * y1 + t * y2,\n };\n },\n /**\n * 点到线段的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} x 测试点 x\n * @param {number} y 测试点 y\n * @return {number} 距离\n */\n pointDistance(x1: number, y1: number, x2: number, y2: number, x: number, y: number): number {\n // 投影距离 x1, y1 的向量,假设 p, p1, p2 三个点,投影点为 a\n // p1a = p1p.p1p2/|p1p2| * (p1p 的单位向量)\n const cross = (x2 - x1) * (x - x1) + (y2 - y1) * (y - y1);\n if (cross < 0) {\n return distance(x1, y1, x, y);\n }\n const lengthSquare = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);\n if (cross > lengthSquare) {\n return distance(x2, y2, x, y);\n }\n return this.pointToLine(x1, y1, x2, y2, x, y);\n },\n /**\n * 点到直线的距离,而不是点到线段的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} x 测试点 x\n * @param {number} y 测试点 y\n * @return {number} 距离\n */\n pointToLine(x1: number, y1: number, x2: number, y2: number, x: number, y: number) {\n const d = [x2 - x1, y2 - y1];\n // 如果端点相等,则判定点到点的距离\n if (vec2.exactEquals(d, [0, 0])) {\n return Math.sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));\n }\n const u = [-d[1], d[0]];\n vec2.normalize(u, u);\n const a = [x - x1, y - y1];\n return Math.abs(vec2.dot(a, u));\n },\n /**\n * 线段的角度\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 导数\n */\n tangentAngle(x1: number, y1: number, x2: number, y2: number) {\n return Math.atan2(y2 - y1, x2 - x1);\n },\n};\n","import { distance } from './util';\nimport { Point, PointTuple } from './types';\n\nconst EPSILON = 0.0001;\n/**\n * 使用牛顿切割法求最近的点\n * @param {number[]} xArr 点的 x 数组\n * @param {number[]} yArr 点的 y 数组\n * @param {number} x 指定的点 x\n * @param {number} y 指定的点 y\n * @param {Function} tCallback 差值函数\n */\nexport function nearestPoint(\n xArr: number[],\n yArr: number[],\n x: number,\n y: number,\n tCallback: (...arr: number[]) => number,\n length?: number\n): Point {\n let t: number;\n let d = Infinity;\n const v0: PointTuple = [x, y];\n\n let segNum = 20;\n if (length && length > 200) {\n segNum = length / 10;\n }\n const increaseRate = 1 / segNum;\n\n let interval = increaseRate / 10;\n\n for (let i = 0; i <= segNum; i++) {\n const _t = i * increaseRate;\n const v1: PointTuple = [tCallback.apply(null, xArr.concat([_t])), tCallback.apply(null, yArr.concat([_t]))];\n\n const d1 = distance(v0[0], v0[1], v1[0], v1[1]);\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n // 提前终止\n if (t === 0) {\n return {\n x: xArr[0],\n y: yArr[0],\n };\n }\n if (t === 1) {\n const count = xArr.length;\n return {\n x: xArr[count - 1],\n y: yArr[count - 1],\n };\n }\n d = Infinity;\n\n for (let i = 0; i < 32; i++) {\n if (interval < EPSILON) {\n break;\n }\n\n const prev = t - interval;\n const next = t + interval;\n\n const v1 = [tCallback.apply(null, xArr.concat([prev])), tCallback.apply(null, yArr.concat([prev]))];\n\n const d1 = distance(v0[0], v0[1], v1[0], v1[1]);\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n } else {\n const v2 = [tCallback.apply(null, xArr.concat([next])), tCallback.apply(null, yArr.concat([next]))];\n const d2 = distance(v0[0], v0[1], v2[0], v2[1]);\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n } else {\n interval *= 0.5;\n }\n }\n }\n\n return {\n x: tCallback.apply(null, xArr.concat([t])),\n y: tCallback.apply(null, yArr.concat([t])),\n };\n}\n\n// 近似求解 https://community.khronos.org/t/3d-cubic-bezier-segment-length/62363/2\nexport function snapLength(xArr: number[], yArr: number[]) {\n let totalLength = 0;\n const count = xArr.length;\n for (let i = 0; i < count; i++) {\n const x = xArr[i];\n const y = yArr[i];\n const nextX = xArr[(i + 1) % count];\n const nextY = yArr[(i + 1) % count];\n totalLength += distance(x, y, nextX, nextY);\n }\n return totalLength / 2;\n}\n","import line from './line';\nimport { distance, isNumberEqual, getBBoxByArray, piMod } from './util';\nimport { nearestPoint } from './bezier';\nimport { Point } from './types';\n\n// 差值公式\nfunction quadraticAt(p0: number, p1: number, p2: number, t: number) {\n const onet = 1 - t;\n return onet * onet * p0 + 2 * t * onet * p1 + t * t * p2;\n}\n\n// 求极值\nfunction extrema(p0: number, p1: number, p2: number) {\n const a = p0 + p2 - 2 * p1;\n if (isNumberEqual(a, 0)) {\n return [0.5];\n }\n const rst = (p0 - p1) / a;\n if (rst <= 1 && rst >= 0) {\n return [rst];\n }\n return [];\n}\n\nfunction derivativeAt(p0: number, p1: number, p2: number, t: number) {\n return 2 * (1 - t) * (p1 - p0) + 2 * t * (p2 - p1);\n}\n\n// 分割贝塞尔曲线\nfunction divideQuadratic(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, t: number) {\n // 划分点\n const xt = quadraticAt(x1, x2, x3, t);\n const yt = quadraticAt(y1, y2, y3, t);\n\n // 分割的第一条曲线的控制点\n const controlPoint1 = line.pointAt(x1, y1, x2, y2, t);\n // 分割的第二条曲线的控制点\n const controlPoint2 = line.pointAt(x2, y2, x3, y3, t);\n return [\n [x1, y1, controlPoint1.x, controlPoint1.y, xt, yt],\n [xt, yt, controlPoint2.x, controlPoint2.y, x3, y3],\n ];\n}\n\n// 使用迭代法取贝塞尔曲线的长度\nfunction quadraticLength(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n iterationCount: number\n) {\n if (iterationCount === 0) {\n return (distance(x1, y1, x2, y2) + distance(x2, y2, x3, y3) + distance(x1, y1, x3, y3)) / 2;\n }\n const quadratics = divideQuadratic(x1, y1, x2, y2, x3, y3, 0.5);\n const left = quadratics[0];\n const right = quadratics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return quadraticLength.apply(null, left) + quadraticLength.apply(null, right);\n}\n\nexport default {\n box(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number) {\n const xExtrema = extrema(x1, x2, x3)[0];\n const yExtrema = extrema(y1, y2, y3)[0];\n // 控制点不加入 box 的计算\n const xArr = [x1, x3];\n const yArr = [y1, y3];\n if (xExtrema !== undefined) {\n xArr.push(quadraticAt(x1, x2, x3, xExtrema));\n }\n if (yExtrema !== undefined) {\n yArr.push(quadraticAt(y1, y2, y3, yExtrema));\n }\n return getBBoxByArray(xArr, yArr);\n },\n length(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number) {\n return quadraticLength(x1, y1, x2, y2, x3, y3, 3);\n },\n nearestPoint(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x0: number, y0: number) {\n return nearestPoint([x1, x2, x3], [y1, y2, y3], x0, y0, quadraticAt);\n },\n pointDistance(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x0: number, y0: number) {\n const point = this.nearestPoint(x1, y1, x2, y2, x3, y3, x0, y0);\n return distance(point.x, point.y, x0, y0);\n },\n interpolationAt: quadraticAt,\n pointAt(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, t: number): Point {\n return {\n x: quadraticAt(x1, x2, x3, t),\n y: quadraticAt(y1, y2, y3, t),\n };\n },\n divide(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, t: number) {\n return divideQuadratic(x1, y1, x2, y2, x3, y3, t);\n },\n tangentAngle(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, t: number) {\n const dx = derivativeAt(x1, x2, x3, t);\n const dy = derivativeAt(y1, y2, y3, t);\n const angle = Math.atan2(dy, dx);\n return piMod(angle);\n },\n};\n","import { distance, isNumberEqual, getBBoxByArray, piMod } from './util';\nimport line from './line';\nimport { snapLength, nearestPoint } from './bezier';\nimport { Point } from './types';\n\nfunction cubicAt(p0: number, p1: number, p2: number, p3: number, t: number) {\n const onet = 1 - t; // t * t * t 的性能大概是 Math.pow(t, 3) 的三倍\n return onet * onet * onet * p0 + 3 * p1 * t * onet * onet + 3 * p2 * t * t * onet + p3 * t * t * t;\n}\n\nfunction derivativeAt(p0: number, p1: number, p2: number, p3: number, t: number) {\n const onet = 1 - t;\n return 3 * (onet * onet * (p1 - p0) + 2 * onet * t * (p2 - p1) + t * t * (p3 - p2));\n}\n\nfunction extrema(p0: number, p1: number, p2: number, p3: number) {\n const a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n const b = 6 * p0 - 12 * p1 + 6 * p2;\n const c = 3 * p1 - 3 * p0;\n const extremas = [];\n let t1: number;\n let t2: number;\n let discSqrt: number;\n\n if (isNumberEqual(a, 0)) {\n if (!isNumberEqual(b, 0)) {\n t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n }\n } else {\n const disc = b * b - 4 * a * c;\n if (isNumberEqual(disc, 0)) {\n extremas.push(-b / (2 * a));\n } else if (disc > 0) {\n discSqrt = Math.sqrt(disc);\n t1 = (-b + discSqrt) / (2 * a);\n t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n extremas.push(t2);\n }\n }\n }\n return extremas;\n}\n\n// 分割贝塞尔曲线\nfunction divideCubic(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n x4: number,\n y4: number,\n t: number\n) {\n // 划分点\n const xt = cubicAt(x1, x2, x3, x4, t);\n const yt = cubicAt(y1, y2, y3, y4, t);\n // 计算两点之间的差值点\n const c1 = line.pointAt(x1, y1, x2, y2, t);\n const c2 = line.pointAt(x2, y2, x3, y3, t);\n const c3 = line.pointAt(x3, y3, x4, y4, t);\n const c12 = line.pointAt(c1.x, c1.y, c2.x, c2.y, t);\n const c23 = line.pointAt(c2.x, c2.y, c3.x, c3.y, t);\n return [\n [x1, y1, c1.x, c1.y, c12.x, c12.y, xt, yt],\n [xt, yt, c23.x, c23.y, c3.x, c3.y, x4, y4],\n ];\n}\n\n// 使用迭代法取贝塞尔曲线的长度,二阶和三阶分开写,更清晰和便于调试\nfunction cubicLength(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n x4: number,\n y4: number,\n iterationCount: number\n) {\n if (iterationCount === 0) {\n return snapLength([x1, x2, x3, x4], [y1, y2, y3, y4]);\n }\n const cubics = divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, 0.5);\n const left = cubics[0];\n const right = cubics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return cubicLength.apply(null, left) + cubicLength.apply(null, right);\n}\n\nexport default {\n extrema,\n box(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number) {\n const xArr = [x1, x4];\n const yArr = [y1, y4];\n const xExtrema = extrema(x1, x2, x3, x4);\n const yExtrema = extrema(y1, y2, y3, y4);\n for (let i = 0; i < xExtrema.length; i++) {\n xArr.push(cubicAt(x1, x2, x3, x4, xExtrema[i]));\n }\n for (let i = 0; i < yExtrema.length; i++) {\n yArr.push(cubicAt(y1, y2, y3, y4, yExtrema[i]));\n }\n return getBBoxByArray(xArr, yArr);\n },\n length(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number) {\n // 迭代三次,划分成 8 段求长度\n return cubicLength(x1, y1, x2, y2, x3, y3, x4, y4, 3);\n },\n nearestPoint(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n x4: number,\n y4: number,\n x0: number,\n y0: number,\n length?: number\n ) {\n return nearestPoint([x1, x2, x3, x4], [y1, y2, y3, y4], x0, y0, cubicAt, length);\n },\n pointDistance(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n x4: number,\n y4: number,\n x0: number,\n y0: number,\n length?: number\n ) {\n const point = this.nearestPoint(x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length);\n return distance(point.x, point.y, x0, y0);\n },\n interpolationAt: cubicAt,\n pointAt(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n x4: number,\n y4: number,\n t: number\n ): Point {\n return {\n x: cubicAt(x1, x2, x3, x4, t),\n y: cubicAt(y1, y2, y3, y4, t),\n };\n },\n divide(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, t: number) {\n return divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, t);\n },\n tangentAngle(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n x4: number,\n y4: number,\n t: number\n ) {\n const dx = derivativeAt(x1, x2, x3, x4, t);\n const dy = derivativeAt(y1, y2, y3, y4, t);\n return piMod(Math.atan2(dy, dx));\n },\n};\n","import { distance, piMod } from './util';\nimport ellipse from './ellipse';\nimport { Point, BBox } from './types';\n\n// 偏导数 x\nfunction derivativeXAt(\n cx: number,\n cy: number,\n rx: number,\n ry: number,\n xRotation: number,\n startAngle: number,\n endAngle: number,\n angle: number\n) {\n return -1 * rx * Math.cos(xRotation) * Math.sin(angle) - ry * Math.sin(xRotation) * Math.cos(angle);\n}\n\n// 偏导数 y\nfunction derivativeYAt(\n cx: number,\n cy: number,\n rx: number,\n ry: number,\n xRotation: number,\n startAngle: number,\n endAngle: number,\n angle: number\n) {\n return -1 * rx * Math.sin(xRotation) * Math.sin(angle) + ry * Math.cos(xRotation) * Math.cos(angle);\n}\n\n// x 的极值\nfunction xExtrema(rx: number, ry: number, xRotation: number) {\n return Math.atan((-ry / rx) * Math.tan(xRotation));\n}\n\n// y 的极值\nfunction yExtrema(rx: number, ry: number, xRotation: number) {\n return Math.atan(ry / (rx * Math.tan(xRotation)));\n}\n\n// 根据角度求 x 坐标\nfunction xAt(cx: number, cy: number, rx: number, ry: number, xRotation: number, angle: number) {\n return rx * Math.cos(xRotation) * Math.cos(angle) - ry * Math.sin(xRotation) * Math.sin(angle) + cx;\n}\n\n// 根据角度求 y 坐标\nfunction yAt(cx: number, cy: number, rx: number, ry: number, xRotation: number, angle: number) {\n return rx * Math.sin(xRotation) * Math.cos(angle) + ry * Math.cos(xRotation) * Math.sin(angle) + cy;\n}\n\n// 获取点在椭圆上的角度\nfunction getAngle(rx: number, ry: number, x0: number, y0: number) {\n const angle = Math.atan2(y0 * rx, x0 * ry);\n // 转换到 0 - 2PI 内\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}\n\n// 根据角度获取,x,y\nfunction getPoint(rx: number, ry: number, angle: number): Point {\n return {\n x: rx * Math.cos(angle),\n y: ry * Math.sin(angle),\n };\n}\n\n// 旋转\nfunction rotate(x: number, y: number, angle: number) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n return [x * cos - y * sin, x * sin + y * cos];\n}\n\nexport default {\n /**\n * 计算包围盒\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n * @return {object} 包围盒对象\n */\n box(cx: number, cy: number, rx: number, ry: number, xRotation: number, startAngle: number, endAngle: number): BBox {\n const xDim = xExtrema(rx, ry, xRotation);\n let minX = Infinity;\n let maxX = -Infinity;\n const xs = [startAngle, endAngle];\n for (let i = -Math.PI * 2; i <= Math.PI * 2; i += Math.PI) {\n const xAngle = xDim + i;\n if (startAngle < endAngle) {\n if (startAngle < xAngle && xAngle < endAngle) {\n xs.push(xAngle);\n }\n } else {\n if (endAngle < xAngle && xAngle < startAngle) {\n xs.push(xAngle);\n }\n }\n }\n\n for (let i = 0; i < xs.length; i++) {\n const x = xAt(cx, cy, rx, ry, xRotation, xs[i]);\n if (x < minX) {\n minX = x;\n }\n if (x > maxX) {\n maxX = x;\n }\n }\n\n const yDim = yExtrema(rx, ry, xRotation);\n let minY = Infinity;\n let maxY = -Infinity;\n const ys = [startAngle, endAngle];\n for (let i = -Math.PI * 2; i <= Math.PI * 2; i += Math.PI) {\n const yAngle = yDim + i;\n if (startAngle < endAngle) {\n if (startAngle < yAngle && yAngle < endAngle) {\n ys.push(yAngle);\n }\n } else {\n if (endAngle < yAngle && yAngle < startAngle) {\n ys.push(yAngle);\n }\n }\n }\n\n for (let i = 0; i < ys.length; i++) {\n const y = yAt(cx, cy, rx, ry, xRotation, ys[i]);\n if (y < minY) {\n minY = y;\n }\n if (y > maxY) {\n maxY = y;\n }\n }\n\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n },\n /**\n * 获取圆弧的长度,计算圆弧长度时不考虑旋转角度,\n * 仅跟 rx, ry, startAngle, endAngle 相关\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n */\n length(cx: number, cy: number, rx: number, ry: number, xRotation: number, startAngle: number, endAngle: number) {},\n /**\n * 获取指定点到圆弧的最近距离的点\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n * @param {number} x0 指定点的 x\n * @param {number} y0 指定点的 y\n * @return {object} 到指定点最近距离的点\n */\n nearestPoint(\n cx: number,\n cy: number,\n rx: number,\n ry: number,\n xRotation: number,\n startAngle: number,\n endAngle: number,\n x0: number,\n y0: number\n ) {\n // 将最近距离问题转换成到椭圆中心 0,0 没有旋转的椭圆问题\n const relativeVector = rotate(x0 - cx, y0 - cy, -xRotation);\n const [x1, y1] = relativeVector;\n // 计算点到椭圆的最近的点\n let relativePoint = ellipse.nearestPoint(0, 0, rx, ry, x1, y1);\n // 获取点在椭圆上的角度\n const angle = getAngle(rx, ry, relativePoint.x, relativePoint.y);\n // 点没有在圆弧上\n if (angle < startAngle) {\n // 小于起始圆弧\n relativePoint = getPoint(rx, ry, startAngle);\n } else if (angle > endAngle) {\n // 大于结束圆弧\n relativePoint = getPoint(rx, ry, endAngle);\n }\n // 旋转到 xRotation 的角度\n const vector = rotate(relativePoint.x, relativePoint.y, xRotation);\n return {\n x: vector[0] + cx,\n y: vector[1] + cy,\n };\n },\n pointDistance(\n cx: number,\n cy: number,\n rx: number,\n ry: number,\n xRotation: number,\n startAngle: number,\n endAngle: number,\n x0: number,\n y0: number\n ) {\n const nearestPoint = this.nearestPoint(cx, cy, rx, ry, x0, y0);\n return distance(nearestPoint.x, nearestPoint.y, x0, y0);\n },\n pointAt(\n cx: number,\n cy: number,\n rx: number,\n ry: number,\n xRotation: number,\n startAngle: number,\n endAngle: number,\n t: number\n ): Point {\n const angle = (endAngle - startAngle) * t + startAngle;\n return {\n x: xAt(cx, cy, rx, ry, xRotation, angle),\n y: yAt(cx, cy, rx, ry, xRotation, angle),\n };\n },\n tangentAngle(\n cx: number,\n cy: number,\n rx: number,\n ry: number,\n xRotation: number,\n startAngle: number,\n endAngle: number,\n t: number\n ) {\n const angle = (endAngle - startAngle) * t + startAngle;\n const dx = derivativeXAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle);\n const dy = derivativeYAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle);\n return piMod(Math.atan2(dy, dx));\n },\n};\n","import line from './line';\nimport { distance } from './util';\nimport { Point, PointTuple, Segment } from './types';\n\nfunction analyzePoints(points: PointTuple[]) {\n // 计算每段的长度和总的长度\n let totalLength = 0;\n const segments: Segment[] = [];\n for (let i = 0; i < points.length - 1; i++) {\n const from = points[i];\n const to = points[i + 1];\n const length = distance(from[0], from[1], to[0], to[1]);\n const seg = {\n from,\n to,\n length,\n };\n segments.push(seg);\n totalLength += length;\n }\n return { segments, totalLength };\n}\n\nexport function lengthOfSegment(points: PointTuple[]) {\n if (points.length < 2) {\n return 0;\n }\n let totalLength = 0;\n for (let i = 0; i < points.length - 1; i++) {\n const from = points[i];\n const to = points[i + 1];\n totalLength += distance(from[0], from[1], to[0], to[1]);\n }\n return totalLength;\n}\n\n/**\n * 按照比例在数据片段中获取点\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n * @return {object} 点的坐标\n */\nexport function pointAtSegments(points: PointTuple[], t: number): Point {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return null;\n }\n const { segments, totalLength } = analyzePoints(points);\n // 多个点有可能重合\n if (totalLength === 0) {\n return {\n x: points[0][0],\n y: points[0][1],\n };\n }\n // 计算比例\n let startRatio = 0;\n let point = null;\n for (let i = 0; i < segments.length; i++) {\n const seg = segments[i];\n const { from, to } = seg;\n const currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n const localRatio = (t - startRatio) / currentRatio;\n point = line.pointAt(from[0], from[1], to[0], to[1], localRatio);\n break;\n }\n startRatio += currentRatio;\n }\n return point;\n}\n\n/**\n * 按照比例在数据片段中获取切线的角度\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n */\nexport function angleAtSegments(points: PointTuple[], t: number) {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return 0;\n }\n const { segments, totalLength } = analyzePoints(points);\n // 计算比例\n let startRatio = 0;\n let angle = 0;\n for (let i = 0; i < segments.length; i++) {\n const seg = segments[i];\n const { from, to } = seg;\n const currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n angle = Math.atan2(to[1] - from[1], to[0] - from[0]);\n break;\n }\n startRatio += currentRatio;\n }\n return angle;\n}\n\nexport function distanceAtSegment(points: PointTuple[], x: number, y: number) {\n let minDistance = Infinity;\n for (let i = 0; i < points.length - 1; i++) {\n const point = points[i];\n const nextPoint = points[i + 1];\n const distance = line.pointDistance(point[0], point[1], nextPoint[0], nextPoint[1], x, y);\n if (distance < minDistance) {\n minDistance = distance;\n }\n }\n return minDistance;\n}\n","import { pointAtSegments, angleAtSegments, distanceAtSegment, lengthOfSegment } from './segments';\nimport { getBBoxByArray } from './util';\nimport { PointTuple, BBox } from './types';\n\nexport default {\n /**\n * 计算多折线的包围盒\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 包围盒\n */\n box(points: PointTuple[]): BBox {\n const xArr = [];\n const yArr = [];\n for (let i = 0; i < points.length; i++) {\n const point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n return getBBoxByArray(xArr, yArr);\n },\n /**\n * 计算多折线的长度\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 多条边的长度\n */\n length(points: PointTuple[]) {\n return lengthOfSegment(points);\n },\n /**\n * 根据比例获取多折线的点\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多折线的长度上的比例\n * @return {object} 根据比例值计算出来的点\n */\n pointAt(points: PointTuple[], t: number) {\n return pointAtSegments(points, t);\n },\n /**\n * 指定点到多折线的距离\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} x 指定点的 x\n * @param {number} y 指定点的 y\n * @return {number} 点到多折线的距离\n */\n pointDistance(points: PointTuple[], x: number, y: number) {\n return distanceAtSegment(points, x, y);\n },\n /**\n * 根据比例获取多折线的切线角度\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多折线的长度上的比例\n * @return {object} 根据比例值计算出来的角度\n */\n tangentAngle(points: PointTuple[], t: number) {\n return angleAtSegments(points, t);\n },\n};\n","import { IShape } from '../interfaces';\n\n// 合并包围盒\nexport function mergeBBox(bbox1, bbox2) {\n if (!bbox1 || !bbox2) {\n return bbox1 || bbox2;\n }\n return {\n minX: Math.min(bbox1.minX, bbox2.minX),\n minY: Math.min(bbox1.minY, bbox2.minY),\n maxX: Math.max(bbox1.maxX, bbox2.maxX),\n maxY: Math.max(bbox1.maxY, bbox2.maxY),\n };\n}\n\n// 合并箭头的包围盒\nexport function mergeArrowBBox(shape: IShape, bbox) {\n const startArrowShape = shape.get('startArrowShape');\n const endArrowShape = shape.get('endArrowShape');\n let startArrowBBox = null;\n let endArrowBBox = null;\n if (startArrowShape) {\n startArrowBBox = startArrowShape.getCanvasBBox();\n bbox = mergeBBox(bbox, startArrowBBox);\n }\n if (endArrowShape) {\n endArrowBBox = endArrowShape.getCanvasBBox();\n bbox = mergeBBox(bbox, endArrowBBox);\n }\n return bbox;\n}\n","// 全局设置一个唯一离屏的 ctx,用于计算 isPointInPath\nlet offScreenCtx = null;\nexport function getOffScreenContext() {\n if (!offScreenCtx) {\n const canvas = document.createElement('canvas');\n canvas.width = 1;\n canvas.height = 1;\n offScreenCtx = canvas.getContext('2d');\n }\n return offScreenCtx;\n}\n","import { isNil, each, isString } from './util';\nimport { getOffScreenContext } from './offscreen';\nimport { ShapeAttrs } from '../types';\n\n/**\n * 获取文本的高度\n * @param text 文本\n * @param fontSize 字体大小\n * @param lineHeight 行高,可以为空\n */\nexport function getTextHeight(text: string, fontSize: number, lineHeight?: number): number {\n let lineCount = 1;\n if (isString(text)) {\n lineCount = text.split('\\n').length;\n }\n if (lineCount > 1) {\n const spaceingY = getLineSpaceing(fontSize, lineHeight);\n return fontSize * lineCount + spaceingY * (lineCount - 1);\n }\n return fontSize;\n}\n\n/**\n * 获取行间距如果文本多行,需要获取文本间距\n * @param fontSize 字体大小\n * @param lineHeight 行高\n */\nexport function getLineSpaceing(fontSize: number, lineHeight?: number): number {\n return lineHeight ? lineHeight - fontSize : fontSize * 0.14;\n}\n\n/**\n * 字体宽度\n * @param text 文本\n * @param font 字体\n */\nexport function getTextWidth(text: string, font: string) {\n const context = getOffScreenContext(); // 获取离屏的 ctx 进行计算\n let width = 0;\n // null 或者 undefined 时,宽度为 0\n if (isNil(text) || text === '') {\n return width;\n }\n context.save();\n context.font = font;\n if (isString(text) && text.includes('\\n')) {\n const textArr = text.split('\\n');\n each(textArr, (subText) => {\n const measureWidth = context.measureText(subText).width;\n if (width < measureWidth) {\n width = measureWidth;\n }\n });\n } else {\n width = context.measureText(text).width;\n }\n context.restore();\n return width;\n}\n\nexport function assembleFont(attrs: ShapeAttrs) {\n const { fontSize, fontFamily, fontWeight, fontStyle, fontVariant } = attrs;\n return [fontStyle, fontVariant, fontWeight, `${fontSize}px`, fontFamily].join(' ').trim();\n}\n","import { each, isArray, isString } from '@antv/util';\n\nconst regexTags = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/ig;\nconst regexDot = /[^\\s\\,]+/ig;\n\nfunction parsePath(p: string): string[] {\n let path = p || [] as string | string[];\n if (isArray(path)) {\n return path;\n }\n\n if (isString(path)) {\n path = path.match(regexTags);\n each(path, (item, index) => {\n // @ts-ignore\n item = item.match(regexDot);\n if (item[0].length > 1) {\n const tag = item[0].charAt(0);\n // @ts-ignore\n item.splice(1, 0, item[0].substr(1));\n // @ts-ignore\n item[0] = tag;\n }\n // @ts-ignore\n each(item, function (sub, i) {\n if (!isNaN(sub)) {\n // @ts-ignore\n item[i] = +sub;\n }\n });\n // @ts-ignore\n path[index] = item;\n });\n return path;\n }\n}\n\nexport default parsePath;\n","import { vec2 } from '@antv/matrix-util';\nimport type { PathCommand } from './types';\n\ntype Pos = [number, number];\n\nfunction smoothBezier(points: Pos[], smooth: number, isLoop: boolean, constraint: Pos[]) {\n const cps: vec2[] = [];\n const hasConstraint = !!constraint;\n\n let prevPoint: Pos;\n let nextPoint: Pos;\n let min: vec2;\n let max: vec2;\n let nextCp0: vec2;\n let cp1: vec2;\n let cp0: vec2;\n\n if (hasConstraint) {\n [ min, max ] = constraint;\n for (let i = 0, l = points.length; i < l; i += 1) {\n const point = points[i];\n min = vec2.min([ 0, 0 ], min, point);\n max = vec2.max([ 0, 0 ], max, point);\n }\n }\n\n for (let i = 0, len = points.length; i < len; i += 1) {\n const point = points[i];\n if (i === 0 && !isLoop) {\n cp0 = point;\n } else if (i === len - 1 && !isLoop) {\n cp1 = point;\n cps.push(cp0);\n cps.push(cp1);\n } else {\n const prevIdx = [ i ? i - 1 : len - 1, i - 1 ][isLoop ? 0 : 1];\n prevPoint = points[prevIdx];\n nextPoint = points[isLoop ? (i + 1) % len : i + 1];\n\n let v: vec2 = [ 0, 0 ];\n v = vec2.sub(v, nextPoint, prevPoint);\n v = vec2.scale(v, v, smooth);\n\n let d0 = vec2.distance(point, prevPoint);\n let d1 = vec2.distance(point, nextPoint);\n\n const sum = d0 + d1;\n if (sum !== 0) {\n d0 /= sum;\n d1 /= sum;\n }\n\n let v1 = vec2.scale([ 0, 0 ], v, -d0);\n let v2 = vec2.scale([ 0, 0 ], v, d1);\n\n cp1 = vec2.add([ 0, 0 ], point, v1);\n nextCp0 = vec2.add([ 0, 0 ], point, v2);\n\n // 下一个控制点必须在这个点和下一个点之间\n nextCp0 = vec2.min([ 0, 0 ], nextCp0, vec2.max([ 0, 0 ], nextPoint, point));\n nextCp0 = vec2.max([ 0, 0 ], nextCp0, vec2.min([ 0, 0 ], nextPoint, point));\n\n // 重新计算 cp1 的值\n v1 = vec2.sub([ 0, 0 ], nextCp0, point);\n v1 = vec2.scale([ 0, 0 ], v1, -d0 / d1);\n cp1 = vec2.add([ 0, 0 ], point, v1);\n\n // 上一个控制点必须要在上一个点和这一个点之间\n cp1 = vec2.min([ 0, 0 ], cp1, vec2.max([ 0, 0 ], prevPoint, point));\n cp1 = vec2.max([ 0, 0 ], cp1, vec2.min([ 0, 0 ], prevPoint, point));\n\n // 重新计算 nextCp0 的值\n v2 = vec2.sub([ 0, 0 ], point, cp1);\n v2 = vec2.scale([ 0, 0 ], v2, d1 / d0);\n nextCp0 = vec2.add([ 0, 0 ], point, v2);\n\n if (hasConstraint) {\n cp1 = vec2.max([ 0, 0 ], cp1, min);\n cp1 = vec2.min([ 0, 0 ], cp1, max);\n nextCp0 = vec2.max([ 0, 0 ], nextCp0, min);\n nextCp0 = vec2.min([ 0, 0 ], nextCp0, max);\n }\n\n cps.push(cp0);\n cps.push(cp1);\n cp0 = nextCp0;\n }\n }\n\n if (isLoop) {\n cps.push(cps.shift());\n }\n\n return cps;\n}\n\n/**\n * create bezier spline from catmull rom spline\n * @param {Array} crp Catmull Rom Points\n * @param {boolean} z Spline is loop\n * @param {Array} constraint Constraint\n */\nfunction catmullRom2Bezier(\n crp: number[],\n z: boolean = false,\n constraint: Pos[] = [\n [ 0, 0 ],\n [ 1, 1 ],\n ]\n): PathCommand[] {\n const isLoop = !!z;\n const pointList: Pos[] = [];\n for (let i = 0, l = crp.length; i < l; i += 2) {\n pointList.push([ crp[i], crp[i + 1] ]);\n }\n\n const controlPointList = smoothBezier(pointList, 0.4, isLoop, constraint);\n const len = pointList.length;\n const d1: PathCommand[] = [];\n\n let cp1: vec2;\n let cp2: vec2;\n let p: Pos;\n\n for (let i = 0; i < len - 1; i += 1) {\n cp1 = controlPointList[i * 2];\n cp2 = controlPointList[i * 2 + 1];\n p = pointList[i + 1];\n\n d1.push([ 'C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1] ]);\n }\n\n if (isLoop) {\n cp1 = controlPointList[len];\n cp2 = controlPointList[len + 1];\n [ p ] = pointList;\n\n d1.push([ 'C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1] ]);\n }\n return d1;\n}\n\nexport default catmullRom2Bezier;\n","import { isArray } from '@antv/util';\n\nconst SPACES = '\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029';\nconst PATH_COMMAND = new RegExp('([a-z])[' + SPACES + ',]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[' + SPACES + ']*,?[' + SPACES + ']*)+)', 'ig');\nconst PATH_VALUES = new RegExp('(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[' + SPACES + ']*,?[' + SPACES + ']*', 'ig');\n\n// Parses given path string into an array of arrays of path segments\nexport default function parsePathString(pathString: string) {\n if (!pathString) {\n return null;\n }\n\n if (isArray(pathString)) {\n return pathString;\n }\n const paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0,\n };\n const data = [];\n\n String(pathString).replace(PATH_COMMAND, function (a, b, c) {\n const params = [];\n let name = b.toLowerCase();\n c.replace(PATH_VALUES, function (a, b) {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([ b ].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([ b, params[0] ]);\n }\n if (name === 'r') {\n data.push([ b ].concat(params));\n } else {\n while (params.length >= paramCounts[name]) {\n data.push([ b ].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return '';\n });\n\n return data;\n}\n","import parsePathString from './parse-path-string';\nconst REGEX_MD = /[a-z]/;\n\nfunction toSymmetry(p, c) { // 点对称\n return [\n c[0] + (c[0] - p[0]),\n c[1] + (c[1] - p[1]),\n ];\n}\n\nexport default function pathToAbsolute(pathString: string) {\n const pathArray = parsePathString(pathString);\n\n if (!pathArray || !pathArray.length) {\n return [\n [ 'M', 0, 0 ],\n ];\n }\n let needProcess = false; // 如果存在小写的命令或者 V,H,T,S 则需要处理\n for (let i = 0; i < pathArray.length; i++) {\n const cmd = pathArray[i][0];\n // 如果存在相对位置的命令,则中断返回\n if (REGEX_MD.test(cmd) || [ 'V', 'H', 'T', 'S' ].indexOf(cmd) >= 0) {\n needProcess = true;\n break;\n }\n }\n // 如果不存在相对命令,则直接返回\n // 如果在业务上都写绝对路径,这种方式最快,仅做了一次检测\n if (!needProcess) {\n return pathArray;\n }\n\n const res = [];\n let x = 0;\n let y = 0;\n let mx = 0;\n let my = 0;\n let start = 0;\n let pa0;\n let dots;\n const first = pathArray[0];\n if (first[0] === 'M' || first[0] === 'm') {\n x = +first[1];\n y = +first[2];\n mx = x;\n my = y;\n start++;\n res[0] = [ 'M', x, y ];\n }\n\n for (let i = start, ii = pathArray.length; i < ii; i++) {\n const pa = pathArray[i];\n const preParams = res[i - 1]; // 取前一个已经处理后的节点,否则会出现问题\n let r = [];\n const cmd = pa[0];\n const upCmd = cmd.toUpperCase();\n if (cmd !== upCmd) {\n r[0] = upCmd;\n switch (upCmd) {\n case 'A':\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +pa[6] + x;\n r[7] = +pa[7] + y;\n break;\n case 'V':\n r[1] = +pa[1] + y;\n break;\n case 'H':\n r[1] = +pa[1] + x;\n break;\n case 'M':\n mx = +pa[1] + x;\n my = +pa[2] + y;\n r[1] = mx;\n r[2] = my;\n break; // for lint\n default:\n for (let j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +pa[j] + ((j % 2) ? x : y);\n }\n }\n } else { // 如果本来已经大写,则不处理\n r = pathArray[i];\n }\n // 需要在外面统一做,同时处理 V,H,S,T 等特殊指令\n switch (upCmd) {\n case 'Z':\n x = +mx;\n y = +my;\n break;\n case 'H':\n x = r[1];\n r = [ 'L', x, y ];\n break;\n case 'V':\n y = r[1];\n r = [ 'L', x, y ];\n break;\n case 'T':\n x = r[1];\n y = r[2];\n // 以 x, y 为中心的,上一个控制点的对称点\n // 需要假设上一个节点的命令为 Q\n const symetricT = toSymmetry([ preParams[1], preParams[2] ], [ preParams[3], preParams[4] ]);\n r = [ 'Q', symetricT[0], symetricT[1], x, y ];\n break;\n case 'S':\n x = r[r.length - 2];\n y = r[r.length - 1];\n // 以 x,y 为中心,取上一个控制点,\n // 需要假设上一个线段为 C 或者 S\n const length = preParams.length;\n const symetricS = toSymmetry(\n [ preParams[length - 4], preParams[length - 3] ],\n [ preParams[length - 2], preParams[length - 1] ]);\n r = [ 'C', symetricS[0], symetricS[1], r[1], r[2], x, y ];\n break;\n case 'M':\n mx = r[r.length - 2];\n my = r[r.length - 1];\n break; // for lint\n default:\n x = r[r.length - 2];\n y = r[r.length - 1];\n }\n res.push(r);\n }\n\n return res;\n}\n","const TAU = Math.PI * 2\n\nconst mapToEllipse = ({ x, y }: { x: number, y: number }, rx: number, ry: number, cosphi: number, sinphi: number, centerx: number, centery: number) => {\n x *= rx\n y *= ry\n\n const xp = cosphi * x - sinphi * y\n const yp = sinphi * x + cosphi * y\n\n return {\n x: xp + centerx,\n y: yp + centery\n }\n}\n\nconst approxUnitArc = (ang1: number, ang2: number) => {\n // If 90 degree circular arc, use a constant\n // as derived from http://spencermortensen.com/articles/bezier-circle\n const a = ang2 === 1.5707963267948966\n ? 0.551915024494\n : ang2 === -1.5707963267948966\n ? -0.551915024494\n : 4 / 3 * Math.tan(ang2 / 4)\n\n const x1 = Math.cos(ang1)\n const y1 = Math.sin(ang1)\n const x2 = Math.cos(ang1 + ang2)\n const y2 = Math.sin(ang1 + ang2)\n\n return [\n {\n x: x1 - y1 * a,\n y: y1 + x1 * a\n },\n {\n x: x2 + y2 * a,\n y: y2 - x2 * a\n },\n {\n x: x2,\n y: y2\n }\n ]\n}\n\nconst vectorAngle = (ux: number, uy: number, vx: number, vy: number) => {\n const sign = (ux * vy - uy * vx < 0) ? -1 : 1\n\n let dot = ux * vx + uy * vy\n\n if (dot > 1) {\n dot = 1\n }\n\n if (dot < -1) {\n dot = -1\n }\n\n return sign * Math.acos(dot)\n}\n\nconst getArcCenter = (\n px: any,\n py: any,\n cx: any,\n cy: any,\n rx: number,\n ry: number,\n largeArcFlag: number,\n sweepFlag: number,\n sinphi: number,\n cosphi: number,\n pxp: number,\n pyp: number\n) => {\n const rxsq = Math.pow(rx, 2)\n const rysq = Math.pow(ry, 2)\n const pxpsq = Math.pow(pxp, 2)\n const pypsq = Math.pow(pyp, 2)\n\n let radicant = (rxsq * rysq) - (rxsq * pypsq) - (rysq * pxpsq)\n\n if (radicant < 0) {\n radicant = 0\n }\n\n radicant /= (rxsq * pypsq) + (rysq * pxpsq)\n radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1)\n\n const centerxp = radicant * rx / ry * pyp\n const centeryp = radicant * -ry / rx * pxp\n\n const centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2\n const centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2\n\n const vx1 = (pxp - centerxp) / rx\n const vy1 = (pyp - centeryp) / ry\n const vx2 = (-pxp - centerxp) / rx\n const vy2 = (-pyp - centeryp) / ry\n\n let ang1 = vectorAngle(1, 0, vx1, vy1)\n let ang2 = vectorAngle(vx1, vy1, vx2, vy2)\n\n if (sweepFlag === 0 && ang2 > 0) {\n ang2 -= TAU\n }\n\n if (sweepFlag === 1 && ang2 < 0) {\n ang2 += TAU\n }\n\n return [ centerx, centery, ang1, ang2 ]\n}\n\nconst arcToBezier = ({\n px,\n py,\n cx,\n cy,\n rx,\n ry,\n xAxisRotation = 0,\n largeArcFlag = 0,\n sweepFlag = 0\n}) => {\n const curves = []\n\n if (rx === 0 || ry === 0) {\n return [{ x1: 0, y1: 0, x2: 0, y2: 0, x: cx, y: cy }];\n }\n\n const sinphi = Math.sin(xAxisRotation * TAU / 360)\n const cosphi = Math.cos(xAxisRotation * TAU / 360)\n\n const pxp = cosphi * (px - cx) / 2 + sinphi * (py - cy) / 2\n const pyp = -sinphi * (px - cx) / 2 + cosphi * (py - cy) / 2\n\n if (pxp === 0 && pyp === 0) {\n return [{ x1: 0, y1: 0, x2: 0, y2: 0, x: cx, y: cy }];\n }\n\n rx = Math.abs(rx)\n ry = Math.abs(ry)\n\n const lambda =\n Math.pow(pxp, 2) / Math.pow(rx, 2) +\n Math.pow(pyp, 2) / Math.pow(ry, 2)\n\n if (lambda > 1) {\n rx *= Math.sqrt(lambda)\n ry *= Math.sqrt(lambda)\n }\n\n let [ centerx, centery, ang1, ang2 ] = getArcCenter(\n px,\n py,\n cx,\n cy,\n rx,\n ry,\n largeArcFlag,\n sweepFlag,\n sinphi,\n cosphi,\n pxp,\n pyp\n )\n\n // If 'ang2' == 90.0000000001, then `ratio` will evaluate to\n // 1.0000000001. This causes `segments` to be greater than one, which is an\n // unecessary split, and adds extra points to the bezier curve. To alleviate\n // this issue, we round to 1.0 when the ratio is close to 1.0.\n let ratio = Math.abs(ang2) / (TAU / 4)\n if (Math.abs(1.0 - ratio) < 0.0000001) {\n ratio = 1.0\n }\n\n const segments = Math.max(Math.ceil(ratio), 1)\n\n ang2 /= segments\n\n for (let i = 0; i < segments; i++) {\n curves.push(approxUnitArc(ang1, ang2))\n ang1 += ang2\n }\n\n return curves.map(curve => {\n const { x: x1, y: y1 } = mapToEllipse(curve[ 0 ], rx, ry, cosphi, sinphi, centerx, centery)\n const { x: x2, y: y2 } = mapToEllipse(curve[ 1 ], rx, ry, cosphi, sinphi, centerx, centery)\n const { x, y } = mapToEllipse(curve[ 2 ], rx, ry, cosphi, sinphi, centerx, centery)\n\n return { x1, y1, x2, y2, x, y }\n })\n}\n\nexport function arcToCubic(x1: number, y1: number, rx: number, ry: number, angle: number, LAF: number, SF: number, x2: number, y2: number) {\n const curves = arcToBezier({\n px: x1,\n py: y1,\n cx: x2,\n cy: y2,\n rx,\n ry,\n xAxisRotation: angle,\n largeArcFlag: LAF,\n sweepFlag: SF,\n });\n\n return curves.reduce((prev, cur) => {\n const { x1, y1, x2, y2, x, y } = cur;\n prev.push(x1, y1, x2, y2, x, y);\n return prev;\n }, [] as number[]);\n}\n","import { mod, toRadian } from '@antv/util';\n\n// 向量长度\nfunction vMag(v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n\n// u.v/|u||v|,计算夹角的余弦值\nfunction vRatio(u, v) {\n // 当存在一个向量的长度为 0 时,夹角也为 0,即夹角的余弦值为 1\n return vMag(u) * vMag(v) ? (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)) : 1;\n}\n\n// 向量角度\nfunction vAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n}\n\n/**\n * 判断两个点是否重合,点坐标的格式为 [x, y]\n * @param {Array} point1 第一个点\n * @param {Array} point2 第二个点\n */\nexport function isSamePoint(point1, point2) {\n return point1[0] === point2[0] && point1[1] === point2[1];\n}\n\n// A 0:rx 1:ry 2:x-axis-rotation 3:large-arc-flag 4:sweep-flag 5: x 6: y\nexport default function getArcParams(startPoint, params) {\n let rx = params[1];\n let ry = params[2];\n const xRotation = mod(toRadian(params[3]), Math.PI * 2);\n const arcFlag = params[4];\n const sweepFlag = params[5];\n // 弧形起点坐标\n const x1 = startPoint[0];\n const y1 = startPoint[1];\n // 弧形终点坐标\n const x2 = params[6];\n const y2 = params[7];\n const xp = (Math.cos(xRotation) * (x1 - x2)) / 2.0 + (Math.sin(xRotation) * (y1 - y2)) / 2.0;\n const yp = (-1 * Math.sin(xRotation) * (x1 - x2)) / 2.0 + (Math.cos(xRotation) * (y1 - y2)) / 2.0;\n const lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n const diff = rx * rx * (yp * yp) + ry * ry * (xp * xp);\n\n let f = diff ? Math.sqrt((rx * rx * (ry * ry) - diff) / diff) : 1;\n\n if (arcFlag === sweepFlag) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n\n // 旋转前的起点坐标,且当长半轴和短半轴的长度为 0 时,坐标按 (0, 0) 处理\n const cxp = ry ? (f * rx * yp) / ry : 0;\n const cyp = rx ? (f * -ry * xp) / rx : 0;\n\n // 椭圆圆心坐标\n const cx = (x1 + x2) / 2.0 + Math.cos(xRotation) * cxp - Math.sin(xRotation) * cyp;\n const cy = (y1 + y2) / 2.0 + Math.sin(xRotation) * cxp + Math.cos(xRotation) * cyp;\n\n // 起始点的单位向量\n const u = [ (xp - cxp) / rx, (yp - cyp) / ry ];\n // 终止点的单位向量\n const v = [ (-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry ];\n // 计算起始点和圆心的连线,与 x 轴正方向的夹角\n const theta = vAngle([ 1, 0 ], u);\n\n // 计算圆弧起始点和终止点与椭圆圆心连线的夹角\n let dTheta = vAngle(u, v);\n\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (sweepFlag === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (sweepFlag === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return {\n cx,\n cy,\n // 弧形的起点和终点相同时,长轴和短轴的长度按 0 处理\n rx: isSamePoint(startPoint, [ x2, y2 ]) ? 0 : rx,\n ry: isSamePoint(startPoint, [ x2, y2 ]) ? 0 : ry,\n startAngle: theta,\n endAngle: theta + dTheta,\n xRotation,\n arcFlag,\n sweepFlag,\n };\n}\n","import getArcParams from './get-arc-params';\nimport { isSamePoint } from './get-arc-params';\nimport parsePath from './parse-path';\n\n// 点对称\nfunction toSymmetry(point, center) {\n return [ center[0] + (center[0] - point[0]), center[1] + (center[1] - point[1]) ];\n}\n\nexport default function getSegments(path) {\n path = parsePath(path);\n const segments = [];\n let currentPoint = null; // 当前图形\n let nextParams = null; // 下一节点的 path 参数\n let startMovePoint = null; // 开始 M 的点,可能会有多个\n let lastStartMovePointIndex = 0; // 最近一个开始点 M 的索引\n const count = path.length;\n for (let i = 0; i < count; i++) {\n const params = path[i];\n nextParams = path[i + 1];\n const command = params[0];\n // 数学定义上的参数,便于后面的计算\n const segment = {\n command,\n prePoint: currentPoint,\n params,\n startTangent: null,\n endTangent: null,\n };\n switch (command) {\n case 'M':\n startMovePoint = [ params[1], params[2] ];\n lastStartMovePointIndex = i;\n break;\n case 'A':\n const arcParams = getArcParams(currentPoint, params);\n segment['arcParams'] = arcParams;\n break;\n default:\n break;\n }\n if (command === 'Z') {\n // 有了 Z 后,当前节点从开始 M 的点开始\n currentPoint = startMovePoint;\n // 如果当前点的命令为 Z,相当于当前点为最近一个 M 点,则下一个点直接指向最近一个 M 点的下一个点\n nextParams = path[lastStartMovePointIndex + 1];\n } else {\n const len = params.length;\n currentPoint = [ params[len - 2], params[len - 1] ];\n }\n if (nextParams && nextParams[0] === 'Z') {\n // 如果下一个点的命令为 Z,则下一个点直接指向最近一个 M 点\n nextParams = path[lastStartMovePointIndex];\n if (segments[lastStartMovePointIndex]) {\n // 如果下一个点的命令为 Z,则最近一个 M 点的前一个点为当前点\n segments[lastStartMovePointIndex].prePoint = currentPoint;\n }\n }\n segment['currentPoint'] = currentPoint;\n // 如果当前点与最近一个 M 点相同,则最近一个 M 点的前一个点为当前点的前一个点\n if (\n segments[lastStartMovePointIndex] &&\n isSamePoint(currentPoint, segments[lastStartMovePointIndex].currentPoint)\n ) {\n segments[lastStartMovePointIndex].prePoint = segment.prePoint;\n }\n const nextPoint = nextParams ? [ nextParams[nextParams.length - 2], nextParams[nextParams.length - 1] ] : null;\n segment['nextPoint'] = nextPoint;\n // Add startTangent and endTangent\n const { prePoint } = segment;\n if ([ 'L', 'H', 'V' ].includes(command)) {\n segment.startTangent = [ prePoint[0] - currentPoint[0], prePoint[1] - currentPoint[1] ];\n segment.endTangent = [ currentPoint[0] - prePoint[0], currentPoint[1] - prePoint[1] ];\n } else if (command === 'Q') {\n // 二次贝塞尔曲线只有一个控制点\n const cp = [ params[1], params[2] ];\n // 二次贝塞尔曲线的终点为 currentPoint\n segment.startTangent = [ prePoint[0] - cp[0], prePoint[1] - cp[1] ];\n segment.endTangent = [ currentPoint[0] - cp[0], currentPoint[1] - cp[1] ];\n } else if (command === 'T') {\n const preSegment = segments[i - 1];\n const cp = toSymmetry(preSegment.currentPoint, prePoint);\n if (preSegment.command === 'Q') {\n segment.command = 'Q';\n segment.startTangent = [ prePoint[0] - cp[0], prePoint[1] - cp[1] ];\n segment.endTangent = [ currentPoint[0] - cp[0], currentPoint[1] - cp[1] ];\n } else {\n segment.command = 'TL';\n segment.startTangent = [ prePoint[0] - currentPoint[0], prePoint[1] - currentPoint[1] ];\n segment.endTangent = [ currentPoint[0] - prePoint[0], currentPoint[1] - prePoint[1] ];\n }\n } else if (command === 'C') {\n // 三次贝塞尔曲线有两个控制点\n const cp1 = [ params[1], params[2] ];\n const cp2 = [ params[3], params[4] ];\n segment.startTangent = [ prePoint[0] - cp1[0], prePoint[1] - cp1[1] ];\n segment.endTangent = [ currentPoint[0] - cp2[0], currentPoint[1] - cp2[1] ];\n\n // horizontal line, eg. ['C', 100, 100, 100, 100, 200, 200]\n if (segment.startTangent[0] === 0 && segment.startTangent[1] === 0) {\n segment.startTangent = [cp1[0] - cp2[0], cp1[1] - cp2[1]];\n }\n if (segment.endTangent[0] === 0 && segment.endTangent[1] === 0) {\n segment.endTangent = [cp2[0] - cp1[0], cp2[1] - cp1[1]];\n }\n } else if (command === 'S') {\n const preSegment = segments[i - 1];\n const cp1 = toSymmetry(preSegment.currentPoint, prePoint);\n const cp2 = [ params[1], params[2] ];\n if (preSegment.command === 'C') {\n segment.command = 'C'; // 将 S 命令变换为 C 命令\n segment.startTangent = [ prePoint[0] - cp1[0], prePoint[1] - cp1[1] ];\n segment.endTangent = [ currentPoint[0] - cp2[0], currentPoint[1] - cp2[1] ];\n } else {\n segment.command = 'SQ'; // 将 S 命令变换为 SQ 命令\n segment.startTangent = [ prePoint[0] - cp2[0], prePoint[1] - cp2[1] ];\n segment.endTangent = [ currentPoint[0] - cp2[0], currentPoint[1] - cp2[1] ];\n }\n } else if (command === 'A') {\n let d = 0.001;\n const {\n cx = 0,\n cy = 0,\n rx = 0,\n ry = 0,\n sweepFlag = 0,\n startAngle = 0,\n endAngle = 0,\n } = segment['arcParams'] || {};\n if (sweepFlag === 0) {\n d *= -1;\n }\n const dx1 = rx * Math.cos(startAngle - d) + cx;\n const dy1 = ry * Math.sin(startAngle - d) + cy;\n segment.startTangent = [ dx1 - startMovePoint[0], dy1 - startMovePoint[1] ];\n const dx2 = rx * Math.cos(startAngle + endAngle + d) + cx;\n const dy2 = ry * Math.sin(startAngle + endAngle - d) + cy;\n segment.endTangent = [ prePoint[0] - dx2, prePoint[1] - dy2 ];\n }\n segments.push(segment);\n }\n return segments;\n}\n","import { Quad as QuadUtil, Cubic as CubicUtil, Arc as EllipseArcUtil } from '@antv/g-math';\nimport { path2Segments } from '@antv/path-util';\nimport { isNumberEqual, max, min } from '@antv/util';\nimport { SimpleBBox } from '../types';\nimport { IShape } from '../interfaces';\nimport { mergeArrowBBox } from './util';\n\nfunction getPathBox(segments, lineWidth) {\n let xArr = [];\n let yArr = [];\n const segmentsWithAngle = [];\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const { currentPoint, params, prePoint } = segment;\n let box;\n switch (segment.command) {\n case 'Q':\n box = QuadUtil.box(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4]);\n break;\n case 'C':\n box = CubicUtil.box(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4], params[5], params[6]);\n break;\n case 'A':\n const arcParams = segment.arcParams;\n box = EllipseArcUtil.box(\n arcParams.cx,\n arcParams.cy,\n arcParams.rx,\n arcParams.ry,\n arcParams.xRotation,\n arcParams.startAngle,\n arcParams.endAngle\n );\n break;\n default:\n xArr.push(currentPoint[0]);\n yArr.push(currentPoint[1]);\n break;\n }\n if (box) {\n segment.box = box;\n xArr.push(box.x, box.x + box.width);\n yArr.push(box.y, box.y + box.height);\n }\n if (lineWidth && (segment.command === 'L' || segment.command === 'M') && segment.prePoint && segment.nextPoint) {\n segmentsWithAngle.push(segment);\n }\n }\n // bbox calculation should ignore NaN for path attribute\n // ref: https://github.com/antvis/g/issues/210\n // ref: https://github.com/antvis/G2/issues/3109\n xArr = xArr.filter((item) => !Number.isNaN(item) && item !== Infinity && item !== -Infinity);\n yArr = yArr.filter((item) => !Number.isNaN(item) && item !== Infinity && item !== -Infinity);\n let minX = min(xArr);\n let minY = min(yArr);\n let maxX = max(xArr);\n let maxY = max(yArr);\n if (segmentsWithAngle.length === 0) {\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n for (let i = 0; i < segmentsWithAngle.length; i++) {\n const segment = segmentsWithAngle[i];\n const { currentPoint } = segment;\n let extra;\n if (currentPoint[0] === minX) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n minX = minX - extra.xExtra;\n } else if (currentPoint[0] === maxX) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n maxX = maxX + extra.xExtra;\n }\n if (currentPoint[1] === minY) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n minY = minY - extra.yExtra;\n } else if (currentPoint[1] === maxY) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n maxY = maxY + extra.yExtra;\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\n\nfunction getExtraFromSegmentWithAngle(segment, lineWidth) {\n const { prePoint, currentPoint, nextPoint } = segment;\n const currentAndPre = Math.pow(currentPoint[0] - prePoint[0], 2) + Math.pow(currentPoint[1] - prePoint[1], 2);\n const currentAndNext = Math.pow(currentPoint[0] - nextPoint[0], 2) + Math.pow(currentPoint[1] - nextPoint[1], 2);\n const preAndNext = Math.pow(prePoint[0] - nextPoint[0], 2) + Math.pow(prePoint[1] - nextPoint[1], 2);\n // 以 currentPoint 为顶点的夹角\n const currentAngle = Math.acos(\n (currentAndPre + currentAndNext - preAndNext) / (2 * Math.sqrt(currentAndPre) * Math.sqrt(currentAndNext))\n );\n // 夹角为空、 0 或 PI 时,不需要计算夹角处的额外宽度\n // 注意: 由于计算精度问题,夹角为 0 的情况计算出来的角度可能是一个很小的值,还需要判断其与 0 是否近似相等\n if (!currentAngle || Math.sin(currentAngle) === 0 || isNumberEqual(currentAngle, 0)) {\n return {\n xExtra: 0,\n yExtra: 0,\n };\n }\n let xAngle = Math.abs(Math.atan2(nextPoint[1] - currentPoint[1], nextPoint[0] - currentPoint[0]));\n let yAngle = Math.abs(Math.atan2(nextPoint[0] - currentPoint[0], nextPoint[1] - currentPoint[1]));\n // 将夹角转为锐角\n xAngle = xAngle > Math.PI / 2 ? Math.PI - xAngle : xAngle;\n yAngle = yAngle > Math.PI / 2 ? Math.PI - yAngle : yAngle;\n // 这里不考虑在水平和垂直方向的投影,直接使用最大差值\n // 由于上层统一加减了二分之一线宽,这里需要进行弥补\n const extra = {\n // 水平方向投影\n xExtra:\n Math.cos(currentAngle / 2 - xAngle) * ((lineWidth / 2) * (1 / Math.sin(currentAngle / 2))) - lineWidth / 2 || 0,\n // 垂直方向投影\n yExtra:\n Math.cos(yAngle - currentAngle / 2) * ((lineWidth / 2) * (1 / Math.sin(currentAngle / 2))) - lineWidth / 2 || 0,\n };\n return extra;\n}\n\nexport default function (shape: IShape): SimpleBBox {\n const attrs = shape.attr();\n const { path, stroke } = attrs;\n const lineWidth = stroke ? attrs.lineWidth : 0; // 只有有 stroke 时,lineWidth 才生效\n const segments = shape.get('segments') || path2Segments(path);\n const { x, y, width, height } = getPathBox(segments, lineWidth);\n let bbox = {\n minX: x,\n minY: y,\n maxX: x + width,\n maxY: y + height,\n };\n bbox = mergeArrowBBox(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n}\n","import { register, getMethod } from './register';\nimport rect from './rect';\nimport circle from './circle';\nimport polyline from './polyline';\nimport polygon from './polygon';\nimport text from './text';\nimport path from './path';\nimport line from './line';\nimport ellipse from './ellipse';\n\nregister('rect', rect);\nregister('image', rect); // image 使用 rect 的包围盒计算\nregister('circle', circle);\nregister('marker', circle); // marker 使用 circle 的计算方案\nregister('polyline', polyline);\nregister('polygon', polygon);\nregister('text', text);\nregister('path', path);\nregister('line', line);\nregister('ellipse', ellipse);\n\nexport { getMethod as getBBoxMethod, register as registerBBox };\n","import { Util } from '@antv/g-math';\nimport { SimpleBBox } from '../types';\nimport { IShape } from '../interfaces';\nimport { mergeArrowBBox } from './util';\n\nexport default function (shape: IShape): SimpleBBox {\n const attrs = shape.attr();\n const { points } = attrs;\n const xArr = [];\n const yArr = [];\n for (let i = 0; i < points.length; i++) {\n const point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n const { x, y, width, height } = Util.getBBoxByArray(xArr, yArr);\n let bbox = {\n minX: x,\n minY: y,\n maxX: x + width,\n maxY: y + height,\n };\n bbox = mergeArrowBBox(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n}\n","import { Util } from '@antv/g-math';\nimport { SimpleBBox } from '../types';\nimport { IShape } from '../interfaces';\n\nexport default function (shape: IShape): SimpleBBox {\n const attrs = shape.attr();\n const { points } = attrs;\n const xArr = [];\n const yArr = [];\n for (let i = 0; i < points.length; i++) {\n const point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n return Util.getBBoxByArray(xArr, yArr);\n}\n","import { SimpleBBox } from '../types';\nimport { IShape } from '../interfaces';\nimport { getTextWidth, getTextHeight, assembleFont } from '../util/text';\n\nexport default function (shape: IShape): SimpleBBox {\n const attrs = shape.attr();\n const { x, y, text, fontSize, lineHeight } = attrs;\n let font = attrs.font;\n if (!font) {\n // 如果未组装 font\n font = assembleFont(attrs);\n }\n const width = getTextWidth(text, font);\n let bbox;\n if (!width) {\n // 如果width不存在,四点共其实点\n bbox = {\n x,\n y,\n width: 0,\n height: 0,\n };\n } else {\n const { textAlign, textBaseline } = attrs;\n const height = getTextHeight(text, fontSize, lineHeight); // attrs.height\n // 默认左右对齐:left, 默认上下对齐 bottom\n const point = {\n x,\n y: y - height,\n };\n if (textAlign) {\n if (textAlign === 'end' || textAlign === 'right') {\n point.x -= width;\n } else if (textAlign === 'center') {\n point.x -= width / 2;\n }\n }\n if (textBaseline) {\n if (textBaseline === 'top') {\n point.y += height;\n } else if (textBaseline === 'middle') {\n point.y += height / 2;\n }\n }\n\n bbox = {\n x: point.x,\n y: point.y,\n width: width,\n height: height,\n };\n }\n return bbox;\n}\n","import { SimpleBBox } from '../types';\nimport { IShape } from '../interfaces';\nimport { mergeArrowBBox } from './util';\n\nexport default function (shape: IShape): SimpleBBox {\n const attrs = shape.attr();\n const { x1, y1, x2, y2 } = attrs;\n const minX = Math.min(x1, x2);\n const maxX = Math.max(x1, x2);\n const minY = Math.min(y1, y2);\n const maxY = Math.max(y1, y2);\n let bbox = {\n minX,\n maxX,\n minY,\n maxY,\n };\n bbox = mergeArrowBBox(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n}\n","import { SimpleBBox } from '../types';\nimport { IShape } from '../interfaces';\n\nexport default function (shape: IShape): SimpleBBox {\n const attrs = shape.attr();\n const { x, y, rx, ry } = attrs;\n return {\n x: x - rx,\n y: y - ry,\n width: rx * 2,\n height: ry * 2,\n };\n}\n","/**\n * @fileoverview G 的基础接口定义和所有的抽象类\n * @author dxq613@gmail.com\n */\n\nimport * as PathUtil from './util/path';\n\nexport * from './types';\nexport * from './interfaces';\nexport { default as Event } from './event/graph-event';\nexport { default as Base } from './abstract/base';\nexport { default as AbstractCanvas } from './abstract/canvas';\nexport { default as AbstractGroup } from './abstract/group';\nexport { default as AbstractShape } from './abstract/shape';\nexport { PathUtil };\n\nexport { getBBoxMethod, registerBBox } from './bbox';\nexport { getTextHeight, assembleFont } from './util/text';\nexport { isAllowCapture } from './util/util';\nexport { multiplyVec2, invert } from './util/matrix';\nexport { getOffScreenContext } from './util/offscreen';\nexport { registerEasing } from './animate/register';\n\nexport const version = '0.5.11';\n","import { __extends } from \"tslib\";\nimport { Event as GraphEvent } from '@antv/g-base';\nvar G6GraphEvent = /** @class */function (_super) {\n __extends(G6GraphEvent, _super);\n function G6GraphEvent(type, event) {\n var _this = _super.call(this, type, event) || this;\n _this.item = event.item;\n _this.canvasX = event.canvasX;\n _this.canvasY = event.canvasY;\n _this.wheelDelta = event.wheelDelta;\n _this.detail = event.detail;\n return _this;\n }\n return G6GraphEvent;\n}(GraphEvent);\nexport { G6GraphEvent };","import { isString, isNumber, isArray } from '@antv/util';\nimport { G6GraphEvent } from '../interface/behavior';\nexport var uniqueId = function uniqueId(type) {\n return \"\".concat(type, \"-\").concat(Math.random()).concat(Date.now());\n};\n/**\n * turn padding into [top, right, bottom, right]\n * @param {Number|Array} padding input padding\n * @return {array} output\n */\nexport var formatPadding = function formatPadding(padding) {\n if (isArray(padding)) {\n switch (padding.length) {\n case 4:\n return padding;\n case 3:\n padding.push(padding[1]);\n return padding;\n case 2:\n return padding.concat(padding);\n case 1:\n return [padding[0], padding[0], padding[0], padding[0]];\n default:\n return [0, 0, 0, 0];\n }\n }\n if (isNumber(padding)) {\n return [padding, padding, padding, padding];\n } else if (isString(padding)) {\n var intPadding = parseInt(padding, 10);\n return [intPadding, intPadding, intPadding, intPadding];\n }\n return [0, 0, 0, 0];\n};\n/**\n * clone event\n * @param e\n */\nexport var cloneEvent = function cloneEvent(e) {\n var event = new G6GraphEvent(e.type, e);\n event.clientX = e.clientX;\n event.clientY = e.clientY;\n event.x = e.x;\n event.y = e.y;\n event.target = e.target;\n event.currentTarget = e.currentTarget;\n event.bubbles = true;\n event.item = e.item;\n return event;\n};\n/**\n * 判断 viewport 是否改变,通过和单位矩阵对比\n * @param matrix Viewport 的 Matrix\n */\nexport var isViewportChanged = function isViewportChanged(matrix) {\n // matrix 为 null, 则说明没有变化\n if (!matrix) {\n return false;\n }\n var MATRIX_LEN = 9;\n var ORIGIN_MATRIX = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n for (var i = 0; i < MATRIX_LEN; i++) {\n if (matrix[i] !== ORIGIN_MATRIX[i]) {\n return true;\n }\n }\n return false;\n};\nexport var isNaN = function isNaN(input) {\n return Number.isNaN(Number(input));\n};\n/**\n * 计算一组 Item 的 BBox\n * @param items 选中的一组Item,可以是 node 或 combo\n */\nexport var calculationItemsBBox = function calculationItemsBBox(items) {\n var minx = Infinity;\n var maxx = -Infinity;\n var miny = Infinity;\n var maxy = -Infinity;\n // 获取已节点的所有最大最小x y值\n for (var i = 0; i < items.length; i++) {\n var element = items[i];\n var bbox = element.getBBox();\n var minX = bbox.minX,\n minY = bbox.minY,\n maxX = bbox.maxX,\n maxY = bbox.maxY;\n if (minX < minx) {\n minx = minX;\n }\n if (minY < miny) {\n miny = minY;\n }\n if (maxX > maxx) {\n maxx = maxX;\n }\n if (maxY > maxy) {\n maxy = maxY;\n }\n }\n var x = Math.floor(minx);\n var y = Math.floor(miny);\n var width = Math.ceil(maxx) - Math.floor(minx);\n var height = Math.ceil(maxy) - Math.floor(miny);\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n minX: minx,\n minY: miny,\n maxX: maxx,\n maxY: maxy\n };\n};\n/**\n * 若 edges 中存在两端点相同的边,使用 quadratic 边并自动计算 curveOffset 使它们不相互重叠\n * 文档: https://g6.antv.antgroup.com/en/api/Util\n * @param edges 边数据集合\n * @param offsetDiff 相邻两边的 offset 之差\n * @param multiEdgeType\n * @param singleEdgeType\n * @param loopEdgeType\n */\nexport var processParallelEdges = function processParallelEdges(edges, offsetDiff, multiEdgeType, singleEdgeType, loopEdgeType) {\n if (offsetDiff === void 0) {\n offsetDiff = 15;\n }\n if (multiEdgeType === void 0) {\n multiEdgeType = 'quadratic';\n }\n if (singleEdgeType === void 0) {\n singleEdgeType = undefined;\n }\n if (loopEdgeType === void 0) {\n loopEdgeType = undefined;\n }\n var len = edges.length;\n var cod = offsetDiff * 2;\n var loopPosition = ['top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left'];\n var edgeMap = {};\n var tags = [];\n var reverses = {};\n for (var i = 0; i < len; i++) {\n var edge = edges[i];\n var source = edge.source,\n target = edge.target;\n var sourceTarget = \"\".concat(source, \"-\").concat(target);\n if (tags[i]) continue;\n if (!edgeMap[sourceTarget]) {\n edgeMap[sourceTarget] = [];\n }\n tags[i] = true;\n edgeMap[sourceTarget].push(edge);\n for (var j = 0; j < len; j++) {\n if (i === j) continue;\n var sedge = edges[j];\n var src = sedge.source;\n var dst = sedge.target;\n // 两个节点之间共同的边\n // 第一条的source = 第二条的target\n // 第一条的target = 第二条的source\n if (!tags[j]) {\n if (source === dst && target === src) {\n edgeMap[sourceTarget].push(sedge);\n tags[j] = true;\n reverses[\"\".concat(src, \"|\").concat(dst, \"|\").concat(edgeMap[sourceTarget].length - 1)] = true;\n } else if (source === src && target === dst) {\n edgeMap[sourceTarget].push(sedge);\n tags[j] = true;\n }\n }\n }\n }\n for (var key in edgeMap) {\n var arcEdges = edgeMap[key];\n var length_1 = arcEdges.length;\n for (var k = 0; k < length_1; k++) {\n var current = arcEdges[k];\n if (current.source === current.target) {\n if (loopEdgeType) current.type = loopEdgeType;\n // 超过8条自环边,则需要重新处理\n current.loopCfg = {\n position: loopPosition[k % 8],\n dist: Math.floor(k / 8) * 20 + 50\n };\n continue;\n }\n if (length_1 === 1 && singleEdgeType && current.source !== current.target) {\n current.type = singleEdgeType;\n continue;\n }\n current.type = multiEdgeType;\n var sign = (k % 2 === 0 ? 1 : -1) * (reverses[\"\".concat(current.source, \"|\").concat(current.target, \"|\").concat(k)] ? -1 : 1);\n if (length_1 % 2 === 1) {\n current.curveOffset = sign * Math.ceil(k / 2) * cod;\n } else {\n current.curveOffset = sign * (Math.floor(k / 2) * cod + offsetDiff);\n }\n }\n }\n return edges;\n};","import { __assign } from \"tslib\";\nimport { isNumber, isString } from '@antv/util';\nimport { formatPadding, isNaN } from '../../util/base';\nimport { applyMatrix, invertMatrix, lerpArray } from '../../util/math';\nimport { transform } from '@antv/matrix-util/lib/ext';\nimport { getAnimateCfgWithCallback } from '../../util/graphic';\nvar ViewController = /** @class */function () {\n function ViewController(graph) {\n this.destroyed = false;\n this.graph = graph;\n this.destroyed = false;\n }\n // get view center coordinate\n ViewController.prototype.getViewCenter = function () {\n var padding = this.getFormatPadding();\n var graph = this.graph;\n var width = this.graph.get('width');\n var height = graph.get('height');\n return {\n x: (width - padding[1] - padding[3]) / 2 + padding[3],\n y: (height - padding[0] - padding[2]) / 2 + padding[0]\n };\n };\n ViewController.prototype.fitCenter = function (animate, animateCfg) {\n var graph = this.graph;\n var group = graph.get('group');\n var bbox;\n // if reaches optimizeThreshold, fitView according to the 4 corner nodes\n var nodes = graph.getNodes();\n if (nodes.length > graph.get('optimizeThreshold')) {\n var minX_1 = Infinity;\n var minY_1 = Infinity;\n var maxX_1 = -Infinity;\n var maxY_1 = -Infinity;\n nodes.forEach(function (node) {\n var _a = node.getModel(),\n x = _a.x,\n y = _a.y;\n if (minX_1 > x) minX_1 = x;\n if (minY_1 > y) minY_1 = y;\n if (maxX_1 < x) maxX_1 = x;\n if (maxY_1 < y) maxY_1 = y;\n });\n var matrix = group.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var _a = applyMatrix({\n x: minX_1,\n y: minY_1\n }, matrix),\n transMinX = _a.x,\n transMinY = _a.y;\n var _b = applyMatrix({\n x: maxX_1,\n y: maxY_1\n }, matrix),\n transMaxX = _b.x,\n transMaxY = _b.y;\n bbox = {\n minX: transMinX,\n maxX: transMaxX,\n minY: transMinY,\n maxY: transMaxY,\n width: transMaxX - transMinX,\n height: transMaxY - transMinY,\n x: transMinX,\n y: transMinY\n };\n } else {\n bbox = group.getCanvasBBox();\n }\n if (bbox.width === 0 || bbox.height === 0) return;\n var viewCenter = this.getViewCenter();\n var groupCenter = {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2\n };\n graph.translate(viewCenter.x - groupCenter.x, viewCenter.y - groupCenter.y, animate, animateCfg);\n };\n ViewController.prototype.animatedFitView = function (group, startMatrix, animateCfg, bbox, viewCenter, groupCenter, ratio, zoomToFit) {\n var graph = this.graph;\n animateCfg = animateCfg ? animateCfg : {\n duration: 500,\n easing: 'easeCubic'\n };\n // start from the default matrix\n var matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n // Translate\n var vx = bbox.x + viewCenter.x - groupCenter.x - bbox.minX;\n var vy = bbox.y + viewCenter.y - groupCenter.y - bbox.minY;\n if (isNaN(vx) || isNaN(vy)) return;\n var translatedMatrix = transform(matrix, [['t', vx, vy]]);\n if (!zoomToFit) {\n // If zooming is not needed just animate the current translated matrix and return\n var animationConfig_1 = getAnimateCfgWithCallback({\n animateCfg: animateCfg,\n callback: function callback() {\n graph.emit('viewportchange', {\n action: 'translate',\n matrix: translatedMatrix\n });\n }\n });\n group.animate(function (ratio) {\n return {\n matrix: lerpArray(startMatrix, translatedMatrix, ratio)\n };\n }, animationConfig_1);\n return;\n }\n // Zoom\n var minZoom = graph.get('minZoom');\n var maxZoom = graph.get('maxZoom');\n var realRatio = ratio;\n if (minZoom && ratio < minZoom) {\n realRatio = minZoom;\n console.warn('fitview failed, ratio out of range, ratio: %f', ratio, 'graph minzoom has been used instead');\n } else if (maxZoom && ratio > maxZoom) {\n realRatio = maxZoom;\n console.warn('fitview failed, ratio out of range, ratio: %f', ratio, 'graph maxzoom has been used instead');\n }\n var zoomedMatrix = transform(translatedMatrix, [['t', -viewCenter.x, -viewCenter.y], ['s', realRatio, realRatio], ['t', viewCenter.x, viewCenter.y]]);\n // Animation\n var animationConfig = getAnimateCfgWithCallback({\n animateCfg: animateCfg,\n callback: function callback() {\n group.setMatrix(zoomedMatrix);\n graph.emit('viewportchange', {\n action: 'translate',\n matrix: translatedMatrix\n });\n graph.emit('viewportchange', {\n action: 'zoom',\n matrix: zoomedMatrix\n });\n }\n });\n group.stopAnimate();\n group.setMatrix(startMatrix);\n group.animate(function (ratio) {\n return {\n matrix: lerpArray(startMatrix, zoomedMatrix, ratio)\n };\n }, animationConfig);\n };\n // fit view graph\n ViewController.prototype.fitView = function (animate, animateCfg) {\n var graph = this.graph;\n var padding = this.getFormatPadding();\n var width = graph.get('width');\n var height = graph.get('height');\n var group = graph.get('group');\n var startMatrix = group.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n group.resetMatrix();\n var bbox;\n // if reaches optimizeThreshold, fitView according to the 4 corner nodes\n var nodes = graph.getNodes();\n if (nodes.length > graph.get('optimizeThreshold')) {\n var minX_2 = Infinity;\n var minY_2 = Infinity;\n var maxX_2 = -Infinity;\n var maxY_2 = -Infinity;\n nodes.forEach(function (node) {\n var _a = node.getModel(),\n x = _a.x,\n y = _a.y;\n if (minX_2 > x) minX_2 = x;\n if (minY_2 > y) minY_2 = y;\n if (maxX_2 < x) maxX_2 = x;\n if (maxY_2 < y) maxY_2 = y;\n });\n bbox = {\n minX: minX_2,\n maxX: maxX_2,\n minY: minY_2,\n maxY: maxY_2,\n width: maxX_2 - minX_2,\n height: maxY_2 - minY_2,\n x: minX_2,\n y: minY_2\n };\n } else {\n bbox = group.getCanvasBBox();\n }\n if (bbox.width === 0 || bbox.height === 0) return;\n var viewCenter = this.getViewCenter();\n var groupCenter = {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2\n };\n // Compute ratio\n var w = (width - padding[1] - padding[3]) / bbox.width;\n var h = (height - padding[0] - padding[2]) / bbox.height;\n var ratio = w;\n if (w > h) {\n ratio = h;\n }\n if (animate) {\n this.animatedFitView(group, startMatrix, animateCfg, bbox, viewCenter, groupCenter, ratio, true);\n } else {\n var dx = viewCenter.x - groupCenter.x;\n var dy = viewCenter.y - groupCenter.y;\n if (isNaN(dx) || isNaN(dy)) return;\n graph.translate(dx, dy);\n if (!graph.zoom(ratio, viewCenter)) {\n console.warn('zoom failed, ratio out of range, ratio: %f', ratio);\n }\n }\n };\n // fit view graph by rule\n ViewController.prototype.fitViewByRules = function (rules, animate, animateCfg) {\n var _a = rules.onlyOutOfViewPort,\n onlyOutOfViewPort = _a === void 0 ? false : _a,\n _b = rules.direction,\n direction = _b === void 0 ? 'both' : _b,\n _c = rules.ratioRule,\n ratioRule = _c === void 0 ? 'min' : _c;\n var graph = this.graph;\n var padding = this.getFormatPadding();\n var width = graph.get('width');\n var height = graph.get('height');\n var group = graph.get('group');\n var startMatrix = group.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n group.resetMatrix();\n var bbox;\n // if reaches optimizeThreshold, fitView according to the 4 corner nodes\n var nodes = graph.getNodes();\n if (nodes.length > graph.get('optimizeThreshold')) {\n var minX_3 = Infinity;\n var minY_3 = Infinity;\n var maxX_3 = -Infinity;\n var maxY_3 = -Infinity;\n nodes.forEach(function (node) {\n var _a = node.getModel(),\n x = _a.x,\n y = _a.y;\n if (minX_3 > x) minX_3 = x;\n if (minY_3 > y) minY_3 = y;\n if (maxX_3 < x) maxX_3 = x;\n if (maxY_3 < y) maxY_3 = y;\n });\n bbox = {\n minX: minX_3,\n maxX: maxX_3,\n minY: minY_3,\n maxY: maxY_3,\n width: maxX_3 - minX_3,\n height: maxY_3 - minY_3,\n x: minX_3,\n y: minY_3\n };\n } else {\n bbox = group.getCanvasBBox();\n }\n if (bbox.width === 0 || bbox.height === 0) return;\n var viewCenter = this.getViewCenter();\n var groupCenter = {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2\n };\n // Compute ratio\n var wRatio = (width - padding[1] - padding[3]) / bbox.width;\n var hRatio = (height - padding[0] - padding[2]) / bbox.height;\n var ratio;\n if (direction === 'x') {\n ratio = wRatio;\n } else if (direction === 'y') {\n ratio = hRatio;\n } else {\n // ratioRule\n ratio = ratioRule === 'max' ? Math.max(wRatio, hRatio) : Math.min(wRatio, hRatio);\n }\n // 如果设置了仅对超出视口宽高的场景进行fitview,则没超出的场景zoom取1\n if (onlyOutOfViewPort) {\n ratio = ratio < 1 ? ratio : 1;\n }\n if (animate) {\n this.animatedFitView(group, startMatrix, animateCfg, bbox, viewCenter, groupCenter, ratio, true);\n } else {\n var initZoomRatio = graph.getZoom();\n var endZoom = initZoomRatio * ratio;\n var minZoom = graph.get('minZoom');\n // 如果zoom小于最小zoom, 则以最小zoom为准\n if (endZoom < minZoom) {\n endZoom = minZoom;\n console.warn('fitview failed, ratio out of range, ratio: %f', ratio, 'graph minzoom has been used instead');\n }\n graph.translate(viewCenter.x - groupCenter.x, viewCenter.y - groupCenter.y);\n graph.zoomTo(endZoom, viewCenter);\n }\n };\n ViewController.prototype.getFormatPadding = function () {\n var padding = this.graph.get('fitViewPadding');\n return formatPadding(padding);\n };\n ViewController.prototype.focusPoint = function (point, animate, animateCfg) {\n var _this = this;\n var viewCenter = this.getViewCenter();\n var modelCenter = this.getPointByCanvas(viewCenter.x, viewCenter.y);\n var viewportMatrix = this.graph.get('group').getMatrix();\n if (!viewportMatrix) viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n if (animate) {\n var dx_1 = (modelCenter.x - point.x) * viewportMatrix[0];\n var dy_1 = (modelCenter.y - point.y) * viewportMatrix[4];\n var lastX_1 = 0;\n var lastY_1 = 0;\n var newX_1 = 0;\n var newY_1 = 0;\n // 动画每次平移一点,直到目标位置\n this.graph.get('canvas').animate(function (ratio) {\n newX_1 = dx_1 * ratio;\n newY_1 = dy_1 * ratio;\n _this.graph.translate(newX_1 - lastX_1, newY_1 - lastY_1);\n lastX_1 = newX_1;\n lastY_1 = newY_1;\n }, __assign({}, animateCfg));\n } else {\n this.graph.translate((modelCenter.x - point.x) * viewportMatrix[0], (modelCenter.y - point.y) * viewportMatrix[4]);\n }\n };\n /**\n * 将 Canvas 坐标转成视口坐标\n * @param canvasX canvas x 坐标\n * @param canvasY canvas y 坐标\n */\n ViewController.prototype.getPointByCanvas = function (canvasX, canvasY) {\n var viewportMatrix = this.graph.get('group').getMatrix();\n if (!viewportMatrix) {\n viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n var point = invertMatrix({\n x: canvasX,\n y: canvasY\n }, viewportMatrix);\n return point;\n };\n /**\n * 将页面坐标转成视口坐标\n * @param clientX 页面 x 坐标\n * @param clientY 页面 y 坐标\n */\n ViewController.prototype.getPointByClient = function (clientX, clientY) {\n var canvas = this.graph.get('canvas');\n var canvasPoint = canvas.getPointByClient(clientX, clientY);\n return this.getPointByCanvas(canvasPoint.x, canvasPoint.y);\n };\n /**\n * 将视口坐标转成页面坐标\n * @param x 视口 x 坐标\n * @param y 视口 y 坐标\n */\n ViewController.prototype.getClientByPoint = function (x, y) {\n var canvas = this.graph.get('canvas');\n var canvasPoint = this.getCanvasByPoint(x, y);\n var point = canvas.getClientByPoint(canvasPoint.x, canvasPoint.y);\n return {\n x: point.x,\n y: point.y\n };\n };\n /**\n * 将视口坐标转成 Canvas 坐标\n * @param x 视口 x 坐标\n * @param y 视口 y 坐标\n */\n ViewController.prototype.getCanvasByPoint = function (x, y) {\n var viewportMatrix = this.graph.get('group').getMatrix();\n if (!viewportMatrix) {\n viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n return applyMatrix({\n x: x,\n y: y\n }, viewportMatrix);\n };\n /**\n * 将元素移动到画布中心\n * @param item Item 实例或 id\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n */\n ViewController.prototype.focus = function (item, animate, animateCfg) {\n if (isString(item)) {\n item = this.graph.findById(item);\n }\n if (item) {\n var x = 0,\n y = 0;\n if (item.getType && item.getType() === 'edge') {\n var sourceMatrix = item.getSource().get('group').getMatrix();\n var targetMatrix = item.getTarget().get('group').getMatrix();\n if (sourceMatrix && targetMatrix) {\n x = (sourceMatrix[6] + targetMatrix[6]) / 2;\n y = (sourceMatrix[7] + targetMatrix[7]) / 2;\n } else if (sourceMatrix || targetMatrix) {\n x = sourceMatrix ? sourceMatrix[6] : targetMatrix[6];\n y = sourceMatrix ? sourceMatrix[7] : targetMatrix[7];\n }\n } else {\n var group = item.get('group');\n var matrix = group.getMatrix();\n if (!matrix) matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n x = matrix[6];\n y = matrix[7];\n }\n // 用实际位置而不是model中的x,y,防止由于拖拽等的交互导致model的x,y并不是当前的x,y\n this.focusPoint({\n x: x,\n y: y\n }, animate, animateCfg);\n }\n };\n ViewController.prototype.focusItems = function (items, zoomToFit, animate, animateCfg) {\n if (!items.length) {\n return;\n }\n var graph = this.graph;\n var padding = this.getFormatPadding();\n var width = graph.get('width');\n var height = graph.get('height');\n var group = graph.get('group');\n var startMatrix = group.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n group.resetMatrix();\n var bbox = {\n x: 0,\n y: 0,\n minX: Number.MAX_SAFE_INTEGER,\n minY: Number.MAX_SAFE_INTEGER,\n maxX: Number.MIN_SAFE_INTEGER,\n maxY: Number.MIN_SAFE_INTEGER,\n width: 0,\n height: 0\n };\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n var itemBBox = item.getBBox();\n if (itemBBox.minX < bbox.minX) {\n bbox.minX = itemBBox.minX;\n }\n if (itemBBox.minY < bbox.minY) {\n bbox.minY = itemBBox.minY;\n }\n if (itemBBox.maxX > bbox.maxX) {\n bbox.maxX = itemBBox.maxX;\n }\n if (itemBBox.maxY > bbox.maxY) {\n bbox.maxY = itemBBox.maxY;\n }\n }\n bbox.x = bbox.minX;\n bbox.y = bbox.minY;\n bbox.width = bbox.maxX - bbox.minX;\n bbox.height = bbox.maxY - bbox.minY;\n if (bbox.width === 0 || bbox.height === 0) return;\n var viewCenter = this.getViewCenter();\n var groupCenter = {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2\n };\n // Compute ratio\n var w = (width - padding[1] - padding[3]) / bbox.width;\n var h = (height - padding[0] - padding[2]) / bbox.height;\n var ratio = w;\n if (w > h) {\n ratio = h;\n }\n if (animate) {\n this.animatedFitView(group, startMatrix, animateCfg, bbox, viewCenter, groupCenter, ratio, zoomToFit);\n } else {\n graph.translate(viewCenter.x - groupCenter.x, viewCenter.y - groupCenter.y);\n if (zoomToFit && !graph.zoom(ratio, viewCenter)) {\n console.warn('zoom failed, ratio out of range, ratio: %f', ratio);\n }\n }\n };\n /**\n * 改变 canvas 画布的宽度和高度\n * @param width canvas 宽度\n * @param height canvas 高度\n */\n ViewController.prototype.changeSize = function (width, height) {\n var graph = this.graph;\n if (!isNumber(width) || !isNumber(height)) {\n throw Error('invalid canvas width & height, please make sure width & height type is number');\n }\n graph.set({\n width: width,\n height: height\n });\n var canvas = graph.get('canvas');\n canvas.changeSize(width, height);\n // change the size of grid plugin if it exists on graph\n var plugins = graph.get('plugins');\n plugins.forEach(function (plugin) {\n if (plugin.get('gridContainer')) {\n // 网格定位信息初始化\n plugin.positionInit();\n }\n });\n };\n ViewController.prototype.destroy = function () {\n this.graph = null;\n this.destroyed = false;\n };\n return ViewController;\n}();\nexport default ViewController;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n/**\n * @fileOverview 从xml建立自定义Node,包含update\n * @author xuzhi.mxz@antfin.com\n */\nimport { __assign, __rest } from \"tslib\";\nimport { get } from '@antv/util';\nimport { getTextSize } from '../util/graphic';\n/**\n * 一种更宽松的JSON 解析,如果遇到不符合规范的字段会直接转为字符串\n * @param text json 内容\n */\nfunction looseJSONParse(text) {\n if (typeof text !== 'string') {\n return text;\n }\n var safeParse = function safeParse(str) {\n if (typeof str !== 'string') {\n return str;\n }\n try {\n return JSON.parse(str.trim());\n } catch (e) {\n return str.trim();\n }\n };\n var firstAttempt = safeParse(text);\n if (typeof firstAttempt !== 'string') {\n return firstAttempt;\n }\n var tail = function tail(arr) {\n return arr[arr.length - 1];\n };\n var str = text.trim();\n var objectStack = [];\n var syntaxStack = [];\n var isLastPair = function isLastPair() {\n var syntaxes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n syntaxes[_i] = arguments[_i];\n }\n return syntaxes.some(function (syntax) {\n return tail(syntaxStack) === syntax;\n });\n };\n var getValueStore = function getValueStore() {\n return tail(objectStack);\n };\n var rst = null;\n var i = 0;\n var temp = '';\n while (i < str.length) {\n var nowChar = str[i];\n var isInString = isLastPair('\"', \"'\");\n if (!isInString && !nowChar.trim()) {\n i += 1;\n continue;\n }\n var isLastTranslate = str[i - 1] === '\\\\';\n var isInObject = isLastPair('}');\n var isInArray = isLastPair(']');\n var isWaitingValue = isLastPair(',');\n var tempArr = getValueStore();\n if (isInString) {\n if (tail(syntaxStack) === nowChar && !isLastTranslate) {\n syntaxStack.pop();\n var value = safeParse(temp);\n tempArr.push(value);\n rst = value;\n temp = '';\n } else {\n temp += nowChar;\n }\n } else if (isInArray && nowChar === ',') {\n if (temp) {\n tempArr.push(safeParse(temp));\n temp = '';\n }\n } else if (isInObject && nowChar === ':') {\n syntaxStack.push(',');\n if (temp) {\n tempArr.push(temp);\n temp = '';\n }\n } else if (isWaitingValue && nowChar === ',') {\n if (temp) {\n tempArr.push(safeParse(temp));\n temp = '';\n }\n syntaxStack.pop();\n } else if (nowChar === '}' && (isInObject || isWaitingValue)) {\n if (temp) {\n tempArr.push(safeParse(temp));\n temp = '';\n }\n if (isWaitingValue) {\n syntaxStack.pop();\n }\n var obj = {};\n for (var c = 1; c < tempArr.length; c += 2) {\n obj[tempArr[c - 1]] = tempArr[c];\n }\n objectStack.pop();\n if (objectStack.length) {\n tail(objectStack).push(obj);\n }\n syntaxStack.pop();\n rst = obj;\n } else if (nowChar === ']' && isInArray) {\n if (temp) {\n tempArr.push(safeParse(temp));\n temp = '';\n }\n objectStack.pop();\n if (objectStack.length) {\n tail(objectStack).push(tempArr);\n }\n syntaxStack.pop();\n rst = tempArr;\n } else if (nowChar === '{') {\n objectStack.push([]);\n syntaxStack.push('}');\n } else if (nowChar === '[') {\n objectStack.push([]);\n syntaxStack.push(']');\n } else if (nowChar === '\"') {\n syntaxStack.push('\"');\n } else if (nowChar === \"'\") {\n syntaxStack.push(\"'\");\n } else {\n temp += nowChar;\n }\n i += 1;\n }\n return rst || temp;\n}\nvar keyConvert = function keyConvert(str) {\n return str.split('-').reduce(function (a, b) {\n return a + b.charAt(0).toUpperCase() + b.slice(1);\n });\n};\n/**\n * 简单的一个{{}}模板渲染,不包含任何复杂语法\n * @param xml\n */\nexport var xmlDataRenderer = function xmlDataRenderer(xml) {\n return function (data) {\n var len = xml.length;\n var arr = [];\n var i = 0;\n var tmp = '';\n while (i < len) {\n if (xml[i] === '{' && xml[i + 1] === '{') {\n arr.push(tmp);\n tmp = '';\n i += 2;\n } else if (xml[i] === '}' && xml[i + 1] === '}') {\n if (arr.length) {\n var last = arr.pop();\n tmp = get(data, tmp, last.endsWith('=') ? \"\\\"{\".concat(tmp, \"}\\\"\") : tmp);\n arr.push(last + tmp);\n }\n i += 2;\n tmp = '';\n } else {\n tmp += xml[i];\n i += 1;\n }\n }\n arr.push(tmp);\n return arr.map(function (e, index) {\n return arr[index - 1] && arr[index - 1].endsWith('=') ? \"\\\"{\".concat(e, \"}\\\"\") : e;\n }).join('');\n };\n};\n/**\n * 解析XML,并转化为相应的JSON结构\n * @param xml xml解析后的节点\n */\nexport function parseXML(xml, cfg) {\n var attrs = {};\n var keys = xml.getAttributeNames && xml.getAttributeNames() || [];\n var children = xml.children && Array.from(xml.children).map(function (e) {\n return parseXML(e, cfg);\n });\n var rst = {};\n var tagName = xml.tagName ? xml.tagName.toLowerCase() : 'group';\n if (tagName === 'text') {\n attrs.text = xml.innerText;\n }\n rst.type = tagName;\n if (tagName === 'img') {\n rst.type = 'image';\n }\n Array.from(keys).forEach(function (k) {\n var key = keyConvert(k);\n var val = xml.getAttribute(k);\n try {\n if (key === 'style' || key === 'attrs') {\n var style = looseJSONParse(val);\n attrs = __assign(__assign({}, attrs), style);\n } else {\n rst[key] = looseJSONParse(val);\n }\n } catch (e) {\n if (key === 'style') {\n throw e;\n }\n rst[key] = val;\n }\n });\n rst.attrs = attrs;\n if (cfg && cfg.style && rst.name && _typeof(cfg.style[rst.name]) === 'object') {\n rst.attrs = __assign(__assign({}, rst.attrs), cfg.style[rst.name]);\n }\n if (cfg && cfg.style && rst.keyshape) {\n rst.attrs = __assign(__assign({}, rst.attrs), cfg.style);\n }\n if (children.length) {\n rst.children = children;\n }\n return rst;\n}\n/**\n * 根据偏移量和内部节点最终的bounding box来得出该shape最终的bbox\n */\nexport function getBBox(node, offset, chilrenBBox) {\n var _a = node.attrs,\n attrs = _a === void 0 ? {} : _a;\n var bbox = {\n x: offset.x || 0,\n y: offset.y || 0,\n width: chilrenBBox.width || 0,\n height: chilrenBBox.height || 0\n };\n var shapeHeight, shapeWidth;\n switch (node.type) {\n case 'maker':\n case 'circle':\n if (attrs.r) {\n shapeWidth = 2 * attrs.r;\n shapeHeight = 2 * attrs.r;\n }\n break;\n case 'text':\n if (attrs.text) {\n shapeWidth = getTextSize(attrs.text, attrs.fontSize || 12)[0];\n shapeHeight = 16;\n bbox.y += shapeHeight;\n bbox.height = shapeHeight;\n bbox.width = shapeWidth;\n node.attrs = __assign({\n fontSize: 12,\n fill: '#000'\n }, attrs);\n }\n break;\n default:\n if (attrs.width) {\n shapeWidth = attrs.width;\n }\n if (attrs.height) {\n shapeHeight = attrs.height;\n }\n }\n if (shapeHeight >= 0) {\n bbox.height = shapeHeight;\n }\n if (shapeWidth >= 0) {\n bbox.width = shapeWidth;\n }\n if (attrs.marginTop) {\n bbox.y += attrs.marginTop;\n }\n if (attrs.marginLeft) {\n bbox.x += attrs.marginLeft;\n }\n return bbox;\n}\n/**\n * 把从xml计算出的结构填上位置信息,补全attrs\n * @param target\n * @param lastOffset\n */\nexport function generateTarget(target, lastOffset) {\n var _a;\n if (lastOffset === void 0) {\n lastOffset = {\n x: 0,\n y: 0\n };\n }\n var defaultBbox = __assign({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n }, lastOffset);\n if ((_a = target.children) === null || _a === void 0 ? void 0 : _a.length) {\n var _b = target.attrs,\n attrs = _b === void 0 ? {} : _b;\n var marginTop = attrs.marginTop;\n var offset = __assign({}, lastOffset);\n if (marginTop) {\n offset.y += marginTop;\n }\n for (var index = 0; index < target.children.length; index++) {\n target.children[index].attrs.key = \"\".concat(attrs.key || 'root', \" -\").concat(index, \" \");\n var node = generateTarget(target.children[index], offset);\n if (node.bbox) {\n var bbox = node.bbox;\n if (node.attrs.next === 'inline') {\n offset.x += node.bbox.width;\n } else {\n offset.y += node.bbox.height;\n }\n if (bbox.width + bbox.x > defaultBbox.width) {\n defaultBbox.width = bbox.width + bbox.x;\n }\n if (bbox.height + bbox.y > defaultBbox.height) {\n defaultBbox.height = bbox.height + bbox.y;\n }\n }\n }\n }\n target.bbox = getBBox(target, lastOffset, defaultBbox);\n target.attrs = __assign(__assign({}, target.attrs), target.bbox);\n return target;\n}\n/**\n * 对比前后两个最终计算出来的node,并对比出最小改动,\n * 动作: 'add' 添加节点 | ’delete‘ 删除节点 | ’change‘ 改变节点attrs | 'restructure' 重构节点\n * @param nowTarget\n * @param formerTarget\n */\nexport function compareTwoTarget(nowTarget, formerTarget) {\n var _a, _b, _c, _d;\n var type = (nowTarget || {}).type;\n var key = ((formerTarget === null || formerTarget === void 0 ? void 0 : formerTarget.attrs) || {}).key;\n if (key && nowTarget) {\n nowTarget.attrs.key = key;\n }\n if (!nowTarget && formerTarget) {\n return {\n action: 'delete',\n val: formerTarget,\n type: type,\n key: key\n };\n }\n if (nowTarget && !formerTarget) {\n return {\n action: 'add',\n val: nowTarget,\n type: type\n };\n }\n if (!nowTarget && !formerTarget) {\n return {\n action: 'same',\n type: type\n };\n }\n var children = [];\n if (((_a = nowTarget.children) === null || _a === void 0 ? void 0 : _a.length) > 0 || ((_b = formerTarget.children) === null || _b === void 0 ? void 0 : _b.length) > 0) {\n var length_1 = Math.max((_c = nowTarget.children) === null || _c === void 0 ? void 0 : _c.length, (_d = formerTarget.children) === null || _d === void 0 ? void 0 : _d.length);\n var formerChilren = formerTarget.children || [];\n var nowChilren = nowTarget.children || [];\n for (var index = 0; index < length_1; index += 1) {\n children.push(compareTwoTarget(nowChilren[index], formerChilren[index]));\n }\n }\n var formerKeys = Object.keys(formerTarget.attrs);\n var nowKeys = Object.keys(nowTarget.attrs);\n if (formerTarget.type !== nowTarget.type) {\n return {\n action: 'restructure',\n nowTarget: nowTarget,\n formerTarget: formerTarget,\n key: key,\n children: children\n };\n }\n if (formerKeys.filter(function (e) {\n return e !== 'children';\n }).some(function (e) {\n return nowTarget.attrs[e] !== formerTarget.attrs[e] || !nowKeys.includes(e);\n })) {\n return {\n action: 'change',\n val: nowTarget,\n children: children,\n type: type,\n key: key\n };\n }\n return {\n action: 'same',\n children: children,\n type: type,\n key: key\n };\n}\n/**\n * 根据xml或者返回xml的函数构建自定义节点的结构\n * @param gen\n */\nexport function createNodeFromXML(gen) {\n var structures = {};\n var compileXML = function compileXML(cfg) {\n var rawStr = typeof gen === 'function' ? gen(cfg) : gen;\n var target = xmlDataRenderer(rawStr)(cfg);\n var xmlParser = document.createElement('div');\n xmlParser.innerHTML = target;\n var xml = xmlParser.children[0];\n var result = generateTarget(parseXML(xml, cfg));\n xmlParser.remove();\n return result;\n };\n return {\n draw: function draw(cfg, group) {\n var resultTarget = compileXML(cfg);\n var keyshape = group;\n var renderTarget = function renderTarget(target) {\n var _a = target.attrs,\n attrs = _a === void 0 ? {} : _a,\n bbox = target.bbox,\n type = target.type,\n children = target.children,\n rest = __rest(target, [\"attrs\", \"bbox\", \"type\", \"children\"]);\n if (target.type !== 'group') {\n var shape = group.addShape(target.type, __assign({\n attrs: attrs,\n origin: {\n bbox: bbox,\n type: type,\n children: children\n }\n }, rest));\n if (target.keyshape) {\n keyshape = shape;\n }\n }\n if (target.children) {\n target.children.forEach(function (n) {\n return renderTarget(n);\n });\n }\n };\n renderTarget(resultTarget);\n structures[cfg.id] = [resultTarget];\n return keyshape;\n },\n update: function update(cfg, node) {\n if (!structures[cfg.id]) {\n structures[cfg.id] = [];\n }\n var container = node.getContainer();\n var children = container.get('children');\n var newTarget = compileXML(cfg);\n var lastTarget = structures[cfg.id].pop();\n var diffResult = compareTwoTarget(newTarget, lastTarget);\n var addShape = function addShape(shape) {\n var _a;\n if (shape.type !== 'group') {\n container.addShape(shape.type, {\n attrs: shape.attrs\n });\n }\n if ((_a = shape.children) === null || _a === void 0 ? void 0 : _a.length) {\n shape.children.map(function (e) {\n return addShape(e);\n });\n }\n };\n var delShape = function delShape(shape) {\n var _a;\n var targetShape = children.find(function (e) {\n return e.attrs.key === shape.attrs.key;\n });\n if (targetShape) {\n container.removeChild(targetShape);\n }\n if ((_a = shape.children) === null || _a === void 0 ? void 0 : _a.length) {\n shape.children.map(function (e) {\n return delShape(e);\n });\n }\n };\n var updateTarget = function updateTarget(target) {\n var key = target.key;\n if (target.type !== 'group') {\n var targetShape = children.find(function (e) {\n return e.attrs.key === key;\n });\n switch (target.action) {\n case 'change':\n if (targetShape) {\n var originAttr = target.val.keyshape ? node.getOriginStyle() : {};\n targetShape.attr(__assign(__assign({}, originAttr), target.val.attrs));\n }\n break;\n case 'add':\n addShape(target.val);\n break;\n case 'delete':\n delShape(target.val);\n break;\n case 'restructure':\n delShape(target.formerTarget);\n addShape(target.nowTarget);\n break;\n default:\n break;\n }\n }\n if (target.children) {\n target.children.forEach(function (n) {\n return updateTarget(n);\n });\n }\n };\n updateTarget(diffResult);\n structures[cfg.id].push(newTarget);\n },\n getAnchorPoints: function getAnchorPoints() {\n return [[0, 0.5], [1, 0.5], [0.5, 1], [0.5, 0]];\n }\n };\n}","import { __assign } from \"tslib\";\nimport { upperFirst } from '@antv/util';\nimport { createNodeFromXML } from './xml';\nvar cache = {}; // ucfirst 开销过大,进行缓存\n// 首字母大写\nfunction ucfirst(str) {\n if (!cache[str]) {\n cache[str] = upperFirst(str);\n }\n return cache[str];\n}\n/**\n * 工厂方法的基类\n * @type Shape.FactoryBase\n */\nexport var ShapeFactoryBase = {\n /**\n * 默认的形状,当没有指定/匹配 shapeType 时,使用默认的\n * @type {String}\n */\n defaultShapeType: 'defaultType',\n /**\n * 形状的 className,用于搜索\n * @type {String}\n */\n className: null,\n /**\n * 获取绘制 Shape 的工具类,无状态\n * @param {String} type 类型\n * @return {Shape} 工具类\n */\n getShape: function getShape(type) {\n var self = this;\n var shape = self[type] || self[self.defaultShapeType] || self['simple-circle'];\n return shape;\n },\n /**\n * 绘制图形\n * @param {String} type 类型\n * @param {Object} cfg 配置项\n * @param {G.Group} group 图形的分组\n * @return {IShape} 图形对象\n */\n draw: function draw(type, cfg, group) {\n var shape = this.getShape(type);\n group['shapeMap'] = {};\n var rst = shape.draw(cfg, group);\n if (shape.afterDraw) {\n shape.afterDraw(cfg, group, rst);\n }\n return rst;\n },\n /**\n * 更新\n * @param {String} type 类型\n * @param {Object} cfg 配置项\n * @param {G6.Item} item 节点、边、分组等\n */\n baseUpdate: function baseUpdate(type, cfg, item, updateType) {\n var _a, _b;\n var shape = this.getShape(type);\n // 防止没定义 update 函数\n if (shape.update) {\n // shape.mergeStyle = updateType === 'move' || updateType === 'bbox' ? {} : shape.getOptions?.(cfg);\n shape.mergeStyle = (_a = shape.getOptions) === null || _a === void 0 ? void 0 : _a.call(shape, cfg, updateType);\n (_b = shape.update) === null || _b === void 0 ? void 0 : _b.call(shape, cfg, item, updateType);\n }\n if (shape.afterUpdate) {\n shape.afterUpdate(cfg, item);\n }\n },\n /**\n * 设置状态\n * @param {String} type 类型\n * @param {String} name 状态名\n * @param {String | Boolean} value 状态值\n * @param {G6.Item} item 节点、边、分组等\n */\n setState: function setState(type, name, value, item) {\n var shape = this.getShape(type);\n // 调用 shape/shapeBase.ts 中的 setState 方法\n shape.setState(name, value, item);\n },\n /**\n * 是否允许更新,不重新绘制图形\n * @param {String} type 类型\n * @return {Boolean} 是否允许使用更新\n */\n shouldUpdate: function shouldUpdate(type) {\n var shape = this.getShape(type);\n return !!shape.update;\n },\n getControlPoints: function getControlPoints(type, cfg) {\n var shape = this.getShape(type);\n return shape.getControlPoints(cfg);\n },\n /**\n * 获取控制点\n * @param {String} type 节点、边类型\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 控制点的数组,如果为 null,则没有控制点\n */\n getAnchorPoints: function getAnchorPoints(type, cfg) {\n var shape = this.getShape(type);\n return shape.getAnchorPoints(cfg);\n }\n};\n/**\n * 元素的框架\n */\nvar ShapeFramework = {\n // 默认样式及配置\n options: {},\n /**\n * 绘制\n */\n draw: function draw(cfg, group) {\n return this.drawShape(cfg, group);\n },\n /**\n * 绘制\n */\n drawShape: function drawShape( /* cfg, group */) {},\n /**\n * 绘制完成后的操作,便于用户继承现有的节点、边\n */\n afterDraw: function afterDraw( /* cfg, group */) {},\n // update(cfg, item) // 默认不定义\n afterUpdate: function afterUpdate( /* cfg, item */) {},\n /**\n * 设置节点、边状态\n */\n setState: function setState( /* name, value, item */) {},\n /**\n * 获取控制点\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 控制点的数组,如果为 null,则没有控制点\n */\n getControlPoints: function getControlPoints(cfg) {\n return cfg.controlPoints;\n },\n /**\n * 获取控制点\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 控制点的数组,如果为 null,则没有控制点\n */\n getAnchorPoints: function getAnchorPoints(cfg) {\n var defaultAnchorPoints = this.options.anchorPoints;\n var anchorPoints = cfg.anchorPoints || defaultAnchorPoints;\n return anchorPoints;\n }\n /* 如果没定义 update 方法,每次都调用 draw 方法\n update(cfg, item) {\n }\n */\n};\n\nvar Shape = /** @class */function () {\n function Shape() {}\n Shape.registerFactory = function (factoryType, cfg) {\n var className = ucfirst(factoryType);\n var factoryBase = ShapeFactoryBase;\n var shapeFactory = __assign(__assign({}, factoryBase), cfg);\n Shape[className] = shapeFactory;\n shapeFactory.className = className;\n return shapeFactory;\n };\n Shape.getFactory = function (factoryType) {\n var className = ucfirst(factoryType);\n return Shape[className];\n };\n Shape.registerNode = function (shapeType, nodeDefinition, extendShapeType) {\n var shapeFactory = Shape.Node;\n var shapeObj;\n if (typeof nodeDefinition === 'string' || typeof nodeDefinition === 'function') {\n var autoNodeDefinition = createNodeFromXML(nodeDefinition);\n shapeObj = __assign(__assign({}, shapeFactory.getShape('single-node')), autoNodeDefinition);\n } else if (nodeDefinition.jsx) {\n var jsx = nodeDefinition.jsx;\n var autoNodeDefinition = createNodeFromXML(jsx);\n shapeObj = __assign(__assign(__assign({}, shapeFactory.getShape('single-node')), autoNodeDefinition), nodeDefinition);\n } else {\n shapeFactory.getShape(extendShapeType);\n var extendShape = extendShapeType ? shapeFactory.getShape(extendShapeType) : ShapeFramework;\n shapeObj = __assign(__assign({}, extendShape), nodeDefinition);\n }\n shapeObj.type = shapeType;\n shapeObj.itemType = 'node';\n shapeFactory[shapeType] = shapeObj;\n return shapeObj;\n };\n Shape.registerEdge = function (shapeType, edgeDefinition, extendShapeType) {\n var shapeFactory = Shape.Edge;\n var extendShape = extendShapeType ? shapeFactory.getShape(extendShapeType) : ShapeFramework;\n var shapeObj = __assign(__assign({}, extendShape), edgeDefinition);\n shapeObj.type = shapeType;\n shapeObj.itemType = 'edge';\n shapeFactory[shapeType] = shapeObj;\n return shapeObj;\n };\n Shape.registerCombo = function (shapeType, comboDefinition, extendShapeType) {\n var shapeFactory = Shape.Combo;\n var extendShape = extendShapeType ? shapeFactory.getShape(extendShapeType) : ShapeFramework;\n var shapeObj = __assign(__assign({}, extendShape), comboDefinition);\n shapeObj.type = shapeType;\n shapeObj.itemType = 'combo';\n shapeFactory[shapeType] = shapeObj;\n return shapeObj;\n };\n return Shape;\n}();\nexport default Shape;\n// 注册 Node 的工厂方法\nShape.registerFactory('node', {\n defaultShapeType: 'circle'\n});\n// 注册 Edge 的工厂方法\nShape.registerFactory('edge', {\n defaultShapeType: 'line'\n});\n// 注册 Combo 的工厂方法\nShape.registerFactory('combo', {\n defaultShapeType: 'circle'\n});","import { __assign } from \"tslib\";\nimport { each, isPlainObject, isString, isBoolean, mix, deepMix, clone } from '@antv/util';\nimport Shape from '../element/shape';\nimport { getBBox } from '../util/graphic';\nimport { translate } from '../util/math';\nimport { uniqueId } from '../util/base';\nvar CACHE_BBOX = 'bboxCache';\nvar CACHE_CANVAS_BBOX = 'bboxCanvasCache';\nvar ARROWS = ['startArrow', 'endArrow'];\nvar ItemBase = /** @class */function () {\n function ItemBase(cfg) {\n this._cfg = {};\n this.destroyed = false;\n // 是否开启优化,由 graph 根据当前图上节点数量来控制\n this.optimize = false;\n var defaultCfg = {\n /**\n * id\n * @type {string}\n */\n id: undefined,\n /**\n * 类型\n * @type {string}\n */\n type: 'item',\n /**\n * data model\n * @type {object}\n */\n model: {},\n /**\n * g group\n * @type {G.Group}\n */\n group: undefined,\n /**\n * is open animate\n * @type {boolean}\n */\n animate: false,\n /**\n * visible - not group visible\n * @type {boolean}\n */\n visible: true,\n /**\n * locked - lock node\n * @type {boolean}\n */\n locked: false,\n /**\n * capture event\n * @type {boolean}\n */\n event: true,\n /**\n * key shape to calculate item's bbox\n * @type object\n */\n keyShape: undefined,\n /**\n * item's states, such as selected or active\n * @type Array\n */\n states: []\n };\n this._cfg = Object.assign(defaultCfg, this.getDefaultCfg(), cfg);\n var model = this.get('model');\n var id = model.id;\n var itemType = this.get('type');\n if (typeof id === 'undefined') {\n id = uniqueId(itemType);\n } else if (typeof id !== 'string') {\n id = String(id);\n }\n this.get('model').id = id;\n this.set('id', id);\n var group = cfg.group;\n if (group) {\n group.set('item', this);\n group.set('id', id);\n }\n this.init();\n this.draw();\n var shapeType = model.shape || model.type || (itemType === 'edge' ? 'line' : 'circle');\n var shapeFactory = this.get('shapeFactory');\n if (shapeFactory && shapeFactory[shapeType]) {\n var options = shapeFactory[shapeType].options;\n // merge the stateStyles from item and shape\n if (options && options.stateStyles) {\n var styles = this.get('styles') || model.stateStyles;\n styles = deepMix({}, options.stateStyles, styles);\n this.set('styles', styles);\n }\n }\n }\n /**\n * 根据 keyshape 计算包围盒\n */\n ItemBase.prototype.calculateBBox = function () {\n var keyShape = this.get('keyShape');\n var group = this.get('group');\n // 因为 group 可能会移动,所以必须通过父元素计算才能计算出正确的包围盒\n var bbox = getBBox(keyShape, group);\n bbox.x = bbox.minX;\n bbox.y = bbox.minY;\n bbox.width = bbox.maxX - bbox.minX;\n bbox.height = bbox.maxY - bbox.minY;\n bbox.centerX = (bbox.minX + bbox.maxX) / 2;\n bbox.centerY = (bbox.minY + bbox.maxY) / 2;\n return bbox;\n };\n /**\n * 根据 keyshape 计算包围盒\n */\n ItemBase.prototype.calculateCanvasBBox = function () {\n var keyShape = this.get('keyShape');\n var group = this.get('group');\n // 因为 group 可能会移动,所以必须通过父元素计算才能计算出正确的包围盒\n var bbox = getBBox(keyShape, group);\n bbox.x = bbox.minX;\n bbox.y = bbox.minY;\n bbox.width = bbox.maxX - bbox.minX;\n bbox.height = bbox.maxY - bbox.minY;\n bbox.centerX = (bbox.minX + bbox.maxX) / 2;\n bbox.centerY = (bbox.minY + bbox.maxY) / 2;\n return bbox;\n };\n /**\n * draw shape\n */\n ItemBase.prototype.drawInner = function () {\n var self = this;\n var shapeFactory = self.get('shapeFactory');\n var group = self.get('group');\n var model = self.get('model');\n group.clear();\n var visible = model.visible;\n if (visible !== undefined && !visible) self.changeVisibility(visible);\n if (!shapeFactory) {\n return;\n }\n self.updatePosition(model);\n var cfg = self.getShapeCfg(model); // 可能会附加额外信息\n var shapeType = cfg.type;\n var keyShape = shapeFactory.draw(shapeType, cfg, group);\n if (keyShape) {\n self.set('keyShape', keyShape);\n keyShape.set('isKeyShape', true);\n keyShape.set('draggable', true);\n }\n this.setOriginStyle();\n // 防止由于用户外部修改 model 中的 shape 导致 shape 不更新\n this.set('currentShape', shapeType);\n this.restoreStates(shapeFactory, shapeType);\n };\n /**\n * 设置图元素原始样式\n * @param keyShape 图元素 keyShape\n * @param group Group 容器\n */\n ItemBase.prototype.setOriginStyle = function () {\n var group = this.get('group');\n var children = group.get('children');\n var keyShape = this.getKeyShape();\n var self = this;\n var keyShapeName = keyShape.get('name');\n if (!this.get('originStyle')) {\n // 第一次 set originStyle,直接拿首次渲染所有图形的 attrs\n var originStyles = {};\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n var shapeType = child.get('type');\n var name_1 = child.get('name');\n if (name_1 && name_1 !== keyShapeName) {\n originStyles[name_1] = shapeType !== 'image' ? clone(child.attr()) : self.getShapeStyleByName(name_1);\n // The text's position and matrix is not allowed to be affected by states\n if (shapeType === 'text' && originStyles[name_1]) {\n delete originStyles[name_1].x;\n delete originStyles[name_1].y;\n delete originStyles[name_1].matrix;\n }\n } else {\n var keyShapeStyle = self.getShapeStyleByName(); // 可优化,需要去除 child.attr 中其他 shape 名的对象\n delete keyShapeStyle.path;\n delete keyShapeStyle.matrix;\n if (!keyShapeName) {\n Object.assign(originStyles, keyShapeStyle);\n } else {\n // 若 keyShape 有 name 且 !name,这个图形不是 keyShape,给这个图形一个 name\n if (!name_1) {\n var shapeName = uniqueId('shape');\n child.set('name', shapeName);\n group['shapeMap'][shapeName] = child;\n originStyles[shapeName] = shapeType !== 'image' ? clone(child.attr()) : self.getShapeStyleByName(name_1);\n } else {\n originStyles[keyShapeName] = keyShapeStyle;\n }\n }\n }\n }\n self.set('originStyle', originStyles);\n } else {\n // 第二次 set originStyles,需要找到不是 stateStyles 的样式,更新到 originStyles 中\n // 上一次设置的 originStyle,是初始的 shape attrs\n var styles_1 = this.get('originStyle');\n // let styles: ShapeStyle = {};\n if (keyShapeName && !styles_1[keyShapeName]) styles_1[keyShapeName] = {};\n // 获取当前状态样式\n var currentStatesStyle_1 = this.getCurrentStatesStyle();\n var _loop_1 = function _loop_1(i) {\n var child = children[i];\n var name_2 = child.get('name');\n var shapeAttrs = child.attr();\n if (name_2 && name_2 !== keyShapeName) {\n // 有 name 的非 keyShape 图形\n var shapeStateStyle_1 = currentStatesStyle_1[name_2];\n if (!styles_1[name_2]) styles_1[name_2] = {};\n if (shapeStateStyle_1) {\n Object.keys(shapeAttrs).forEach(function (key) {\n var value = shapeAttrs[key];\n if (value !== shapeStateStyle_1[key]) styles_1[name_2][key] = value;\n });\n } else {\n styles_1[name_2] = child.get('type') !== 'image' ? clone(shapeAttrs) : self.getShapeStyleByName(name_2);\n }\n } else {\n var shapeAttrs_1 = child.attr();\n var keyShapeStateStyles_1 = {};\n Object.keys(currentStatesStyle_1).forEach(function (styleKey) {\n var subStyle = currentStatesStyle_1[styleKey];\n if (styleKey === keyShapeName || !isPlainObject(subStyle)) {\n keyShapeStateStyles_1[styleKey] = subStyle;\n }\n });\n Object.keys(shapeAttrs_1).forEach(function (key) {\n var value = shapeAttrs_1[key];\n // 如果是对象且不是 arrow,则是其他 shape 的样式\n // if (isPlainObject(value) && ARROWS.indexOf(name) === -1) return;\n if (keyShapeStateStyles_1[key] !== value) {\n if (keyShapeName) styles_1[keyShapeName][key] = value;else styles_1[key] = value;\n }\n });\n }\n };\n // 遍历当前所有图形的 attrs,找到不是 stateStyles 的样式更新到 originStyles 中\n for (var i = 0; i < children.length; i++) {\n _loop_1(i);\n }\n delete styles_1.path;\n delete styles_1.matrix;\n delete styles_1.x;\n delete styles_1.y;\n if (styles_1[keyShapeName]) {\n delete styles_1[keyShapeName].x;\n delete styles_1[keyShapeName].y;\n delete styles_1[keyShapeName].matrix;\n delete styles_1[keyShapeName].path;\n }\n self.set('originStyle', styles_1);\n }\n };\n /**\n * restore shape states\n * @param shapeFactory\n * @param shapeType\n */\n ItemBase.prototype.restoreStates = function (shapeFactory, shapeType) {\n var self = this;\n var states = self.get('states');\n each(states, function (state) {\n shapeFactory.setState(shapeType, state, true, self);\n });\n };\n ItemBase.prototype.init = function () {\n var shapeFactory = Shape.getFactory(this.get('type'));\n this.set('shapeFactory', shapeFactory);\n };\n /**\n * 获取属性\n * @internal 仅内部类使用\n * @param {String} key 属性名\n * @return {object | string | number} 属性值\n */\n ItemBase.prototype.get = function (key) {\n return this._cfg[key];\n };\n /**\n * 设置属性\n * @internal 仅内部类使用\n * @param {String|Object} key 属性名,也可以是对象\n * @param {object | string | number} val 属性值\n */\n ItemBase.prototype.set = function (key, val) {\n if (isPlainObject(key)) {\n this._cfg = __assign(__assign({}, this._cfg), key);\n } else {\n this._cfg[key] = val;\n }\n };\n ItemBase.prototype.getDefaultCfg = function () {\n return {};\n };\n /**\n * 更新/刷新等操作后,清除 cache\n */\n ItemBase.prototype.clearCache = function () {\n this.set(CACHE_BBOX, null);\n this.set(CACHE_CANVAS_BBOX, null);\n };\n /**\n * 渲染前的逻辑,提供给子类复写\n */\n ItemBase.prototype.beforeDraw = function () {};\n /**\n * 渲染后的逻辑,提供给子类复写\n */\n ItemBase.prototype.afterDraw = function () {};\n /**\n * 更新后做一些工作\n */\n ItemBase.prototype.afterUpdate = function () {};\n /**\n * draw shape\n */\n ItemBase.prototype.draw = function () {\n this.beforeDraw();\n this.drawInner();\n this.afterDraw();\n };\n ItemBase.prototype.getShapeStyleByName = function (name) {\n var group = this.get('group');\n var currentShape;\n if (name) {\n currentShape = group['shapeMap'][name]; // group.find((element) => element.get('name') === name) as IShapeBase;\n } else {\n currentShape = this.getKeyShape();\n }\n if (currentShape) {\n var styles_2 = {};\n each(currentShape.attr(), function (val, key) {\n // 修改 img 通过 updateItem 实现\n if (key !== 'img' || isString(val)) {\n styles_2[key] = val;\n }\n });\n return styles_2;\n }\n return {};\n };\n ItemBase.prototype.getShapeCfg = function (model, updateType) {\n var styles = this.get('styles');\n if (styles) {\n // merge graph的item样式与数据模型中的样式\n var newModel = model;\n newModel.style = __assign(__assign({}, styles), model.style);\n return newModel;\n }\n return model;\n };\n /**\n * 获取指定状态的样式,去除了全局样式\n * @param state 状态名称\n */\n ItemBase.prototype.getStateStyle = function (state) {\n var styles = this.get('styles');\n var stateStyle = styles && styles[state];\n return stateStyle;\n };\n /**\n * get keyshape style\n */\n ItemBase.prototype.getOriginStyle = function () {\n return this.get('originStyle');\n };\n ItemBase.prototype.getCurrentStatesStyle = function () {\n var self = this;\n var styles = {};\n var states = self.getStates();\n if (!states || !states.length) {\n return this.get('originStyle');\n }\n each(self.getStates(), function (state) {\n styles = Object.assign(styles, self.getStateStyle(state));\n });\n return styles;\n };\n /**\n * 更改元素状态, visible 不属于这个范畴\n * @internal 仅提供内部类 graph 使用\n * @param {String} state 状态名\n * @param {Boolean} value 节点状态值\n */\n ItemBase.prototype.setState = function (state, value) {\n var states = this.get('states');\n var shapeFactory = this.get('shapeFactory');\n var stateName = state;\n var filterStateName = state;\n if (isString(value)) {\n stateName = \"\".concat(state, \":\").concat(value);\n filterStateName = \"\".concat(state, \":\");\n }\n var newStates = states;\n if (isBoolean(value)) {\n var index = states.indexOf(filterStateName);\n if (value) {\n if (index > -1) {\n return;\n }\n states.push(stateName);\n } else if (index > -1) {\n states.splice(index, 1);\n }\n } else if (isString(value)) {\n // 过滤掉 states 中 filterStateName 相关的状态\n var filterStates = states.filter(function (name) {\n return name.includes(filterStateName);\n });\n if (filterStates.length > 0) {\n this.clearStates(filterStates);\n }\n newStates = newStates.filter(function (name) {\n return !name.includes(filterStateName);\n });\n newStates.push(stateName);\n this.set('states', newStates);\n }\n if (shapeFactory) {\n var model = this.get('model');\n var type = model.type;\n // 调用 shape/shape.ts 中的 setState\n shapeFactory.setState(type, state, value, this);\n }\n };\n /**\n * 清除指定的状态,如果参数为空,则不做任务处理\n * @param states 状态名称\n */\n ItemBase.prototype.clearStates = function (states) {\n var self = this;\n var originStates = self.getStates();\n var shapeFactory = self.get('shapeFactory');\n var model = self.get('model');\n var shape = model.type;\n if (!states) {\n states = originStates;\n }\n if (isString(states)) {\n states = [states];\n }\n var newStates = originStates.filter(function (state) {\n return states.indexOf(state) === -1;\n });\n self.set('states', newStates);\n states.forEach(function (state) {\n shapeFactory.setState(shape, state, false, self);\n });\n };\n /**\n * 设置是否开启性能优化模式\n * 目前影响:节点的状态样式更新是否影响相关边的更新\n * @param {Boolean} enableOptimize 是否开启\n */\n ItemBase.prototype.setOptimize = function (enableOptimize) {\n this.optimize = enableOptimize;\n };\n /**\n * 节点的图形容器\n * @return {G.Group} 图形容器\n */\n ItemBase.prototype.getContainer = function () {\n return this.get('group');\n };\n /**\n * 节点的关键形状,用于计算节点大小,连线截距等\n * @return {IShapeBase} 关键形状\n */\n ItemBase.prototype.getKeyShape = function () {\n return this.get('keyShape');\n };\n /**\n * 节点数据模型\n * @return {Object} 数据模型\n */\n ItemBase.prototype.getModel = function () {\n return this.get('model');\n };\n /**\n * 节点类型\n * @return {string} 节点的类型\n */\n ItemBase.prototype.getType = function () {\n return this.get('type');\n };\n /**\n * 获取 Item 的ID\n */\n ItemBase.prototype.getID = function () {\n return this.get('id');\n };\n /**\n * 是否是 Item 对象,悬空边情况下进行判定\n */\n ItemBase.prototype.isItem = function () {\n return true;\n };\n /**\n * 获取当前元素的所有状态\n * @return {Array} 元素的所有状态\n */\n ItemBase.prototype.getStates = function () {\n return this.get('states');\n };\n /**\n * 当前元素是否处于某状态\n * @param {String} state 状态名\n * @return {Boolean} 是否处于某状态\n */\n ItemBase.prototype.hasState = function (state) {\n var states = this.getStates();\n return states.indexOf(state) >= 0;\n };\n /**\n * 刷新一般用于处理几种情况\n * 1. item model 在外部被改变\n * 2. 边的节点位置发生改变,需要重新计算边\n *\n * 因为数据从外部被修改无法判断一些属性是否被修改,直接走位置和 shape 的更新\n */\n ItemBase.prototype.refresh = function (updateType) {\n var model = this.get('model');\n // 更新元素位置\n this.updatePosition(model);\n // 更新元素内容,样式\n this.updateShape(updateType);\n // 做一些更新之后的操作\n this.afterUpdate();\n // 清除缓存\n this.clearCache();\n };\n ItemBase.prototype.getUpdateType = function (cfg) {\n return undefined;\n };\n /**\n * 将更新应用到 model 上,刷新属性\n * @internal 仅提供给 Graph 使用,外部直接调用 graph.update 接口\n * @param {Object} cfg 配置项,可以是增量信息\n */\n ItemBase.prototype.update = function (cfg, updateType) {\n if (updateType === void 0) {\n updateType = undefined;\n }\n var model = this.get('model');\n // 仅仅移动位置时,既不更新,也不重绘\n if (updateType === 'move') {\n this.updatePosition(cfg);\n } else {\n var oriVisible = model.visible;\n var cfgVisible = cfg.visible;\n if (oriVisible !== cfgVisible && cfgVisible !== undefined) this.changeVisibility(cfgVisible);\n var originPosition = {\n x: model.x,\n y: model.y\n };\n cfg.x = isNaN(+cfg.x) ? model.x : +cfg.x;\n cfg.y = isNaN(+cfg.y) ? model.y : +cfg.y;\n var styles = this.get('styles');\n if (cfg.stateStyles) {\n // 更新 item 时更新 this.get('styles') 中的值\n var stateStyles = cfg.stateStyles;\n mix(styles, stateStyles);\n delete cfg.stateStyles;\n }\n // 直接将更新合到原数据模型上,可以保证用户在外部修改源数据然后刷新时的样式符合期待。\n Object.assign(model, cfg);\n // 如果 x,y 有变化,先重置位置\n if (originPosition.x !== cfg.x || originPosition.y !== cfg.y) {\n this.updatePosition(cfg);\n }\n this.updateShape(updateType);\n }\n this.afterUpdate();\n this.clearCache();\n };\n /**\n * 更新元素内容,样式\n */\n ItemBase.prototype.updateShape = function (updateType) {\n var shapeFactory = this.get('shapeFactory');\n var model = this.get('model');\n var shape = model.type;\n // 判定是否允许更新\n // 1. 注册的节点允许更新(即有继承的/复写的 update 方法,即 update 方法没有被复写为 undefined)\n // 2. 更新后的 shape 等于原先的 shape\n if (shapeFactory.shouldUpdate(shape) && shape === this.get('currentShape')) {\n var updateCfg = this.getShapeCfg(model, updateType);\n shapeFactory.baseUpdate(shape, updateCfg, this, updateType);\n // 更新完以后重新设置原始样式\n if (updateType !== 'move') this.setOriginStyle();\n } else {\n // 如果不满足上面两种状态,重新绘制\n this.draw();\n }\n // 更新后重置节点状态\n this.restoreStates(shapeFactory, shape);\n };\n /**\n * 更新位置,避免整体重绘\n * @param {object} cfg 待更新数据\n */\n ItemBase.prototype.updatePosition = function (cfg) {\n var model = this.get('model');\n var x = isNaN(+cfg.x) ? +model.x : +cfg.x;\n var y = isNaN(+cfg.y) ? +model.y : +cfg.y;\n var group = this.get('group');\n if (isNaN(x) || isNaN(y)) {\n return false;\n }\n model.x = x;\n model.y = y;\n var matrix = group.getMatrix();\n if (matrix && matrix[6] === x && matrix[7] === y) return false;\n group.resetMatrix();\n // G 4.0 element 中移除了矩阵相关方法,详见https://www.yuque.com/antv/blog/kxzk9g#4rMMV\n translate(group, {\n x: x,\n y: y\n });\n this.clearCache(); // 位置更新后需要清除缓存\n return true;\n };\n /**\n * 获取 item 的包围盒,这个包围盒是相对于 item 自己,不会将 matrix 计算在内\n * @return {Object} 包含 x,y,width,height, centerX, centerY\n */\n ItemBase.prototype.getBBox = function () {\n // 计算 bbox 开销有些大,缓存\n var bbox = this.get(CACHE_BBOX);\n if (!bbox) {\n bbox = this.calculateBBox();\n this.set(CACHE_BBOX, bbox);\n }\n return bbox;\n };\n /**\n * 获取 item 相对于画布的包围盒,会将从顶层到当前元素的 matrix 都计算在内\n * @return {Object} 包含 x,y,width,height, centerX, centerY\n */\n ItemBase.prototype.getCanvasBBox = function () {\n // 计算 bbox 开销大,缓存\n var bbox = this.get(CACHE_CANVAS_BBOX);\n if (!bbox) {\n bbox = this.calculateCanvasBBox();\n this.set(CACHE_CANVAS_BBOX, bbox);\n }\n return bbox;\n };\n /**\n * 将元素放到最前面\n */\n ItemBase.prototype.toFront = function () {\n var group = this.get('group');\n group.toFront();\n };\n /**\n * 将元素放到最后面\n */\n ItemBase.prototype.toBack = function () {\n var group = this.get('group');\n group.toBack();\n };\n /**\n * 显示元素\n */\n ItemBase.prototype.show = function () {\n this.changeVisibility(true);\n };\n /**\n * 隐藏元素\n */\n ItemBase.prototype.hide = function () {\n this.changeVisibility(false);\n };\n /**\n * 更改是否显示\n * @param {Boolean} visible 是否显示\n */\n ItemBase.prototype.changeVisibility = function (visible) {\n var group = this.get('group');\n if (visible) {\n group.show();\n } else {\n group.hide();\n }\n this.set('visible', visible);\n };\n /**\n * 元素是否可见\n * @return {Boolean} 返回该元素是否可见\n */\n ItemBase.prototype.isVisible = function () {\n return this.get('visible');\n };\n /**\n * 是否拾取及出发该元素的交互事件\n * @param {Boolean} enable 标识位\n */\n ItemBase.prototype.enableCapture = function (enable) {\n var group = this.get('group');\n if (group) {\n group.set('capture', enable);\n }\n };\n ItemBase.prototype.destroy = function () {\n if (!this.destroyed) {\n var animate = this.get('animate');\n var group = this.get('group');\n if (animate) {\n group.stopAnimate();\n }\n group['shapeMap'] = {};\n this.clearCache();\n group.remove();\n this._cfg = null;\n this.destroyed = true;\n }\n };\n return ItemBase;\n}();\nexport default ItemBase;","import { __extends } from \"tslib\";\nimport { isString, isPlainObject, isNil, mix } from '@antv/util';\nimport Item from './item';\nvar END_MAP = {\n source: 'start',\n target: 'end'\n};\nvar ITEM_NAME_SUFFIX = 'Node'; // 端点的后缀,如 sourceNode, targetNode\nvar POINT_NAME_SUFFIX = 'Point'; // 起点或者结束点的后缀,如 startPoint, endPoint\nvar ANCHOR_NAME_SUFFIX = 'Anchor';\nvar Edge = /** @class */function (_super) {\n __extends(Edge, _super);\n function Edge() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Edge.prototype.getDefaultCfg = function () {\n return {\n type: 'edge',\n sourceNode: null,\n targetNode: null,\n startPoint: null,\n endPoint: null,\n linkCenter: false\n };\n };\n Edge.prototype.setEnd = function (name, value) {\n var pointName = END_MAP[name] + POINT_NAME_SUFFIX;\n var itemName = name + ITEM_NAME_SUFFIX;\n var preItem = this.get(itemName);\n if (preItem && !preItem.destroyed) {\n // 如果之前存在节点,则移除掉边\n preItem.removeEdge(this);\n }\n if (isPlainObject(value)) {\n // 如果设置成具体的点,则清理节点\n this.set(pointName, value);\n this.set(itemName, null);\n } else if (value) {\n value.addEdge(this);\n this.set(itemName, value);\n this.set(pointName, null);\n }\n };\n /**\n * 获取连接点的坐标\n * @param name source | target\n * @param model 边的数据模型\n * @param controlPoints 控制点\n */\n Edge.prototype.getLinkPoint = function (name, model, controlPoints) {\n var pointName = END_MAP[name] + POINT_NAME_SUFFIX;\n var itemName = name + ITEM_NAME_SUFFIX;\n var point = this.get(pointName);\n if (!point) {\n var item = this.get(itemName);\n var anchorName = name + ANCHOR_NAME_SUFFIX;\n var prePoint = this.getPrePoint(name, controlPoints);\n var anchorIndex = model[anchorName];\n if (!isNil(anchorIndex)) {\n // 如果有锚点,则使用锚点索引获取连接点\n point = item.getLinkPointByAnchor(anchorIndex);\n }\n // 如果锚点没有对应的点或者没有锚点,则直接计算连接点\n point = point || item.getLinkPoint(prePoint);\n if (!isNil(point.index)) {\n this.set(\"\".concat(name, \"AnchorIndex\"), point.index);\n }\n }\n return point;\n };\n /**\n * 获取同端点进行连接的点,计算交汇点\n * @param name\n * @param controlPoints\n */\n Edge.prototype.getPrePoint = function (name, controlPoints) {\n if (controlPoints && controlPoints.length) {\n var index = name === 'source' ? 0 : controlPoints.length - 1;\n return controlPoints[index];\n }\n var oppositeName = name === 'source' ? 'target' : 'source'; // 取另一个节点的位置\n return this.getEndPoint(oppositeName);\n };\n /**\n * 获取端点的位置\n * @param name\n */\n Edge.prototype.getEndPoint = function (name) {\n var itemName = name + ITEM_NAME_SUFFIX;\n var pointName = END_MAP[name] + POINT_NAME_SUFFIX;\n var item = this.get(itemName);\n // 如果有端点,直接使用 model\n if (item && !item.destroyed) {\n return item.get('model');\n } // 否则直接使用点\n return this.get(pointName);\n };\n /**\n * 通过端点的中心获取控制点\n * @param model\n */\n Edge.prototype.getControlPointsByCenter = function (model) {\n var sourcePoint = this.getEndPoint('source');\n var targetPoint = this.getEndPoint('target');\n var shapeFactory = this.get('shapeFactory');\n var type = model.type;\n return shapeFactory.getControlPoints(type, {\n startPoint: sourcePoint,\n endPoint: targetPoint\n });\n };\n Edge.prototype.getEndCenter = function (name) {\n var itemName = name + ITEM_NAME_SUFFIX;\n var pointName = END_MAP[name] + POINT_NAME_SUFFIX;\n var item = this.get(itemName);\n // 如果有端点,直接使用 model\n if (item) {\n var bbox = item.getBBox();\n return {\n x: bbox.centerX,\n y: bbox.centerY\n };\n } // 否则直接使用点\n return this.get(pointName);\n };\n Edge.prototype.init = function () {\n _super.prototype.init.call(this);\n // 初始化两个端点\n this.setSource(this.get('source'));\n this.setTarget(this.get('target'));\n };\n Edge.prototype.getShapeCfg = function (model, updateType) {\n var self = this;\n var linkCenter = self.get('linkCenter'); // 如果连接到中心,忽视锚点、忽视控制点\n var cfg = (updateType === null || updateType === void 0 ? void 0 : updateType.includes('move')) ? model : _super.prototype.getShapeCfg.call(this, model);\n if (linkCenter) {\n cfg.startPoint = self.getEndCenter('source');\n cfg.endPoint = self.getEndCenter('target');\n } else {\n var controlPoints = cfg.controlPoints || self.getControlPointsByCenter(cfg);\n cfg.startPoint = self.getLinkPoint('source', model, controlPoints);\n cfg.endPoint = self.getLinkPoint('target', model, controlPoints);\n }\n cfg.sourceNode = self.get('sourceNode');\n cfg.targetNode = self.get('targetNode');\n return cfg;\n };\n /**\n * 获取边的数据模型\n */\n Edge.prototype.getModel = function () {\n var out = this.get('model');\n var sourceItem = this.get(\"source\".concat(ITEM_NAME_SUFFIX));\n var targetItem = this.get(\"target\".concat(ITEM_NAME_SUFFIX));\n if (sourceItem) {\n delete out[\"source\".concat(ITEM_NAME_SUFFIX)];\n } else {\n out.source = this.get(\"start\".concat(POINT_NAME_SUFFIX));\n }\n if (targetItem) {\n delete out[\"target\".concat(ITEM_NAME_SUFFIX)];\n } else {\n out.target = this.get(\"end\".concat(POINT_NAME_SUFFIX));\n }\n if (!isString(out.source) && !isPlainObject(out.source)) {\n out.source = out.source.getID();\n }\n if (!isString(out.target) && !isPlainObject(out.target)) {\n out.target = out.target.getID();\n }\n return out;\n };\n Edge.prototype.setSource = function (source) {\n this.setEnd('source', source);\n this.set('source', source);\n };\n Edge.prototype.setTarget = function (target) {\n this.setEnd('target', target);\n this.set('target', target);\n };\n Edge.prototype.getSource = function () {\n return this.get('source');\n };\n Edge.prototype.getTarget = function () {\n return this.get('target');\n };\n Edge.prototype.updatePosition = function () {\n return false;\n };\n /**\n * 边不需要重计算容器位置,直接重新计算 path 位置\n * @param {object} cfg 待更新数据\n */\n Edge.prototype.update = function (cfg, updateType) {\n if (updateType === void 0) {\n updateType = undefined;\n }\n var model = this.get('model');\n var oriVisible = model.visible;\n var cfgVisible = cfg.visible;\n if (oriVisible !== cfgVisible && cfgVisible !== undefined) this.changeVisibility(cfgVisible);\n var sourceItem = this.get('source');\n var targetItem = this.get('target');\n if (!sourceItem || sourceItem.destroyed || !targetItem || targetItem.destroyed) return;\n var styles = this.get('styles');\n if (cfg.stateStyles) {\n // 更新 item 时更新 this.get('styles') 中的值\n var stateStyles = cfg.stateStyles;\n mix(styles, stateStyles);\n delete cfg.stateStyles;\n }\n Object.assign(model, cfg);\n this.updateShape(updateType);\n this.afterUpdate();\n this.clearCache();\n };\n Edge.prototype.destroy = function () {\n var sourceItem = this.get(\"source\".concat(ITEM_NAME_SUFFIX));\n var targetItem = this.get(\"target\".concat(ITEM_NAME_SUFFIX));\n if (sourceItem && !sourceItem.destroyed) {\n sourceItem.removeEdge(this);\n }\n if (targetItem && !targetItem.destroyed) {\n targetItem.removeEdge(this);\n }\n _super.prototype.destroy.call(this);\n };\n return Edge;\n}(Item);\nexport default Edge;","import { __extends } from \"tslib\";\nimport { each, isNil, isNumber } from '@antv/util';\nimport { distance, getCircleIntersectByPoint, getEllipseIntersectByPoint, getRectIntersectByPoint } from '../util/math';\nimport Item from './item';\nvar CACHE_ANCHOR_POINTS = 'anchorPointsCache';\nvar CACHE_BBOX = 'bboxCache';\nvar Node = /** @class */function (_super) {\n __extends(Node, _super);\n function Node() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Node.prototype.getNearestPoint = function (points, curPoint) {\n var index = 0;\n var nearestPoint = points[0];\n var minDistance = distance(points[0], curPoint);\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n var dis = distance(point, curPoint);\n if (dis < minDistance) {\n nearestPoint = point;\n minDistance = dis;\n index = i;\n }\n }\n nearestPoint.anchorIndex = index;\n return nearestPoint;\n };\n Node.prototype.getDefaultCfg = function () {\n return {\n type: 'node',\n edges: []\n };\n };\n /**\n * 获取从节点关联的所有边\n */\n Node.prototype.getEdges = function () {\n return this.get('edges');\n };\n /**\n * 获取所有的入边\n */\n Node.prototype.getInEdges = function () {\n var self = this;\n return this.get('edges').filter(function (edge) {\n return edge.get('target') === self;\n });\n };\n /**\n * 获取所有的出边\n */\n Node.prototype.getOutEdges = function () {\n var self = this;\n return this.get('edges').filter(function (edge) {\n return edge.get('source') === self;\n });\n };\n /**\n * 获取节点的邻居节点\n *\n * @returns {INode[]}\n * @memberof Node\n */\n Node.prototype.getNeighbors = function (type) {\n var _this = this;\n var edges = this.get('edges');\n if (type === 'target') {\n // 当前节点为 source,它所指向的目标节点\n var neighhborsConverter_1 = function neighhborsConverter_1(edge) {\n return edge.getSource() === _this;\n };\n return edges.filter(neighhborsConverter_1).map(function (edge) {\n return edge.getTarget();\n });\n }\n if (type === 'source') {\n // 当前节点为 target,它所指向的源节点\n var neighhborsConverter_2 = function neighhborsConverter_2(edge) {\n return edge.getTarget() === _this;\n };\n return edges.filter(neighhborsConverter_2).map(function (edge) {\n return edge.getSource();\n });\n }\n // 若未指定 type ,则返回所有邻居\n var neighhborsConverter = function neighhborsConverter(edge) {\n return edge.getSource() === _this ? edge.getTarget() : edge.getSource();\n };\n return edges.map(neighhborsConverter);\n };\n /**\n * 根据锚点的索引获取连接点\n * @param {Number} index 索引\n */\n Node.prototype.getLinkPointByAnchor = function (index) {\n var anchorPoints = this.getAnchorPoints();\n return anchorPoints[index];\n };\n /**\n * 获取连接点\n * @param point\n */\n Node.prototype.getLinkPoint = function (point) {\n var keyShape = this.get('keyShape');\n var type = keyShape.get('type');\n var itemType = this.get('type');\n var centerX;\n var centerY;\n var bbox = this.getBBox();\n if (itemType === 'combo') {\n centerX = bbox.centerX || (bbox.maxX + bbox.minX) / 2;\n centerY = bbox.centerY || (bbox.maxY + bbox.minY) / 2;\n } else {\n centerX = bbox.centerX;\n centerY = bbox.centerY;\n }\n var anchorPoints = this.getAnchorPoints();\n var intersectPoint;\n switch (type) {\n case 'circle':\n intersectPoint = getCircleIntersectByPoint({\n x: centerX,\n y: centerY,\n r: bbox.width / 2\n }, point);\n break;\n case 'ellipse':\n intersectPoint = getEllipseIntersectByPoint({\n x: centerX,\n y: centerY,\n rx: bbox.width / 2,\n ry: bbox.height / 2\n }, point);\n break;\n default:\n intersectPoint = getRectIntersectByPoint(bbox, point);\n }\n var linkPoint = intersectPoint;\n // 如果存在锚点,则使用交点计算最近的锚点\n if (anchorPoints.length) {\n if (!linkPoint) {\n // 如果计算不出交点\n linkPoint = point;\n }\n linkPoint = this.getNearestPoint(anchorPoints, linkPoint);\n }\n if (!linkPoint) {\n // 如果最终依然没法找到锚点和连接点,直接返回中心点\n linkPoint = {\n x: centerX,\n y: centerY\n };\n }\n return linkPoint;\n };\n /**\n * 获取锚点的定义\n * @return {array} anchorPoints\n */\n Node.prototype.getAnchorPoints = function () {\n var anchorPoints = this.get(CACHE_ANCHOR_POINTS);\n if (!anchorPoints) {\n anchorPoints = [];\n var shapeFactory = this.get('shapeFactory');\n var bbox_1 = this.getBBox();\n var model = this.get('model');\n var shapeCfg = this.getShapeCfg(model);\n var type = model.type;\n var points = shapeFactory.getAnchorPoints(type, shapeCfg) || [];\n each(points, function (pointArr, index) {\n var point = {\n x: bbox_1.minX + pointArr[0] * bbox_1.width,\n y: bbox_1.minY + pointArr[1] * bbox_1.height,\n anchorIndex: index\n };\n anchorPoints.push(point);\n });\n this.set(CACHE_ANCHOR_POINTS, anchorPoints);\n }\n return anchorPoints;\n };\n /**\n * add edge\n * @param edge Edge instance\n */\n Node.prototype.addEdge = function (edge) {\n this.get('edges').push(edge);\n };\n /**\n * 锁定节点\n */\n Node.prototype.lock = function () {\n this.set('locked', true);\n };\n /**\n * 解锁锁定的节点\n */\n Node.prototype.unlock = function () {\n this.set('locked', false);\n };\n Node.prototype.hasLocked = function () {\n return this.get('locked');\n };\n /**\n * 移除边\n * @param {Edge} edge 边\n */\n Node.prototype.removeEdge = function (edge) {\n var edges = this.getEdges();\n var index = edges.indexOf(edge);\n if (index > -1) edges.splice(index, 1);\n };\n Node.prototype.clearCache = function () {\n this.set(CACHE_BBOX, null); // 清理缓存的 bbox\n this.set(CACHE_ANCHOR_POINTS, null);\n };\n /**\n * 判断更新的种类,move 表示仅移动,bbox 表示大小有变化,style 表示仅与大小无关的参数变化\n * @param cfg 节点数据模型\n */\n Node.prototype.getUpdateType = function (cfg) {\n var _a, _b, _c, _d, _e;\n if (!cfg) return undefined;\n var existX = !isNil(cfg.x);\n var existY = !isNil(cfg.y);\n var keys = Object.keys(cfg);\n // 仅有一个字段,包含 x 或者 包含 y\n // 两个字段,同时有 x,同时有 y\n if (keys.length === 1 && (existX || existY) || keys.length === 2 && existX && existY) return 'move';\n if (isNumber(cfg.x) || isNumber(cfg.y) || cfg.type || cfg.anchorPoints || cfg.size || (cfg === null || cfg === void 0 ? void 0 : cfg.style) && (((_a = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _a === void 0 ? void 0 : _a.r) || ((_b = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _b === void 0 ? void 0 : _b.width) || ((_c = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _c === void 0 ? void 0 : _c.height) || ((_d = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _d === void 0 ? void 0 : _d.rx) || ((_e = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _e === void 0 ? void 0 : _e.ry))) return 'bbox|label';\n var updateLabel = keys.includes('label') || keys.includes('labelCfg');\n return updateLabel ? 'style|label' : 'style';\n };\n Node.prototype.setState = function (state, value) {\n var _this = this;\n if (this.optimize) {\n _super.prototype.setState.call(this, state, value);\n return;\n }\n this.runWithBBoxAffected(function () {\n return _super.prototype.setState.call(_this, state, value);\n });\n };\n Node.prototype.clearStates = function (states) {\n var _this = this;\n if (this.optimize) {\n _super.prototype.clearStates.call(this, states);\n return;\n }\n this.runWithBBoxAffected(function () {\n return _super.prototype.clearStates.call(_this, states);\n });\n };\n Node.prototype.runWithBBoxAffected = function (fn) {\n var bboxAffectedStyleKeys = ['r', 'width', 'height', 'rx', 'ry', 'lineWidth'];\n var beforeAttrs = this.getKeyShape().attr();\n var bboxAffectedStyleBefore = {};\n Object.keys(this.getKeyShape().attr()).forEach(function (key) {\n if (bboxAffectedStyleKeys.includes(key)) bboxAffectedStyleBefore[key] = beforeAttrs[key];\n });\n fn();\n // if the state styles affect the bbox, the bbox cache should be cleared to get correct edge connecting points\n var afterAttrs = this.getKeyShape().attr();\n for (var i = 0; i < bboxAffectedStyleKeys.length; i++) {\n var key = bboxAffectedStyleKeys[i];\n if (afterAttrs[key] !== bboxAffectedStyleBefore[key]) {\n this.clearCache();\n this.getEdges().forEach(function (edge) {\n return edge.refresh();\n });\n break;\n }\n }\n };\n return Node;\n}(Item);\nexport default Node;","import { __assign, __extends } from \"tslib\";\nimport Node from './node';\nimport Global from '../global';\nimport { getBBox } from '../util/graphic';\nimport { isNumber } from '@antv/util';\nvar CACHE_BBOX = 'bboxCache';\nvar CACHE_CANVAS_BBOX = 'bboxCanvasCache';\nvar CACHE_SIZE = 'sizeCache';\nvar CACHE_ANCHOR_POINTS = 'anchorPointsCache';\nvar Combo = /** @class */function (_super) {\n __extends(Combo, _super);\n function Combo() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Combo.prototype.getDefaultCfg = function () {\n return {\n type: 'combo',\n nodes: [],\n edges: [],\n combos: []\n };\n };\n Combo.prototype.getShapeCfg = function (model) {\n var styles = this.get('styles');\n var bbox = this.get('bbox');\n if (styles && bbox) {\n // merge graph的item样式与数据模型中的样式\n var newModel = model;\n var size = {\n r: bbox.width / 2 || Global.defaultCombo.size[0] / 2,\n width: bbox.width || Global.defaultCombo.size[0],\n height: bbox.height || Global.defaultCombo.size[1]\n };\n newModel.style = __assign(__assign(__assign({}, styles), model.style), size);\n var padding = model.padding || Global.defaultCombo.padding;\n if (isNumber(padding)) {\n size.r += padding;\n size.width += padding * 2;\n size.height += padding * 2;\n } else {\n size.r = size.r + Math.max.apply(Math, padding);\n size.width += padding[1] + padding[3] || padding[1] * 2;\n size.height += padding[0] + padding[2] || padding[0] * 2;\n }\n this.set(CACHE_SIZE, size);\n return newModel;\n }\n return model;\n };\n /**\n * 根据 keyshape 计算包围盒\n */\n Combo.prototype.calculateCanvasBBox = function () {\n if (this.destroyed) return;\n var keyShape = this.get('keyShape');\n var group = this.get('group');\n // 因为 group 可能会移动,所以必须通过父元素计算才能计算出正确的包围盒\n var bbox = getBBox(keyShape, group);\n bbox.centerX = (bbox.minX + bbox.maxX) / 2;\n bbox.centerY = (bbox.minY + bbox.maxY) / 2;\n var cacheSize = this.get(CACHE_SIZE);\n var cacheBBox = this.get(CACHE_BBOX) || {};\n var oriX = cacheBBox.x;\n var oriY = cacheBBox.x;\n if (cacheSize) {\n cacheSize.width = Math.max(cacheSize.width, bbox.width);\n cacheSize.height = Math.max(cacheSize.height, bbox.height);\n var type = keyShape.get('type');\n if (type === 'circle') {\n bbox.width = cacheSize.r * 2;\n bbox.height = cacheSize.r * 2;\n } else {\n bbox.width = cacheSize.width;\n bbox.height = cacheSize.height;\n }\n bbox.minX = bbox.centerX - bbox.width / 2;\n bbox.minY = bbox.centerY - bbox.height / 2;\n bbox.maxX = bbox.centerX + bbox.width / 2;\n bbox.maxY = bbox.centerY + bbox.height / 2;\n } else {\n bbox.width = bbox.maxX - bbox.minX;\n bbox.height = bbox.maxY - bbox.minY;\n bbox.centerX = (bbox.minX + bbox.maxX) / 2;\n bbox.centerY = (bbox.minY + bbox.maxY) / 2;\n }\n bbox.x = bbox.minX;\n bbox.y = bbox.minY;\n if (bbox.x !== oriX || bbox.y !== oriY) this.set(CACHE_ANCHOR_POINTS, null);\n return bbox;\n };\n /**\n * 获取 Combo 中所有的子元素,包括 Combo、Node 及 Edge\n */\n Combo.prototype.getChildren = function () {\n var self = this;\n return {\n nodes: self.getNodes(),\n combos: self.getCombos()\n };\n };\n /**\n * 获取 Combo 中所有子节点\n */\n Combo.prototype.getNodes = function () {\n var self = this;\n return self.get('nodes');\n };\n /**\n * 获取 Combo 中所有子 combo\n */\n Combo.prototype.getCombos = function () {\n var self = this;\n return self.get('combos');\n };\n /**\n * 向 Combo 中增加子 combo 或 node\n * @param item Combo 或节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n Combo.prototype.addChild = function (item) {\n var self = this;\n var itemType = item.getType();\n switch (itemType) {\n case 'node':\n self.addNode(item);\n break;\n case 'combo':\n self.addCombo(item);\n break;\n default:\n console.warn('Only node or combo items are allowed to be added into a combo');\n return false;\n }\n return true;\n };\n /**\n * 向 Combo 中增加 combo\n * @param combo Combo 实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n Combo.prototype.addCombo = function (combo) {\n var self = this;\n self.get('combos').push(combo);\n return true;\n };\n /**\n * 向 Combo 中添加节点\n * @param node 节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n Combo.prototype.addNode = function (node) {\n var self = this;\n self.get('nodes').push(node);\n return true;\n };\n /**\n * 向 Combo 中增加子 combo 或 node\n * @param item Combo 或节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n Combo.prototype.removeChild = function (item) {\n var self = this;\n var itemType = item.getType();\n switch (itemType) {\n case 'node':\n self.removeNode(item);\n break;\n case 'combo':\n self.removeCombo(item);\n break;\n default:\n console.warn('Only node or combo items are allowed to be added into a combo');\n return false;\n }\n return true;\n };\n /**\n * 从 Combo 中移除指定的 combo\n * @param combo Combo 实例\n * @return boolean 移除成功返回 true,否则返回 false\n */\n Combo.prototype.removeCombo = function (combo) {\n if (!combo) return;\n var combos = this.getCombos();\n var index = combos.indexOf(combo);\n if (index > -1) {\n combos.splice(index, 1);\n return true;\n }\n return false;\n };\n /**\n * 向 Combo 中移除指定的节点\n * @param node 节点实例\n * @return boolean 移除成功返回 true,否则返回 false\n */\n Combo.prototype.removeNode = function (node) {\n if (!node) return;\n var nodes = this.getNodes();\n var index = nodes.indexOf(node);\n if (index > -1) {\n nodes.splice(index, 1);\n return true;\n }\n return false;\n };\n Combo.prototype.getUpdateType = function (cfg) {\n return undefined;\n };\n /**\n * 获取 item 的包围盒,这个包围盒是相对于 item 自己,不会将 matrix 计算在内\n * @return {Object} 包含 x,y,width,height, centerX, centerY\n */\n Combo.prototype.getBBox = function () {\n this.set(CACHE_CANVAS_BBOX, null);\n var bbox = this.calculateCanvasBBox();\n return bbox;\n };\n Combo.prototype.clearCache = function () {\n this.set(CACHE_BBOX, null); // 清理缓存的 bbox\n this.set(CACHE_CANVAS_BBOX, null);\n this.set(CACHE_ANCHOR_POINTS, null);\n };\n Combo.prototype.destroy = function () {\n if (!this.destroyed) {\n var animate = this.get('animate');\n var group = this.get('group');\n if (animate) {\n group.stopAnimate();\n }\n group['shapeMap'] = {};\n this.clearCache();\n this.set(CACHE_SIZE, null);\n this.set('bbox', null);\n group.remove();\n this._cfg = null;\n this.destroyed = true;\n }\n };\n return Combo;\n}(Node);\nexport default Combo;","import { __assign } from \"tslib\";\nimport { clone, deepMix, each, isArray, isObject, isString, upperFirst, throttle } from '@antv/util';\nimport Edge from '../../item/edge';\nimport Node from '../../item/node';\nimport Combo from '../../item/combo';\nimport { traverseTreeUp, traverseTree, getComboBBox } from '../../util/graphic';\nvar NODE = 'node';\nvar EDGE = 'edge';\nvar VEDGE = 'vedge';\nvar COMBO = 'combo';\nvar CFG_PREFIX = 'default';\nvar MAPPER_SUFFIX = 'Mapper';\nvar STATE_SUFFIX = 'stateStyles';\nvar ItemController = /** @class */function () {\n function ItemController(graph) {\n var _this = this;\n this.edgeToBeUpdateMap = {};\n /**\n * 更新边限流,同时可以防止相同的边频繁重复更新\n * */\n this.throttleRefresh = throttle(function (_) {\n var graph = _this.graph;\n if (!graph || graph.get('destroyed')) return;\n var edgeToBeUpdateMap = _this.edgeToBeUpdateMap;\n if (!edgeToBeUpdateMap) return;\n var edgeValues = Object.values(edgeToBeUpdateMap);\n if (!edgeValues.length) return;\n edgeValues.forEach(function (obj) {\n var edge = obj.edge;\n if (!edge || edge.destroyed) return;\n var source = edge.getSource();\n var target = edge.getTarget();\n if (!source || source.destroyed || !target || target.destroyed) return;\n edge.refresh(obj.updateType);\n });\n _this.edgeToBeUpdateMap = {};\n }, 16, {\n trailing: true,\n leading: true\n });\n this.graph = graph;\n this.destroyed = false;\n }\n /**\n * 增加 Item 实例\n *\n * @param {ITEM_TYPE} type 实例类型,node 或 edge\n * @param {(NodeConfig & EdgeConfig)} model 数据模型\n * @returns {(Item)}\n * @memberof ItemController\n */\n ItemController.prototype.addItem = function (type, model) {\n var graph = this.graph;\n var vType = type === VEDGE ? EDGE : type;\n var parent = graph.get(\"\".concat(vType, \"Group\")) || graph.get('group');\n var upperType = upperFirst(vType);\n var item = null;\n // 获取 this.get('styles') 中的值\n var styles = graph.get(vType + upperFirst(STATE_SUFFIX)) || {};\n var defaultModel = graph.get(CFG_PREFIX + upperType);\n if (model[STATE_SUFFIX]) {\n // 设置 this.get('styles') 中的值\n styles = model[STATE_SUFFIX];\n }\n if (defaultModel) {\n // 很多布局会直接修改原数据模型,所以不能用 merge 的形式,逐个写入原 model 中\n each(defaultModel, function (val, cfg) {\n if (isObject(val) && !isArray(val)) {\n model[cfg] = deepMix({}, val, model[cfg]);\n } else if (isArray(val)) {\n model[cfg] = model[cfg] || clone(defaultModel[cfg]);\n } else {\n model[cfg] = model[cfg] || defaultModel[cfg];\n }\n });\n }\n var mapper = graph.get(vType + MAPPER_SUFFIX);\n if (mapper) {\n var mappedModel_1 = mapper(model);\n if (mappedModel_1[STATE_SUFFIX]) {\n // 设置 this.get('styles') 中的值\n styles = mappedModel_1[STATE_SUFFIX];\n delete mappedModel_1[STATE_SUFFIX];\n }\n // 如果配置了 defaultEdge 或 defaultNode,则将默认配置的数据也合并进去\n each(mappedModel_1, function (val, cfg) {\n if (isObject(val) && !isArray(val)) {\n model[cfg] = deepMix({}, model[cfg], val);\n } else {\n model[cfg] = mappedModel_1[cfg] || model[cfg];\n }\n });\n }\n graph.emit('beforeadditem', {\n type: type,\n model: model\n });\n if (type === EDGE || type === VEDGE) {\n var source = void 0;\n var target = void 0;\n source = model.source; // eslint-disable-line prefer-destructuring\n target = model.target; // eslint-disable-line prefer-destructuring\n if (source && isString(source)) {\n source = graph.findById(source);\n }\n if (target && isString(target)) {\n target = graph.findById(target);\n }\n if (!source || !target) {\n console.warn(\"The source or target node of edge \".concat(model.id, \" does not exist!\"));\n return;\n }\n if (source.getType && source.getType() === 'combo') {\n model.isComboEdge = true;\n // graph.updateCombo(source as ICombo);\n }\n\n if (target.getType && target.getType() === 'combo') {\n model.isComboEdge = true;\n // graph.updateCombo(target as ICombo);\n }\n\n item = new Edge({\n model: model,\n source: source,\n target: target,\n styles: styles,\n linkCenter: graph.get('linkCenter'),\n group: parent.addGroup()\n });\n } else if (type === NODE) {\n item = new Node({\n model: model,\n styles: styles,\n group: parent.addGroup()\n });\n } else if (type === COMBO) {\n var children = model.children;\n var comboBBox = getComboBBox(children, graph);\n var bboxX = void 0,\n bboxY = void 0;\n if (!isNaN(comboBBox.x)) bboxX = comboBBox.x;else if (isNaN(model.x)) bboxX = Math.random() * 100;\n if (!isNaN(comboBBox.y)) bboxY = comboBBox.y;else if (isNaN(model.y)) bboxY = Math.random() * 100;\n if (isNaN(model.x) || isNaN(model.y)) {\n model.x = bboxX;\n model.y = bboxY;\n } else {\n // if there is x y in model, place the combo according to it and move its succeed items. that means, the priority of the combo's position is higher than succeed items'\n var dx = model.x - bboxX;\n var dy = model.y - bboxY;\n // In the same time, adjust the children's positions\n this.updateComboSucceeds(model.id, dx, dy, children);\n }\n var comboGroup = parent.addGroup();\n comboGroup.setZIndex(model.depth);\n item = new Combo({\n model: model,\n styles: styles,\n animate: graph.get('animate'),\n bbox: model.collapsed ? getComboBBox([], graph) : comboBBox,\n group: comboGroup\n });\n // if it is a circle combo, diagnal length of the children's bbox should be the diameter of the combo's bbox\n if (!model.collapsed && item.getKeyShape().get('type') === 'circle') {\n comboBBox.width = Math.hypot(comboBBox.height, comboBBox.width);\n comboBBox.height = comboBBox.width;\n item.set('bbox', comboBBox);\n item.refresh();\n }\n var comboModel_1 = item.getModel();\n (children || []).forEach(function (child) {\n var childItem = graph.findById(child.id);\n item.addChild(childItem);\n child.depth = comboModel_1.depth + 2;\n });\n }\n if (item) {\n item.setOptimize(graph.getNodes().length > graph.get('optimizeThreshold'));\n graph.get(\"\".concat(type, \"s\")).push(item);\n graph.get('itemMap')[item.get('id')] = item;\n graph.emit('afteradditem', {\n item: item,\n model: model\n });\n // eslint-disable-next-line consistent-return\n return item;\n }\n };\n /**\n * 更新节点或边\n *\n * @param {Item} item ID 或 实例\n * @param {(EdgeConfig | Partial)} cfg 数据模型\n * @returns\n * @memberof ItemController\n */\n ItemController.prototype.updateItem = function (item, cfg) {\n var _this = this;\n var _a, _b;\n var graph = this.graph;\n if (isString(item)) {\n item = graph.findById(item);\n }\n if (!item || item.destroyed) {\n return;\n }\n // 更新的 item 的类型\n var type = '';\n if (item.getType) type = item.getType();\n var mapper = graph.get(type + MAPPER_SUFFIX);\n var model = item.getModel();\n var oriX = model.x,\n oriY = model.y;\n var updateType = item.getUpdateType(cfg);\n if (mapper) {\n var result = deepMix({}, model, cfg);\n var mappedModel = mapper(result);\n // 将 update 时候用户传入的参数与mapperModel做deepMix,以便复用之前设置的参数值\n var newModel = deepMix({}, model, mappedModel, cfg);\n if (mappedModel[STATE_SUFFIX]) {\n item.set('styles', newModel[STATE_SUFFIX]);\n delete newModel[STATE_SUFFIX];\n }\n each(newModel, function (val, key) {\n cfg[key] = val;\n });\n } else {\n // merge update传进来的对象参数,model中没有的数据不做处理,对象和字符串值也不做处理,直接替换原来的\n each(cfg, function (val, key) {\n if (model[key]) {\n if (isObject(val) && !isArray(val)) {\n cfg[key] = __assign(__assign({}, model[key]), cfg[key]);\n }\n }\n });\n }\n // emit beforeupdateitem 事件\n graph.emit('beforeupdateitem', {\n item: item,\n cfg: cfg\n });\n if (type === EDGE) {\n // 若是边要更新source || target, 为了不影响示例内部model,并且重新计算startPoint和endPoint,手动设置\n if (cfg.source) {\n var source = cfg.source;\n if (isString(source)) {\n source = graph.findById(source);\n }\n item.setSource(source);\n }\n if (cfg.target) {\n var target = cfg.target;\n if (isString(target)) {\n target = graph.findById(target);\n }\n item.setTarget(target);\n }\n item.update(cfg);\n } else if (type === NODE) {\n item.update(cfg, updateType);\n var edges = item.getEdges();\n if (updateType === 'move') {\n each(edges, function (edge) {\n _this.edgeToBeUpdateMap[edge.getID()] = {\n edge: edge,\n updateType: updateType\n };\n _this.throttleRefresh();\n });\n } else if (updateType === null || updateType === void 0 ? void 0 : updateType.includes('bbox')) {\n each(edges, function (edge) {\n edge.refresh(updateType);\n });\n }\n } else if (type === COMBO) {\n item.update(cfg, updateType);\n if (!isNaN(cfg.x) || !isNaN(cfg.y)) {\n // if there is x y in model, place the combo according to it and move its succeed items. that means, the priority of the combo's position is higher than succeed items'\n var dx = cfg.x - oriX || 0;\n var dy = cfg.y - oriY || 0;\n // In the same time, adjust the children's positions\n this.updateComboSucceeds(model.id, dx, dy);\n }\n var edges_1 = item.getEdges();\n var refreshEdge = (updateType === null || updateType === void 0 ? void 0 : updateType.includes('bbox')) || updateType === 'move';\n if (refreshEdge && type === COMBO) {\n var shapeFactory = item.get('shapeFactory');\n var shapeType = model.type || 'circle';\n var comboAnimate = model.animate === undefined || cfg.animate === undefined ? (_b = (_a = shapeFactory[shapeType]) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.animate : model.animate || cfg.animate;\n if (comboAnimate) {\n setTimeout(function () {\n if (!item || item.destroyed) return;\n var keyShape = item.getKeyShape();\n if (!keyShape || keyShape.destroyed) return;\n each(edges_1, function (edge) {\n if (edge && !edge.destroyed) edge.refresh();\n });\n }, 201);\n } else {\n each(edges_1, function (edge) {\n edge.refresh();\n });\n }\n }\n }\n item.setOptimize(graph.getNodes().length > graph.get('optimizeThreshold'));\n graph.emit('afterupdateitem', {\n item: item,\n cfg: cfg\n });\n };\n /**\n * 根据 combo 的子元素更新 combo 的位置及大小\n *\n * @param {ICombo} combo ID 或 实例\n * @returns\n * @memberof ItemController\n */\n ItemController.prototype.updateCombo = function (combo, children, followCombo) {\n var _this = this;\n var _a, _b;\n var graph = this.graph;\n if (isString(combo)) {\n combo = graph.findById(combo);\n }\n if (!combo || combo.destroyed) {\n return;\n }\n var model = combo.getModel();\n var comboBBox = getComboBBox(children, graph, combo);\n var comboX = comboBBox.x,\n comboY = comboBBox.y;\n combo.set('bbox', comboBBox);\n var x = comboX,\n y = comboY;\n if (followCombo) {\n // position of combo model first\n x = isNaN(model.x) ? comboX : model.x;\n y = isNaN(model.y) ? comboY : model.y;\n } else {\n // position of succeed items first\n x = isNaN(comboX) ? model.x : comboX;\n y = isNaN(comboY) ? model.y : comboY;\n }\n combo.update({\n x: x,\n y: y\n });\n var shapeFactory = combo.get('shapeFactory');\n var shapeType = model.type || 'circle';\n var comboAnimate = model.animate === undefined ? (_b = (_a = shapeFactory[shapeType]) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.animate : model.animate;\n if (comboAnimate) {\n setTimeout(function () {\n if (!combo || combo.destroyed) return;\n var keyShape = combo.getKeyShape();\n if (!keyShape || keyShape.destroyed) return;\n combo.getShapeCfg(model); // 更新 combo 缓存的 size\n _this.updateComboEdges(combo);\n }, 201);\n } else {\n this.updateComboEdges(combo);\n }\n };\n ItemController.prototype.updateComboEdges = function (combo) {\n var _a, _b;\n var combEdges = combo.getEdges() || [];\n for (var i = 0; i < combEdges.length; i++) {\n var edge = combEdges[i];\n if (!(edge === null || edge === void 0 ? void 0 : edge.destroyed) && !((_a = edge === null || edge === void 0 ? void 0 : edge.getSource()) === null || _a === void 0 ? void 0 : _a.destroyed) && !((_b = edge === null || edge === void 0 ? void 0 : edge.getTarget()) === null || _b === void 0 ? void 0 : _b.destroyed)) {\n edge.refresh();\n }\n }\n };\n /**\n * 收起 combo,隐藏相关元素\n */\n ItemController.prototype.collapseCombo = function (combo, stack) {\n if (stack === void 0) {\n stack = true;\n }\n var graph = this.graph;\n if (isString(combo)) {\n combo = graph.findById(combo);\n }\n var children = combo.getChildren();\n children.nodes.forEach(function (node) {\n graph.hideItem(node, stack);\n });\n children.combos.forEach(function (c) {\n graph.hideItem(c, stack);\n });\n };\n /**\n * 根据位置差量 dx dy,更新 comboId 后继元素的位置\n * */\n ItemController.prototype.updateComboSucceeds = function (comboId, dx, dy, children) {\n var _this = this;\n if (children === void 0) {\n children = [];\n }\n var graph = this.graph;\n if (!dx && !dy) return;\n var kids = children;\n if (!(kids === null || kids === void 0 ? void 0 : kids.length)) {\n var comboTrees = graph.get('comboTrees');\n comboTrees === null || comboTrees === void 0 ? void 0 : comboTrees.forEach(function (child) {\n traverseTree(child, function (subTree) {\n if (subTree.id === comboId) {\n kids = subTree.children;\n return false;\n }\n return true;\n });\n });\n }\n kids === null || kids === void 0 ? void 0 : kids.forEach(function (child) {\n var childItem = graph.findById(child.id);\n if (childItem) {\n var childModel = childItem.getModel();\n _this.updateItem(child.id, {\n x: (childModel.x || 0) + dx,\n y: (childModel.y || 0) + dy\n });\n }\n });\n };\n /**\n * 展开 combo,相关元素出现\n * 若子 combo 原先是收起状态,则保持它的收起状态\n */\n ItemController.prototype.expandCombo = function (combo, stack) {\n if (stack === void 0) {\n stack = true;\n }\n var graph = this.graph;\n if (isString(combo)) {\n combo = graph.findById(combo);\n }\n var children = combo.getChildren();\n var edgeSet = new Set();\n children.nodes.forEach(function (node) {\n graph.showItem(node, stack);\n node.getEdges().forEach(function (edge) {\n return edgeSet.add(edge);\n });\n });\n children.combos.forEach(function (c) {\n if (c.getModel().collapsed) {\n c.show();\n } else {\n graph.showItem(c, stack);\n }\n c.getEdges().forEach(function (edge) {\n return edgeSet.add(edge);\n });\n });\n edgeSet.forEach(function (edge) {\n return edge.refresh();\n });\n };\n /**\n * 删除指定的节点或边\n *\n * @param {Item} item item ID 或实例\n * @returns {void}\n * @memberof ItemController\n */\n ItemController.prototype.removeItem = function (item) {\n var _this = this;\n var graph = this.graph;\n if (isString(item)) {\n item = graph.findById(item);\n }\n if (!item || item.destroyed) {\n return;\n }\n var itemModel = clone(item.getModel());\n var type = '';\n if (item.getType) type = item.getType();\n graph.emit('beforeremoveitem', {\n item: itemModel,\n type: type\n });\n var items = graph.get(\"\".concat(type, \"s\"));\n var index = items.indexOf(item);\n if (index > -1) items.splice(index, 1);\n if (type === EDGE) {\n var vitems = graph.get(\"v\".concat(type, \"s\"));\n var vindex = vitems.indexOf(item);\n if (vindex > -1) vitems.splice(vindex, 1);\n }\n var itemId = item.get('id');\n var itemMap = graph.get('itemMap');\n delete itemMap[itemId];\n var comboTrees = graph.get('comboTrees');\n var id = item.get('id');\n if (type === NODE) {\n var comboId = item.getModel().comboId;\n if (comboTrees && comboId) {\n var brothers_1 = comboTrees;\n var found_1 = false; // the flag to terminate the forEach circulation\n // remove the node from the children array of its parent fromt he tree\n comboTrees.forEach(function (ctree) {\n if (found_1) return;\n traverseTree(ctree, function (combo) {\n if (combo.id === id && brothers_1) {\n var bidx = brothers_1.indexOf(combo);\n brothers_1.splice(bidx, 1);\n found_1 = true;\n return false; // terminate the traverse\n }\n\n brothers_1 = combo.children;\n return true;\n });\n });\n }\n // 若移除的是节点,需要将与之相连的边一同删除\n var edges = item.getEdges();\n for (var i = edges.length - 1; i >= 0; i--) {\n graph.removeItem(edges[i], false);\n }\n if (comboId) graph.updateCombo(comboId);\n } else if (type === COMBO) {\n var parentId = item.getModel().parentId;\n var comboInTree_1;\n // find the subtree rooted at the item to be removed\n var found_2 = false; // the flag to terminate the forEach circulation\n (comboTrees || []).forEach(function (ctree) {\n if (found_2) return;\n traverseTree(ctree, function (combo) {\n if (combo.id === id) {\n comboInTree_1 = combo;\n found_2 = true;\n return false; // terminate the traverse\n }\n\n return true;\n });\n });\n comboInTree_1.removed = true;\n if (comboInTree_1 && comboInTree_1.children) {\n comboInTree_1.children.forEach(function (child) {\n _this.removeItem(child.id);\n });\n }\n // 若移除的是 combo,需要将与之相连的边一同删除\n var edges = item.getEdges();\n for (var i = edges.length; i >= 0; i--) {\n graph.removeItem(edges[i], false);\n }\n if (parentId) graph.updateCombo(parentId);\n }\n item.destroy();\n graph.emit('afterremoveitem', {\n item: itemModel,\n type: type\n });\n };\n /**\n * 更新 item 状态\n *\n * @param {Item} item Item 实例\n * @param {string} state 状态名称\n * @param {boolean} value 是否启用状态或状态值\n * @returns {void}\n * @memberof ItemController\n */\n ItemController.prototype.setItemState = function (item, state, value) {\n var graph = this.graph;\n var stateName = state;\n if (isString(value)) {\n stateName = \"\".concat(state, \":\").concat(value);\n }\n // 已经存在要设置的 state,或不存在 state 的样式为 undefined\n if (item.hasState(stateName) === value && value ||\n // 当该状态已经存在且现在需要设置为 true 时,不需要继续。当该状态不存在,且设置为 false 时,需要继续\n isString(value) && item.hasState(stateName)) {\n // 当该状态 value 是字符串,且已经存在该状态,不需要继续\n return;\n }\n graph.emit('beforeitemstatechange', {\n item: item,\n state: stateName,\n enabled: value\n });\n item.setState(state, value);\n graph.autoPaint();\n graph.emit('afteritemstatechange', {\n item: item,\n state: stateName,\n enabled: value\n });\n };\n /**\n * 将指定状态的优先级提升为最高优先级\n * @param {Item} item 元素id或元素实例\n * @param state 状态名称\n */\n ItemController.prototype.priorityState = function (item, state) {\n var graph = this.graph;\n var currentItem = item;\n if (isString(item)) {\n currentItem = graph.findById(item);\n }\n // 先取消已有的 state\n this.setItemState(currentItem, state, false);\n // 再设置state,则此时该优先级为最高\n this.setItemState(currentItem, state, true);\n };\n /**\n * 清除所有指定的状态\n *\n * @param {Item} item Item 实例\n * @param {string[]} states 状态名称集合\n * @memberof ItemController\n */\n ItemController.prototype.clearItemStates = function (item, states) {\n var graph = this.graph;\n if (isString(item)) {\n item = graph.findById(item);\n }\n graph.emit('beforeitemstatesclear', {\n item: item,\n states: states\n });\n item.clearStates(states);\n graph.emit('afteritemstatesclear', {\n item: item,\n states: states\n });\n };\n /**\n * 刷新指定的 Item\n *\n * @param {Item} item Item ID 或 实例\n * @memberof ItemController\n */\n ItemController.prototype.refreshItem = function (item) {\n var graph = this.graph;\n if (isString(item)) {\n item = graph.findById(item);\n }\n graph.emit('beforeitemrefresh', {\n item: item\n });\n // 调用 Item 的 refresh 方法,实现刷新功能\n item.refresh();\n graph.emit('afteritemrefresh', {\n item: item\n });\n };\n /**\n * 根据 graph 上用 combos 数据生成的 comboTree 来增加所有 combos\n *\n * @param {ComboTree[]} comboTrees graph 上用 combos 数据生成的 comboTree\n * @param {ComboConfig[]} comboModels combos 数据\n * @memberof ItemController\n */\n ItemController.prototype.addCombos = function (comboTrees, comboModels) {\n var _this = this;\n var graph = this.graph;\n (comboTrees || []).forEach(function (ctree) {\n traverseTreeUp(ctree, function (child) {\n var comboModel;\n comboModels.forEach(function (model) {\n if (model.id === child.id) {\n model.children = child.children;\n model.depth = child.depth;\n comboModel = model;\n }\n });\n if (comboModel) {\n _this.addItem('combo', comboModel);\n }\n return true;\n });\n });\n var comboGroup = graph.get('comboGroup');\n if (comboGroup) comboGroup.sort();\n };\n /**\n * 改变Item的显示状态\n *\n * @param {Item} item Item ID 或 实例\n * @param {boolean} visible 是否显示\n * @memberof ItemController\n */\n ItemController.prototype.changeItemVisibility = function (item, visible) {\n var _this = this;\n var graph = this.graph;\n if (isString(item)) {\n item = graph.findById(item);\n }\n if (!item) {\n console.warn('The item to be shown or hidden does not exist!');\n return;\n }\n graph.emit('beforeitemvisibilitychange', {\n item: item,\n visible: visible\n });\n item.changeVisibility(visible);\n if (item.getType && item.getType() === NODE) {\n var edges = item.getEdges();\n each(edges, function (edge) {\n // 若隐藏节点,则将与之关联的边也隐藏\n // 若显示节点,则将与之关联的边也显示,但是需要判断边两端的节点都是可见的\n if (visible && !(edge.get('source').isVisible() && edge.get('target').isVisible())) {\n return;\n }\n _this.changeItemVisibility(edge, visible);\n });\n } else if (item.getType && item.getType() === COMBO) {\n var comboTrees = graph.get('comboTrees');\n var id_1 = item.get('id');\n var children_1 = [];\n var found_3 = false; // flag the terminate the forEach\n (comboTrees || []).forEach(function (ctree) {\n if (found_3) return;\n if (!ctree.children || ctree.children.length === 0) return;\n traverseTree(ctree, function (combo) {\n if (combo.id === id_1) {\n children_1 = combo.children;\n found_3 = true;\n return false; // terminate the traverse\n }\n\n return true;\n });\n });\n if (children_1 && (!visible || visible && !item.getModel().collapsed)) {\n children_1.forEach(function (child) {\n var childItem = graph.findById(child.id);\n _this.changeItemVisibility(childItem, visible);\n });\n }\n var edges = item.getEdges();\n each(edges, function (edge) {\n // 若隐藏 combo,则将与 combo 本身关联的边也隐藏\n // 若显示 combo,则将与 combo 本身关联的边也显示,但是需要判断边两端的节点都是可见的\n if (visible && !(edge.get('source').isVisible() && edge.get('target').isVisible())) {\n return;\n }\n _this.changeItemVisibility(edge, visible);\n });\n }\n graph.emit('afteritemvisibilitychange', {\n item: item,\n visible: visible\n });\n return item;\n };\n ItemController.prototype.destroy = function () {\n this.graph = null;\n this.destroyed = true;\n };\n return ItemController;\n}();\nexport default ItemController;","import { isString } from '@antv/util';\nvar StateController = /** @class */function () {\n function StateController(graph) {\n this.graph = graph;\n this.destroyed = false;\n }\n /**\n * 更新 Item 的状态\n *\n * @param {Item} item Item实例\n * @param {string} state 状态名称\n * @param {boolean} enabled 状态是否可用\n * @memberof State\n */\n StateController.prototype.updateState = function (item, state, enabled) {\n var graphStates = this.graph.get('states');\n var key = state;\n if (isString(enabled)) key = \"\".concat(state, \":\").concat(enabled);\n if (!graphStates[key]) graphStates[key] = [];\n if (enabled) graphStates[key].push(item);else graphStates[key] = graphStates[key].filter(function (itemInState) {\n return itemInState !== item;\n });\n this.graph.set('states', graphStates);\n this.graph.emit('graphstatechange', {\n states: graphStates\n });\n };\n /**\n * 批量更新 states,兼容 updateState,支持更新一个 state\n *\n * @param {Item} item\n * @param {(string | string[])} states\n * @param {boolean} enabled\n * @memberof State\n */\n StateController.prototype.updateStates = function (item, states, enabled) {\n var graphStates = this.graph.get('states');\n var stateNames = isString(states) ? [states] : states;\n stateNames.forEach(function (stateName) {\n var key = stateName;\n if (!graphStates[key]) graphStates[key] = [];\n if (isString(enabled)) key = \"\".concat(stateName, \":\").concat(enabled);\n if (enabled) graphStates[key].push(item);else graphStates[key] = graphStates[key].filter(function (itemInState) {\n return itemInState !== item;\n });\n });\n this.graph.set('states', graphStates);\n this.graph.emit('graphstatechange', {\n states: states\n });\n };\n StateController.prototype.destroy = function () {\n this.graph = null;\n this.destroyed = true;\n };\n return StateController;\n}();\nexport default StateController;","import { vec2 } from '@antv/matrix-util';\nimport { catmullRom2Bezier } from '@antv/path-util';\n/**\n * 替换字符串中的字段\n * @param {String} str 模版字符串\n * @param {Object} o json data\n */\nvar substitute = function substitute(str, o) {\n if (!str || !o) {\n return str;\n }\n return str.replace(/\\\\?\\{([^{}]+)\\}/g, function (match, name) {\n if (match.charAt(0) === '\\\\') {\n return match.slice(1);\n }\n var res = o[name];\n if (res === 0) res = '0';\n return res || '';\n });\n};\n/**\n * 给定坐标获取三次贝塞尔曲线的 M 及 C 值\n * @param points coordinate set\n */\nexport var getSpline = function getSpline(points) {\n var data = [];\n if (points.length < 2) {\n throw new Error(\"point length must largn than 2, now it's \".concat(points.length));\n }\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n var x = point.x,\n y = point.y;\n data.push(x);\n data.push(y);\n }\n var spliePath = catmullRom2Bezier(data);\n spliePath.unshift(['M', points[0].x, points[0].y]);\n return spliePath;\n};\n/**\n * 根据起始点、相对位置、偏移量计算控制点\n * @param {IPoint} startPoint 起始点,包含 x,y\n * @param {IPoint} endPoint 结束点, 包含 x,y\n * @param {Number} percent 相对位置,范围 0-1\n * @param {Number} offset 偏移量\n * @return {IPoint} 控制点,包含 x,y\n */\nexport var getControlPoint = function getControlPoint(startPoint, endPoint, percent, offset) {\n if (percent === void 0) {\n percent = 0;\n }\n if (offset === void 0) {\n offset = 0;\n }\n var point = {\n x: (1 - percent) * startPoint.x + percent * endPoint.x,\n y: (1 - percent) * startPoint.y + percent * endPoint.y\n };\n var tangent = [0, 0];\n vec2.normalize(tangent, [endPoint.x - startPoint.x, endPoint.y - startPoint.y]);\n if (!tangent || !tangent[0] && !tangent[1]) {\n tangent = [0, 0];\n }\n var perpendicular = [-tangent[1] * offset, tangent[0] * offset]; // 垂直向量\n point.x += perpendicular[0];\n point.y += perpendicular[1];\n return point;\n};\n/**\n * 点集转化为Path多边形\n * @param {Array} points 点集\n * @param {Boolen} z 是否封闭\n * @return {Array} Path\n */\nexport var pointsToPolygon = function pointsToPolygon(points, z) {\n var length = points.length;\n if (!length) {\n return '';\n }\n var path = '';\n var str = '';\n for (var i = 0; i < length; i++) {\n var item = points[i];\n if (i === 0) {\n str = 'M{x} {y}';\n } else {\n str = 'L{x} {y}';\n }\n path += substitute(str, item);\n }\n if (z) {\n path += 'Z';\n }\n return path;\n};\nexport var pathToPoints = function pathToPoints(path) {\n var points = [];\n path.forEach(function (seg) {\n var command = seg[0];\n if (command !== 'A') {\n for (var i = 1; i < seg.length; i = i + 2) {\n points.push([seg[i], seg[i + 1]]);\n }\n } else {\n var length_1 = seg.length;\n points.push([seg[length_1 - 2], seg[length_1 - 1]]);\n }\n });\n return points;\n};\n/**\n * 生成平滑的闭合曲线\n * @param points\n */\nexport var getClosedSpline = function getClosedSpline(points) {\n if (points.length < 2) {\n throw new Error(\"point length must largn than 2, now it's \".concat(points.length));\n }\n var first = points[0];\n var second = points[1];\n var last = points[points.length - 1];\n var lastSecond = points[points.length - 2];\n points.unshift(last);\n points.unshift(lastSecond);\n points.push(first);\n points.push(second);\n var closedPath = [];\n for (var i = 1; i < points.length - 2; i += 1) {\n var x0 = points[i - 1].x;\n var y0 = points[i - 1].y;\n var x1 = points[i].x;\n var y1 = points[i].y;\n var x2 = points[i + 1].x;\n var y2 = points[i + 1].y;\n var x3 = i !== points.length - 2 ? points[i + 2].x : x2;\n var y3 = i !== points.length - 2 ? points[i + 2].y : y2;\n var cp1x = x1 + (x2 - x0) / 6;\n var cp1y = y1 + (y2 - y0) / 6;\n var cp2x = x2 - (x3 - x1) / 6;\n var cp2y = y2 - (y3 - y1) / 6;\n closedPath.push(['C', cp1x, cp1y, cp2x, cp2y, x2, y2]);\n }\n closedPath.unshift(['M', last.x, last.y]);\n return closedPath;\n};\nvar vecScaleTo = function vecScaleTo(v, length) {\n // Vector with direction of v with specified length\n return vec2.scale([0, 0], vec2.normalize([0, 0], v), length);\n};\nvar unitNormal = function unitNormal(p0, p1) {\n // Returns the unit normal to the line segment from p0 to p1.\n var n = [p0[1] - p1[1], p1[0] - p0[0]];\n var nLength = Math.sqrt(n[0] * n[0] + n[1] * n[1]);\n if (nLength === 0) {\n throw new Error('p0 should not be equal to p1');\n }\n return [n[0] / nLength, n[1] / nLength];\n};\nvar vecFrom = function vecFrom(p0, p1) {\n // Vector from p0 to p1\n return [p1[0] - p0[0], p1[1] - p0[1]];\n};\n/**\n * 传入的节点作为多边形顶点,生成有圆角的多边形\n * @param polyPoints 多边形顶点\n * @param padding 在原多边形基础上增加最终轮廓和原多边形的空白间隔\n */\nexport function roundedHull(polyPoints, padding) {\n // The rounded hull path around a single point\n var roundedHull1 = function roundedHull1(points) {\n var p1 = [points[0][0], points[0][1] - padding];\n var p2 = [points[0][0], points[0][1] + padding];\n return \"M \".concat(p1, \" A \").concat(padding, \",\").concat(padding, \",0,0,0,\").concat(p2, \" A \").concat(padding, \",\").concat(padding, \",0,0,0,\").concat(p1);\n };\n // The rounded hull path around two points\n var roundedHull2 = function roundedHull2(points) {\n var offsetVector = vec2.scale([0, 0], unitNormal(points[0], points[1]), padding);\n var invOffsetVector = vec2.scale([0, 0], offsetVector, -1);\n var p0 = vec2.add([0, 0], points[0], offsetVector);\n var p1 = vec2.add([0, 0], points[1], offsetVector);\n var p2 = vec2.add([0, 0], points[1], invOffsetVector);\n var p3 = vec2.add([0, 0], points[0], invOffsetVector);\n return \"M \".concat(p0, \" L \").concat(p1, \" A \").concat([padding, padding, '0,0,0', p2].join(','), \" L \").concat(p3, \" A \").concat([padding, padding, '0,0,0', p0].join(','));\n };\n // 特殊情况处理:节点数小于等于2\n if (!polyPoints || polyPoints.length < 1) return '';\n if (polyPoints.length === 1) return roundedHull1(polyPoints);\n if (polyPoints.length === 2) return roundedHull2(polyPoints);\n var segments = new Array(polyPoints.length);\n // Calculate each offset (outwards) segment of the convex hull.\n for (var segmentIndex = 0; segmentIndex < segments.length; ++segmentIndex) {\n var p0 = segmentIndex === 0 ? polyPoints[polyPoints.length - 1] : polyPoints[segmentIndex - 1];\n var p1 = polyPoints[segmentIndex];\n // Compute the offset vector for the line segment, with length = padding.\n var offset = vec2.scale([0, 0], unitNormal(p0, p1), padding);\n segments[segmentIndex] = [vec2.add([0, 0], p0, offset), vec2.add([0, 0], p1, offset)];\n }\n var arcData = \"A \".concat([padding, padding, '0,0,0,'].join(','));\n segments = segments.map(function (segment, index) {\n var pathFragment = '';\n if (index === 0) {\n pathFragment = \"M \".concat(segments[segments.length - 1][1], \" \");\n }\n pathFragment += \"\".concat(arcData + segment[0], \" L \").concat(segment[1]);\n return pathFragment;\n });\n return segments.join(' ');\n}\n/**\n * 传入的节点作为多边形顶点,生成平滑的闭合多边形\n * @param polyPoints\n * @param padding\n */\nexport function paddedHull(polyPoints, padding) {\n var pointCount = polyPoints.length;\n var smoothHull1 = function smoothHull1(points) {\n // Returns the path for a circular hull around a single point.\n var p1 = [points[0][0], points[0][1] - padding];\n var p2 = [points[0][0], points[0][1] + padding];\n return \"M \".concat(p1, \" A \").concat([padding, padding, '0,0,0', p2].join(','), \" A \").concat([padding, padding, '0,0,0', p1].join(','));\n };\n // Returns the path for a rounded hull around two points.\n var smoothHull2 = function smoothHull2(points) {\n var v = vecFrom(points[0], points[1]);\n var extensionVec = vecScaleTo(v, padding);\n var extension0 = vec2.add([0, 0], points[0], vec2.scale([0, 0], extensionVec, -1));\n var extension1 = vec2.add([0, 0], points[1], extensionVec);\n var tangentHalfLength = 1.2 * padding;\n var controlDelta = vecScaleTo(vec2.normalize([0, 0], v), tangentHalfLength);\n var invControlDelta = vec2.scale([0, 0], controlDelta, -1);\n var control0 = vec2.add([0, 0], extension0, invControlDelta);\n var control1 = vec2.add([0, 0], extension1, invControlDelta);\n var control3 = vec2.add([0, 0], extension0, controlDelta);\n // return [\n // ['M', extension0[0], extension0[1]],\n // ['C', control0, control1, extension1],\n // ['S', control3, extension0],\n // 'Z',\n // ];\n return \"M \".concat(extension0, \" C \").concat([control0, control1, extension1].join(','), \" S \").concat([control3, extension0].join(','), \" Z\");\n };\n // Handle special cases\n if (!polyPoints || pointCount < 1) return '';\n if (pointCount === 1) return smoothHull1(polyPoints);\n if (pointCount === 2) return smoothHull2(polyPoints);\n var hullPoints = polyPoints.map(function (point, index) {\n var pNext = polyPoints[(index + 1) % pointCount];\n return {\n p: point,\n v: vec2.normalize([0, 0], vecFrom(point, pNext))\n };\n });\n // Compute the expanded hull points, and the nearest prior control point for each.\n for (var i = 0; i < hullPoints.length; ++i) {\n var priorIndex = i > 0 ? i - 1 : pointCount - 1;\n var extensionVec = vec2.normalize([0, 0], vec2.add([0, 0], hullPoints[priorIndex].v, vec2.scale([0, 0], hullPoints[i].v, -1)));\n hullPoints[i].p = vec2.add([0, 0], hullPoints[i].p, vec2.scale([0, 0], extensionVec, padding));\n }\n return hullPoints.map(function (obj) {\n var point = obj.p;\n return {\n x: point[0],\n y: point[1]\n };\n });\n}\n/**\n * get a path of a star with outer radius and inner radius\n * @param outerR\n * @param innerR\n * @returns\n */\nexport var getStarPath = function getStarPath(outerR, innerR) {\n var path = [];\n for (var i = 0; i < 5; i++) {\n var x1 = Math.cos((18 + 72 * i) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * i) / 180 * Math.PI) * outerR;\n var x2 = Math.cos((54 + 72 * i) / 180 * Math.PI) * innerR;\n var y2 = Math.sin((54 + 72 * i) / 180 * Math.PI) * innerR;\n if (i === 0) {\n path.push(['M', x1, -y1]);\n } else {\n path.push(['L', x1, -y1]);\n }\n path.push(['L', x2, -y2]);\n }\n path.push(['Z']);\n return path;\n};","/**\n * Use cross product to judge the direction of the turn.\n * Returns a positive value, if OAB makes a clockwise turn,\n * negative for counter-clockwise turn, and zero if the points are collinear.\n */\nexport var cross = function cross(a, b, o) {\n return (a.y - o.y) * (b.x - o.x) - (a.x - o.x) * (b.y - o.y);\n};\n/**\n * Generate a convex hull of given points. Andrew's monotone chain algorithm.\n * @param points An array of [x, y] representing the coordinates of points.\n * @return a list of vertices of the convex hull in counter-clockwise order,\n */\nexport var genConvexHull = function genConvexHull(items) {\n var points = items.map(function (item) {\n return {\n x: item.getModel().x,\n y: item.getModel().y\n };\n });\n points.sort(function (a, b) {\n return a.x === b.x ? a.y - b.y : a.x - b.x;\n });\n // remove duplicate points\n var pointMap = {};\n for (var i = points.length - 1; i >= 0; i--) {\n var _a = points[i],\n x = _a.x,\n y = _a.y;\n if (pointMap[\"\".concat(x, \"-\").concat(y)]) points.splice(i, 1);\n pointMap[\"\".concat(x, \"-\").concat(y)] = true;\n }\n if (points.length === 1) {\n return points;\n }\n // build the lower hull\n var lower = [];\n for (var i = 0; i < points.length; i++) {\n while (lower.length >= 2 && cross(lower[lower.length - 2], lower[lower.length - 1], points[i]) <= 0) {\n lower.pop();\n }\n lower.push(points[i]);\n }\n // build the upper hull\n var upper = [];\n for (var i = points.length - 1; i >= 0; i--) {\n while (upper.length >= 2 && cross(upper[upper.length - 2], upper[upper.length - 1], points[i]) <= 0) {\n upper.pop();\n }\n upper.push(points[i]);\n }\n upper.pop();\n lower.pop();\n var strictHull = lower.concat(upper);\n return strictHull;\n};","import { squareDist, pointLineSquareDist, itemIntersectByLine, getPointsCenter, fractionToLine, isPointsOverlap, pointRectSquareDist, Line, isPointInPolygon } from '../../util/math';\nvar defaultOps = {\n maxRoutingIterations: 100,\n maxMarchingIterations: 100,\n pixelGroupSize: 2,\n edgeR0: 10,\n edgeR1: 10,\n nodeR0: 5,\n nodeR1: 10,\n morphBuffer: 5,\n threshold: 0.001,\n skip: 16,\n nodeInfluenceFactor: 1,\n edgeInfluenceFactor: 1,\n negativeNodeInfluenceFactor: -0.5\n};\n/**\n * Marching square algorithm for traching the contour of a pixel group\n * https://www.emanueleferonato.com/2013/03/01/using-marching-squares-algorithm-to-trace-the-contour-of-an-image/\n * @param potentialArea\n * @param threshold\n */\nfunction MarchingSquares(contour, potentialArea, threshold) {\n var marched = false;\n var getVal = function getVal(x, y) {\n return potentialArea.cells[x + y * potentialArea.width];\n };\n var getState = function getState(x, y) {\n var squareVal = 0;\n if (getVal(x - 1, y - 1) >= threshold) {\n squareVal += 1;\n }\n if (getVal(x, y - 1) > threshold) {\n squareVal += 2;\n }\n if (getVal(x - 1, y) > threshold) {\n squareVal += 4;\n }\n if (getVal(x, y) > threshold) {\n squareVal += 8;\n }\n return squareVal;\n };\n var doMarch = function doMarch(xPos, yPos) {\n var x = xPos;\n var y = yPos;\n var prevX;\n var prevY;\n for (var i = 0; i < potentialArea.width * potentialArea.height; i++) {\n prevX = x;\n prevY = y;\n if (contour.findIndex(function (item) {\n return item.x === x && item.y === y;\n }) > -1) {\n if (contour[0].x !== x || contour[0].y !== y) {\n // encountered a loop but haven't returned to start: change direction using conditionals and continue back to start\n } else {\n return true;\n }\n } else {\n contour.push({\n x: x,\n y: y\n });\n }\n var state = getState(x, y);\n // assign the move direction according to state of the square\n switch (state) {\n case -1:\n console.warn('Marched out of bounds');\n return true;\n case 0:\n case 3:\n case 2:\n case 7:\n x++; // go right\n break;\n case 12:\n case 14:\n case 4:\n x--; // go left\n break;\n case 6:\n // go left if come from up else go right\n if (prevX === 0) {\n if (prevY === -1) {\n x -= 1;\n } else {\n x += 1;\n }\n }\n break;\n case 1:\n case 13:\n case 5:\n y--; // go up\n break;\n case 9:\n // go up if come from right else go down\n if (prevX === 1) {\n if (prevY === 0) {\n y -= 1;\n } else {\n y += 1;\n }\n }\n break;\n case 10:\n case 8:\n case 11:\n y++; // go down\n break;\n default:\n console.warn(\"Marching squares invalid state: \".concat(state));\n return true;\n }\n }\n };\n this.march = function () {\n for (var x = 0; x < potentialArea.width && !marched; x += 1) {\n for (var y = 0; y < potentialArea.height && !marched; y += 1) {\n if (getVal(x, y) > threshold && getState(x, y) !== 15) {\n marched = doMarch(x, y);\n }\n }\n }\n return marched;\n };\n}\n/**\n * Space partition & assign value to each cell\n * @param points\n */\nvar initGridCells = function initGridCells(width, height, pixelGroupSize) {\n var scaleWidth = Math.ceil(width / pixelGroupSize);\n var scaleHeight = Math.ceil(height / pixelGroupSize);\n var gridCells = new Float32Array(Math.max(0, scaleWidth * scaleHeight)).fill(0);\n return {\n cells: gridCells,\n width: scaleWidth,\n height: scaleHeight\n };\n};\n/**\n * Find the optimal already visited member to item;\n Optimal: minimize cost(j) = distance(i,j) ∗ countObstacles(i,j)\n * @param item\n * @param visited\n */\nvar pickBestNeighbor = function pickBestNeighbor(item, visited, nonMembers) {\n var closestNeighbour = null;\n var minCost = Number.POSITIVE_INFINITY;\n visited.forEach(function (neighbourItem) {\n var itemP = {\n x: item.getModel().x,\n y: item.getModel().y\n };\n var neighbourItemP = {\n x: neighbourItem.getModel().x,\n y: neighbourItem.getModel().y\n };\n var dist = squareDist(itemP, neighbourItemP);\n var directLine = new Line(itemP.x, itemP.y, neighbourItemP.x, neighbourItemP.y);\n var numberObstacles = nonMembers.reduce(function (count, _item) {\n if (fractionToLine(_item, directLine) > 0) {\n return count + 1;\n }\n return count;\n }, 0);\n if (dist * Math.pow(numberObstacles + 1, 2) < minCost) {\n closestNeighbour = neighbourItem;\n minCost = dist * Math.pow(numberObstacles + 1, 2);\n }\n });\n return closestNeighbour;\n};\n/**\n * 返回和线相交的item中,离边的起点最近的item\n * @param items\n * @param line\n */\nvar getIntersectItem = function getIntersectItem(items, line) {\n var minDistance = Number.POSITIVE_INFINITY;\n var closestItem = null;\n items.forEach(function (item) {\n var distance = fractionToLine(item, line);\n // find closest intersection\n if (distance >= 0 && distance < minDistance) {\n closestItem = item;\n minDistance = distance;\n }\n });\n return closestItem;\n};\n/**\n * Modify the directLine and Route virtual edges around obstacles\n */\nvar computeRoute = function computeRoute(directLine, nonMembers, maxRoutingIterations, morphBuffer) {\n var checkedLines = [];\n var linesToCheck = [];\n linesToCheck.push(directLine);\n var hasIntersection = true;\n var iterations = 0;\n var pointExists = function pointExists(point, lines) {\n var flag = false;\n lines.forEach(function (line) {\n if (flag) return;\n if (isPointsOverlap(point, {\n x: line.x1,\n y: line.y1\n }) || isPointsOverlap(point, {\n x: line.x2,\n y: line.y2\n })) {\n flag = true;\n }\n });\n return flag;\n };\n var isPointInNonMembers = function isPointInNonMembers(point, _nonMembers) {\n for (var _i = 0, _nonMembers_1 = _nonMembers; _i < _nonMembers_1.length; _i++) {\n var item = _nonMembers_1[_i];\n var bbox = item.getBBox();\n var itemContour = [[bbox.x, bbox.y], [bbox.x + bbox.width, bbox.y], [bbox.x, bbox.y + bbox.height], [bbox.x + bbox.width, bbox.y + bbox.height]];\n if (isPointInPolygon(itemContour, point.x, point.y)) {\n return true;\n }\n }\n return false;\n };\n // outer loop end when no more intersections or out of iterations\n while (hasIntersection && iterations < maxRoutingIterations) {\n hasIntersection = false;\n var _loop_1 = function _loop_1() {\n var line = linesToCheck.pop();\n var closestItem = getIntersectItem(nonMembers, line);\n if (closestItem) {\n var _a = itemIntersectByLine(closestItem, line),\n intersections_1 = _a[0],\n countIntersections = _a[1];\n // if line passes through item\n if (countIntersections === 2) {\n var testReroute = function testReroute(isFirst) {\n var tempMorphBuffer = morphBuffer;\n var virtualNode = rerouteLine(closestItem, tempMorphBuffer, intersections_1, isFirst);\n // test the virtualNode already exists\n var exist = pointExists(virtualNode, linesToCheck) || pointExists(virtualNode, checkedLines);\n var pointInside = isPointInNonMembers(virtualNode, nonMembers);\n while (!exist && pointInside && tempMorphBuffer >= 1) {\n // try a smaller buffer\n tempMorphBuffer /= 1.5;\n virtualNode = rerouteLine(closestItem, tempMorphBuffer, intersections_1, isFirst);\n exist = pointExists(virtualNode, linesToCheck) || pointExists(virtualNode, checkedLines);\n pointInside = isPointInNonMembers(virtualNode, nonMembers);\n }\n // 第二次route时不要求pointInside\n if (virtualNode && !exist && (!isFirst || !pointInside)) {\n // add 2 rerouted lines to check\n linesToCheck.push(new Line(line.x1, line.y1, virtualNode.x, virtualNode.y));\n linesToCheck.push(new Line(virtualNode.x, virtualNode.y, line.x2, line.y2));\n hasIntersection = true;\n }\n };\n testReroute(true);\n if (!hasIntersection) {\n // if we didn't find a valid point around the first corner, try the second\n testReroute(false);\n }\n }\n }\n // no intersection found, mark this line as completed\n if (!hasIntersection) {\n checkedLines.push(line);\n }\n iterations += 1;\n };\n // inner loop end when out of lines or found an intersection\n while (!hasIntersection && linesToCheck.length) {\n _loop_1();\n }\n }\n // 加入剩余的线\n while (linesToCheck.length) {\n checkedLines.push(linesToCheck.pop());\n }\n return checkedLines;\n};\n/**\n * Connect item with visited members using direct line or virtual edges\n */\nfunction getRoute(item, nonMembers, visited, maxRoutingIterations, morphBuffer) {\n var optimalNeighbor = pickBestNeighbor(item, visited, nonMembers);\n if (optimalNeighbor === null) {\n return [];\n }\n // merge the consecutive lines\n var mergeLines = function mergeLines(checkedLines) {\n var finalRoute = [];\n while (checkedLines.length > 0) {\n var line1 = checkedLines.pop();\n if (checkedLines.length === 0) {\n finalRoute.push(line1);\n break;\n }\n var line2 = checkedLines.pop();\n var mergeLine = new Line(line1.x1, line1.y1, line2.x2, line2.y2);\n var closestItem = getIntersectItem(nonMembers, mergeLine);\n // merge most recent line and previous line\n if (!closestItem) {\n checkedLines.push(mergeLine);\n } else {\n finalRoute.push(line1);\n checkedLines.push(line2);\n }\n }\n return finalRoute;\n };\n var directLine = new Line(item.getModel().x, item.getModel().y, optimalNeighbor.getModel().x, optimalNeighbor.getModel().y);\n var checkedLines = computeRoute(directLine, nonMembers, maxRoutingIterations, morphBuffer);\n var finalRoute = mergeLines(checkedLines);\n return finalRoute;\n}\n/**\n * Calculate the countor that includes the selected items and exclues the non-selected items\n * @param graph\n * @param members\n * @param nonMembers\n * @param options\n */\nexport var genBubbleSet = function genBubbleSet(members, nonMembers, ops) {\n // eslint-disable-next-line no-redeclare\n var options = Object.assign(defaultOps, ops);\n var centroid = getPointsCenter(members.map(function (item) {\n return {\n x: item.getModel().x,\n y: item.getModel().y\n };\n }));\n // 按照到中心距离远近排序\n members = members.sort(function (a, b) {\n return squareDist({\n x: a.getModel().x,\n y: a.getModel().y\n }, centroid) - squareDist({\n x: b.getModel().x,\n y: b.getModel().y\n }, centroid);\n });\n var visited = [];\n var virtualEdges = [];\n members.forEach(function (item) {\n var lines = getRoute(item, nonMembers, visited, options.maxRoutingIterations, options.morphBuffer);\n lines.forEach(function (l) {\n virtualEdges.push(l);\n });\n visited.push(item);\n });\n // 由于edge也可以作为member和nonMember传入,暂时不考虑把edges作为参数传入genBubbleSet\n // edges && edges.forEach(e => {\n // virtualEdges.push(new Line(e.getSource().getModel().x, e.getSource().getModel().y, e.getTarget().getModel().x, e.getTarget().getModel().y));\n // });\n var activeRegion = getActiveRregion(members, virtualEdges, options.nodeR0);\n var potentialArea = initGridCells(activeRegion.width, activeRegion.height, options.pixelGroupSize);\n // Use march squares to generate contour\n var contour = [];\n var hull = [];\n for (var iterations = 0; iterations < options.maxMarchingIterations; iterations++) {\n fillPotentialArea(members, nonMembers, virtualEdges, activeRegion, potentialArea, options);\n contour = [];\n hull = [];\n if (!new MarchingSquares(contour, potentialArea, options.threshold).march()) continue;\n var marchedPath = contour.map(function (point) {\n return {\n x: Math.round(point.x * options.pixelGroupSize + activeRegion.minX),\n y: Math.round(point.y * options.pixelGroupSize + activeRegion.minY)\n };\n });\n // const marchedPath = marchingSquares(potentialArea, options.threshold).map(point => ({ x: Math.round(point.x * options.pixelGroupSize + activeRegion.minX), y: Math.round(point.y * options.pixelGroupSize + activeRegion.minY) }))\n if (marchedPath) {\n var size = marchedPath.length;\n if (options.skip > 1) {\n size = Math.floor(marchedPath.length / options.skip);\n // if we reduced too much (fewer than three points in reduced surface) reduce skip and try again\n while (size < 3 && options.skip > 1) {\n options.skip -= 1;\n size = Math.floor(marchedPath.length / options.skip);\n }\n }\n // copy hull values\n for (var i = 0, j = 0; j < size; j += 1, i += options.skip) {\n hull.push({\n x: marchedPath[i].x,\n y: marchedPath[i].y\n });\n }\n }\n var isContourValid = function isContourValid() {\n for (var _i = 0, members_1 = members; _i < members_1.length; _i++) {\n var item = members_1[_i];\n var hullPoints = hull.map(function (point) {\n return [point.x, point.y];\n });\n if (!isPointInPolygon(hullPoints, item.getBBox().centerX, item.getBBox().centerY)) return false;\n }\n // 不强制要求所有nonMembers都没有包含在内\n // for (const item of nonMembers) {\n // if (isPointInPolygon({ x: item.getBBox().centerX, y: item.getBBox().centerY }, contour)) return false\n // }\n return true;\n };\n if (hull && isContourValid()) {\n return hull;\n }\n // update parameters for next iteraction\n options.threshold *= 0.9;\n if (iterations <= options.maxMarchingIterations * 0.5) {\n options.memberInfluenceFactor *= 1.2;\n options.edgeInfluenceFactor *= 1.2;\n } else if (options.nonMemberInfluenceFactor !== 0 && nonMembers.length > 0) {\n // after half the iterations, start increasing positive energy and lowering the threshold\n options.nonMemberInfluenceFactor *= 0.8;\n } else {\n break;\n }\n }\n return hull;\n};\n/**\n * unionboundingbox\n * @param members\n * @param edges\n */\nfunction getActiveRregion(members, edges, offset) {\n var activeRegion = {\n minX: Number.POSITIVE_INFINITY,\n minY: Number.POSITIVE_INFINITY,\n maxX: Number.NEGATIVE_INFINITY,\n maxY: Number.NEGATIVE_INFINITY,\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n var bboxes = [];\n members.forEach(function (item) {\n bboxes.push(item.getBBox());\n });\n edges.forEach(function (l) {\n bboxes.push(l.getBBox());\n });\n for (var _i = 0, bboxes_1 = bboxes; _i < bboxes_1.length; _i++) {\n var bbox = bboxes_1[_i];\n activeRegion.minX = (bbox.minX < activeRegion.minX ? bbox.minX : activeRegion.minX) - offset;\n activeRegion.minY = (bbox.minY < activeRegion.minY ? bbox.minY : activeRegion.minY) - offset;\n activeRegion.maxX = (bbox.maxX > activeRegion.maxX ? bbox.maxX : activeRegion.maxX) + offset;\n activeRegion.maxY = (bbox.maxY > activeRegion.maxY ? bbox.maxY : activeRegion.maxY) + offset;\n }\n activeRegion.width = activeRegion.maxX - activeRegion.minX;\n activeRegion.height = activeRegion.maxY - activeRegion.minY;\n activeRegion.x = activeRegion.minX;\n activeRegion.y = activeRegion.minY;\n return activeRegion;\n}\nfunction fillPotentialArea(members, nonMembers, edges, activeRegion, potentialArea, options) {\n function pos2GridIx(x, offset) {\n var gridIx = Math.floor((x - offset) / options.pixelGroupSize);\n return gridIx < 0 ? 0 : gridIx;\n }\n function gridIx2Pos(x, offset) {\n return x * options.pixelGroupSize + offset;\n }\n // using inverse a for numerical stability\n var nodeInfA = (options.nodeR0 - options.nodeR1) * (options.nodeR0 - options.nodeR1);\n var edgeInfA = (options.edgeR0 - options.edgeR1) * (options.edgeR0 - options.edgeR1);\n var getAffectedRegion = function getAffectedRegion(bbox, thresholdR) {\n var startX = Math.min(pos2GridIx(bbox.minX, thresholdR + activeRegion.minX), potentialArea.width);\n var startY = Math.min(pos2GridIx(bbox.minY, thresholdR + activeRegion.minY), potentialArea.height);\n var endX = Math.min(pos2GridIx(bbox.maxX, -thresholdR + activeRegion.minX), potentialArea.width);\n var endY = Math.min(pos2GridIx(bbox.maxY, -thresholdR + activeRegion.minY), potentialArea.height);\n return [startX, startY, endX, endY];\n };\n var addItemInfluence = function addItemInfluence(item, influenceFactor) {\n var bbox = item.getBBox();\n var _a = getAffectedRegion(bbox, options.nodeR1),\n startX = _a[0],\n startY = _a[1],\n endX = _a[2],\n endY = _a[3];\n // calculate item influence for each cell\n for (var y = startY; y < endY; y += 1) {\n for (var x = startX; x < endX; x += 1) {\n if (influenceFactor < 0 && potentialArea[x + y * potentialArea.width] <= 0) {\n continue;\n }\n var tempX = gridIx2Pos(x, activeRegion.minX);\n var tempY = gridIx2Pos(y, activeRegion.minY);\n var distanceSq = pointRectSquareDist({\n x: tempX,\n y: tempY\n }, {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.width,\n height: bbox.height\n });\n if (distanceSq < Math.pow(options.nodeR1, 2)) {\n var dr = Math.sqrt(distanceSq) - options.nodeR1;\n potentialArea.cells[x + y * potentialArea.width] += influenceFactor * dr * dr;\n }\n }\n }\n };\n var addEdgeInfluence = function addEdgeInfluence(line, influenceFactor) {\n var bbox = line.getBBox();\n var _a = getAffectedRegion(bbox, options.edgeR1),\n startX = _a[0],\n startY = _a[1],\n endX = _a[2],\n endY = _a[3];\n // for every point in active part of potentialArea, calculate distance to nearest point on line and add influence\n for (var y = startY; y < endY; y += 1) {\n for (var x = startX; x < endX; x += 1) {\n if (influenceFactor < 0 && potentialArea.cells[x + y * potentialArea.width] <= 0) {\n continue;\n }\n var tempX = gridIx2Pos(x, activeRegion.minX);\n var tempY = gridIx2Pos(y, activeRegion.minY);\n var minDistanceSq = pointLineSquareDist({\n x: tempX,\n y: tempY\n }, line);\n // only influence if less than r1\n if (minDistanceSq < Math.pow(options.edgeR1, 2)) {\n var mdr = Math.sqrt(minDistanceSq) - options.edgeR1;\n potentialArea.cells[x + y * potentialArea.width] += influenceFactor * mdr * mdr;\n }\n }\n }\n };\n if (options.nodeInfluenceFactor) {\n members.forEach(function (item) {\n addItemInfluence(item, options.nodeInfluenceFactor / nodeInfA);\n });\n }\n if (options.edgeInfluenceFactor) {\n edges.forEach(function (edge) {\n addEdgeInfluence(edge, options.edgeInfluenceFactor / edgeInfA);\n });\n }\n if (options.negativeNodeInfluenceFactor) {\n nonMembers.forEach(function (item) {\n addItemInfluence(item, options.negativeNodeInfluenceFactor / nodeInfA);\n });\n }\n}\nfunction rerouteLine(item, buffer, intersections, wrapNormal) {\n var bbox = item.getBBox();\n var topIntersect = intersections[0],\n leftIntersect = intersections[1],\n bottomIntersect = intersections[2],\n rightIntersect = intersections[3];\n var cornerPos = {\n topLeft: {\n x: bbox.minX - buffer,\n y: bbox.minY - buffer\n },\n topRight: {\n x: bbox.maxX + buffer,\n y: bbox.minY - buffer\n },\n bottomLeft: {\n x: bbox.minX - buffer,\n y: bbox.maxY + buffer\n },\n bottomRight: {\n x: bbox.maxX + buffer,\n y: bbox.maxY + buffer\n }\n };\n var totalArea = bbox.height * bbox.width;\n function calcHalfArea(intersect1, intersect2) {\n return bbox.width * ((intersect1.y - bbox.minY + (intersect2.y - bbox.minY)) * 0.5);\n }\n // 根据线和boundingbox相交的情况,确定control point的位置\n if (leftIntersect) {\n // 相交区域有三角形\n if (topIntersect) return wrapNormal ? cornerPos.topLeft : cornerPos.bottomRight;\n if (bottomIntersect) return wrapNormal ? cornerPos.bottomLeft : cornerPos.topRight;\n // 相交区域分成上下两个梯形,比较面积\n var topArea = calcHalfArea(leftIntersect, rightIntersect);\n if (topArea < totalArea * 0.5) {\n if (leftIntersect.y > rightIntersect.y) return wrapNormal ? cornerPos.topLeft : cornerPos.bottomRight;\n return wrapNormal ? cornerPos.topRight : cornerPos.bottomLeft;\n }\n if (leftIntersect.y < rightIntersect.y) return wrapNormal ? cornerPos.bottomLeft : cornerPos.topRight;\n return wrapNormal ? cornerPos.bottomRight : cornerPos.topLeft;\n }\n if (rightIntersect) {\n if (topIntersect) return wrapNormal ? cornerPos.topRight : cornerPos.bottomLeft;\n if (bottomIntersect) return wrapNormal ? cornerPos.bottomRight : cornerPos.topLeft;\n }\n // 相交区域分成左右两个梯形\n var leftArea = calcHalfArea(topIntersect, bottomIntersect);\n if (leftArea < totalArea * 0.5) {\n if (topIntersect.x > bottomIntersect.x) return wrapNormal ? cornerPos.topLeft : cornerPos.bottomRight;\n return wrapNormal ? cornerPos.bottomLeft : cornerPos.topRight;\n }\n if (topIntersect.x < bottomIntersect.x) return wrapNormal ? cornerPos.topRight : cornerPos.bottomLeft;\n return wrapNormal ? cornerPos.bottomRight : cornerPos.topLeft;\n}","import { __assign } from \"tslib\";\nimport { deepMix, isString } from '@antv/util';\nimport { parsePathString } from '@antv/path-util';\nimport { pathToPoints, getClosedSpline, roundedHull, paddedHull } from '../util/path';\nimport { isPolygonsIntersect } from '../util/math';\nimport { genConvexHull } from '../element/hull/convexHull';\nimport { genBubbleSet } from '../element/hull/bubbleset';\n/**\n * 用于包裹内部的成员的轮廓。\n * convex hull(凸包):http://geomalgorithms.com/a10-_hull-1.html#Monotone%20Chain\n * bubble: 使用 bubbleset算法,refer: http://vialab.science.uoit.ca/wp-content/papercite-data/pdf/col2009c.pdf\n * 通过配置 padding 可以调节包裹轮廓对节点的松紧程度\n */\nvar Hull = /** @class */function () {\n function Hull(graph, cfg) {\n this.cfg = deepMix(this.getDefaultCfg(), cfg);\n this.graph = graph;\n this.id = this.cfg.id;\n this.group = this.cfg.group;\n this.members = this.cfg.members.map(function (item) {\n return isString(item) ? graph.findById(item) : item;\n });\n this.nonMembers = this.cfg.nonMembers.map(function (item) {\n return isString(item) ? graph.findById(item) : item;\n });\n this.setPadding();\n this.setType();\n this.path = this.calcPath(this.members, this.nonMembers);\n this.render();\n }\n Hull.prototype.getDefaultCfg = function () {\n return {\n id: 'g6-hull',\n type: 'round-convex',\n members: [],\n nonMembers: [],\n style: {\n fill: 'lightblue',\n stroke: 'blue',\n opacity: 0.2\n },\n padding: 10\n };\n };\n Hull.prototype.setPadding = function () {\n var nodeSize = this.members.length && this.members[0].getKeyShape().getCanvasBBox().width / 2;\n this.padding = this.cfg.padding > 0 ? this.cfg.padding + nodeSize : 10 + nodeSize;\n this.cfg.bubbleCfg = {\n nodeR0: this.padding - nodeSize,\n nodeR1: this.padding - nodeSize,\n morphBuffer: this.padding - nodeSize\n };\n };\n Hull.prototype.setType = function () {\n this.type = this.cfg.type;\n if (this.members.length < 3) {\n this.type = 'round-convex';\n }\n if (this.type !== 'round-convex' && this.type !== 'smooth-convex' && this.type !== 'bubble') {\n console.warn('The hull type should be either round-convex, smooth-convex or bubble, round-convex is used by default.');\n this.type = 'round-convex';\n }\n };\n Hull.prototype.calcPath = function (members, nonMembers) {\n var contour, path, hull;\n switch (this.type) {\n case 'round-convex':\n contour = genConvexHull(members);\n hull = roundedHull(contour.map(function (p) {\n return [p.x, p.y];\n }), this.padding);\n path = parsePathString(hull);\n break;\n case 'smooth-convex':\n contour = genConvexHull(members);\n if (contour.length === 2) {\n hull = roundedHull(contour.map(function (p) {\n return [p.x, p.y];\n }), this.padding);\n path = parsePathString(hull);\n } else if (contour.length > 2) {\n hull = paddedHull(contour.map(function (p) {\n return [p.x, p.y];\n }), this.padding);\n path = getClosedSpline(hull);\n }\n break;\n case 'bubble':\n contour = genBubbleSet(members, nonMembers, this.cfg.bubbleCfg);\n path = contour.length >= 2 && getClosedSpline(contour);\n break;\n default:\n }\n return path;\n };\n Hull.prototype.render = function () {\n this.group.addShape('path', {\n attrs: __assign({\n path: this.path\n }, this.cfg.style),\n id: this.id,\n name: this.cfg.id,\n capture: false\n });\n this.group.toBack();\n };\n /**\n * 增加hull的成员,同时如果该成员原先在nonMembers中,则从nonMembers中去掉\n * @param item 节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n Hull.prototype.addMember = function (item) {\n if (!item) return;\n if (isString(item)) item = this.graph.findById(item);\n this.members.push(item);\n var index = this.nonMembers.indexOf(item);\n if (index > -1) {\n this.nonMembers.splice(index, 1);\n }\n this.updateData(this.members, this.nonMembers);\n return true;\n };\n /**\n * 增加hull需要排除的节点,同时如果该成员原先在members中,则从members中去掉\n * @param item 节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n Hull.prototype.addNonMember = function (item) {\n if (!item) return;\n if (isString(item)) item = this.graph.findById(item);\n this.nonMembers.push(item);\n var index = this.members.indexOf(item);\n if (index > -1) {\n this.members.splice(index, 1);\n }\n this.updateData(this.members, this.nonMembers);\n return true;\n };\n /**\n * 移除hull中的成员\n * @param node 节点实例\n * @return boolean 移除成功返回 true,否则返回 false\n */\n Hull.prototype.removeMember = function (item) {\n if (!item) return;\n if (isString(item)) item = this.graph.findById(item);\n var index = this.members.indexOf(item);\n if (index > -1) {\n this.members.splice(index, 1);\n this.updateData(this.members, this.nonMembers);\n return true;\n }\n return false;\n };\n /**\n * @param node 节点实例\n * @return boolean 移除成功返回 true,否则返回 false\n */\n Hull.prototype.removeNonMember = function (item) {\n if (!item) return;\n if (isString(item)) item = this.graph.findById(item);\n var index = this.nonMembers.indexOf(item);\n if (index > -1) {\n this.nonMembers.splice(index, 1);\n this.updateData(this.members, this.nonMembers);\n return true;\n }\n return false;\n };\n Hull.prototype.updateData = function (members, nonMembers) {\n var _this = this;\n this.group.findById(this.id).remove();\n if (members) this.members = members.map(function (item) {\n return isString(item) ? _this.graph.findById(item) : item;\n });\n if (nonMembers) this.nonMembers = nonMembers.map(function (item) {\n return isString(item) ? _this.graph.findById(item) : item;\n });\n this.path = this.calcPath(this.members, this.nonMembers);\n this.render();\n };\n Hull.prototype.updateStyle = function (cfg) {\n var path = this.group.findById(this.id);\n path.attr(__assign({}, cfg));\n };\n /**\n * 更新 hull\n * @param cfg hull 配置项\n */\n Hull.prototype.updateCfg = function (cfg) {\n var _this = this;\n this.cfg = deepMix(this.cfg, cfg);\n this.id = this.cfg.id;\n this.group = this.cfg.group;\n if (cfg.members) {\n this.members = this.cfg.members.map(function (item) {\n return isString(item) ? _this.graph.findById(item) : item;\n });\n }\n if (cfg.nonMembers) {\n this.nonMembers = this.cfg.nonMembers.map(function (item) {\n return isString(item) ? _this.graph.findById(item) : item;\n });\n }\n // TODO padding 设置太大,会影响到 contain 结果\n this.setPadding();\n this.setType();\n this.path = this.calcPath(this.members, this.nonMembers);\n this.render();\n };\n /**\n * 判断是否在hull内部\n * @param item\n */\n Hull.prototype.contain = function (item) {\n var _this = this;\n var nodeItem;\n if (isString(item)) {\n nodeItem = this.graph.findById(item);\n } else {\n nodeItem = item;\n }\n var shapePoints;\n var shape = nodeItem.getKeyShape();\n if (nodeItem.get('type') === 'path') {\n shapePoints = pathToPoints(shape.attr('path'));\n } else {\n var shapeBBox = shape.getCanvasBBox();\n shapePoints = [[shapeBBox.minX, shapeBBox.minY], [shapeBBox.maxX, shapeBBox.minY], [shapeBBox.maxX, shapeBBox.maxY], [shapeBBox.minX, shapeBBox.maxY]];\n }\n shapePoints = shapePoints.map(function (canvasPoint) {\n var point = _this.graph.getPointByCanvas(canvasPoint[0], canvasPoint[1]);\n return [point.x, point.y];\n });\n return isPolygonsIntersect(shapePoints, pathToPoints(this.path));\n };\n Hull.prototype.destroy = function () {\n this.group.remove();\n this.cfg = null;\n };\n return Hull;\n}();\nexport default Hull;","import { __assign, __extends, __spreadArray } from \"tslib\";\nimport EventEmitter from '@antv/event-emitter';\nimport { ext } from '@antv/matrix-util';\nimport { clone, deepMix, each, isPlainObject, isString, debounce } from '@antv/util';\nimport { getDegree, getAdjMatrix as getAdjacentMatrix, Stack, floydWarshall } from '@antv/algorithm';\nimport { lerp, move } from '../util/math';\nimport { dataValidation, singleDataValidation } from '../util/validation';\nimport Global from '../global';\nimport { ItemController, ModeController, StateController, ViewController } from './controller';\nimport { plainCombosToTrees, traverseTree, reconstructTree, traverseTreeUp, getAnimateCfgWithCallback } from '../util/graphic';\nimport Hull from '../item/hull';\nvar transform = ext.transform;\nvar NODE = 'node';\nvar AbstractGraph = /** @class */function (_super) {\n __extends(AbstractGraph, _super);\n function AbstractGraph(cfg) {\n var _this = _super.call(this) || this;\n /**\n * 根据 comboTree 结构整理 Combo 相关的图形绘制层级,包括 Combo 本身、节点、边\n * @param {GraphData} data 数据\n */\n _this.sortCombos = debounce(function () {\n var comboSorted = _this.get('comboSorted');\n if (!_this || _this.destroyed || comboSorted) return;\n _this.set('comboSorted', true);\n var depthMap = [];\n var dataDepthMap = {};\n var comboTrees = _this.get('comboTrees');\n (comboTrees || []).forEach(function (cTree) {\n traverseTree(cTree, function (child) {\n if (depthMap[child.depth]) depthMap[child.depth].push(child.id);else depthMap[child.depth] = [child.id];\n dataDepthMap[child.id] = child.depth;\n return true;\n });\n });\n var edges = _this.getEdges().concat(_this.get('vedges'));\n (edges || []).forEach(function (edgeItem) {\n var edge = edgeItem.getModel();\n var sourceDepth = dataDepthMap[edge.source] || 0;\n var targetDepth = dataDepthMap[edge.target] || 0;\n var depth = Math.max(sourceDepth, targetDepth);\n if (depthMap[depth]) depthMap[depth].push(edge.id);else depthMap[depth] = [edge.id];\n });\n depthMap.forEach(function (array) {\n if (!array || !array.length) return;\n for (var i = array.length - 1; i >= 0; i--) {\n var item = _this.findById(array[i]);\n if (item) item.toFront();\n }\n });\n }, 500, false);\n _this.cfg = deepMix(_this.getDefaultCfg(), cfg);\n _this.init();\n _this.animating = false;\n _this.destroyed = false;\n // 启用 stack 后,实例化 undoStack 和 redoStack\n if (_this.cfg.enabledStack) {\n // 实例化 undo 和 redo 栈\n _this.undoStack = new Stack(_this.cfg.maxStep);\n _this.redoStack = new Stack(_this.cfg.maxStep);\n }\n return _this;\n }\n AbstractGraph.prototype.init = function () {\n this.initCanvas();\n // instance controller\n var viewController = new ViewController(this);\n var modeController = new ModeController(this);\n var itemController = new ItemController(this);\n var stateController = new StateController(this);\n this.set({\n viewController: viewController,\n modeController: modeController,\n itemController: itemController,\n stateController: stateController\n });\n // 初始化布局机制\n this.initLayoutController();\n // 初始化事件机制\n this.initEventController();\n this.initGroups();\n /** 初始化插件 */\n this.initPlugins();\n };\n // 初始化所有 Group\n AbstractGraph.prototype.initGroups = function () {\n var canvas = this.get('canvas');\n if (!canvas) return;\n var el = canvas.get('el');\n var _a = (el || {}).id,\n id = _a === void 0 ? 'g6' : _a;\n var group = canvas.addGroup({\n id: \"\".concat(id, \"-root\"),\n className: Global.rootContainerClassName\n });\n if (this.get('groupByTypes')) {\n var edgeGroup = group.addGroup({\n id: \"\".concat(id, \"-edge\"),\n className: Global.edgeContainerClassName\n });\n var nodeGroup = group.addGroup({\n id: \"\".concat(id, \"-node\"),\n className: Global.nodeContainerClassName\n });\n var comboGroup = group.addGroup({\n id: \"\".concat(id, \"-combo\"),\n className: Global.comboContainerClassName\n });\n // 用于存储自定义的群组\n comboGroup.toBack();\n this.set({\n nodeGroup: nodeGroup,\n edgeGroup: edgeGroup,\n comboGroup: comboGroup\n });\n }\n var delegateGroup = group.addGroup({\n id: \"\".concat(id, \"-delegate\"),\n className: Global.delegateContainerClassName\n });\n this.set({\n delegateGroup: delegateGroup\n });\n this.set('group', group);\n };\n // eslint-disable-next-line class-methods-use-this\n AbstractGraph.prototype.getDefaultCfg = function () {\n return {\n /**\n * Container could be dom object or dom id\n */\n container: undefined,\n /**\n * Canvas width\n * unit pixel if undefined force fit width\n */\n width: undefined,\n /**\n * Canvas height\n * unit pixel if undefined force fit height\n */\n height: undefined,\n /**\n * renderer canvas or svg\n * @type {string}\n */\n renderer: 'canvas',\n /**\n * control graph behaviors\n */\n modes: {},\n /**\n * 注册插件\n */\n plugins: [],\n /**\n * source data\n */\n data: {},\n /**\n * Fit view padding (client scale)\n */\n fitViewPadding: 10,\n /**\n * Minimum scale size\n */\n minZoom: 0.02,\n /**\n * Maxmum scale size\n */\n maxZoom: 10,\n /**\n * capture events\n */\n event: true,\n /**\n * group node & edges into different graphic groups\n */\n groupByTypes: true,\n /**\n * determine if it's a directed graph\n */\n directed: false,\n /**\n * when data or shape changed, should canvas draw automatically\n */\n autoPaint: true,\n /**\n * store all the node instances\n */\n nodes: [],\n /**\n * store all the edge instances\n */\n edges: [],\n /**\n * store all the combo instances\n */\n combos: [],\n /**\n * store all the edge instances which are virtual edges related to collapsed combo\n */\n vedges: [],\n /**\n * all the instances indexed by id\n */\n itemMap: {},\n /**\n * 边直接连接到节点的中心,不再考虑锚点\n */\n linkCenter: false,\n /**\n * 默认的节点配置,data 上定义的配置会覆盖这些配置。例如:\n * defaultNode: {\n * type: 'rect',\n * size: [60, 40],\n * style: {\n * //... 样式配置项\n * }\n * }\n * 若数据项为 { id: 'node', x: 100, y: 100 }\n * 实际创建的节点模型是 { id: 'node', x: 100, y: 100, type: 'rect', size: [60, 40] }\n * 若数据项为 { id: 'node', x: 100, y: 100, type: 'circle' }\n * 实际创建的节点模型是 { id: 'node', x: 100, y: 100, type: 'circle', size: [60, 40] }\n */\n defaultNode: {},\n /**\n * 默认边配置,data 上定义的配置会覆盖这些配置。用法同 defaultNode\n */\n defaultEdge: {},\n /**\n * 节点默认样式,也可以添加状态样式\n * 例如:\n * const graph = new G6.Graph({\n * nodeStateStyles: {\n * selected: { fill: '#ccc', stroke: '#666' },\n * active: { lineWidth: 2 }\n * },\n * ...\n * });\n *\n */\n nodeStateStyles: {},\n /**\n * 边默认样式,用法同nodeStateStyle\n */\n edgeStateStyles: {},\n /**\n * graph 状态\n */\n states: {},\n /**\n * 是否启用全局动画\n */\n animate: false,\n /**\n * 动画设置,仅在 animate 为 true 时有效\n */\n animateCfg: {\n /**\n * 帧回调函数,用于自定义节点运动路径,为空时线性运动\n */\n onFrame: undefined,\n /**\n * 动画时长(ms)\n */\n duration: 500,\n /**\n * 指定动画动效\n */\n easing: 'easeLinear'\n },\n callback: undefined,\n // 默认不启用 undo & redo 功能\n enabledStack: false,\n // 只有当 enabledStack 为 true 时才起作用\n maxStep: 10,\n // 存储图上的 tooltip dom,方便销毁\n tooltips: [],\n // 达到这一节点数量(默认值 1000),将开启性能优化模式。目前包括:节点状态样式变更是否影响相关边的更新\n optimizeThreshold: 1000\n };\n };\n /**\n * 将值设置到 this.cfg 变量上面\n * @param key 键 或 对象值\n * @param val 值\n */\n AbstractGraph.prototype.set = function (key, val) {\n if (isPlainObject(key)) {\n this.cfg = __assign(__assign({}, this.cfg), key);\n } else {\n this.cfg[key] = val;\n }\n if (key === 'enabledStack' && val && !this.undoStack && !this.redoStack) {\n this.undoStack = new Stack(this.cfg.maxStep);\n this.redoStack = new Stack(this.cfg.maxStep);\n }\n return this;\n };\n /**\n * 获取 this.cfg 中的值\n * @param key 键\n */\n AbstractGraph.prototype.get = function (key) {\n var _a;\n return (_a = this.cfg) === null || _a === void 0 ? void 0 : _a[key];\n };\n /**\n * 获取 graph 的根图形分组\n * @return 根 group\n */\n AbstractGraph.prototype.getGroup = function () {\n return this.get('group');\n };\n /**\n * 获取 graph 的 DOM 容器\n * @return DOM 容器\n */\n AbstractGraph.prototype.getContainer = function () {\n return this.get('container');\n };\n /**\n * 获取 graph 的最小缩放比例\n * @return minZoom\n */\n AbstractGraph.prototype.getMinZoom = function () {\n return this.get('minZoom');\n };\n /**\n * 设置 graph 的最小缩放比例\n * @return minZoom\n */\n AbstractGraph.prototype.setMinZoom = function (ratio) {\n return this.set('minZoom', ratio);\n };\n /**\n * 获取 graph 的最大缩放比例\n * @param maxZoom\n */\n AbstractGraph.prototype.getMaxZoom = function () {\n return this.get('maxZoom');\n };\n /**\n * 设置 graph 的最大缩放比例\n * @param maxZoom\n */\n AbstractGraph.prototype.setMaxZoom = function (ratio) {\n return this.set('maxZoom', ratio);\n };\n /**\n * 获取 graph 的宽度\n * @return width\n */\n AbstractGraph.prototype.getWidth = function () {\n return this.get('width');\n };\n /**\n * 获取 graph 的高度\n * @return width\n */\n AbstractGraph.prototype.getHeight = function () {\n return this.get('height');\n };\n /**\n * 清理元素多个状态\n * @param {string|Item} item 元素id或元素实例\n * @param {string[]} states 状态\n */\n AbstractGraph.prototype.clearItemStates = function (item, states) {\n if (isString(item)) {\n item = this.findById(item);\n }\n var itemController = this.get('itemController');\n if (!states) {\n states = item.get('states');\n }\n itemController.clearItemStates(item, states);\n var stateController = this.get('stateController');\n stateController.updateStates(item, states, false);\n };\n /**\n * 设置各个节点样式,以及在各种状态下节点 keyShape 的样式。\n * 若是自定义节点切在各种状态下\n * graph.node(node => {\n * return {\n * type: 'rect',\n * label: node.id,\n * style: { fill: '#666' },\n * stateStyles: {\n * selected: { fill: 'blue' },\n * custom: { fill: 'green' }\n * }\n * }\n * });\n * @param {function} nodeFn 指定每个节点样式\n */\n AbstractGraph.prototype.node = function (nodeFn) {\n if (typeof nodeFn === 'function') {\n this.set('nodeMapper', nodeFn);\n }\n };\n /**\n * 设置各个边样式\n * @param {function} edgeFn 指定每个边的样式,用法同 node\n */\n AbstractGraph.prototype.edge = function (edgeFn) {\n if (typeof edgeFn === 'function') {\n this.set('edgeMapper', edgeFn);\n }\n };\n /**\n * 设置各个 combo 的配置\n * @param comboFn\n */\n AbstractGraph.prototype.combo = function (comboFn) {\n if (typeof comboFn === 'function') {\n this.set('comboMapper', comboFn);\n }\n };\n /**\n * 根据 ID 查询图元素实例\n * @param id 图元素 ID\n */\n AbstractGraph.prototype.findById = function (id) {\n return this.get('itemMap')[id];\n };\n /**\n * 根据对应规则查找单个元素\n * @param {ITEM_TYPE} type 元素类型(node | edge | group)\n * @param {(item: T, index: number) => T} fn 指定规则\n * @return {T} 元素实例\n */\n AbstractGraph.prototype.find = function (type, fn) {\n var result;\n var items = this.get(\"\".concat(type, \"s\"));\n // eslint-disable-next-line consistent-return\n each(items, function (item, i) {\n if (fn(item, i)) {\n result = item;\n return result;\n }\n });\n return result;\n };\n /**\n * 查找所有满足规则的元素\n * @param {string} type 元素类型(node|edge)\n * @param {string} fn 指定规则\n * @return {array} 元素实例\n */\n AbstractGraph.prototype.findAll = function (type, fn) {\n var result = [];\n each(this.get(\"\".concat(type, \"s\")), function (item, i) {\n if (fn(item, i)) {\n result.push(item);\n }\n });\n return result;\n };\n /**\n * 查找所有处于指定状态的元素\n * @param {string} type 元素类型(node|edge)\n * @param {string} state 状态\n * @return {object} 元素实例\n */\n AbstractGraph.prototype.findAllByState = function (type, state, additionalFilter) {\n if (additionalFilter) {\n return this.findAll(type, function (item) {\n return item.hasState(state) && additionalFilter(item);\n });\n } else {\n return this.findAll(type, function (item) {\n return item.hasState(state);\n });\n }\n };\n /**\n * 平移画布\n * @param dx 水平方向位移\n * @param dy 垂直方向位移\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n */\n AbstractGraph.prototype.translate = function (dx, dy, animate, animateCfg) {\n var _this = this;\n var group = this.get('group');\n var matrix = clone(group.getMatrix());\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n if (animate) {\n var animateConfig = getAnimateCfgWithCallback({\n animateCfg: animateCfg,\n callback: function callback() {\n return _this.emit('viewportchange', {\n action: 'translate',\n matrix: group.getMatrix()\n });\n }\n });\n move(group, {\n x: group.getCanvasBBox().x + dx,\n y: group.getCanvasBBox().y + dy\n }, animate, animateConfig || {\n duration: 500,\n easing: 'easeCubic'\n });\n } else {\n matrix = transform(matrix, [['t', dx, dy]]);\n group.setMatrix(matrix);\n this.emit('viewportchange', {\n action: 'translate',\n matrix: matrix\n });\n this.autoPaint();\n }\n };\n /**\n * 平移画布到某点\n * @param {number} x 水平坐标\n * @param {number} y 垂直坐标\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n */\n AbstractGraph.prototype.moveTo = function (x, y, animate, animateCfg) {\n var group = this.get('group');\n move(group, {\n x: x,\n y: y\n }, animate, animateCfg || {\n duration: 500,\n easing: 'easeCubic'\n });\n this.emit('viewportchange', {\n action: 'move',\n matrix: group.getMatrix()\n });\n };\n /**\n * 调整视口适应视图\n * @param {object} padding 四周围边距\n * @param {FitViewRules} rules fitView的规则\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n */\n AbstractGraph.prototype.fitView = function (padding, rules, animate, animateCfg) {\n if (padding) {\n this.set('fitViewPadding', padding);\n }\n var viewController = this.get('viewController');\n if (rules) {\n viewController.fitViewByRules(rules, animate, animateCfg);\n } else {\n viewController.fitView(animate, animateCfg);\n }\n this.autoPaint();\n };\n /**\n * 调整视口适应视图,不缩放,仅将图 bbox 中心对齐到画布中心\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n */\n AbstractGraph.prototype.fitCenter = function (animate, animateCfg) {\n var viewController = this.get('viewController');\n viewController.fitCenter(animate, animateCfg);\n this.autoPaint();\n };\n /**\n * 新增行为\n * @param {string | ModeOption | ModeType[]} behaviors 添加的行为\n * @param {string | string[]} modes 添加到对应的模式\n * @return {Graph} Graph\n */\n AbstractGraph.prototype.addBehaviors = function (behaviors, modes) {\n var modeController = this.get('modeController');\n modeController.manipulateBehaviors(behaviors, modes, true);\n return this;\n };\n /**\n * 移除行为\n * @param {string | ModeOption | ModeType[]} behaviors 移除的行为\n * @param {string | string[]} modes 从指定的模式中移除\n * @return {Graph} Graph\n */\n AbstractGraph.prototype.removeBehaviors = function (behaviors, modes) {\n var modeController = this.get('modeController');\n modeController.manipulateBehaviors(behaviors, modes, false);\n return this;\n };\n /**\n * 更新行为参数\n * @param {string | ModeOption | ModeType} behavior 需要更新的行为\n * @param {string | string[]} modes 指定的模式中的行为,不指定则为 default\n * @return {Graph} Graph\n */\n AbstractGraph.prototype.updateBehavior = function (behavior, newCfg, mode) {\n var modeController = this.get('modeController');\n modeController.updateBehavior(behavior, newCfg, mode);\n return this;\n };\n /**\n * 伸缩窗口\n * @param ratio 伸缩比例\n * @param center 以center的x, y坐标为中心缩放\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n * @return {boolean} 缩放是否成功\n */\n AbstractGraph.prototype.zoom = function (ratio, center, animate, animateCfg) {\n var _this = this;\n var group = this.get('group');\n var matrix = clone(group.getMatrix()) || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var minZoom = this.get('minZoom');\n var maxZoom = this.get('maxZoom');\n var currentZoom = this.getZoom() || 1;\n var targetZoom = currentZoom * ratio;\n var finalRatio = ratio;\n var failed = false;\n if (minZoom && targetZoom < minZoom) {\n finalRatio = minZoom / currentZoom;\n failed = true;\n } else if (maxZoom && targetZoom > maxZoom) {\n finalRatio = maxZoom / currentZoom;\n failed = true;\n }\n if (center) {\n matrix = transform(matrix, [['t', -center.x, -center.y], ['s', finalRatio, finalRatio], ['t', center.x, center.y]]);\n } else {\n matrix = transform(matrix, [['s', finalRatio, finalRatio]]);\n }\n if (animate) {\n // Clone the original matrix to perform the animation\n var aniMatrix_1 = clone(group.getMatrix());\n if (!aniMatrix_1) {\n aniMatrix_1 = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n var initialRatio_1 = aniMatrix_1[0];\n var targetRatio_1 = initialRatio_1 * finalRatio;\n var animateConfig = getAnimateCfgWithCallback({\n animateCfg: animateCfg,\n callback: function callback() {\n return _this.emit('viewportchange', {\n action: 'zoom',\n matrix: group.getMatrix()\n });\n }\n });\n group.animate(function (ratio) {\n if (ratio === 1) {\n // Reuse the first transformation\n aniMatrix_1 = matrix;\n } else {\n var scale = lerp(initialRatio_1, targetRatio_1, ratio) / aniMatrix_1[0];\n if (center) {\n aniMatrix_1 = transform(aniMatrix_1, [['t', -center.x, -center.y], ['s', scale, scale], ['t', center.x, center.y]]);\n } else {\n aniMatrix_1 = transform(aniMatrix_1, [['s', scale, scale]]);\n }\n }\n return {\n matrix: aniMatrix_1\n };\n }, animateConfig);\n } else {\n group.setMatrix(matrix);\n this.emit('viewportchange', {\n action: 'zoom',\n matrix: matrix\n });\n this.autoPaint();\n }\n return !failed;\n };\n /**\n * 伸缩视口到一固定比例\n * @param {number} toRatio 伸缩比例\n * @param {Point} center 以center的x, y坐标为中心缩放\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n * @return {boolean} 缩放是否成功\n */\n AbstractGraph.prototype.zoomTo = function (toRatio, center, animate, animateCfg) {\n var ratio = toRatio / this.getZoom();\n return this.zoom(ratio, center, animate, animateCfg);\n };\n /**\n * 将元素移动到视口中心\n * @param {Item} item 指定元素\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n */\n AbstractGraph.prototype.focusItem = function (item, animate, animateCfg) {\n var viewController = this.get('viewController');\n var isAnimate = false;\n if (animate) isAnimate = true;else if (animate === undefined) isAnimate = this.get('animate');\n var curAniamteCfg = {};\n if (animateCfg) curAniamteCfg = animateCfg;else if (animateCfg === undefined) curAniamteCfg = this.get('animateCfg');\n viewController.focus(item, isAnimate, curAniamteCfg);\n this.autoPaint();\n };\n /**\n * Focus on the passed items\n * @param {Item[]} items Items you want to focus on\n * @param {boolean} zoomToFit Wether to zoom on the passed items\n * @param {boolean} animate Wether to animate the transition\n * @param {GraphAnimateConfig} animateCfg Animation configuration\n */\n AbstractGraph.prototype.focusItems = function (items, zoomToFit, animate, animateCfg) {\n var viewController = this.get('viewController');\n viewController.focusItems(items, zoomToFit, animate, animateCfg);\n };\n /**\n * 自动重绘\n * @internal 仅供内部更新机制调用,外部根据需求调用 render 或 paint 接口\n */\n AbstractGraph.prototype.autoPaint = function () {\n if (this.get('autoPaint')) {\n this.paint();\n }\n };\n /**\n * 仅画布重新绘制\n */\n AbstractGraph.prototype.paint = function () {\n this.emit('beforepaint');\n this.get('canvas').draw();\n this.emit('afterpaint');\n };\n /**\n * 将屏幕坐标转换为视口坐标\n * @param {number} clientX 屏幕x坐标\n * @param {number} clientY 屏幕y坐标\n * @return {Point} 视口坐标\n */\n AbstractGraph.prototype.getPointByClient = function (clientX, clientY) {\n var viewController = this.get('viewController');\n return viewController.getPointByClient(clientX, clientY);\n };\n /**\n * 将绘制坐标转换为屏幕坐标\n * @param {number} x 绘制坐标 x\n * @param {number} y 绘制坐标 y\n * @return {Point} 绘制坐标\n */\n AbstractGraph.prototype.getClientByPoint = function (x, y) {\n var viewController = this.get('viewController');\n return viewController.getClientByPoint(x, y);\n };\n /**\n * 将画布坐标转换为绘制坐标\n * @param {number} canvasX 画布 x 坐标\n * @param {number} canvasY 画布 y 坐标\n * @return {object} 绘制坐标\n */\n AbstractGraph.prototype.getPointByCanvas = function (canvasX, canvasY) {\n var viewController = this.get('viewController');\n return viewController.getPointByCanvas(canvasX, canvasY);\n };\n /**\n * 将绘制坐标转换为画布坐标\n * @param {number} x 绘制坐标 x\n * @param {number} y 绘制坐标 y\n * @return {object} 画布坐标\n */\n AbstractGraph.prototype.getCanvasByPoint = function (x, y) {\n var viewController = this.get('viewController');\n return viewController.getCanvasByPoint(x, y);\n };\n /**\n * 获取图内容的中心绘制坐标\n * @return {object} 中心绘制坐标\n */\n AbstractGraph.prototype.getGraphCenterPoint = function () {\n var bbox = this.get('group').getCanvasBBox();\n return {\n x: (bbox.minX + bbox.maxX) / 2,\n y: (bbox.minY + bbox.maxY) / 2\n };\n };\n /**\n * 获取视口中心绘制坐标\n * @return {object} 视口中心绘制坐标\n */\n AbstractGraph.prototype.getViewPortCenterPoint = function () {\n return this.getPointByCanvas(this.get('width') / 2, this.get('height') / 2);\n };\n /**\n * 显示元素\n * @param {Item} item 指定元素\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n AbstractGraph.prototype.showItem = function (item, stack) {\n if (stack === void 0) {\n stack = true;\n }\n var itemController = this.get('itemController');\n var object = itemController.changeItemVisibility(item, true);\n if (stack && this.get('enabledStack')) {\n var id = object.getID();\n var type = object.getType();\n var before = {};\n var after = {};\n switch (type) {\n case 'node':\n before.nodes = [{\n id: id,\n visible: false\n }];\n after.nodes = [{\n id: id,\n visible: true\n }];\n break;\n case 'edge':\n before.nodes = [{\n id: id,\n visible: false\n }];\n after.edges = [{\n id: id,\n visible: true\n }];\n break;\n case 'combo':\n before.nodes = [{\n id: id,\n visible: false\n }];\n after.combos = [{\n id: id,\n visible: true\n }];\n break;\n default:\n break;\n }\n this.pushStack('visible', {\n before: before,\n after: after\n });\n }\n };\n /**\n * 隐藏元素\n * @param {Item} item 指定元素\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n AbstractGraph.prototype.hideItem = function (item, stack) {\n if (stack === void 0) {\n stack = true;\n }\n var itemController = this.get('itemController');\n var object = itemController.changeItemVisibility(item, false);\n if (stack && this.get('enabledStack')) {\n var id = object.getID();\n var type = object.getType();\n var before = {};\n var after = {};\n switch (type) {\n case 'node':\n before.nodes = [{\n id: id,\n visible: true\n }];\n after.nodes = [{\n id: id,\n visible: false\n }];\n break;\n case 'edge':\n before.nodes = [{\n id: id,\n visible: true\n }];\n after.edges = [{\n id: id,\n visible: false\n }];\n break;\n case 'combo':\n before.nodes = [{\n id: id,\n visible: true\n }];\n after.combos = [{\n id: id,\n visible: false\n }];\n break;\n default:\n break;\n }\n this.pushStack('visible', {\n before: before,\n after: after\n });\n }\n };\n /**\n * 刷新元素\n * @param {string|object} item 元素id或元素实例\n */\n AbstractGraph.prototype.refreshItem = function (item) {\n var itemController = this.get('itemController');\n itemController.refreshItem(item);\n };\n /**\n * 设置是否在更新/刷新后自动重绘\n * @param {boolean} auto 自动重绘\n */\n AbstractGraph.prototype.setAutoPaint = function (auto) {\n var self = this;\n self.set('autoPaint', auto);\n var canvas = self.get('canvas');\n canvas.set('autoDraw', auto);\n };\n /**\n * 删除元素\n * @param {Item} item 元素id或元素实例\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n AbstractGraph.prototype.remove = function (item, stack) {\n if (stack === void 0) {\n stack = true;\n }\n this.removeItem(item, stack);\n };\n /**\n * 删除元素\n * @param {Item} item 元素id或元素实例\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n AbstractGraph.prototype.removeItem = function (item, stack) {\n if (stack === void 0) {\n stack = true;\n }\n var nodeItem = item;\n if (isString(item)) nodeItem = this.findById(item);\n if (!nodeItem && isString(item)) {\n console.warn(\"The item \".concat(item, \" to be removed does not exist!\"));\n } else if (nodeItem) {\n var type = '';\n if (nodeItem.getType) type = nodeItem.getType();\n // 将删除的元素入栈\n if (stack && this.get('enabledStack')) {\n var deletedModel = __assign(__assign({}, nodeItem.getModel()), {\n itemType: type\n });\n var before = {};\n switch (type) {\n case 'node':\n {\n before.nodes = [deletedModel];\n before.edges = [];\n var edges = nodeItem.getEdges();\n for (var i = edges.length - 1; i >= 0; i--) {\n before.edges.push(__assign(__assign({}, edges[i].getModel()), {\n itemType: 'edge'\n }));\n }\n break;\n }\n case 'edge':\n before.edges = [deletedModel];\n break;\n case 'combo':\n before.combos = [deletedModel];\n break;\n default:\n break;\n }\n this.pushStack('delete', {\n before: before,\n after: {}\n });\n }\n if (type === 'node') {\n var model = nodeItem.getModel();\n // 如果删除的是节点,且该节点存在于某个 Combo 中,则需要先将 node 从 combo 中移除,否则删除节点后,操作 combo 会出错\n if (model.comboId) {\n this.updateComboTree(nodeItem, undefined, false);\n }\n }\n var itemController = this.get('itemController');\n itemController.removeItem(nodeItem);\n if (type === 'combo') {\n var newComboTrees = reconstructTree(this.get('comboTrees'));\n this.set('comboTrees', newComboTrees);\n }\n }\n };\n AbstractGraph.prototype.innerAddItem = function (type, model, itemController) {\n // 添加节点、边或combo之前,先验证数据是否符合规范\n if (!singleDataValidation(type, model)) {\n return false;\n }\n if (model.id && this.findById(model.id)) {\n console.warn(\"This item exists already. Be sure the id %c\".concat(model.id, \"%c is unique.\"), 'font-size: 20px; color: red;', '');\n return;\n }\n var item;\n var comboTrees = this.get('comboTrees') || [];\n if (type === 'combo') {\n var itemMap_1 = this.get('itemMap');\n var foundParent_1 = false;\n comboTrees.forEach(function (ctree) {\n if (foundParent_1) return; // terminate the forEach after the tree containing the item is done\n traverseTreeUp(ctree, function (child) {\n // find the parent\n if (model.parentId === child.id) {\n foundParent_1 = true;\n var newCombo = __assign({\n id: model.id,\n depth: child.depth + 2\n }, model);\n if (child.children) child.children.push(newCombo);else child.children = [newCombo];\n model.depth = newCombo.depth;\n item = itemController.addItem(type, model);\n }\n var childItem = itemMap_1[child.id];\n // after the parent is found, update all the ancestors\n if (foundParent_1 && childItem && childItem.getType && childItem.getType() === 'combo') {\n itemController.updateCombo(childItem, child.children);\n }\n return true;\n });\n });\n // if the parent is not found, add it to the root\n if (!foundParent_1) {\n var newCombo = __assign({\n id: model.id,\n depth: 0\n }, model);\n model.depth = newCombo.depth;\n comboTrees.push(newCombo);\n item = itemController.addItem(type, model);\n }\n this.set('comboTrees', comboTrees);\n if (model.collapsed) {\n this.collapseCombo(item, false);\n this.updateCombo(item);\n }\n } else if (type === 'node' && isString(model.comboId) && comboTrees) {\n var parentCombo = this.findById(model.comboId);\n if (parentCombo && parentCombo.getType && parentCombo.getType() !== 'combo') {\n console.warn(\"'\".concat(model.comboId, \"' is not a id of a combo in the graph, the node will be added without combo.\"));\n }\n item = itemController.addItem(type, model);\n var itemMap_2 = this.get('itemMap');\n var foundParent_2 = false,\n foundNode_1 = false;\n comboTrees.forEach(function (ctree) {\n if (foundNode_1 || foundParent_2) return; // terminate the forEach\n traverseTreeUp(ctree, function (child) {\n if (child.id === model.id) {\n // if the item exists in the tree already, terminate\n foundNode_1 = true;\n return false;\n }\n if (model.comboId === child.id && !foundNode_1) {\n // found the parent, add the item to the children of its parent in the tree\n foundParent_2 = true;\n var cloneNode = clone(model);\n cloneNode.itemType = 'node';\n if (child.children) child.children.push(cloneNode);else child.children = [cloneNode];\n cloneNode.depth = child.depth + 1;\n }\n // update the size of all the ancestors\n if (foundParent_2 && itemMap_2[child.id].getType && itemMap_2[child.id].getType() === 'combo') {\n itemController.updateCombo(itemMap_2[child.id], child.children);\n }\n return true;\n });\n });\n } else {\n item = itemController.addItem(type, model);\n }\n if (type === 'node' && model.comboId || type === 'combo' && model.parentId) {\n // add the combo to the parent's children array\n var parentCombo = this.findById(model.comboId || model.parentId);\n if (parentCombo && parentCombo.getType && parentCombo.getType() === 'combo') parentCombo.addChild(item);\n }\n return item;\n };\n /**\n * 新增元素\n * @param {ITEM_TYPE} type 元素类型(node | edge)\n * @param {ModelConfig} model 元素数据模型\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n * @param {boolean} sortCombo 本次操作是否需要更新 combo 层级顺序,内部参数,用户在外部使用 addItem 时始终时需要更新\n * @return {Item} 元素实例\n */\n AbstractGraph.prototype.addItem = function (type, model, stack, sortCombo) {\n if (stack === void 0) {\n stack = true;\n }\n if (sortCombo === void 0) {\n sortCombo = true;\n }\n var currentComboSorted = this.get('comboSorted');\n this.set('comboSorted', currentComboSorted && !sortCombo);\n var itemController = this.get('itemController');\n var item = this.innerAddItem(type, model, itemController);\n if (item === false || item === true) {\n return item;\n }\n var combos = this.get('combos');\n if (combos && combos.length > 0) {\n this.sortCombos();\n }\n this.autoPaint();\n if (stack && this.get('enabledStack')) {\n var addedModel = __assign(__assign({}, item.getModel()), {\n itemType: type\n });\n var after = {};\n switch (type) {\n case 'node':\n after.nodes = [addedModel];\n break;\n case 'edge':\n after.edges = [addedModel];\n break;\n case 'combo':\n after.combos = [addedModel];\n break;\n default:\n break;\n }\n this.pushStack('add', {\n before: {},\n after: after\n });\n }\n return item;\n };\n AbstractGraph.prototype.addItems = function (items, stack, sortCombo) {\n if (items === void 0) {\n items = [];\n }\n if (stack === void 0) {\n stack = true;\n }\n if (sortCombo === void 0) {\n sortCombo = true;\n }\n var currentComboSorted = this.get('comboSorted');\n this.set('comboSorted', currentComboSorted && !sortCombo);\n var itemController = this.get('itemController');\n var returnItems = [];\n // 1. add anything that is not an edge.\n // Add undefined as a placeholder for the next cycle. This way we return items matching the input order\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n if (item.type !== 'edge' && item.type !== 'vedge') {\n returnItems.push(this.innerAddItem(item.type, item.model, itemController));\n } else {\n returnItems.push(undefined);\n }\n }\n // 2. add all the edges\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n if (item.type === 'edge' || item.type === 'vedge') {\n returnItems[i] = this.innerAddItem(item.type, item.model, itemController);\n }\n }\n if (sortCombo) {\n var combos = this.get('combos');\n if (combos && combos.length > 0) {\n this.sortCombos();\n }\n }\n this.autoPaint();\n if (stack && this.get('enabledStack')) {\n var after = {\n nodes: [],\n edges: [],\n combos: []\n };\n for (var i = 0; i < items.length; i++) {\n var type = items[i].type;\n var returnItem = returnItems[i];\n if (!!returnItem && returnItem !== true) {\n var addedModel = __assign(__assign({}, returnItem.getModel()), {\n itemType: type\n });\n switch (type) {\n case 'node':\n after.nodes.push(addedModel);\n break;\n case 'edge':\n after.edges.push(addedModel);\n break;\n case 'combo':\n after.combos.push(addedModel);\n break;\n default:\n break;\n }\n }\n }\n this.pushStack('addItems', {\n before: {},\n after: after\n });\n }\n return returnItems;\n };\n /**\n * 新增元素\n * @param {ITEM_TYPE} type 元素类型(node | edge)\n * @param {ModelConfig} model 元素数据模型\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n * @param {boolean} sortCombo 本次操作是否需要更新 combo 层级顺序,内部参数,用户在外部使用 addItem 时始终时需要更新\n * @return {Item} 元素实例\n */\n AbstractGraph.prototype.add = function (type, model, stack, sortCombo) {\n if (stack === void 0) {\n stack = true;\n }\n if (sortCombo === void 0) {\n sortCombo = true;\n }\n return this.addItem(type, model, stack, sortCombo);\n };\n /**\n * 更新元素\n * @param {Item} item 元素id或元素实例\n * @param {Partial | EdgeConfig} cfg 需要更新的数据\n */\n AbstractGraph.prototype.updateItem = function (item, cfg, stack) {\n var _this = this;\n if (stack === void 0) {\n stack = true;\n }\n var itemController = this.get('itemController');\n var currentItem;\n if (isString(item)) {\n currentItem = this.findById(item);\n } else {\n currentItem = item;\n }\n var stackEnabled = stack && this.get('enabledStack');\n var unupdatedModel;\n if (stackEnabled) {\n unupdatedModel = clone(currentItem.getModel());\n }\n var type = '';\n if (currentItem.getType) type = currentItem.getType();\n var states = __spreadArray([], currentItem.getStates(), true);\n if (type === 'combo') {\n each(states, function (state) {\n return _this.setItemState(currentItem, state, false);\n });\n }\n itemController.updateItem(currentItem, cfg);\n if (type === 'combo') {\n each(states, function (state) {\n return _this.setItemState(currentItem, state, true);\n });\n }\n if (stackEnabled) {\n var before = {\n nodes: [],\n edges: [],\n combos: []\n };\n var after = {\n nodes: [],\n edges: [],\n combos: []\n };\n var afterModel = __assign({\n id: unupdatedModel.id\n }, cfg);\n switch (type) {\n case 'node':\n before.nodes.push(unupdatedModel);\n after.nodes.push(afterModel);\n break;\n case 'edge':\n before.edges.push(unupdatedModel);\n after.edges.push(afterModel);\n break;\n case 'combo':\n before.combos.push(unupdatedModel);\n after.combos.push(afterModel);\n break;\n default:\n break;\n }\n this.pushStack('update', {\n before: before,\n after: after\n });\n }\n };\n /**\n * 更新元素\n * @param {Item} item 元素id或元素实例\n * @param {Partial | EdgeConfig} cfg 需要更新的数据\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n AbstractGraph.prototype.update = function (item, cfg, stack) {\n if (stack === void 0) {\n stack = true;\n }\n this.updateItem(item, cfg, stack);\n };\n /**\n * 设置元素状态\n * @param {Item} item 元素id或元素实例\n * @param {string} state 状态名称\n * @param {string | boolean} value 是否启用状态 或 状态值\n */\n AbstractGraph.prototype.setItemState = function (item, state, value) {\n if (isString(item)) {\n item = this.findById(item);\n }\n var itemController = this.get('itemController');\n itemController.setItemState(item, state, value);\n var stateController = this.get('stateController');\n stateController.updateState(item, state, value);\n };\n /**\n * 将指定状态的优先级提升为最高优先级\n * @param {Item} item 元素id或元素实例\n * @param state 状态名称\n */\n AbstractGraph.prototype.priorityState = function (item, state) {\n var itemController = this.get('itemController');\n itemController.priorityState(item, state);\n };\n /**\n * 设置视图初始化数据\n * @param {GraphData} data 初始化数据\n */\n AbstractGraph.prototype.data = function (data) {\n dataValidation(data);\n this.set('data', data);\n };\n /**\n * 根据data接口的数据渲染视图\n */\n AbstractGraph.prototype.render = function () {\n var self = this;\n this.set('comboSorted', false);\n var data = this.get('data');\n if (this.get('enabledStack')) {\n // render 之前清空 redo 和 undo 栈\n this.clearStack();\n }\n if (!data) {\n throw new Error('data must be defined first');\n }\n var _a = data.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = data.edges,\n edges = _b === void 0 ? [] : _b,\n _c = data.combos,\n combos = _c === void 0 ? [] : _c;\n this.clear(true);\n this.emit('beforerender');\n self.addItems(nodes.map(function (node) {\n return {\n type: 'node',\n model: node\n };\n }), false, false);\n // process the data to tree structure\n if ((combos === null || combos === void 0 ? void 0 : combos.length) !== 0) {\n var comboTrees = plainCombosToTrees(combos, nodes);\n this.set('comboTrees', comboTrees);\n // add combos\n self.addCombos(combos);\n }\n self.addItems(edges.map(function (edge) {\n return {\n type: 'edge',\n model: edge\n };\n }), false, false);\n var animate = self.get('animate');\n if (self.get('fitView') || self.get('fitCenter')) {\n self.set('animate', false);\n }\n // layout\n var layoutController = self.get('layoutController');\n if (layoutController) {\n layoutController.layout(success);\n if (this.destroyed) return;\n } else {\n success();\n }\n // 将在 onLayoutEnd 中被调用\n function success() {\n // 自底向上将 collapsed 的 combo 合起\n (self.get('comboTrees') || []).forEach(function (ctree) {\n traverseTreeUp(ctree, function (child) {\n var item = self.findById(child.id);\n if (item.getType() === 'combo' && child.collapsed) {\n self.collapseCombo(child.id, false);\n self.updateCombo(item);\n }\n return true;\n });\n });\n // fitView 与 fitCenter 共存时,fitView 优先,fitCenter 不再执行\n if (self.get('fitView')) {\n self.fitView();\n } else if (self.get('fitCenter')) {\n self.fitCenter();\n }\n self.autoPaint();\n self.emit('afterrender');\n if (self.get('fitView') || self.get('fitCenter')) {\n self.set('animate', animate);\n }\n setTimeout(function () {\n var _a;\n (_a = self.getCombos()) === null || _a === void 0 ? void 0 : _a.forEach(function (combo) {\n combo.set('animate', true);\n });\n }, 0);\n }\n if (!this.get('groupByTypes')) {\n if (combos && combos.length !== 0) {\n this.sortCombos();\n } else {\n // 为提升性能,选择数量少的进行操作\n if (data.nodes && data.edges && data.nodes.length < data.edges.length) {\n var nodesArr = this.getNodes();\n // 遍历节点实例,将所有节点提前。\n nodesArr.forEach(function (node) {\n node.toFront();\n });\n } else {\n var edgesArr = this.getEdges();\n // 遍历节点实例,将所有节点提前。\n edgesArr.forEach(function (edge) {\n edge.toBack();\n });\n }\n }\n }\n };\n /**\n * 接收数据进行渲染\n * @Param {Object} data 初始化数据\n */\n AbstractGraph.prototype.read = function (data) {\n this.data(data);\n this.render();\n };\n // 比较item\n AbstractGraph.prototype.diffItems = function (type, items, models) {\n var self = this;\n var item;\n var itemMap = this.get('itemMap');\n each(models, function (model) {\n item = itemMap[model.id];\n if (item) {\n if (self.get('animate') && type === NODE) {\n var containerMatrix = item.getContainer().getMatrix();\n if (!containerMatrix) containerMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n item.set('originAttrs', {\n x: containerMatrix[6],\n y: containerMatrix[7]\n });\n }\n self.updateItem(item, model, false);\n } else {\n item = self.addItem(type, model, false);\n }\n if (item) items[\"\".concat(type, \"s\")].push(item);\n });\n };\n /**\n * 更改源数据,根据新数据重新渲染视图\n * @param {GraphData | TreeGraphData} data 源数据\n * @param {boolean} 是否入栈,默认为true\n * @return {object} this\n */\n AbstractGraph.prototype.changeData = function (propsData, stack) {\n var _this = this;\n var _a;\n if (stack === void 0) {\n stack = true;\n }\n var self = this;\n var data = propsData || self.get('data');\n if (!dataValidation(data)) {\n return this;\n }\n this.emit('beforechangedata');\n if (stack && this.get('enabledStack')) {\n this.pushStack('changedata', {\n before: self.save(),\n after: data\n });\n }\n this.set('comboSorted', false);\n // 删除 hulls\n this.removeHulls();\n // 更改数据源后,取消所有状态\n this.getNodes().map(function (node) {\n return self.clearItemStates(node);\n });\n this.getEdges().map(function (edge) {\n return self.clearItemStates(edge);\n });\n var canvas = this.get('canvas');\n var localRefresh = canvas.get('localRefresh');\n canvas.set('localRefresh', false);\n if (!self.get('data')) {\n self.data(data);\n self.render();\n }\n var itemMap = this.get('itemMap');\n var items = {\n nodes: [],\n edges: []\n };\n var combosData = data.combos;\n if (combosData) {\n var comboTrees = plainCombosToTrees(combosData, data.nodes);\n this.set('comboTrees', comboTrees);\n } else {\n this.set('comboTrees', []);\n }\n this.diffItems('node', items, data.nodes);\n each(itemMap, function (item, id) {\n itemMap[id].getModel().depth = 0;\n if (item.getType && item.getType() === 'edge') return;\n if (item.getType && item.getType() === 'combo') {\n delete itemMap[id];\n item.destroy();\n } else if (items.nodes.indexOf(item) < 0) {\n delete itemMap[id];\n self.remove(item, false);\n }\n });\n // clear the destroyed combos here to avoid removing sub nodes before removing the parent combo\n var comboItems = this.getCombos();\n var combosLength = comboItems.length;\n for (var i = combosLength - 1; i >= 0; i--) {\n if (comboItems[i].destroyed) {\n comboItems.splice(i, 1);\n }\n }\n // process the data to tree structure\n if (combosData) {\n // add combos\n self.addCombos(combosData);\n if (!this.get('groupByTypes')) {\n this.sortCombos();\n }\n }\n this.diffItems('edge', items, data.edges);\n each(itemMap, function (item, id) {\n if (item.getType && (item.getType() === 'node' || item.getType() === 'combo')) return;\n if (items.edges.indexOf(item) < 0) {\n delete itemMap[id];\n self.remove(item, false);\n }\n });\n // 自底向上将 collapsed 的 combo 合起\n (this.get('comboTrees') || []).forEach(function (ctree) {\n traverseTreeUp(ctree, function (child) {\n var item = _this.findById(child.id);\n if (item.getType() === 'combo' && child.collapsed) {\n _this.collapseCombo(child.id, false);\n }\n return true;\n });\n });\n this.set({\n nodes: items.nodes,\n edges: items.edges\n });\n var layoutController = this.get('layoutController');\n if (layoutController) {\n layoutController.changeData(function () {\n setTimeout(function () {\n var _a;\n (_a = self.getCombos()) === null || _a === void 0 ? void 0 : _a.forEach(function (combo) {\n combo.set('animate', true);\n });\n }, 0);\n });\n if (self.get('animate') && !layoutController.getLayoutType()) {\n // 如果没有指定布局\n self.positionsAnimate();\n (_a = self.getCombos()) === null || _a === void 0 ? void 0 : _a.forEach(function (combo) {\n return combo.set('animate', true);\n });\n } else {\n self.autoPaint();\n }\n }\n setTimeout(function () {\n canvas.set('localRefresh', localRefresh);\n }, 16);\n this.set('data', data);\n this.emit('afterchangedata');\n return this;\n };\n /**\n * 私有方法,在 render 和 changeData 的时候批量添加数据中所有平铺的 combos\n * @param {ComboConfig[]} combos 平铺的 combos 数据\n */\n AbstractGraph.prototype.addCombos = function (combos) {\n var self = this;\n var comboTrees = self.get('comboTrees');\n var itemController = this.get('itemController');\n itemController.addCombos(comboTrees, combos);\n };\n /**\n * 根据已经存在的节点或 combo 创建新的 combo\n * @param combo combo ID 或 Combo 配置\n * @param childrenIds 添加到 Combo 中的元素,包括节点和 combo\n */\n AbstractGraph.prototype.createCombo = function (combo, childrenIds, stack) {\n var _this = this;\n if (stack === void 0) {\n stack = true;\n }\n var itemController = this.get('itemController');\n this.set('comboSorted', false);\n // step 1: 创建新的 Combo\n var comboId = '';\n var comboConfig;\n if (!combo) return;\n if (isString(combo)) {\n comboId = combo;\n comboConfig = {\n id: combo\n };\n } else {\n comboId = combo.id;\n if (!comboId) {\n console.warn('Create combo failed. Please assign a unique string id for the adding combo.');\n return;\n }\n comboConfig = combo;\n }\n var shouldStack = stack && this.get('enabledStack');\n // cache the children's old parent for stack\n var childrenParentCache = {\n nodes: [],\n combos: []\n };\n if (shouldStack) {\n childrenIds.forEach(function (childId) {\n var childItem = _this.findById(childId);\n var childType = childItem.getType();\n if (childType !== 'node' && childType !== 'combo') return;\n var childModel = childItem.getModel();\n childrenParentCache[\"\".concat(childType, \"s\")].push({\n id: childId,\n parentId: childType === 'node' ? childModel.comboId : childModel.parentId\n });\n });\n }\n // step 2: Pull children out of their parents\n var comboTrees = this.get('comboTrees');\n var childrenIdsSet = new Set(childrenIds);\n var pulledComboTreesById = new Map();\n if (comboTrees) {\n comboTrees.forEach(function (ctree) {\n traverseTreeUp(ctree, function (treeNode, parentTreeNode, index) {\n if (childrenIdsSet.has(treeNode.id)) {\n if (parentTreeNode) {\n var parentItem = _this.findById(parentTreeNode.id);\n var item = _this.findById(treeNode.id);\n // Removing current item from the tree during the traversal is ok because children traversal is done\n // in an *inverse order* - indices of the next-traversed items are not disturbed by the removal.\n parentTreeNode.children.splice(index, 1);\n parentItem.removeChild(item);\n // We have to update the parent node geometry since nodes were removed from them, _while they are still visible_\n // (combos may be moved inside the new combo and become hidden)\n itemController.updateCombo(parentItem, parentTreeNode.children);\n }\n if (treeNode.itemType === 'combo') {\n pulledComboTreesById.set(treeNode.id, treeNode);\n }\n }\n return true;\n });\n });\n comboTrees = comboTrees.filter(function (ctree) {\n return !childrenIdsSet.has(ctree.id);\n });\n this.set('comboTrees', comboTrees);\n }\n // step 3: 更新 children,根据类型添加 comboId 或 parentId\n var newChildrenParent = {\n nodes: [],\n combos: []\n };\n var trees = childrenIds.map(function (elementId) {\n var item = _this.findById(elementId);\n var model = item.getModel();\n var type = '';\n if (item.getType) type = item.getType();\n // Combos will be just moved around, so their children can be preserved\n var cItem = pulledComboTreesById.get(elementId) || {\n id: item.getID(),\n itemType: type\n };\n if (type === 'combo') {\n cItem.parentId = comboId;\n model.parentId = comboId;\n } else if (type === 'node') {\n cItem.comboId = comboId;\n model.comboId = comboId;\n }\n if (shouldStack) {\n newChildrenParent[\"\".concat(type, \"s\")].push({\n id: model.id,\n parentId: comboId\n });\n }\n return cItem;\n });\n comboConfig.children = trees;\n // step 4: 添加 Combo,addItem 时会将子将元素添加到 Combo 中\n this.addItem('combo', comboConfig, false);\n this.set('comboSorted', false);\n // step 5: 更新 comboTrees 结构\n if (comboTrees) {\n comboTrees.forEach(function (ctree) {\n traverseTree(ctree, function (treeNode) {\n // Set the children to the newly created combo\n if (treeNode.id === comboId) {\n treeNode.itemType = 'combo';\n treeNode.children = trees;\n return false;\n }\n return true;\n });\n });\n this.sortCombos();\n }\n if (shouldStack) {\n newChildrenParent.combos.push(comboConfig);\n this.pushStack('createCombo', {\n before: childrenParentCache,\n after: newChildrenParent\n });\n }\n };\n /**\n * 解散 combo\n * @param {String | INode | ICombo} combo 需要被解散的 Combo item 或 id\n */\n AbstractGraph.prototype.uncombo = function (combo, stack) {\n var _this = this;\n var _a, _b;\n if (stack === void 0) {\n stack = true;\n }\n var self = this;\n var comboItem = combo;\n if (isString(combo)) {\n comboItem = this.findById(combo);\n }\n if (!comboItem || comboItem.getType && comboItem.getType() !== 'combo') {\n console.warn('The item is not a combo!');\n return;\n }\n var comboModel = comboItem.getModel();\n var parentId = comboItem.getModel().parentId;\n var comboTrees = self.get('comboTrees');\n if (!comboTrees) comboTrees = [];\n var itemMap = this.get('itemMap');\n var comboId = comboItem.get('id');\n var treeToBeUncombo;\n var brothers = [];\n var comboItems = this.get('combos');\n var parentItem = this.findById(parentId);\n var shouldStack = stack && this.get('enabledStack');\n var comboConfig = {};\n if (shouldStack) {\n comboConfig = clone(comboModel);\n comboConfig.children = [];\n }\n comboTrees.forEach(function (ctree) {\n if (treeToBeUncombo) return; // terminate the forEach\n traverseTreeUp(ctree, function (subtree) {\n var _a;\n // find the combo to be uncomboed, delete the combo from map and cache\n if (subtree.id === comboId) {\n treeToBeUncombo = subtree;\n // delete the related edges\n var edgeIds = comboItem.getEdges().map(function (edge) {\n return edge.getID();\n });\n edgeIds.forEach(function (edgeId) {\n _this.removeItem(edgeId, false);\n });\n var index = comboItems.indexOf(comboItem);\n comboItems.splice(index, 1);\n delete itemMap[comboId];\n var itemModel = clone(comboItem.getModel());\n comboItem.destroy();\n _this.emit('afterremoveitem', {\n item: itemModel,\n type: 'combo'\n });\n }\n // find the parent to remove the combo from the combo's brothers array and add the combo's children to the combo's brothers array in the tree\n if (parentId && treeToBeUncombo && subtree.id === parentId) {\n parentItem.removeCombo(comboItem);\n brothers = subtree.children; // the combo's brothers\n // remove the combo from its brothers array\n var index = brothers.indexOf(treeToBeUncombo);\n if (index !== -1) {\n brothers.splice(index, 1);\n }\n // append the combo's children to the combo's brothers array\n (_a = treeToBeUncombo.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n var item = _this.findById(child.id);\n var childModel = item.getModel();\n if (item.getType && item.getType() === 'combo') {\n child.parentId = parentId;\n delete child.comboId;\n childModel.parentId = parentId; // update the parentId of the model\n delete childModel.comboId;\n } else if (item.getType && item.getType() === 'node') {\n child.comboId = parentId;\n childModel.comboId = parentId; // update the parentId of the model\n }\n\n parentItem.addChild(item);\n brothers.push(child);\n });\n _this.updateCombo(parentItem);\n return false;\n }\n return true;\n });\n });\n // if the parentId is not found, remove the combo from the roots\n if (!parentId && treeToBeUncombo) {\n var index = comboTrees.indexOf(treeToBeUncombo);\n comboTrees.splice(index, 1);\n // modify the parentId of the children\n (_a = treeToBeUncombo.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n child.parentId = undefined;\n var childModel = _this.findById(child.id).getModel();\n delete childModel.parentId; // update the parentId of the model\n delete childModel.comboId; // update the comboId of the model\n if (child.itemType !== 'node') comboTrees.push(child);\n });\n }\n if (shouldStack) {\n // cache the children's old parent and combo model for stack\n var childrenParentCache_1 = {\n nodes: [],\n combos: []\n };\n var childNewParent_1 = {\n nodes: [],\n combos: []\n };\n (_b = treeToBeUncombo.children) === null || _b === void 0 ? void 0 : _b.forEach(function (child) {\n var childItem = _this.findById(child.id);\n var childType = childItem.getType();\n if (childType !== 'node' && childType !== 'combo') return;\n childrenParentCache_1[\"\".concat(childType, \"s\")].push({\n id: child.id,\n parentId: comboId\n });\n childNewParent_1[\"\".concat(childType, \"s\")].push({\n id: child.id,\n parentId: parentId\n });\n });\n childrenParentCache_1.combos.push(comboConfig);\n this.pushStack('uncombo', {\n before: childrenParentCache_1,\n after: childNewParent_1\n });\n }\n };\n /**\n * 根据 combo 位置更新内部节点位置 followCombo = true\n * 或根据内部元素的 bbox 更新所有 combos 的绘制,包括 combos 的位置和范围,followCombo = false\n */\n AbstractGraph.prototype.updateCombos = function (followCombo) {\n var _this = this;\n if (followCombo === void 0) {\n followCombo = false;\n }\n var self = this;\n var comboTrees = this.get('comboTrees');\n var itemController = self.get('itemController');\n var itemMap = self.get('itemMap');\n (comboTrees || []).forEach(function (ctree) {\n traverseTreeUp(ctree, function (child) {\n var _a;\n if (!child) {\n return true;\n }\n var childItem = itemMap[child.id];\n if (((_a = childItem === null || childItem === void 0 ? void 0 : childItem.getType) === null || _a === void 0 ? void 0 : _a.call(childItem)) === 'combo') {\n // 更新具体的 Combo 之前先清除所有的已有状态,以免将 state 中的样式更新为 Combo 的样式\n var states = __spreadArray([], childItem.getStates(), true);\n each(states, function (state) {\n return _this.setItemState(childItem, state, false);\n });\n // 更新具体的 Combo\n itemController.updateCombo(childItem, child.children, followCombo);\n // 更新 Combo 后,还原已有的状态\n each(states, function (state) {\n return _this.setItemState(childItem, state, true);\n });\n }\n return true;\n });\n });\n self.sortCombos();\n };\n /**\n * 根据节点的 bbox 更新 combo 及其祖先 combos 的绘制,包括 combos 的位置和范围\n * @param {String | ICombo} combo 需要被更新的 Combo 或 id,若指定,则该 Combo 及所有祖先 Combod 都会被更新\n */\n AbstractGraph.prototype.updateCombo = function (combo) {\n var _this = this;\n var self = this;\n var comboItem = combo;\n var comboId;\n if (isString(combo)) {\n comboItem = this.findById(combo);\n }\n if (!comboItem || comboItem.getType && comboItem.getType() !== 'combo') {\n console.warn('The item to be updated is not a combo!');\n return;\n }\n comboId = comboItem.get('id');\n var comboTrees = this.get('comboTrees');\n var itemController = self.get('itemController');\n var itemMap = self.get('itemMap');\n (comboTrees || []).forEach(function (ctree) {\n traverseTreeUp(ctree, function (child) {\n if (!child) {\n return true;\n }\n var childItem = itemMap[child.id];\n if (comboId === child.id && childItem && childItem.getType && childItem.getType() === 'combo') {\n // 更新具体的 Combo 之前先清除所有的已有状态,以免将 state 中的样式更新为 Combo 的样式\n var states = __spreadArray([], childItem.getStates(), true);\n // || !item.getStateStyle(stateName)\n each(states, function (state) {\n if (childItem.getStateStyle(state)) {\n _this.setItemState(childItem, state, false);\n }\n });\n // 更新具体的 Combo\n itemController.updateCombo(childItem, child.children);\n // 更新 Combo 后,还原已有的状态\n each(states, function (state) {\n if (childItem.getStateStyle(state)) {\n _this.setItemState(childItem, state, true);\n }\n });\n if (comboId) comboId = child.parentId;\n }\n return true;\n });\n });\n };\n /**\n * 更新树结构,例如移动子树等\n * @param {String | INode | ICombo} item 需要被更新的 Combo 或 节点 id\n * @param {string | undefined} parentId 新的父 combo id,undefined 代表没有父 combo\n */\n AbstractGraph.prototype.updateComboTree = function (item, parentId, stack) {\n if (stack === void 0) {\n stack = true;\n }\n var self = this;\n this.set('comboSorted', false);\n var uItem;\n if (isString(item)) {\n uItem = self.findById(item);\n } else {\n uItem = item;\n }\n var model = uItem.getModel();\n var oldParentId = model.comboId || model.parentId;\n var type = '';\n if (uItem.getType) type = uItem.getType();\n // 若 item 是 Combo,且 parentId 是其子孙 combo 的 id,则警告并终止\n if (parentId && type === 'combo') {\n var comboTrees = this.get('comboTrees');\n var valid_1 = true;\n var itemSubTree_1;\n (comboTrees || []).forEach(function (ctree) {\n if (itemSubTree_1) return;\n traverseTree(ctree, function (subTree) {\n if (itemSubTree_1) return;\n // 找到从 item 开始的子树\n if (subTree.id === uItem.getID()) {\n itemSubTree_1 = subTree;\n }\n return true;\n });\n });\n // 在以 item 为根的子树中寻找与 parentId 相同的后继元素\n traverseTree(itemSubTree_1, function (subTree) {\n if (subTree.id === parentId) {\n valid_1 = false;\n return false;\n }\n return true;\n });\n // parentId 是 item 的一个后继元素,不能进行更新\n if (!valid_1) {\n console.warn('Failed to update the combo tree! The parentId points to a descendant of the combo!');\n return;\n }\n }\n if (stack && this.get('enabledStack')) {\n var beforeData = {},\n afterData = {};\n if (type === 'combo') {\n beforeData.combos = [{\n id: model.id,\n parentId: model.parentId\n }];\n afterData.combos = [{\n id: model.id,\n parentId: parentId\n }];\n } else if (type === 'node') {\n beforeData.nodes = [{\n id: model.id,\n parentId: model.comboId\n }];\n afterData.nodes = [{\n id: model.id,\n parentId: parentId\n }];\n }\n this.pushStack('updateComboTree', {\n before: beforeData,\n after: afterData\n });\n }\n // 当 combo 存在 parentId 或 comboId 时,才将其移除\n if (model.parentId || model.comboId) {\n var combo = this.findById(model.parentId || model.comboId);\n if (combo) {\n combo.removeChild(uItem);\n }\n }\n if (type === 'combo') {\n model.parentId = parentId;\n } else if (type === 'node') {\n model.comboId = parentId;\n }\n // 只有当移入到指定 combo 时才添加\n if (parentId) {\n var parentCombo = this.findById(parentId);\n if (parentCombo) {\n // 将元素添加到 parentCombo 中\n parentCombo.addChild(uItem);\n }\n }\n // 如果原先有父亲 combo,则从原父 combo 的子元素数组中删除\n if (oldParentId) {\n var parentCombo = this.findById(oldParentId);\n if (parentCombo) {\n // 将元素从 parentCombo 中移除\n parentCombo.removeChild(uItem);\n }\n }\n var newComboTrees = reconstructTree(this.get('comboTrees'), model.id, parentId);\n this.set('comboTrees', newComboTrees);\n this.updateCombos();\n };\n /**\n * 导出图数据\n * @return {object} data\n */\n AbstractGraph.prototype.save = function () {\n var nodes = [];\n var edges = [];\n var combos = [];\n each(this.get('nodes'), function (node) {\n nodes.push(node.getModel());\n });\n each(this.get('edges'), function (edge) {\n edges.push(edge.getModel());\n });\n each(this.get('combos'), function (combo) {\n combos.push(combo.getModel());\n });\n return {\n nodes: nodes,\n edges: edges,\n combos: combos\n };\n };\n /**\n * 改变画布大小\n * @param {number} width 画布宽度\n * @param {number} height 画布高度\n * @return {object} this\n */\n AbstractGraph.prototype.changeSize = function (width, height) {\n var viewController = this.get('viewController');\n viewController.changeSize(width, height);\n return this;\n };\n /**\n * 当源数据在外部发生变更时,根据新数据刷新视图。但是不刷新节点位置\n */\n AbstractGraph.prototype.refresh = function () {\n var self = this;\n self.emit('beforegraphrefresh');\n if (self.get('animate')) {\n self.positionsAnimate();\n } else {\n var nodes = self.get('nodes');\n var edges = self.get('edges');\n var vedges = self.get('edges');\n each(nodes, function (node) {\n node.refresh();\n });\n each(edges, function (edge) {\n edge.refresh();\n });\n each(vedges, function (vedge) {\n vedge.refresh();\n });\n }\n self.emit('aftergraphrefresh');\n self.autoPaint();\n };\n /**\n * 获取当前图中所有节点的item实例\n * @return {INode} item数组\n */\n AbstractGraph.prototype.getNodes = function () {\n return this.get('nodes');\n };\n /**\n * 获取当前图中所有边的item实例\n * @return {IEdge} item数组\n */\n AbstractGraph.prototype.getEdges = function () {\n return this.get('edges');\n };\n /**\n * 获取图中所有的 combo 实例\n */\n AbstractGraph.prototype.getCombos = function () {\n return this.get('combos');\n };\n /**\n * 获取指定 Combo 中所有的节点\n * @param comboId combo ID\n */\n AbstractGraph.prototype.getComboChildren = function (combo) {\n if (isString(combo)) {\n combo = this.findById(combo);\n }\n if (!combo || combo.getType && combo.getType() !== 'combo') {\n console.warn('The combo does not exist!');\n return;\n }\n return combo.getChildren();\n };\n /**\n * 根据 graph 上的 animateCfg 进行视图中节点位置动画接口\n */\n AbstractGraph.prototype.positionsAnimate = function (referComboModel) {\n var self = this;\n self.emit('beforeanimate');\n var animateCfg = self.get('animateCfg');\n var onFrame = animateCfg.onFrame;\n var nodes = referComboModel ? self.getNodes().concat(self.getCombos()) : self.getNodes();\n var toNodes = nodes.map(function (node) {\n var model = node.getModel();\n return {\n id: model.id,\n x: model.x,\n y: model.y\n };\n });\n self.stopAnimate();\n var canvas = self.get('canvas');\n self.animating = true;\n canvas.animate(function (ratio) {\n each(toNodes, function (data) {\n var node = self.findById(data.id);\n if (!node || node.destroyed) {\n return;\n }\n var originAttrs = node.get('originAttrs');\n var model = node.get('model');\n var containerMatrix = node.getContainer().getMatrix();\n if (originAttrs === undefined || originAttrs === null) {\n // 变换前存在位置,设置到 originAttrs 上。否则标记 0 表示变换前不存在位置,不需要计算动画\n if (containerMatrix) {\n originAttrs = {\n x: containerMatrix[6],\n y: containerMatrix[7]\n };\n }\n node.set('originAttrs', originAttrs || 0);\n }\n if (onFrame) {\n var attrs = onFrame(node, ratio, data, originAttrs || {\n x: 0,\n y: 0\n });\n node.set('model', Object.assign(model, attrs));\n } else if (originAttrs) {\n // 变换前存在位置,进行动画\n model.x = originAttrs.x + (data.x - originAttrs.x) * ratio;\n model.y = originAttrs.y + (data.y - originAttrs.y) * ratio;\n } else {\n // 若在变换前不存在位置信息,则直接放到最终位置上\n model.x = data.x;\n model.y = data.y;\n }\n });\n self.refreshPositions(referComboModel);\n }, {\n duration: animateCfg.duration,\n easing: animateCfg.easing,\n callback: function callback() {\n each(nodes, function (node) {\n node.set('originAttrs', null);\n });\n if (animateCfg.callback) {\n animateCfg.callback();\n }\n self.emit('afteranimate');\n self.animating = false;\n }\n });\n };\n /**\n * 当节点位置在外部发生改变时,刷新所有节点位置,重计算边\n */\n AbstractGraph.prototype.refreshPositions = function (referComboModel) {\n var self = this;\n self.emit('beforegraphrefreshposition');\n var nodes = self.get('nodes');\n var edges = self.get('edges');\n var vedges = self.get('vedges');\n var combos = self.get('combos');\n var model;\n var updatedNodes = {};\n var updateItems = function updateItems(items) {\n each(items, function (item) {\n model = item.getModel();\n var originAttrs = item.get('originAttrs');\n if (originAttrs && model.x === originAttrs.x && model.y === originAttrs.y) {\n return;\n }\n var changed = item.updatePosition({\n x: model.x,\n y: model.y\n });\n updatedNodes[model.id] = changed;\n if (model.comboId) updatedNodes[model.comboId] = updatedNodes[model.comboId] || changed;\n if (model.parentId) updatedNodes[model.parentId] = updatedNodes[model.parentId] || changed;\n });\n };\n updateItems(combos);\n updateItems(nodes);\n if (combos && combos.length !== 0) {\n if (referComboModel) {\n updateItems(combos);\n self.updateCombos();\n } else {\n self.updateCombos();\n }\n }\n each(edges, function (edge) {\n var sourceModel = edge.getSource().getModel();\n var target = edge.getTarget();\n // 避免 target 是纯对象的情况下调用 getModel 方法\n // 拖动生成边的时候 target 会是纯对象\n if (!isPlainObject(target)) {\n var targetModel = target.getModel();\n if (updatedNodes[sourceModel.id] || updatedNodes[targetModel.id] || edge.getModel().isComboEdge) {\n edge.refresh();\n }\n }\n });\n each(vedges, function (vedge) {\n vedge.refresh();\n });\n self.emit('aftergraphrefreshposition');\n self.autoPaint();\n };\n AbstractGraph.prototype.stopAnimate = function () {\n if (this.isAnimating()) {\n this.get('canvas').stopAnimate();\n }\n };\n AbstractGraph.prototype.isAnimating = function () {\n return this.animating;\n };\n /**\n * 获取当前视口伸缩比例\n * @return {number} 比例\n */\n AbstractGraph.prototype.getZoom = function () {\n var matrix = this.get('group').getMatrix();\n return matrix ? matrix[0] : 1;\n };\n /**\n * 获取当前的行为模式\n * @return {string} 当前行为模式\n */\n AbstractGraph.prototype.getCurrentMode = function () {\n var modeController = this.get('modeController');\n return modeController.getMode();\n };\n /**\n * 切换行为模式\n * @param {string} mode 指定模式\n * @return {object} this\n */\n AbstractGraph.prototype.setMode = function (mode) {\n var modeController = this.get('modeController');\n modeController.setMode(mode);\n return this;\n };\n /**\n * 清除画布元素\n * @return {object} this\n */\n AbstractGraph.prototype.clear = function (avoidEmit) {\n var _a;\n if (avoidEmit === void 0) {\n avoidEmit = false;\n }\n (_a = this.get('canvas')) === null || _a === void 0 ? void 0 : _a.clear();\n this.initGroups();\n // 清空画布时同时清除数据\n this.set({\n itemMap: {},\n nodes: [],\n edges: [],\n vedges: [],\n groups: [],\n combos: [],\n comboTrees: []\n });\n if (!avoidEmit) this.emit('afterrender');\n return this;\n };\n /**\n * 更换布局配置项\n * @param {object} cfg 新布局配置项\n * @param {'center' | 'begin'} align 对齐方式,可选中心(center)对齐到对齐点,或左上角(begin)对齐到对齐点\n * @param {IPoint} alignPoint 画布上的对齐点,为 Canvas 坐标系(Canvas DOM)\n * 若 cfg 含有 type 字段或为 String 类型,且与现有布局方法不同,则更换布局\n * 若 cfg 不包括 type ,则保持原有布局方法,仅更新布局配置项\n */\n AbstractGraph.prototype.updateLayout = function (cfg, align, alignPoint, stack) {\n var _this = this;\n if (cfg === void 0) {\n cfg = {};\n }\n if (stack === void 0) {\n stack = true;\n }\n var layoutController = this.get('layoutController');\n if (isString(cfg)) {\n cfg = {\n type: cfg\n };\n }\n // align the graph after layout\n if (align) {\n var toPoint_1 = alignPoint;\n if (!toPoint_1) {\n if (align === 'begin') toPoint_1 = {\n x: 0,\n y: 0\n };else toPoint_1 = {\n x: this.getWidth() / 2,\n y: this.getHeight() / 2\n };\n }\n // translate to point coordinate system\n toPoint_1 = this.getPointByCanvas(toPoint_1.x, toPoint_1.y);\n var forceTypes = ['force', 'gForce', 'fruchterman', 'force2'];\n // if it is force layout, only center takes effect, and assign center force\n if (forceTypes.includes(cfg.type) || !cfg.type && forceTypes.includes(layoutController === null || layoutController === void 0 ? void 0 : layoutController.layoutType)) {\n cfg.center = [toPoint_1.x, toPoint_1.y];\n } else {\n this.once('afterlayout', function (e) {\n var matrix = _this.getGroup().getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n toPoint_1.x = toPoint_1.x * matrix[0] + matrix[6];\n toPoint_1.y = toPoint_1.y * matrix[0] + matrix[7];\n var _a = _this.getGroup().getCanvasBBox(),\n minX = _a.minX,\n maxX = _a.maxX,\n minY = _a.minY,\n maxY = _a.maxY;\n var bboxPoint = {\n x: (minX + maxX) / 2,\n y: (minY + maxY) / 2\n };\n if (align === 'begin') {\n bboxPoint.x = minX;\n bboxPoint.y = minY;\n }\n _this.translate(toPoint_1.x - bboxPoint.x, toPoint_1.y - bboxPoint.y);\n });\n }\n }\n var oriLayoutCfg = __assign({}, this.get('layout'));\n var layoutCfg = {};\n Object.assign(layoutCfg, oriLayoutCfg, cfg);\n if (cfg.pipes && !cfg.type) delete layoutCfg.type;else if (!cfg.pipes && layoutCfg.type) delete layoutCfg.pipes;\n this.set('layout', layoutCfg);\n if (!layoutController) return;\n if (layoutController.isLayoutTypeSame(layoutCfg) && layoutCfg.gpuEnabled === oriLayoutCfg.gpuEnabled) {\n // no type or same type, or switch the gpu and cpu, update layout\n layoutController.updateLayoutCfg(layoutCfg);\n } else {\n // has different type, change layout\n layoutController.changeLayout(layoutCfg);\n }\n if (stack && this.get('enabledStack')) {\n this.pushStack('layout', {\n before: oriLayoutCfg,\n after: layoutCfg\n });\n }\n };\n /**\n * 销毁布局,changeData 时不会再使用原来的布局方法对新数据进行布局\n */\n AbstractGraph.prototype.destroyLayout = function () {\n var layoutController = this.get('layoutController');\n layoutController === null || layoutController === void 0 ? void 0 : layoutController.destroyLayout();\n };\n /**\n * 重新以当前示例中配置的属性进行一次布局\n */\n AbstractGraph.prototype.layout = function () {\n var _a;\n var layoutController = this.get('layoutController');\n var layoutCfg = this.get('layout');\n if (!layoutCfg || !layoutController) return;\n if (layoutCfg.workerEnabled) {\n // 如果使用web worker布局\n layoutController.layout();\n return;\n }\n if ((_a = layoutController.layoutMethods) === null || _a === void 0 ? void 0 : _a.length) {\n layoutController.relayout(true);\n } else {\n layoutController.layout();\n }\n };\n /**\n * 收起指定的 combo\n * @param {string | ICombo} combo combo ID 或 combo item\n */\n AbstractGraph.prototype.collapseCombo = function (combo, stack) {\n var _this = this;\n if (stack === void 0) {\n stack = true;\n }\n if (this.destroyed) return;\n if (isString(combo)) {\n combo = this.findById(combo);\n }\n if (!combo) {\n console.warn('The combo to be collapsed does not exist!');\n return;\n }\n this.emit('beforecollapseexpandcombo', {\n action: 'expand',\n item: combo\n });\n var comboModel = combo.getModel();\n var itemController = this.get('itemController');\n itemController.collapseCombo(combo, stack);\n comboModel.collapsed = true;\n // add virtual edges\n var edges = this.getEdges().concat(this.get('vedges'));\n // find all the descendant nodes and combos\n var cNodesCombos = [];\n var comboTrees = this.get('comboTrees');\n var found = false;\n (comboTrees || []).forEach(function (ctree) {\n if (found) return; // if the combo is found, terminate the forEach\n traverseTree(ctree, function (subTree) {\n // if the combo is found and it is traversing the other branches, terminate\n if (found && subTree.depth <= comboModel.depth) return false;\n // if the combo is found\n if (comboModel.id === subTree.id) found = true;\n if (found) {\n // if the combo is found, concat the descendant nodes and combos\n var item = _this.findById(subTree.id);\n if (item && item.getType && item.getType() === 'combo') {\n cNodesCombos = cNodesCombos.concat(item.getNodes());\n cNodesCombos = cNodesCombos.concat(item.getCombos());\n }\n }\n return true;\n });\n });\n var addedVEdgeMap = {};\n edges.forEach(function (edge) {\n var _a = edge.getModel(),\n isVEdge = _a.isVEdge,\n _b = _a.size,\n size = _b === void 0 ? 1 : _b;\n if (edge.isVisible() && !isVEdge) return;\n var source = edge.getSource();\n var target = edge.getTarget();\n var otherEnd = null;\n var otherEndIsSource;\n if (source.getModel().id === comboModel.id || cNodesCombos.includes(source) && !cNodesCombos.includes(target)) {\n // source is the current combo, or descent node/combo is the source but not the target)\n otherEnd = target;\n otherEndIsSource = false;\n } else if (target.getModel().id === comboModel.id || !cNodesCombos.includes(source) && cNodesCombos.includes(target)) {\n // target is the current combo, or descent node/combo is the target but not the source)\n otherEnd = source;\n otherEndIsSource = true;\n }\n if (otherEnd) {\n if (isVEdge) {\n _this.removeItem(edge, false);\n return;\n }\n var otherEndModel = otherEnd.getModel();\n while (!otherEnd.isVisible()) {\n var otherEndPId = otherEndModel.parentId,\n otherEndCId = otherEndModel.comboId;\n var otherEndParentId = otherEndPId || otherEndCId;\n otherEnd = _this.findById(otherEndParentId);\n if (!otherEnd || !otherEndParentId) return; // all the ancestors are hidden, then ignore the edge\n otherEndModel = otherEnd.getModel();\n }\n var otherEndId = otherEndModel.id;\n var vEdgeInfo = otherEndIsSource ? {\n source: otherEndId,\n target: comboModel.id,\n size: size,\n isVEdge: true\n } : {\n source: comboModel.id,\n target: otherEndId,\n size: size,\n isVEdge: true\n };\n var key = \"\".concat(vEdgeInfo.source, \"-\").concat(vEdgeInfo.target);\n if (addedVEdgeMap[key]) {\n addedVEdgeMap[key].size += size;\n return;\n }\n addedVEdgeMap[key] = vEdgeInfo;\n }\n });\n // update the width of the virtual edges, which is the sum of merged actual edges\n // be attention that the actual edges with same endpoints but different directions will be represented by two different virtual edges\n this.addItems(Object.values(addedVEdgeMap).map(function (edgeInfo) {\n return {\n type: 'vedge',\n model: edgeInfo\n };\n }), false);\n this.emit('aftercollapseexpandcombo', {\n action: 'collapse',\n item: combo\n });\n };\n /**\n * 展开指定的 combo\n * @param {string | ICombo} combo combo ID 或 combo item\n */\n AbstractGraph.prototype.expandCombo = function (combo, stack) {\n var _this = this;\n if (stack === void 0) {\n stack = true;\n }\n if (isString(combo)) {\n combo = this.findById(combo);\n }\n if (!combo || combo.getType && combo.getType() !== 'combo') {\n console.warn('The combo to be collapsed does not exist!');\n return;\n }\n this.emit('beforecollapseexpandcombo', {\n action: 'expand',\n item: combo\n });\n var comboModel = combo.getModel();\n var itemController = this.get('itemController');\n itemController.expandCombo(combo, stack);\n comboModel.collapsed = false;\n // add virtual edges\n var edges = this.getEdges().concat(this.get('vedges'));\n // find all the descendant nodes and combos\n var cNodesCombos = [];\n var comboTrees = this.get('comboTrees');\n var found = false;\n (comboTrees || []).forEach(function (ctree) {\n if (found) return; // if the combo is found, terminate\n traverseTree(ctree, function (subTree) {\n // if the combo is found and it is traversing the other branches, terminate\n if (found && subTree.depth <= comboModel.depth) return false;\n if (comboModel.id === subTree.id) found = true;\n if (found) {\n var item = _this.findById(subTree.id);\n if (item && item.getType && item.getType() === 'combo') {\n cNodesCombos = cNodesCombos.concat(item.getNodes());\n cNodesCombos = cNodesCombos.concat(item.getCombos());\n }\n }\n return true;\n });\n });\n var addedVEdgeMap = {};\n edges.forEach(function (edge) {\n if (edge.isVisible() && !edge.getModel().isVEdge) return;\n var source = edge.getSource();\n var target = edge.getTarget();\n var sourceId = source.get('id');\n var targetId = target.get('id');\n var otherEnd = null;\n var otherEndIsSource;\n if (sourceId === comboModel.id || cNodesCombos.includes(source) && !cNodesCombos.includes(target)) {\n // the source is in the combo, the target is not\n otherEnd = target;\n otherEndIsSource = false;\n } else if (targetId === comboModel.id || !cNodesCombos.includes(source) && cNodesCombos.includes(target)) {\n // the target is in the combo, the source is not\n otherEnd = source;\n otherEndIsSource = true;\n } else if (cNodesCombos.includes(source) && cNodesCombos.includes(target)) {\n // both source and target are in the combo, if the target and source are both visible, show the edge\n if (source.isVisible() && target.isVisible()) {\n edge.show();\n }\n }\n if (otherEnd) {\n var _a = edge.getModel(),\n isVEdge = _a.isVEdge,\n _b = _a.size,\n size = _b === void 0 ? 1 : _b;\n // ignore the virtual edges\n if (isVEdge) {\n _this.removeItem(edge, false);\n return;\n }\n var otherEndModel = otherEnd.getModel();\n // find the nearest visible ancestor\n while (!otherEnd.isVisible()) {\n var otherEndPId = otherEndModel.parentId,\n otherEndCId = otherEndModel.comboId;\n var otherEndParentId = otherEndPId || otherEndCId;\n otherEnd = _this.findById(otherEndParentId);\n if (!otherEnd || !otherEndParentId) {\n return; // if all the ancestors of the oppsite are all hidden, ignore the edge\n }\n\n otherEndModel = otherEnd.getModel();\n }\n var otherEndId = otherEndModel.id;\n var selfEnd = otherEndIsSource ? target : source;\n var selfEndModel = selfEnd.getModel();\n // find the nearest visible ancestor\n while (!selfEnd.isVisible()) {\n var selfEndPId = selfEndModel.parentId,\n selfEndCId = selfEndModel.comboId;\n var selfEndParentId = selfEndPId || selfEndCId;\n selfEnd = _this.findById(selfEndParentId);\n if (!selfEnd || !selfEndParentId) {\n return; // if all the ancestors of the oppsite are all hidden, ignore the edge\n }\n\n if (selfEndModel.comboId === comboModel.id || selfEndModel.parentId === comboModel.id) {\n break; // if the next ancestor is the combo, break the while\n }\n\n selfEndModel = selfEnd.getModel();\n }\n var selfEndId = selfEndModel.id;\n if (otherEndId) {\n var vEdgeInfo = otherEndIsSource ? {\n source: otherEndId,\n target: selfEndId,\n isVEdge: true,\n size: size\n } : {\n source: selfEndId,\n target: otherEndId,\n isVEdge: true,\n size: size\n };\n var vedgeId = \"\".concat(vEdgeInfo.source, \"-\").concat(vEdgeInfo.target);\n // update the width of the virtual edges, which is the sum of merged actual edges\n // be attention that the actual edges with same endpoints but different directions will be represented by two different virtual edges\n if (addedVEdgeMap[vedgeId]) {\n addedVEdgeMap[vedgeId].size += size;\n return;\n }\n addedVEdgeMap[vedgeId] = vEdgeInfo;\n }\n }\n });\n this.addItems(Object.values(addedVEdgeMap).map(function (edgeInfo) {\n return {\n type: 'vedge',\n model: edgeInfo\n };\n }), false);\n this.emit('aftercollapseexpandcombo', {\n action: 'expand',\n item: combo\n });\n };\n AbstractGraph.prototype.collapseExpandCombo = function (combo, stack) {\n if (stack === void 0) {\n stack = true;\n }\n if (isString(combo)) {\n combo = this.findById(combo);\n }\n if (!combo || combo.getType && combo.getType() !== 'combo') return;\n var comboModel = combo.getModel();\n // if one ancestor combo of the combo is collapsed, it should not be collapsed or expanded\n var parentItem = this.findById(comboModel.parentId);\n while (parentItem) {\n var parentModel = parentItem.getModel();\n if (parentModel.collapsed) {\n console.warn(\"Fail to expand the combo since it's ancestor combo is collapsed.\");\n parentItem = undefined;\n return;\n }\n parentItem = this.findById(parentModel.parentId);\n }\n var collapsed = comboModel.collapsed;\n // 该群组已经处于收起状态,需要展开\n if (collapsed) {\n this.expandCombo(combo, stack);\n } else {\n this.collapseCombo(combo, stack);\n }\n this.updateCombo(combo);\n };\n /**\n * 获取节点所有的邻居节点\n *\n * @param {(string | INode)} node 节点 ID 或实例\n * @returns {INode[]}\n * @memberof IAbstractGraph\n */\n AbstractGraph.prototype.getNeighbors = function (node, type) {\n var item = node;\n if (isString(node)) {\n item = this.findById(node);\n }\n return item.getNeighbors(type);\n };\n /**\n * 获取 node 的度数\n *\n * @param {(string | INode)} node 节点 ID 或实例\n * @param {('in' | 'out' | 'total' | 'all' | undefined)} 度数类型,in 入度,out 出度,total 总度数,all 返回三种类型度数的对象\n * @returns {Number | Object} 该节点的度数\n * @memberof IAbstractGraph\n */\n AbstractGraph.prototype.getNodeDegree = function (node, type, refresh) {\n if (type === void 0) {\n type = undefined;\n }\n if (refresh === void 0) {\n refresh = false;\n }\n var item = node;\n if (isString(node)) {\n item = this.findById(node);\n }\n var degrees = this.get('degrees');\n if (!degrees || refresh) {\n degrees = getDegree(this.save());\n this.set('degrees', degrees);\n }\n var nodeDegrees = degrees[item.getID()];\n var res = 0;\n // 如果是通过 addItem 后面新增加的节点,此时它的所有度数都为 0\n if (!nodeDegrees) {\n return 0;\n }\n switch (type) {\n case 'in':\n res = nodeDegrees.inDegree;\n break;\n case 'out':\n res = nodeDegrees.outDegree;\n break;\n case 'all':\n res = nodeDegrees;\n break;\n default:\n res = nodeDegrees.degree;\n break;\n }\n return res;\n };\n AbstractGraph.prototype.getUndoStack = function () {\n return this.undoStack;\n };\n AbstractGraph.prototype.getRedoStack = function () {\n return this.redoStack;\n };\n /**\n * 获取 undo 和 redo 栈的数据\n */\n AbstractGraph.prototype.getStackData = function () {\n if (!this.get('enabledStack')) {\n return null;\n }\n return {\n undoStack: this.undoStack.toArray(),\n redoStack: this.redoStack.toArray()\n };\n };\n /**\n * 清空 undo stack & redo stack\n */\n AbstractGraph.prototype.clearStack = function () {\n if (this.get('enabledStack')) {\n this.undoStack.clear();\n this.redoStack.clear();\n this.emit('stackchange', {\n undoStack: this.undoStack,\n redoStack: this.redoStack\n });\n }\n };\n /**\n * 将操作类型和操作数据入栈\n * @param action 操作类型\n * @param data 入栈的数据\n * @param stackType 栈的类型\n */\n AbstractGraph.prototype.pushStack = function (action, data, stackType) {\n if (action === void 0) {\n action = 'update';\n }\n if (stackType === void 0) {\n stackType = 'undo';\n }\n if (!this.get('enabledStack')) {\n console.warn('请先启用 undo & redo 功能,在实例化 Graph 时候配置 enabledStack: true !');\n return;\n }\n var stackData = data ? clone(data) : {\n before: {},\n after: clone(this.save())\n };\n if (stackType === 'redo') {\n this.redoStack.push({\n action: action,\n data: stackData\n });\n } else {\n this.undoStack.push({\n action: action,\n data: stackData\n });\n }\n this.emit('stackchange', {\n action: action,\n stackType: stackType,\n undoStack: this.undoStack,\n redoStack: this.redoStack\n });\n };\n /**\n * 获取邻接矩阵\n *\n * @param {boolean} cache 是否使用缓存的\n * @param {boolean} directed 是否是有向图,默认取 graph.directed\n * @returns {Matrix} 邻接矩阵\n * @memberof IAbstractGraph\n */\n AbstractGraph.prototype.getAdjMatrix = function (cache, directed) {\n if (cache === void 0) {\n cache = true;\n }\n if (directed === undefined) directed = this.get('directed');\n var currentAdjMatrix = this.get('adjMatrix');\n if (!currentAdjMatrix || !cache) {\n currentAdjMatrix = getAdjacentMatrix(this.save(), directed);\n this.set('adjMatrix', currentAdjMatrix);\n }\n return currentAdjMatrix;\n };\n /**\n * 获取最短路径矩阵\n *\n * @param {boolean} cache 是否使用缓存的\n * @param {boolean} directed 是否是有向图,默认取 graph.directed\n * @returns {Matrix} 最短路径矩阵\n * @memberof IAbstractGraph\n */\n AbstractGraph.prototype.getShortestPathMatrix = function (cache, directed) {\n if (cache === void 0) {\n cache = true;\n }\n if (directed === undefined) directed = this.get('directed');\n var currentAdjMatrix = this.get('adjMatrix');\n var currentShourtestPathMatrix = this.get('shortestPathMatrix');\n if (!currentAdjMatrix || !cache) {\n currentAdjMatrix = getAdjacentMatrix(this.save(), directed);\n this.set('adjMatrix', currentAdjMatrix);\n }\n if (!currentShourtestPathMatrix || !cache) {\n currentShourtestPathMatrix = floydWarshall(this.save(), directed);\n this.set('shortestPathMatrix', currentShourtestPathMatrix);\n }\n return currentShourtestPathMatrix;\n };\n /**\n * 重新定义监听函数,复写参数类型\n */\n AbstractGraph.prototype.on = function (eventName, callback, once) {\n return _super.prototype.on.call(this, eventName, callback, once);\n };\n /**\n * 销毁画布\n */\n AbstractGraph.prototype.destroy = function () {\n var _a, _b, _c, _d, _e;\n this.clear();\n // 清空栈数据\n this.clearStack();\n (_a = this.get('itemController')) === null || _a === void 0 ? void 0 : _a.destroy();\n (_b = this.get('modeController')) === null || _b === void 0 ? void 0 : _b.destroy();\n (_c = this.get('viewController')) === null || _c === void 0 ? void 0 : _c.destroy();\n (_d = this.get('stateController')) === null || _d === void 0 ? void 0 : _d.destroy();\n (_e = this.get('canvas')) === null || _e === void 0 ? void 0 : _e.destroy();\n this.cfg = null;\n this.destroyed = true;\n this.redoStack = null;\n this.undoStack = null;\n };\n /**\n * 创建凸包或凹包轮廓\n * @param cfg HullCfg 轮廓配置项\n */\n AbstractGraph.prototype.createHull = function (cfg) {\n if (!cfg.members || cfg.members.length < 1) {\n console.warn('Create hull failed! The members is empty.');\n return;\n }\n var parent = this.get('hullGroup');\n var hullMap = this.get('hullMap');\n if (!hullMap) {\n hullMap = {};\n this.set('hullMap', hullMap);\n }\n if (!parent || parent.get('destroyed')) {\n parent = this.get('group').addGroup({\n id: 'hullGroup'\n });\n parent.toBack();\n this.set('hullGroup', parent);\n }\n if (hullMap[cfg.id]) {\n console.warn('Existed hull id.');\n return hullMap[cfg.id];\n }\n var group = parent.addGroup({\n id: \"\".concat(cfg.id, \"-container\")\n });\n var hull = new Hull(this, __assign(__assign({}, cfg), {\n group: group\n }));\n var hullId = hull.id;\n hullMap[hullId] = hull;\n return hull;\n };\n /**\n * 获取当前 graph 中存在的包裹轮廓\n * @return {[key: string]: Hull} Hull 的 map,hullId 对应的 hull 实例\n */\n AbstractGraph.prototype.getHulls = function () {\n return this.get('hullMap');\n };\n /**\n * 根据 hullId 获取对应的 hull\n * @return Hull\n */\n AbstractGraph.prototype.getHullById = function (hullId) {\n return this.get('hullMap')[hullId];\n };\n AbstractGraph.prototype.removeHull = function (hull) {\n var _a;\n var hullInstance;\n if (isString(hull)) {\n hullInstance = this.getHullById(hull);\n } else {\n hullInstance = hull;\n }\n (_a = this.get('hullMap')) === null || _a === void 0 ? true : delete _a[hullInstance.id];\n hullInstance.destroy();\n };\n AbstractGraph.prototype.removeHulls = function () {\n var hulls = this.getHulls();\n if (!hulls || !Object.keys(hulls).length) return;\n Object.keys(hulls).forEach(function (key) {\n var hull = hulls[key];\n hull.destroy();\n });\n this.set('hullMap', {});\n };\n return AbstractGraph;\n}(EventEmitter);\nexport default AbstractGraph;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nimport { __assign } from \"tslib\";\nimport Global from '../global';\nimport { ext } from '@antv/matrix-util';\nimport { deepMix, each, mix, isBoolean, isPlainObject, clone } from '@antv/util';\nimport { cloneBesidesImg } from '../util/graphic';\nvar transform = ext.transform;\nvar CLS_SHAPE_SUFFIX = '-shape';\nvar CLS_LABEL_SUFFIX = '-label';\nvar ARROWS = ['startArrow', 'endArrow'];\nvar SHAPE_DEFAULT_ATTRS = {\n lineWidth: 1,\n stroke: undefined,\n fill: undefined,\n lineAppendWidth: 1,\n opacity: undefined,\n strokeOpacity: undefined,\n fillOpacity: undefined,\n x: 0,\n y: 0,\n r: 10,\n width: 20,\n height: 20,\n shadowColor: undefined,\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0\n};\nvar PATH_SHAPE_DEFAULT_ATTRS = {\n lineWidth: 1,\n stroke: '#000',\n lineDash: undefined,\n startArrow: false,\n endArrow: false,\n opacity: undefined,\n strokeOpacity: undefined,\n fillOpacity: undefined,\n shadowColor: undefined,\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0\n};\nvar SHAPES_DEFAULT_ATTRS = {\n edge: PATH_SHAPE_DEFAULT_ATTRS,\n node: SHAPE_DEFAULT_ATTRS,\n combo: SHAPE_DEFAULT_ATTRS\n};\nexport var CLS_LABEL_BG_SUFFIX = '-label-bg';\n// 单个 shape 带有一个 label,共用这段代码\nexport var shapeBase = {\n // 默认样式及配置\n options: {\n labelCfg: {\n style: {\n fontFamily: Global.windowFontFamily\n }\n },\n descriptionCfg: {\n style: {\n fontFamily: Global.windowFontFamily\n }\n }\n },\n itemType: '',\n /**\n * 形状的类型,例如 circle,ellipse,polyline...\n */\n type: '',\n getCustomConfig: function getCustomConfig(cfg) {\n return {};\n },\n getOptions: function getOptions(cfg, updateType) {\n if (updateType === 'move' || (updateType === null || updateType === void 0 ? void 0 : updateType.includes('bbox'))) return cfg;\n return deepMix({}, this.options, this.getCustomConfig(cfg) || {}, cfg);\n },\n /**\n * 绘制节点/边,包含文本\n * @override\n * @param {Object} cfg 节点的配置项\n * @param {G.Group} group 节点的容器\n * @return {IShape} 绘制的图形\n */\n draw: function draw(cfg, group) {\n group['shapeMap'] = {};\n this.mergeStyle = this.getOptions(cfg);\n var shape = this.drawShape(cfg, group);\n shape.set('className', this.itemType + CLS_SHAPE_SUFFIX);\n group['shapeMap'][this.itemType + CLS_SHAPE_SUFFIX] = shape;\n if (cfg.label) {\n var label = this.drawLabel(cfg, group);\n label.set('className', this.itemType + CLS_LABEL_SUFFIX);\n group['shapeMap'][this.itemType + CLS_LABEL_SUFFIX] = label;\n }\n return shape;\n },\n /**\n * 绘制完成后的操作,便于用户继承现有的节点、边\n * @param cfg\n * @param group\n * @param keyShape\n */\n afterDraw: function afterDraw(cfg, group, keyShape) {},\n drawShape: function drawShape(cfg, group) {\n return null;\n },\n drawLabel: function drawLabel(cfg, group) {\n var defaultLabelCfg = (this.mergeStyle || this.getOptions(cfg) || {}).labelCfg;\n // image的情况下有可能为null\n var labelCfg = defaultLabelCfg || {};\n var labelStyle = this.getLabelStyle(cfg, labelCfg, group);\n var rotate = labelStyle.rotate;\n delete labelStyle.rotate;\n var label = group.addShape('text', {\n attrs: labelStyle,\n draggable: true,\n className: 'text-shape',\n name: 'text-shape',\n labelRelated: true\n });\n group['shapeMap']['text-shape'] = label;\n if (!isNaN(rotate) && rotate !== '') {\n var labelBBox = label.getBBox();\n var labelMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n if (labelStyle.rotateCenter) {\n switch (labelStyle.rotateCenter) {\n case 'center':\n labelMatrix = transform(labelMatrix, [['t', -labelBBox.width / 2, -labelBBox.height / 2], ['r', rotate], ['t', labelBBox.width / 2, labelBBox.height / 2]]);\n break;\n case 'lefttop':\n labelMatrix = transform(labelMatrix, [['t', -labelStyle.x, -labelStyle.y], ['r', rotate], ['t', labelStyle.x, labelStyle.y]]);\n break;\n case 'leftcenter':\n labelMatrix = transform(labelMatrix, [['t', -labelStyle.x, -labelStyle.y - labelBBox.height / 2], ['r', rotate], ['t', labelStyle.x, labelStyle.y + labelBBox.height / 2]]);\n break;\n default:\n labelMatrix = transform(labelMatrix, [['t', -labelBBox.width / 2, -labelBBox.height / 2], ['r', rotate], ['t', labelBBox.width / 2, labelBBox.height / 2]]);\n break;\n }\n } else {\n labelMatrix = transform(labelMatrix, [['t', -labelStyle.x, -labelStyle.y - labelBBox.height / 2], ['r', rotate], ['t', labelStyle.x, labelStyle.y + labelBBox.height / 2]]);\n }\n label.setMatrix(labelMatrix);\n }\n if (labelStyle.background) {\n var rect = this.drawLabelBg(cfg, group, label);\n var labelBgClassname = this.itemType + CLS_LABEL_BG_SUFFIX;\n rect.set('classname', labelBgClassname);\n group['shapeMap'][labelBgClassname] = rect;\n label.toFront();\n }\n return label;\n },\n drawLabelBg: function drawLabelBg(cfg, group, label) {\n var defaultLabelCfg = this.options.labelCfg;\n var labelCfg = mix({}, defaultLabelCfg, cfg.labelCfg);\n var style = this.getLabelBgStyleByPosition(label, labelCfg);\n var rect = group.addShape('rect', {\n name: 'text-bg-shape',\n attrs: style,\n labelRelated: true\n });\n group['shapeMap']['text-bg-shape'] = rect;\n return rect;\n },\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg, group) {\n return {\n text: cfg.label\n };\n },\n getLabelBgStyleByPosition: function getLabelBgStyleByPosition(label, labelCfg) {\n return {};\n },\n /**\n * 获取文本的配置项\n * @param cfg 节点的配置项\n * @param labelCfg 文本的配置项\n * @param group 父容器,label 的定位可能与图形相关\n */\n getLabelStyle: function getLabelStyle(cfg, labelCfg, group) {\n var calculateStyle = this.getLabelStyleByPosition(cfg, labelCfg, group);\n var attrName = \"\".concat(this.itemType, \"Label\"); // 取 nodeLabel,edgeLabel 的配置项\n var defaultStyle = Global[attrName] ? Global[attrName].style : null;\n return __assign(__assign(__assign({}, defaultStyle), calculateStyle), labelCfg.style);\n },\n /**\n * 获取图形的配置项\n * @param cfg\n */\n getShapeStyle: function getShapeStyle(cfg) {\n return cfg.style;\n },\n /**\n * 更新节点,包含文本\n * @override\n * @param {Object} cfg 节点/边的配置项\n * @param {G6.Item} item 节点/边\n */\n update: function update(cfg, item, updateType) {\n this.updateShapeStyle(cfg, item, updateType);\n this.updateLabel(cfg, item, updateType);\n },\n updateShapeStyle: function updateShapeStyle(cfg, item, updateType) {\n var _a;\n var group = item.getContainer();\n var shape = item.getKeyShape();\n var shapeStyle = mix({}, shape.attr(), cfg.style);\n var _loop_1 = function _loop_1(key) {\n var _b;\n var style = shapeStyle[key];\n if (isPlainObject(style)) {\n // 更新图元素样式,支持更新子元素\n var subShape = ((_a = group['shapeMap']) === null || _a === void 0 ? void 0 : _a[key]) || group.find(function (element) {\n return element.get('name') === key;\n });\n subShape === null || subShape === void 0 ? void 0 : subShape.attr(style);\n } else {\n shape.attr((_b = {}, _b[key] = style, _b));\n }\n };\n for (var key in shapeStyle) {\n _loop_1(key);\n }\n },\n updateLabel: function updateLabel(cfg, item, updateType) {\n var _a, _b;\n // 防止 cfg.label = \"\" 的情况\n if (cfg.label || cfg.label === '') {\n var group = item.getContainer();\n var _c = (this.mergeStyle || this.getOptions({}, updateType) || {}).labelCfg,\n labelCfg = _c === void 0 ? {} : _c;\n var labelClassName_1 = this.itemType + CLS_LABEL_SUFFIX;\n var label = group['shapeMap'][labelClassName_1] || group.find(function (ele) {\n return ele.get('className') === labelClassName_1;\n });\n var labelBgClassname_1 = this.itemType + CLS_LABEL_BG_SUFFIX;\n var labelBg = group['shapeMap'][labelBgClassname_1] || group.find(function (ele) {\n return ele.get('className') === labelBgClassname_1;\n });\n // 若传入的新配置中有 label,(用户没传入但原先有 label,label 也会有值)\n if (!label) {\n // 若原先不存在 label,则绘制一个新的 label\n var newLabel = this.drawLabel(cfg, group);\n newLabel.set('className', labelClassName_1);\n group['shapeMap'][labelClassName_1] = newLabel;\n } else {\n // 若原先存在 label,则更新样式。与 getLabelStyle 不同在于这里需要融合当前 label 的样式\n // 融合 style 以外的属性:position, offset, ...\n if (!updateType || updateType === 'bbox|label' || this.itemType === 'edge' && updateType !== 'style') {\n labelCfg = deepMix(labelCfg, cfg.labelCfg);\n }\n // 获取位置信息\n var calculateStyle = this.getLabelStyleByPosition(cfg, labelCfg, group);\n // 取 nodeLabel,edgeLabel 的配置项\n var cfgStyle = (_a = cfg.labelCfg) === null || _a === void 0 ? void 0 : _a.style;\n // const cfgBgStyle = labelCfg.style?.background;\n // 需要融合当前\b label 的样式 label.attr()。不再需要全局/默认样式,因为已经应用在当前的 label 上\n var labelStyle = __assign(__assign({}, calculateStyle), cfgStyle);\n var rotate = labelStyle.rotate;\n delete labelStyle.rotate;\n // 计算 label 的旋转矩阵\n if (!isNaN(rotate) && rotate !== '') {\n // if G 4.x define the rotateAtStart, use it directly instead of using the following codes\n var rotateMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n rotateMatrix = transform(rotateMatrix, [['t', -labelStyle.x, -labelStyle.y], ['r', rotate], ['t', labelStyle.x, labelStyle.y]]);\n labelStyle.matrix = rotateMatrix;\n label.attr(labelStyle);\n } else {\n if (((_b = label.getMatrix()) === null || _b === void 0 ? void 0 : _b[4]) !== 1) {\n label.resetMatrix();\n }\n label.attr(labelStyle);\n }\n if (!labelBg) {\n if (labelStyle.background) {\n labelBg = this.drawLabelBg(cfg, group, label);\n labelBg.set('classname', labelBgClassname_1);\n group['shapeMap'][labelBgClassname_1] = labelBg;\n label.toFront();\n }\n } else if (labelStyle.background) {\n var calculateBgStyle = this.getLabelBgStyleByPosition(label, labelCfg);\n labelBg.attr(calculateBgStyle);\n } else {\n group.removeChild(labelBg);\n }\n }\n }\n },\n // update(cfg, item) // 默认不定义\n afterUpdate: function afterUpdate(cfg, item) {},\n /**\n * 设置节点的状态,主要是交互状态,业务状态请在 draw 方法中实现\n * 单图形的节点仅考虑 selected、active 状态,有其他状态需求的用户自己复写这个方法\n * @override\n * @param {String} name 状态名称\n * @param {String | Boolean} value 状态值\n * @param {G6.Item} item 节点\n */\n setState: function setState(name, value, item) {\n var _a, _b;\n var _c;\n var shape = item.get('keyShape');\n if (!shape || shape.destroyed) return;\n var type = item.getType();\n var stateName = isBoolean(value) ? name : \"\".concat(name, \":\").concat(value);\n var shapeStateStyle = this.getStateStyle(stateName, item);\n var itemStateStyle = item.getStateStyle(stateName);\n // const originStyle = item.getOriginStyle();\n // 不允许设置一个不存在的状态\n if (!itemStateStyle && !shapeStateStyle) {\n return;\n }\n // 要设置或取消的状态的样式\n // 当没有 state 状态时,默认使用 model.stateStyles 中的样式\n var styles = mix({}, itemStateStyle || shapeStateStyle);\n var group = item.getContainer();\n // 从图元素现有的样式中删除本次要取消的 states 中存在的属性值。使用对象检索更快\n var keptAttrs = {\n x: 1,\n y: 1,\n cx: 1,\n cy: 1,\n matrix: 1\n };\n if (type === 'combo') {\n keptAttrs.r = 1;\n keptAttrs.width = 1;\n keptAttrs.height = 1;\n }\n if (value) {\n var _loop_2 = function _loop_2(key) {\n var _d;\n var style = styles[key];\n if (isPlainObject(style) && !ARROWS.includes(key)) {\n var subShape = ((_c = group['shapeMap']) === null || _c === void 0 ? void 0 : _c[key]) || group.find(function (element) {\n return element.get('name') === key;\n });\n subShape === null || subShape === void 0 ? void 0 : subShape.attr(style);\n } else {\n // 非纯对象,则认为是设置到 keyShape 上面的\n shape.attr((_d = {}, _d[key] = style, _d));\n }\n };\n // style 为要设置的状态的样式\n for (var key in styles) {\n _loop_2(key);\n }\n } else {\n // 所有生效的 state 的样式\n var enableStatesStyle = cloneBesidesImg(item.getCurrentStatesStyle());\n var model = item.getModel();\n // 原始样式\n var originStyle_1 = mix({}, model.style, cloneBesidesImg(item.getOriginStyle()));\n var keyShapeName_1 = shape.get('name');\n // cloning shape.attr(), keys.forEach to avoid cloning the img attr, which leads to maximum clone heap #2383\n // const keyShapeStyles = clone(shape.attr())\n var shapeAttrs_1 = shape.attr();\n var keyShapeStyles_1 = {};\n Object.keys(shapeAttrs_1).forEach(function (key) {\n if (key === 'img') return;\n var attr = shapeAttrs_1[key];\n if (attr && _typeof(attr) === 'object') {\n keyShapeStyles_1[key] = clone(attr);\n } else {\n keyShapeStyles_1[key] = attr;\n }\n });\n // 已有样式 - 要取消的状态的样式\n var filtetDisableStatesStyle = {};\n var _loop_3 = function _loop_3(p) {\n var style = styles[p];\n if (isPlainObject(style) && !ARROWS.includes(p)) {\n var subShape_1 = group['shapeMap'][p] || group.find(function (ele) {\n return ele.get('name') === p;\n });\n if (subShape_1) {\n var subShapeStyles_1 = cloneBesidesImg(subShape_1.attr());\n each(style, function (v, key) {\n if (p === keyShapeName_1 && keyShapeStyles_1[key] && !keptAttrs[key]) {\n delete keyShapeStyles_1[key];\n var value_1 = originStyle_1[p][key] || SHAPES_DEFAULT_ATTRS[type][key];\n shape.attr(key, value_1);\n } else if (subShapeStyles_1[key] || subShapeStyles_1[key] === 0) {\n delete subShapeStyles_1[key];\n var value_2 = originStyle_1[p][key] || SHAPES_DEFAULT_ATTRS[type][key];\n subShape_1.attr(key, value_2);\n }\n });\n filtetDisableStatesStyle[p] = subShapeStyles_1;\n }\n } else {\n if (keyShapeStyles_1[p] && !keptAttrs[p]) {\n delete keyShapeStyles_1[p];\n var value_3 = originStyle_1[p] || (originStyle_1[keyShapeName_1] ? originStyle_1[keyShapeName_1][p] : undefined) || SHAPES_DEFAULT_ATTRS[type][p];\n shape.attr(p, value_3);\n }\n }\n };\n // styles 为要取消的状态的样式\n for (var p in styles) {\n _loop_3(p);\n }\n // 从图元素现有的样式中删除本次要取消的 states 中存在的属性值后,\n // 如果 keyShape 有 name 属性,则 filtetDisableStatesStyle 的格式为 { keyShapeName: {} }\n // 否则为普通对象\n if (!keyShapeName_1) {\n mix(filtetDisableStatesStyle, keyShapeStyles_1);\n } else {\n filtetDisableStatesStyle[keyShapeName_1] = keyShapeStyles_1;\n }\n for (var key in enableStatesStyle) {\n if (keptAttrs[key]) continue;\n var enableStyle = enableStatesStyle[key];\n if (!isPlainObject(enableStyle) || ARROWS.includes(key)) {\n // 把样式属性merge到keyShape中\n if (!keyShapeName_1) {\n mix(originStyle_1, (_a = {}, _a[key] = enableStyle, _a));\n } else {\n mix(originStyle_1[keyShapeName_1], (_b = {}, _b[key] = enableStyle, _b));\n delete originStyle_1[key];\n }\n delete enableStatesStyle[key];\n }\n }\n var originstyles = {};\n deepMix(originstyles, originStyle_1, filtetDisableStatesStyle, enableStatesStyle);\n var keyShapeSetted = false;\n var _loop_4 = function _loop_4(originKey) {\n var _e, _f;\n var style = originstyles[originKey];\n if (isPlainObject(style) && !ARROWS.includes(originKey)) {\n var subShape = group['shapeMap'][originKey] || group.find(function (ele) {\n return ele.get('name') === originKey;\n });\n if (subShape) {\n // The text's position and matrix is not allowed to be affected by states\n if (subShape.get('type') === 'text' || subShape.get('labelRelated')) {\n delete style.x;\n delete style.y;\n delete style.matrix;\n }\n if (originKey === keyShapeName_1) {\n if (type === 'combo') {\n delete style.r;\n delete style.width;\n delete style.height;\n }\n keyShapeSetted = true;\n }\n subShape.attr(style);\n }\n } else if (!keyShapeSetted) {\n var value_4 = style || SHAPES_DEFAULT_ATTRS[type][originKey];\n // 当更新 combo 状态时,当不存在 keyShapeName 时候,则认为是设置到 keyShape 上面的\n if (type === 'combo') {\n if (!keyShapeName_1) {\n shape.attr((_e = {}, _e[originKey] = value_4, _e));\n }\n } else {\n shape.attr((_f = {}, _f[originKey] = value_4, _f));\n }\n }\n };\n for (var originKey in originstyles) {\n _loop_4(originKey);\n }\n }\n },\n /**\n * 获取不同状态下的样式\n *\n * @param {string} name 状态名称\n * @param {Item} item Node或Edge的实例\n * @return {object} 样式\n */\n getStateStyle: function getStateStyle(name, item) {\n var model = item.getModel();\n var type = item.getType();\n var _a = this.getOptions(model),\n stateStyles = _a.stateStyles,\n _b = _a.style,\n style = _b === void 0 ? {} : _b;\n var modelStateStyle = model.stateStyles ? model.stateStyles[name] : stateStyles && stateStyles[name];\n if (type === 'combo') {\n return clone(modelStateStyle);\n }\n return mix({}, style, modelStateStyle);\n },\n /**\n * 获取控制点\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 控制点的数组,如果为 null,则没有控制点\n */\n getControlPoints: function getControlPoints(cfg) {\n return cfg.controlPoints;\n },\n /**\n * 获取控制点\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 锚点的数组,如果为 null,则没有锚点\n */\n getAnchorPoints: function getAnchorPoints(cfg) {\n var _a, _b;\n var anchorPoints = (cfg === null || cfg === void 0 ? void 0 : cfg.anchorPoints) || ((_a = this.getCustomConfig(cfg)) === null || _a === void 0 ? void 0 : _a.anchorPoints) || ((_b = this.options) === null || _b === void 0 ? void 0 : _b.anchorPoints);\n return anchorPoints;\n }\n};","import { __assign } from \"tslib\";\nimport { isArray, isNil, mix } from '@antv/util';\nimport { formatPadding } from '../util/base';\nimport Global from '../global';\nimport Shape from './shape';\nimport { shapeBase } from './shapeBase';\nimport { truncateLabelByLength } from '../util/graphic';\nvar singleNode = {\n itemType: 'node',\n // 单个图形的类型\n shapeType: 'single-node',\n /**\n * 文本相对图形的位置,默认以中心点\n * 位置包括: top, bottom, left, right, center\n * @type {String}\n */\n labelPosition: 'center',\n /**\n * 文本相对偏移,当 labelPosition 不为 center 时有效\n * @type {Number}\n */\n offset: Global.nodeLabel.offset,\n /**\n * 获取节点宽高\n * @internal 返回节点的大小,以 [width, height] 的方式维护\n * @param {Object} cfg 节点的配置项\n * @return {Array} 宽高\n */\n getSize: function getSize(cfg) {\n var _a;\n var size = ((_a = this.mergeStyle) === null || _a === void 0 ? void 0 : _a.size) || cfg.size || this.getOptions({}).size || Global.defaultNode.size; // Global.defaultNode.size; // \n // size 是数组,但长度为1,则补长度为2\n if (isArray(size) && size.length === 1) {\n size = [size[0], size[0]];\n }\n // size 为数字,则转换为数组\n if (!isArray(size)) {\n size = [size, size];\n }\n return size;\n },\n // 私有方法,不希望扩展的节点复写这个方法\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg) {\n var labelMaxLength = labelCfg.maxLength;\n var text = cfg.label;\n if (labelMaxLength) {\n text = truncateLabelByLength(text, labelMaxLength);\n }\n var labelPosition = labelCfg.position || this.labelPosition;\n // 默认的位置(最可能的情形),所以放在最上面\n if (labelPosition === 'center') {\n return {\n x: 0,\n y: 0,\n text: text,\n textBaseline: 'middle',\n textAlign: 'center'\n };\n }\n var offset = labelCfg.offset;\n if (isNil(offset)) {\n // 考虑 offset = 0 的场景,不用用 labelCfg.offset || Global.nodeLabel.offset\n offset = this.offset; // 不居中时的偏移量\n }\n\n var size = this.getSize(cfg);\n var style;\n switch (labelPosition) {\n case 'top':\n style = {\n x: 0,\n y: -size[1] / 2 - offset,\n textBaseline: 'bottom',\n textAlign: 'center'\n };\n break;\n case 'bottom':\n style = {\n x: 0,\n y: size[1] / 2 + offset,\n textBaseline: 'top',\n textAlign: 'center'\n };\n break;\n case 'left':\n style = {\n x: -size[0] / 2 - offset,\n y: 0,\n textBaseline: 'middle',\n textAlign: 'right'\n };\n break;\n default:\n style = {\n x: size[0] / 2 + offset,\n y: 0,\n textBaseline: 'middle',\n textAlign: 'left'\n };\n break;\n }\n style.text = text;\n return style;\n },\n getLabelBgStyleByPosition: function getLabelBgStyleByPosition(label, labelCfg) {\n var _a;\n if (!label) return {};\n var backgroundStyle = (_a = labelCfg.style) === null || _a === void 0 ? void 0 : _a.background;\n if (!backgroundStyle) return {};\n var bbox = label.getBBox();\n var padding = formatPadding(backgroundStyle.padding);\n var backgroundWidth = bbox.width + padding[1] + padding[3];\n var backgroundHeight = bbox.height + padding[0] + padding[2];\n return __assign(__assign({\n x: bbox.minX - padding[3],\n y: bbox.minY - padding[0]\n }, backgroundStyle), {\n width: backgroundWidth,\n height: backgroundHeight\n });\n },\n drawShape: function drawShape(cfg, group) {\n var shapeType = this.shapeType; // || this.type,都已经加了 shapeType\n var style = this.getShapeStyle(cfg);\n var shape = group.addShape(shapeType, {\n attrs: style,\n draggable: true,\n name: 'node-shape'\n });\n group['shapeMap']['node-shape'] = shape;\n return shape;\n },\n /**\n * 更新linkPoints\n * @param {Object} cfg 节点数据配置项\n * @param {Group} group Item所在的group\n */\n updateLinkPoints: function updateLinkPoints(cfg, group) {\n var defaultLinkPoints = (this.mergeStyle || this.getOptions(cfg)).linkPoints;\n var markLeft = group['shapeMap']['link-point-left'] || group.find(function (element) {\n return element.get('className') === 'link-point-left';\n });\n var markRight = group['shapeMap']['link-point-right'] || group.find(function (element) {\n return element.get('className') === 'link-point-right';\n });\n var markTop = group['shapeMap']['link-point-top'] || group.find(function (element) {\n return element.get('className') === 'link-point-top';\n });\n var markBottom = group['shapeMap']['link-point-bottom'] || group.find(function (element) {\n return element.get('className') === 'link-point-bottom';\n });\n var currentLinkPoints;\n if (markLeft) {\n currentLinkPoints = markLeft.attr();\n }\n if (markRight && !currentLinkPoints) {\n currentLinkPoints = markRight.attr();\n }\n if (markTop && !currentLinkPoints) {\n currentLinkPoints = markTop.attr();\n }\n if (markBottom && !currentLinkPoints) {\n currentLinkPoints = markBottom.attr();\n }\n if (!currentLinkPoints) currentLinkPoints = defaultLinkPoints;\n var linkPoints = mix({}, currentLinkPoints, cfg.linkPoints);\n var markFill = linkPoints.fill,\n markStroke = linkPoints.stroke,\n borderWidth = linkPoints.lineWidth;\n var markSize = linkPoints.size / 2;\n if (!markSize) markSize = linkPoints.r;\n var _a = cfg.linkPoints ? cfg.linkPoints : {\n left: undefined,\n right: undefined,\n top: undefined,\n bottom: undefined\n },\n left = _a.left,\n right = _a.right,\n top = _a.top,\n bottom = _a.bottom;\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n var styles = {\n r: markSize,\n fill: markFill,\n stroke: markStroke,\n lineWidth: borderWidth\n };\n if (markLeft) {\n if (!left && left !== undefined) {\n markLeft.remove();\n delete group['shapeMap']['link-point-left'];\n } else {\n markLeft.attr(__assign(__assign({}, styles), {\n x: -width / 2,\n y: 0\n }));\n }\n } else if (left) {\n var name_1 = 'link-point-left';\n group['shapeMap'][name_1] = group.addShape('circle', {\n attrs: __assign(__assign({}, styles), {\n x: -width / 2,\n y: 0\n }),\n className: name_1,\n name: name_1,\n isAnchorPoint: true\n });\n }\n if (markRight) {\n if (!right && right !== undefined) {\n markRight.remove();\n delete group['shapeMap']['link-point-right'];\n }\n markRight.attr(__assign(__assign({}, styles), {\n x: width / 2,\n y: 0\n }));\n } else if (right) {\n var name_2 = 'link-point-right';\n group['shapeMap'][name_2] = group.addShape('circle', {\n attrs: __assign(__assign({}, styles), {\n x: width / 2,\n y: 0\n }),\n className: name_2,\n name: name_2,\n isAnchorPoint: true\n });\n }\n if (markTop) {\n if (!top && top !== undefined) {\n markTop.remove();\n delete group['shapeMap']['link-point-top'];\n }\n markTop.attr(__assign(__assign({}, styles), {\n x: 0,\n y: -height / 2\n }));\n } else if (top) {\n var name_3 = 'link-point-top';\n group['shapeMap'][name_3] = group.addShape('circle', {\n attrs: __assign(__assign({}, styles), {\n x: 0,\n y: -height / 2\n }),\n className: name_3,\n name: name_3,\n isAnchorPoint: true\n });\n }\n if (markBottom) {\n if (!bottom && bottom !== undefined) {\n markBottom.remove();\n delete group['shapeMap']['link-point-bottom'];\n } else {\n markBottom.attr(__assign(__assign({}, styles), {\n x: 0,\n y: height / 2\n }));\n }\n } else if (bottom) {\n var name_4 = 'link-point-bottom';\n group['shapeMap'][name_4] = group.addShape('circle', {\n attrs: __assign(__assign({}, styles), {\n x: 0,\n y: height / 2\n }),\n className: name_4,\n name: name_4,\n isAnchorPoint: true\n });\n }\n },\n updateShape: function updateShape(cfg, item, keyShapeStyle, hasIcon, updateType) {\n var keyShape = item.get('keyShape');\n keyShape.attr(__assign({}, keyShapeStyle));\n if (!undefined || (updateType === null || updateType === void 0 ? void 0 : updateType.includes('label'))) {\n this.updateLabel(cfg, item, updateType);\n }\n if (hasIcon) {\n this.updateIcon(cfg, item);\n }\n },\n updateIcon: function updateIcon(cfg, item) {\n var _this = this;\n var group = item.getContainer();\n var icon = (this.mergeStyle || this.getOptions(cfg)).icon;\n var _a = cfg.icon ? cfg.icon : {\n show: undefined,\n text: undefined\n },\n show = _a.show,\n text = _a.text;\n var iconShape = group['shapeMap'][\"\".concat(this.type, \"-icon\")] || group.find(function (ele) {\n return ele.get('name') === \"\".concat(_this.type, \"-icon\");\n });\n if (iconShape) {\n // 若原先存在 icon\n if (show || show === undefined) {\n // 若传入 show: true, 或没有设置,则更新原有的 icon 样式\n var iconConfig = mix({}, iconShape.attr(), icon);\n var _b = iconConfig.width,\n w = _b === void 0 ? 20 : _b,\n _c = iconConfig.height,\n h = _c === void 0 ? 20 : _c;\n if (iconConfig.fontFamily === 'iconfont' || iconConfig.hasOwnProperty('text')) {\n w = 0;\n h = 0;\n }\n iconShape.attr(__assign(__assign({}, iconConfig), {\n x: -w / 2,\n y: -h / 2\n }));\n } else {\n // 若传入了 show: false 则删除原先的 icon\n iconShape.remove();\n delete group['shapeMap'][\"\".concat(this.type, \"-icon\")];\n }\n } else if (show) {\n // 如果原先不存在 icon,但传入了 show: true,则新增 icon\n var name_5 = \"\".concat(this.type, \"-icon\");\n if (text) {\n group['shapeMap'][name_5] = group.addShape('text', {\n attrs: __assign({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: name_5,\n name: name_5\n });\n } else {\n var w = icon.width,\n h = icon.height;\n group['shapeMap'][name_5] = group.addShape('image', {\n attrs: __assign(__assign({}, icon), {\n x: -w / 2,\n y: -h / 2\n }),\n className: name_5,\n name: name_5\n });\n }\n // to ensure the label is on the top of all the shapes\n var labelShape = group['shapeMap']['node-label'] || group.find(function (ele) {\n return ele.get('name') === 'node-label';\n });\n if (labelShape) {\n labelShape.toFront();\n }\n }\n }\n};\nvar singleNodeDef = __assign(__assign({}, shapeBase), singleNode);\nShape.registerNode('single-node', singleNodeDef);","/**\n * @fileOverview 自定义边\n * @description 自定义边中有大量逻辑同自定义节点重复,虽然可以提取成为 mixin ,但是考虑到代码的可读性,还是单独实现。\n */\nimport { __assign } from \"tslib\";\nimport { deepMix, mix, each, isNil, isNumber, isArray } from '@antv/util';\nimport { getLabelPosition, getLoopCfgs } from '../util/graphic';\nimport { distance, getCircleCenterByPoints } from '../util/math';\nimport { getControlPoint, getSpline } from '../util/path';\nimport Global from '../global';\nimport Shape from './shape';\nimport { shapeBase, CLS_LABEL_BG_SUFFIX } from './shapeBase';\nvar CLS_SHAPE = 'edge-shape';\n// start,end 倒置,center 不变\nfunction revertAlign(labelPosition) {\n var textAlign = labelPosition;\n if (labelPosition === 'start') {\n textAlign = 'end';\n } else if (labelPosition === 'end') {\n textAlign = 'start';\n }\n return textAlign;\n}\nvar singleEdge = {\n itemType: 'edge',\n /**\n * 文本的位置\n * @type {String}\n */\n labelPosition: 'center',\n /**\n * 文本的 x 偏移\n * @type {Number}\n */\n refX: 0,\n /**\n * 文本的 y 偏移\n * @type {Number}\n */\n refY: 0,\n /**\n * 文本是否跟着线自动旋转,默认 false\n * @type {Boolean}\n */\n labelAutoRotate: false,\n // 自定义边时的配置\n options: {\n size: Global.defaultEdge.size,\n style: {\n x: 0,\n y: 0,\n stroke: Global.defaultEdge.style.stroke,\n lineAppendWidth: Global.defaultEdge.style.lineAppendWidth\n },\n labelCfg: {\n style: {\n fill: Global.edgeLabel.style.fill,\n fontSize: Global.edgeLabel.style.fontSize,\n fontFamily: Global.windowFontFamily\n }\n },\n stateStyles: __assign({}, Global.edgeStateStyles)\n },\n /**\n * 获取边的 path\n * @internal 供扩展的边覆盖\n * @param {Array} points 构成边的点的集合\n * @return {Array} 构成 path 的数组\n */\n getPath: function getPath(points) {\n var path = [];\n each(points, function (point, index) {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n return path;\n },\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = this.options.style;\n var strokeStyle = {\n stroke: cfg.color\n };\n // 如果设置了color,则覆盖默认的stroke属性\n var style = mix({}, defaultStyle, strokeStyle, cfg.style);\n var size = cfg.size || Global.defaultEdge.size;\n cfg = this.getPathPoints(cfg);\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var controlPoints = this.getControlPoints(cfg);\n var points = [startPoint]; // 添加起始点\n // 添加控制点\n if (controlPoints) {\n points = points.concat(controlPoints);\n }\n // 添加结束点\n points.push(endPoint);\n var path = this.getPath(points);\n var styles = mix({}, Global.defaultEdge.style, {\n stroke: Global.defaultEdge.color,\n lineWidth: size,\n path: path\n }, style);\n return styles;\n },\n updateShapeStyle: function updateShapeStyle(cfg, item, updateType) {\n var _a;\n var group = item.getContainer();\n // const strokeStyle: ShapeStyle = {\n // stroke: cfg.color,\n // };\n var shape = ((_a = item.getKeyShape) === null || _a === void 0 ? void 0 : _a.call(item)) || group['shapeMap']['edge-shape']; // group.find((element) => element.get('className') === 'edge-shape');\n var size = cfg.size;\n cfg = this.getPathPoints(cfg);\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var controlPoints = this.getControlPoints(cfg); // || cfg.controlPoints;\n var points = [startPoint]; // 添加起始点\n // 添加控制点\n if (controlPoints) {\n points = points.concat(controlPoints);\n }\n // 添加结束点\n points.push(endPoint);\n var currentAttr = shape.attr();\n // const previousStyle = mix({}, strokeStyle, currentAttr, cfg.style);\n var previousStyle = cfg.style || {};\n if (previousStyle.stroke === undefined) {\n previousStyle.stroke = cfg.color;\n }\n var source = cfg.sourceNode;\n var target = cfg.targetNode;\n var routeCfg = {\n radius: previousStyle.radius\n };\n if (!controlPoints) {\n routeCfg = {\n source: source,\n target: target,\n offset: previousStyle.offset,\n radius: previousStyle.radius\n };\n }\n var path = this.getPath(points, routeCfg);\n var style = {};\n if (updateType === 'move') {\n style = {\n path: path\n };\n } else {\n if (currentAttr.endArrow && previousStyle.endArrow === false) {\n cfg.style.endArrow = {\n path: ''\n };\n }\n if (currentAttr.startArrow && previousStyle.startArrow === false) {\n cfg.style.startArrow = {\n path: ''\n };\n }\n style = __assign({}, cfg.style);\n if (style.lineWidth === undefined) style.lineWdith = (isNumber(size) ? size : size === null || size === void 0 ? void 0 : size[0]) || currentAttr.lineWidth;\n if (style.path === undefined) style.path = path;\n if (style.stroke === undefined) style.stroke = currentAttr.stroke || cfg.color;\n }\n if (shape) {\n shape.attr(style);\n }\n },\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg, group) {\n var labelPosition = labelCfg.position || this.labelPosition; // 文本的位置用户可以传入\n var style = {};\n var pathShape = group === null || group === void 0 ? void 0 : group['shapeMap'][CLS_SHAPE]; // group?.find((element) => element.get('className') === CLS_SHAPE);\n // 不对 pathShape 进行判空,如果线不存在,说明有问题了\n var pointPercent;\n if (labelPosition === 'start') {\n pointPercent = 0;\n } else if (labelPosition === 'end') {\n pointPercent = 1;\n } else {\n pointPercent = 0.5;\n }\n // 偏移量\n var offsetX = labelCfg.refX || this.refX;\n var offsetY = labelCfg.refY || this.refY;\n // 如果两个节点重叠,线就变成了一个点,这时候label的位置,就是这个点 + 绝对偏移\n if (cfg.startPoint.x === cfg.endPoint.x && cfg.startPoint.y === cfg.endPoint.y) {\n style.x = cfg.startPoint.x + offsetX;\n style.y = cfg.startPoint.y + offsetY;\n style.text = cfg.label;\n return style;\n }\n var autoRotate;\n if (isNil(labelCfg.autoRotate)) autoRotate = this.labelAutoRotate;else autoRotate = labelCfg.autoRotate;\n var offsetStyle = getLabelPosition(pathShape, pointPercent, offsetX, offsetY, autoRotate);\n style.x = offsetStyle.x;\n style.y = offsetStyle.y;\n style.rotate = offsetStyle.rotate;\n style.textAlign = this._getTextAlign(labelPosition, offsetStyle.angle);\n style.text = cfg.label;\n return style;\n },\n getLabelBgStyleByPosition: function getLabelBgStyleByPosition(label, labelCfg) {\n if (!label) {\n return {};\n }\n var bbox = label.getBBox();\n var backgroundStyle = labelCfg.style && labelCfg.style.background;\n if (!backgroundStyle) {\n return {};\n }\n var padding = backgroundStyle.padding;\n var backgroundWidth = bbox.width + padding[1] + padding[3];\n var backgroundHeight = bbox.height + padding[0] + padding[2];\n var style = __assign(__assign({}, backgroundStyle), {\n width: backgroundWidth,\n height: backgroundHeight,\n x: bbox.minX - padding[3],\n y: bbox.minY - padding[0],\n matrix: [1, 0, 0, 0, 1, 0, 0, 0, 1]\n });\n var autoRotate;\n if (isNil(labelCfg.autoRotate)) autoRotate = this.labelAutoRotate;else autoRotate = labelCfg.autoRotate;\n if (autoRotate) {\n style.matrix = label.attr('matrix') || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n return style;\n },\n // 获取文本对齐方式\n _getTextAlign: function _getTextAlign(labelPosition, angle) {\n var textAlign = 'center';\n if (!angle) {\n return labelPosition;\n }\n angle = angle % (Math.PI * 2); // 取模\n if (labelPosition !== 'center') {\n if (angle >= 0 && angle <= Math.PI / 2 || angle >= 3 / 2 * Math.PI && angle < 2 * Math.PI) {\n textAlign = labelPosition;\n } else {\n textAlign = revertAlign(labelPosition);\n }\n }\n return textAlign;\n },\n /**\n * @internal 获取边的控制点\n * @param {Object} cfg 边的配置项\n * @return {Array} 控制点的数组\n */\n getControlPoints: function getControlPoints(cfg) {\n return cfg.controlPoints;\n },\n /**\n * @internal 处理需要重计算点和边的情况\n * @param {Object} cfg 边的配置项\n * @return {Object} 边的配置项\n */\n getPathPoints: function getPathPoints(cfg) {\n return cfg;\n },\n /**\n * 绘制边\n * @override\n * @param {Object} cfg 边的配置项\n * @param {G.Group} group 边的容器\n * @return {IShape} 图形\n */\n drawShape: function drawShape(cfg, group) {\n var shapeStyle = this.getShapeStyle(cfg);\n var shape = group.addShape('path', {\n className: CLS_SHAPE,\n name: CLS_SHAPE,\n attrs: shapeStyle\n });\n group['shapeMap'][CLS_SHAPE] = shape;\n return shape;\n },\n drawLabel: function drawLabel(cfg, group) {\n var defaultLabelCfg = this.options.labelCfg;\n var labelCfg = deepMix({}, defaultLabelCfg, cfg.labelCfg);\n var labelStyle = this.getLabelStyle(cfg, labelCfg, group);\n var rotate = labelStyle.rotate;\n delete labelStyle.rotate;\n var label = group.addShape('text', {\n attrs: labelStyle,\n name: 'text-shape',\n labelRelated: true\n });\n group['shapeMap']['text-shape'] = label;\n if (!isNaN(rotate) && rotate !== '') {\n label.rotateAtStart(rotate);\n }\n if (labelStyle.background) {\n var rect = this.drawLabelBg(cfg, group, label, labelStyle, rotate);\n var labelBgClassname = this.itemType + CLS_LABEL_BG_SUFFIX;\n rect.set('classname', labelBgClassname);\n group['shapeMap'][labelBgClassname] = rect;\n label.toFront();\n }\n return label;\n },\n drawLabelBg: function drawLabelBg(cfg, group, label, labelStyle, rotate) {\n var defaultLabelCfg = this.options.labelCfg;\n var labelCfg = deepMix({}, defaultLabelCfg, cfg.labelCfg);\n var style = this.getLabelBgStyleByPosition(label, labelCfg);\n var rect = group.addShape('rect', {\n name: 'text-bg-shape',\n attrs: style,\n labelRelated: true\n });\n group['shapeMap']['text-bg-shape'] = rect;\n return rect;\n }\n};\nvar singleEdgeDef = __assign(__assign({}, shapeBase), singleEdge);\nShape.registerEdge('single-edge', singleEdgeDef);\n// 直线, 不支持控制点\nShape.registerEdge('line', {\n // 控制点不生效\n getControlPoints: function getControlPoints() {\n return undefined;\n }\n}, 'single-edge');\n// 直线\nShape.registerEdge('spline', {\n getPath: function getPath(points) {\n var path = getSpline(points);\n return path;\n }\n}, 'single-edge');\nShape.registerEdge('arc', {\n curveOffset: 20,\n clockwise: 1,\n getControlPoints: function getControlPoints(cfg) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var midPoint = {\n x: (startPoint.x + endPoint.x) / 2,\n y: (startPoint.y + endPoint.y) / 2\n };\n var center;\n var arcPoint;\n // 根据给定点计算圆弧\n if (cfg.controlPoints !== undefined) {\n arcPoint = cfg.controlPoints[0];\n center = getCircleCenterByPoints(startPoint, arcPoint, endPoint);\n // 根据控制点和直线关系决定 clockwise值\n if (startPoint.x <= endPoint.x && startPoint.y > endPoint.y) {\n this.clockwise = center.x > arcPoint.x ? 0 : 1;\n } else if (startPoint.x <= endPoint.x && startPoint.y < endPoint.y) {\n this.clockwise = center.x > arcPoint.x ? 1 : 0;\n } else if (startPoint.x > endPoint.x && startPoint.y <= endPoint.y) {\n this.clockwise = center.y < arcPoint.y ? 0 : 1;\n } else {\n this.clockwise = center.y < arcPoint.y ? 1 : 0;\n }\n // 若给定点和两端点共线,无法生成圆弧,绘制直线\n if ((arcPoint.x - startPoint.x) / (arcPoint.y - startPoint.y) === (endPoint.x - startPoint.x) / (endPoint.y - startPoint.y)) {\n return [];\n }\n } else {\n // 根据直线连线中点的的偏移计算圆弧\n // 若用户给定偏移量则根据其计算,否则按照默认偏移值计算\n if (cfg.curveOffset === undefined) {\n cfg.curveOffset = this.curveOffset;\n }\n if (isArray(cfg.curveOffset)) {\n cfg.curveOffset = cfg.curveOffset[0];\n }\n if (cfg.curveOffset < 0) {\n this.clockwise = 0;\n } else {\n this.clockwise = 1;\n }\n var vec = {\n x: endPoint.x - startPoint.x,\n y: endPoint.y - startPoint.y\n };\n var edgeAngle = Math.atan2(vec.y, vec.x);\n arcPoint = {\n x: cfg.curveOffset * Math.cos(-Math.PI / 2 + edgeAngle) + midPoint.x,\n y: cfg.curveOffset * Math.sin(-Math.PI / 2 + edgeAngle) + midPoint.y\n };\n center = getCircleCenterByPoints(startPoint, arcPoint, endPoint);\n }\n var radius = distance(startPoint, center);\n var controlPoints = [{\n x: radius,\n y: radius\n }];\n return controlPoints;\n },\n getPath: function getPath(points) {\n var path = [];\n path.push(['M', points[0].x, points[0].y]);\n // 控制点与端点共线\n if (points.length === 2) {\n path.push(['L', points[1].x, points[1].y]);\n } else {\n path.push(['A', points[1].x, points[1].y, 0, 0, this.clockwise, points[2].x, points[2].y]);\n }\n return path;\n }\n}, 'single-edge');\nShape.registerEdge('quadratic', {\n curvePosition: 0.5,\n curveOffset: -20,\n getControlPoints: function getControlPoints(cfg) {\n var controlPoints = cfg.controlPoints; // 指定controlPoints\n if (!controlPoints || !controlPoints.length) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;\n if (cfg.curvePosition === undefined) cfg.curvePosition = this.curvePosition;\n if (isArray(this.curveOffset)) cfg.curveOffset = cfg.curveOffset[0];\n if (isArray(this.curvePosition)) cfg.curvePosition = cfg.curveOffset[0];\n var innerPoint = getControlPoint(startPoint, endPoint, cfg.curvePosition, cfg.curveOffset);\n controlPoints = [innerPoint];\n }\n return controlPoints;\n },\n getPath: function getPath(points) {\n var path = [];\n path.push(['M', points[0].x, points[0].y]);\n path.push(['Q', points[1].x, points[1].y, points[2].x, points[2].y]);\n return path;\n }\n}, 'single-edge');\nShape.registerEdge('cubic', {\n curvePosition: [1 / 2, 1 / 2],\n curveOffset: [-20, 20],\n getControlPoints: function getControlPoints(cfg) {\n var controlPoints = cfg.controlPoints; // 指定 controlPoints\n if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;\n if (cfg.curvePosition === undefined) cfg.curvePosition = this.curvePosition;\n if (isNumber(cfg.curveOffset)) cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset];\n if (isNumber(cfg.curvePosition)) cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition];\n if (!controlPoints || !controlPoints.length || controlPoints.length < 2) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var innerPoint1 = getControlPoint(startPoint, endPoint, cfg.curvePosition[0], cfg.curveOffset[0]);\n var innerPoint2 = getControlPoint(startPoint, endPoint, cfg.curvePosition[1], cfg.curveOffset[1]);\n controlPoints = [innerPoint1, innerPoint2];\n }\n return controlPoints;\n },\n getPath: function getPath(points) {\n var path = [];\n path.push(['M', points[0].x, points[0].y]);\n path.push(['C', points[1].x, points[1].y, points[2].x, points[2].y, points[3].x, points[3].y]);\n return path;\n }\n}, 'single-edge');\n// 垂直方向的三阶贝塞尔曲线,不再考虑用户外部传入的控制点\nShape.registerEdge('cubic-vertical', {\n curvePosition: [1 / 2, 1 / 2],\n minCurveOffset: [0, 0],\n curveOffset: undefined,\n getControlPoints: function getControlPoints(cfg) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n if (cfg.curvePosition === undefined) cfg.curvePosition = this.curvePosition;\n if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;\n if (cfg.minCurveOffset === undefined) cfg.minCurveOffset = this.minCurveOffset;\n if (isNumber(cfg.curveOffset)) cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset];\n if (isNumber(cfg.minCurveOffset)) cfg.minCurveOffset = [cfg.minCurveOffset, -cfg.minCurveOffset];\n if (isNumber(cfg.curvePosition)) cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition];\n var yDist = endPoint.y - startPoint.y;\n var curveOffset = [0, 0];\n if (cfg.curveOffset) {\n curveOffset = cfg.curveOffset;\n } else if (Math.abs(yDist) < Math.abs(cfg.minCurveOffset[0])) {\n curveOffset = cfg.minCurveOffset;\n }\n var innerPoint1 = {\n x: startPoint.x,\n y: startPoint.y + yDist * this.curvePosition[0] + curveOffset[0]\n };\n var innerPoint2 = {\n x: endPoint.x,\n y: endPoint.y - yDist * this.curvePosition[1] + curveOffset[1]\n };\n return [innerPoint1, innerPoint2];\n }\n}, 'cubic');\n// 水平方向的三阶贝塞尔曲线,不再考虑用户外部传入的控制点\nShape.registerEdge('cubic-horizontal', {\n curvePosition: [1 / 2, 1 / 2],\n minCurveOffset: [0, 0],\n curveOffset: undefined,\n getControlPoints: function getControlPoints(cfg) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n if (cfg.curvePosition === undefined) cfg.curvePosition = this.curvePosition;\n if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;\n if (cfg.minCurveOffset === undefined) cfg.minCurveOffset = this.minCurveOffset;\n if (isNumber(cfg.curveOffset)) cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset];\n if (isNumber(cfg.minCurveOffset)) cfg.minCurveOffset = [cfg.minCurveOffset, -cfg.minCurveOffset];\n if (isNumber(cfg.curvePosition)) cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition];\n var xDist = endPoint.x - startPoint.x;\n var curveOffset = [0, 0];\n if (cfg.curveOffset) {\n curveOffset = cfg.curveOffset;\n } else if (Math.abs(xDist) < Math.abs(cfg.minCurveOffset[0])) {\n curveOffset = cfg.minCurveOffset;\n }\n var innerPoint1 = {\n x: startPoint.x + xDist * this.curvePosition[0] + curveOffset[0],\n y: startPoint.y\n };\n var innerPoint2 = {\n x: endPoint.x - xDist * this.curvePosition[1] + curveOffset[1],\n y: endPoint.y\n };\n var controlPoints = [innerPoint1, innerPoint2];\n return controlPoints;\n }\n}, 'cubic');\nShape.registerEdge('loop', {\n getPathPoints: function getPathPoints(cfg) {\n return getLoopCfgs(cfg);\n },\n getControlPoints: function getControlPoints(cfg) {\n return cfg.controlPoints;\n },\n afterDraw: function afterDraw(cfg) {\n cfg.controlPoints = undefined;\n },\n afterUpdate: function afterUpdate(cfg) {\n cfg.controlPoints = undefined;\n }\n}, 'cubic');","import { __assign } from \"tslib\";\nimport { isArray, isNil, clone } from '@antv/util';\nimport Global from '../global';\nimport Shape from './shape';\nimport { shapeBase } from './shapeBase';\nvar singleCombo = {\n itemType: 'combo',\n // 单个图形的类型\n shapeType: 'single-combo',\n /**\n * Combo 标题文本相对图形的位置,默认为 top\n * 位置包括: top, bottom, left, right, center\n * @type {String}\n */\n labelPosition: 'top',\n /**\n * 标题文本相对偏移,当 labelPosition 不为 center 时有效\n * @type {Number}\n */\n refX: Global.comboLabel.refX,\n refY: Global.comboLabel.refY,\n options: {\n style: {\n stroke: Global.defaultCombo.style.stroke,\n fill: Global.defaultCombo.style.fill,\n lineWidth: Global.defaultCombo.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: Global.comboLabel.style.fill,\n fontSize: Global.comboLabel.style.fontSize,\n fontFamily: Global.windowFontFamily\n }\n },\n stateStyles: __assign({}, Global.comboStateStyles),\n collapsedSubstituteIcon: {\n show: false,\n img: 'https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*RsnHRqLfJn4AAAAAAAAAAAAAARQnAQ'\n }\n },\n /**\n * 获取 Combo 宽高\n * @internal 返回 Combo 的大小,以 [width, height] 的方式维护\n * @param {Object} cfg Combo 的配置项\n * @return {Array} 宽高\n */\n getSize: function getSize(cfg) {\n var size = clone(cfg.size || this.options.size || Global.defaultCombo.size);\n // size 是数组,若长度为 1,则补长度为 2\n if (isArray(size) && size.length === 1) {\n size = [size[0], size[0]];\n }\n // size 为数字,则转换为数组\n if (!isArray(size)) {\n size = [size, size];\n }\n return size;\n },\n // 私有方法,不希望扩展的 Combo 复写这个方法\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg) {\n var labelPosition = labelCfg.position || this.labelPosition;\n var cfgStyle = cfg.style;\n var padding = cfg.padding || this.options.padding;\n if (isArray(padding)) padding = Math.max.apply(Math, padding);\n var refX = labelCfg.refX,\n refY = labelCfg.refY;\n // 考虑 refX 和 refY = 0 的场景,不用用 labelCfg.refX || Global.nodeLabel.refX\n if (isNil(refX)) {\n refX = this.refX; // 不居中时的偏移量\n }\n\n if (isNil(refY)) {\n refY = this.refY; // 不居中时的偏移量\n }\n\n var size = this.getSize(cfg);\n var r = Math.max(cfgStyle.r, size[0] / 2) || size[0] / 2;\n var dis = r + padding;\n var style;\n switch (labelPosition) {\n case 'top':\n style = {\n x: 0,\n y: -dis - refY,\n textBaseline: 'bottom',\n textAlign: 'center'\n };\n break;\n case 'bottom':\n style = {\n x: 0,\n y: dis + refY,\n textBaseline: 'bottom',\n textAlign: 'center'\n };\n break;\n case 'left':\n style = {\n x: -dis + refX,\n y: 0,\n textAlign: 'left'\n };\n break;\n case 'center':\n style = {\n x: 0,\n y: 0,\n text: cfg.label,\n textAlign: 'center'\n };\n break;\n default:\n style = {\n x: dis + refX,\n y: 0,\n textAlign: 'right'\n };\n break;\n }\n style.text = cfg.label;\n return style;\n },\n drawShape: function drawShape(cfg, group) {\n var shapeType = this.shapeType; // || this.type,都已经加了 shapeType\n var style = this.getShapeStyle(cfg);\n var shape = group.addShape(shapeType, {\n attrs: style,\n draggable: true,\n name: 'combo-shape'\n });\n return shape;\n },\n updateCollapsedIcon: function updateCollapsedIcon(cfg, item, keyShapeStyle) {\n var collapsed = cfg.collapsed,\n _a = cfg.collapsedSubstituteIcon,\n collapsedSubstituteIcon = _a === void 0 ? {} : _a;\n var subsitututeIconConfig = Object.assign({}, this.options.collapsedSubstituteIcon, collapsedSubstituteIcon);\n var show = subsitututeIconConfig.show,\n img = subsitututeIconConfig.img,\n width = subsitututeIconConfig.width,\n height = subsitututeIconConfig.height;\n var group = item.getContainer();\n var collapsedIconShape = group.find(function (ele) {\n return ele.get('name') === 'combo-collapsed-substitute-icon';\n });\n var iconShapeExist = collapsedIconShape && !collapsedIconShape.destroyed;\n var keyShape = item.get('keyShape');\n if (collapsed && show) {\n if (iconShapeExist) {\n collapsedIconShape.show();\n } else {\n var sizeAttr = {\n width: width || keyShapeStyle.r * 2 || keyShapeStyle.width,\n height: height || keyShapeStyle.r * 2 || keyShapeStyle.height\n };\n collapsedIconShape = group.addShape('image', {\n attrs: __assign({\n img: img,\n x: -sizeAttr.width / 2,\n y: -sizeAttr.height / 2\n }, sizeAttr),\n name: 'combo-collapsed-substitute-icon',\n draggable: true\n });\n }\n keyShape.hide();\n } else if (iconShapeExist) {\n collapsedIconShape.hide();\n keyShape.show();\n }\n },\n updateShape: function updateShape(cfg, item, keyShapeStyle) {\n var _this = this;\n var keyShape = item.get('keyShape');\n var itemAnimate = item.get('animate');\n var animate = itemAnimate && (cfg.animate === undefined ? this.options.animate : cfg.animate);\n if (animate && keyShape.animate) {\n // 更新到展开状态,先将 collapsedIcon 隐藏。否则在动画完成后再出现 collapsedIcon\n if (!cfg.collapsed) {\n this.updateCollapsedIcon(cfg, item, keyShapeStyle);\n }\n keyShape.animate(keyShapeStyle, {\n duration: 200,\n easing: 'easeLinear',\n callback: function callback() {\n if (cfg.collapsed) {\n _this.updateCollapsedIcon(cfg, item, keyShapeStyle);\n }\n }\n });\n } else {\n keyShape.attr(__assign({}, keyShapeStyle));\n this.updateCollapsedIcon(cfg, item, keyShapeStyle);\n }\n this.updateLabel(cfg, item);\n // special for some types of nodes\n }\n};\n\nvar singleComboDef = __assign(__assign({}, shapeBase), singleCombo);\nShape.registerCombo('single-combo', singleComboDef);","import { __assign } from \"tslib\";\nimport Global from '../../global';\nimport Shape from '../shape';\nimport { isNumber, clone, mix, isArray } from '@antv/util';\n// 圆形 Combo\nShape.registerCombo('circle', {\n // 自定义节点时的配置\n options: {\n size: [Global.defaultCombo.size[0], Global.defaultCombo.size[0]],\n padding: Math.max.apply(Math, Global.defaultCombo.padding),\n animate: true,\n style: {\n stroke: Global.defaultCombo.style.stroke,\n fill: Global.defaultCombo.style.fill,\n lineWidth: Global.defaultCombo.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: Global.comboLabel.style.fill,\n fontSize: Global.comboLabel.style.fontSize\n },\n refX: 0,\n refY: 0\n },\n stateStyles: __assign({}, Global.comboStateStyles),\n collapsedSubstituteIcon: {\n show: false,\n img: 'https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*RsnHRqLfJn4AAAAAAAAAAAAAARQnAQ'\n }\n },\n shapeType: 'circle',\n // 文本位置\n labelPosition: 'top',\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n delete style.height;\n delete style.width;\n var keyShape = group.addShape('circle', {\n attrs: style,\n className: 'circle-combo',\n name: 'circle-combo',\n draggable: true\n });\n return keyShape;\n },\n /**\n * 获取 Combo 的样式,供基于该 Combo 自定义时使用\n * @param {Object} cfg Combo 数据模型\n * @return {Object} Combo 的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = this.options.style;\n var padding = cfg.padding || this.options.padding;\n if (isArray(padding)) padding = Math.max.apply(Math, padding);\n var strokeStyle = {\n stroke: cfg.color\n };\n // 如果设置了color,则覆盖默认的stroke属性\n var style = mix({}, defaultStyle, strokeStyle, cfg.style);\n var fixSize = cfg.collapsed && cfg.fixCollapseSize ? cfg.fixCollapseSize : cfg.fixSize;\n var r;\n if (fixSize) {\n r = isNumber(fixSize) ? fixSize / 2 : fixSize[0] / 2;\n } else {\n var size = this.getSize(cfg);\n if (!isNumber(style.r) || isNaN(style.r)) r = size[0] / 2 || Global.defaultCombo.style.r;else r = Math.max(style.r, size[0] / 2) || size[0] / 2;\n }\n style.r = r + padding;\n var styles = __assign({\n x: 0,\n y: 0\n }, style);\n if (cfg.style) cfg.style.r = r;else {\n cfg.style = {\n r: r\n };\n }\n return styles;\n },\n update: function update(cfg, item) {\n var size = this.getSize(cfg);\n var padding = cfg.padding || this.options.padding;\n if (isArray(padding)) padding = Math.max.apply(Math, padding);\n var cfgStyle = clone(cfg.style);\n var fixSize = cfg.collapsed && cfg.fixCollapseSize ? cfg.fixCollapseSize : cfg.fixSize;\n var r;\n if (fixSize) {\n r = isNumber(fixSize) ? fixSize / 2 : fixSize[0] / 2;\n } else {\n r = Math.max(cfgStyle.r, size[0] / 2) || size[0] / 2;\n }\n cfgStyle.r = r + padding;\n var itemCacheSize = item.get('sizeCache');\n if (itemCacheSize) {\n itemCacheSize.r = cfgStyle.r;\n }\n // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n var strokeStyle = {\n stroke: cfg.color\n };\n // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n var keyShape = item.get('keyShape');\n var style = mix({}, keyShape.attr(), strokeStyle, cfgStyle);\n if (cfg.style) cfg.style.r = r;else {\n cfg.style = {\n r: r\n };\n }\n this.updateShape(cfg, item, style, true);\n }\n}, 'single-combo');","import { __assign } from \"tslib\";\nimport { mix, isNumber, clone, isNil } from '@antv/util';\nimport Global from '../../global';\nimport Shape from '../shape';\nShape.registerCombo('rect', {\n // 自定义 Combo 时的配置\n options: {\n size: [40, 5],\n padding: [25, 20, 15, 20],\n animate: true,\n style: {\n radius: 0,\n stroke: Global.defaultCombo.style.stroke,\n fill: Global.defaultCombo.style.fill,\n lineWidth: Global.defaultCombo.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: Global.comboLabel.style.fill,\n fontSize: Global.comboLabel.style.fontSize,\n fontFamily: Global.windowFontFamily\n }\n },\n // 连接点,默认为左右\n anchorPoints: [[0, 0.5], [1, 0.5]],\n stateStyles: __assign({}, Global.comboStateStyles),\n collapsedSubstituteIcon: {\n show: false,\n img: 'https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*RsnHRqLfJn4AAAAAAAAAAAAAARQnAQ'\n }\n },\n shapeType: 'rect',\n labelPosition: 'top',\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('rect', {\n attrs: style,\n className: 'rect-combo',\n name: 'rect-combo',\n draggable: true\n });\n return keyShape;\n },\n // 私有方法,不希望扩展的 Combo 复写这个方法\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg) {\n var labelPosition = labelCfg.position || this.labelPosition;\n var cfgStyle = cfg.style;\n var padding = cfg.padding || this.options.padding;\n if (isNumber(padding)) padding = [padding, padding, padding, padding];\n var refX = labelCfg.refX,\n refY = labelCfg.refY;\n // 考虑 refX 和 refY = 0 的场景,不用用 labelCfg.refX || Global.nodeLabel.refY\n if (isNil(refX)) {\n refX = this.refX; // 不居中时的偏移量\n }\n\n if (isNil(refY)) {\n refY = this.refY; // 不居中时的偏移量\n }\n\n var left = -cfgStyle.width / 2 - padding[3];\n var right = cfgStyle.width / 2 + padding[1];\n var top = -cfgStyle.height / 2 - padding[0];\n var bottom = cfgStyle.height / 2 + padding[2];\n var style;\n switch (labelPosition) {\n case 'top':\n style = {\n x: left + refX,\n y: top + refY,\n textBaseline: 'top',\n textAlign: 'left'\n };\n break;\n case 'bottom':\n style = {\n x: 0,\n y: bottom + refY,\n textBaseline: 'top',\n textAlign: 'center'\n };\n break;\n case 'left':\n style = {\n x: left + refY,\n y: 0,\n textAlign: 'left'\n };\n break;\n case 'center':\n style = {\n x: 0,\n y: 0,\n text: cfg.label,\n textAlign: 'center'\n };\n break;\n case 'top-center':\n style = {\n x: 0,\n y: top + refY,\n textBaseline: 'top',\n textAlign: 'center'\n };\n break;\n default:\n style = {\n x: right + refX,\n y: 0,\n textAlign: 'right'\n };\n break;\n }\n style.text = cfg.label;\n return style;\n },\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = this.options.style;\n var padding = cfg.padding || this.options.padding;\n if (isNumber(padding)) padding = [padding, padding, padding, padding];\n var strokeStyle = {\n stroke: cfg.color\n };\n // 如果设置了color,则覆盖默认的stroke属性\n var style = mix({}, defaultStyle, strokeStyle, cfg.style);\n var size = this.getSize(cfg);\n var width;\n var height;\n var fixSize = cfg.collapsed && cfg.fixCollapseSize ? cfg.fixCollapseSize : cfg.fixSize;\n if (fixSize) {\n if (isNumber(fixSize)) {\n width = fixSize;\n height = fixSize;\n } else {\n width = fixSize[0];\n height = fixSize[1];\n }\n } else {\n if (!isNumber(style.width) || isNaN(style.width)) width = size[0] || Global.defaultCombo.style.width;else width = Math.max(style.width, size[0]) || size[0];\n if (!isNumber(style.height) || isNaN(style.height)) height = size[1] || Global.defaultCombo.style.height;else height = Math.max(style.height, size[1]) || size[1];\n }\n var x = -width / 2 - padding[3];\n var y = -height / 2 - padding[0];\n style.width = width + padding[1] + padding[3];\n style.height = height + padding[0] + padding[2];\n var styles = __assign({\n x: x,\n y: y\n }, style);\n if (!cfg.style) {\n cfg.style = {\n width: width,\n height: height\n };\n } else {\n cfg.style.width = width;\n cfg.style.height = height;\n }\n return styles;\n },\n update: function update(cfg, item) {\n var size = this.getSize(cfg);\n var padding = cfg.padding || this.options.padding;\n if (isNumber(padding)) padding = [padding, padding, padding, padding];\n var cfgStyle = clone(cfg.style);\n var width, height;\n var fixSize = cfg.collapsed && cfg.fixCollapseSize ? cfg.fixCollapseSize : cfg.fixSize;\n if (fixSize) {\n if (isNumber(fixSize)) {\n width = fixSize;\n height = fixSize;\n } else {\n width = fixSize[0];\n height = fixSize[1];\n }\n } else {\n width = Math.max(cfgStyle.width, size[0]) || size[0];\n height = Math.max(cfgStyle.height, size[1]) || size[1];\n }\n cfgStyle.width = width + padding[1] + padding[3];\n cfgStyle.height = height + padding[0] + padding[2];\n var itemCacheSize = item.get('sizeCache');\n if (itemCacheSize) {\n itemCacheSize.width = cfgStyle.width;\n itemCacheSize.height = cfgStyle.height;\n }\n cfgStyle.x = -width / 2 - padding[3];\n cfgStyle.y = -height / 2 - padding[0];\n // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n var strokeStyle = {\n stroke: cfg.color\n };\n // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n var keyShape = item.get('keyShape');\n var style = mix({}, keyShape.attr(), strokeStyle, cfgStyle);\n if (cfg.style) {\n cfg.style.width = width;\n cfg.style.height = height;\n } else {\n cfg.style = {\n width: width,\n height: height\n };\n }\n this.updateShape(cfg, item, style, false);\n }\n}, 'single-combo');","import { __assign } from \"tslib\";\nimport { deepMix } from '@antv/util';\nimport Global from '../../global';\nimport Shape from '../shape';\n// 带有图标的圆,可用于拓扑图中\nShape.registerNode('simple-circle', {\n // 自定义节点时的配置\n options: {\n size: Global.defaultNode.size,\n style: {\n x: 0,\n y: 0,\n stroke: Global.defaultNode.style.stroke,\n fill: Global.defaultNode.style.fill,\n lineWidth: Global.defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: Global.nodeLabel.style.fill,\n fontSize: Global.nodeLabel.style.fontSize,\n fontFamily: Global.windowFontFamily\n }\n },\n stateStyles: __assign({}, Global.nodeStateStyles)\n },\n shapeType: 'simple-circle',\n // 文本位置\n labelPosition: 'center',\n shapeMap: {},\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n var name = \"\".concat(this.type, \"-keyShape\");\n var keyShape = group.addShape('circle', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: name,\n draggable: true\n });\n group['shapeMap'][name] = keyShape;\n return keyShape;\n },\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n };\n // 如果设置了color,则覆盖默认的stroke属性\n var style = deepMix({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var r = size[0] / 2;\n var styles = __assign({\n x: 0,\n y: 0,\n r: r\n }, style);\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var size = this.getSize(cfg);\n // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n var strokeStyle = {\n stroke: cfg.color,\n r: size[0] / 2\n };\n // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n var keyShape = item.get('keyShape');\n var style = deepMix({}, keyShape.attr(), strokeStyle, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n }\n}, 'single-node');","import { __assign } from \"tslib\";\nimport { mix } from '@antv/util';\nimport Global from '../../global';\nimport Shape from '../shape';\nShape.registerNode('simple-rect', {\n // 自定义节点时的配置\n options: {\n size: [100, 30],\n style: {\n radius: 0,\n stroke: Global.defaultNode.style.stroke,\n fill: Global.defaultNode.style.fill,\n lineWidth: Global.defaultNode.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: Global.nodeLabel.style.fill,\n fontSize: Global.nodeLabel.style.fontSize,\n fontFamily: Global.windowFontFamily\n }\n },\n // 连接点,默认为左右\n // anchorPoints: [{ x: 0, y: 0.5 }, { x: 1, y: 0.5 }]\n anchorPoints: [[0, 0.5], [1, 0.5]],\n stateStyles: __assign({}, Global.nodeStateStyles)\n },\n shapeType: 'simple-rect',\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('rect', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n return keyShape;\n },\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n };\n // 如果设置了color,则覆盖默认的stroke属性\n var style = mix({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var width = style.width || size[0];\n var height = style.height || size[1];\n var styles = __assign({\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height\n }, style);\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer();\n // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var size = this.getSize(cfg);\n var keyShape = item.get('keyShape');\n if (!cfg.size) {\n size[0] = keyShape.attr('width') || defaultStyle.width;\n size[1] = keyShape.attr('height') || defaultStyle.height;\n }\n // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n var strokeStyle = {\n stroke: cfg.color,\n x: -size[0] / 2,\n y: -size[1] / 2,\n width: size[0],\n height: size[1]\n };\n // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n var style = mix({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = mix(style, cfg.style);\n this.updateShape(cfg, item, style, false, updateType);\n }\n}, 'single-node');","import { __assign } from \"tslib\";\nimport Shape from '../shape';\nimport Global from '../../global';\n/**\n * 基本的图片,可以添加文本,默认文本在图片的下面\n */\nShape.registerNode('image', {\n options: {\n img: 'https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*eD7nT6tmYgAAAAAAAAAAAABkARQnAQ',\n size: 200,\n labelCfg: {\n style: {\n fontFamily: Global.windowFontFamily\n }\n },\n clipCfg: {\n show: false,\n type: 'circle',\n // circle\n r: 50,\n // ellipse\n rx: 50,\n ry: 35,\n // rect\n width: 50,\n height: 35,\n // polygon\n points: [[30, 12], [12, 30], [30, 48], [48, 30]],\n // path\n path: [['M', 25, 25], ['L', 50, 25], ['A', 12.5, 12.5, 0, 1, 1, 50, 50], ['A', 12.5, 12.5, 0, 1, 0, 50, 50], ['L', 25, 75], ['Z']],\n // 坐标\n x: 0,\n y: 0\n // clip 的属性样式\n // style: {\n // lineWidth: 1\n // },\n }\n },\n\n shapeType: 'image',\n labelPosition: 'bottom',\n drawShape: function drawShape(cfg, group) {\n var shapeType = this.shapeType;\n var style = this.getShapeStyle(cfg);\n delete style.fill;\n var shape = group.addShape(shapeType, {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n this.drawClip(cfg, shape);\n return shape;\n },\n drawClip: function drawClip(cfg, shape) {\n var clip = (this.mergeStyle || this.getOptions(cfg)).clipCfg;\n if (!clip.show) {\n return;\n }\n // 支持 circle、rect、ellipse、Polygon 及自定义 path clip\n var type = clip.type,\n x = clip.x,\n y = clip.y,\n style = clip.style;\n if (type === 'circle') {\n var r = clip.r;\n shape.setClip({\n type: 'circle',\n attrs: __assign({\n r: r,\n x: x,\n y: y\n }, style)\n });\n } else if (type === 'rect') {\n var width = clip.width,\n height = clip.height;\n var rectX = x - width / 2;\n var rectY = y - height / 2;\n shape.setClip({\n type: 'rect',\n attrs: __assign({\n x: rectX,\n y: rectY,\n width: width,\n height: height\n }, style)\n });\n } else if (type === 'ellipse') {\n var rx = clip.rx,\n ry = clip.ry;\n shape.setClip({\n type: 'ellipse',\n attrs: __assign({\n x: x,\n y: y,\n rx: rx,\n ry: ry\n }, style)\n });\n } else if (type === 'polygon') {\n var points = clip.points;\n shape.setClip({\n type: 'polygon',\n attrs: __assign({\n points: points\n }, style)\n });\n } else if (type === 'path') {\n var path = clip.path;\n shape.setClip({\n type: 'path',\n attrs: __assign({\n path: path\n }, style)\n });\n }\n },\n getShapeStyle: function getShapeStyle(cfg) {\n var _a = this.mergeStyle || this.getOptions(cfg),\n defaultStyle = _a.style,\n img = _a.img;\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n if (defaultStyle) {\n width = defaultStyle.width || size[0];\n height = defaultStyle.height || size[1];\n }\n var style = __assign({\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height,\n img: img\n }, defaultStyle);\n return style;\n },\n updateShapeStyle: function updateShapeStyle(cfg, item) {\n var group = item.getContainer();\n var shapeClassName = \"\".concat(this.itemType, \"-shape\");\n var shape = group['shapeMap'][shapeClassName] || group.find(function (element) {\n return element.get('className') === shapeClassName;\n }) || item.getKeyShape();\n var shapeStyle = this.getShapeStyle(cfg);\n if (shape && !shape.destroyed) {\n shape.attr(shapeStyle);\n }\n }\n}, 'single-node');","export default {\n triangle: function triangle(width, length, d) {\n if (width === void 0) {\n width = 10;\n }\n if (length === void 0) {\n length = 15;\n }\n if (d === void 0) {\n d = 0;\n }\n var begin = d * 2;\n var path = \"M \".concat(begin, \",0 L \").concat(begin + length, \",-\").concat(width / 2, \" L \").concat(begin + length, \",\").concat(width / 2, \" Z\");\n return path;\n },\n vee: function vee(width, length, d) {\n if (width === void 0) {\n width = 15;\n }\n if (length === void 0) {\n length = 20;\n }\n if (d === void 0) {\n d = 0;\n }\n var begin = d * 2;\n var path = \"M \".concat(begin, \",0 L \").concat(begin + length, \",-\").concat(width / 2, \"\\n L \").concat(begin + 2 * length / 3, \",0 L \").concat(begin + length, \",\").concat(width / 2, \" Z\");\n return path;\n },\n circle: function circle(r, d) {\n if (r === void 0) {\n r = 5;\n }\n if (d === void 0) {\n d = 0;\n }\n var begin = d * 2;\n var path = \"M \".concat(begin, \", 0\\n a \").concat(r, \",\").concat(r, \" 0 1,0 \").concat(r * 2, \",0\\n a \").concat(r, \",\").concat(r, \" 0 1,0 \").concat(-r * 2, \",0\");\n return path;\n },\n rect: function rect(width, length, d) {\n if (width === void 0) {\n width = 10;\n }\n if (length === void 0) {\n length = 10;\n }\n if (d === void 0) {\n d = 0;\n }\n var begin = d * 2;\n var path = \"M \".concat(begin, \",\").concat(-width / 2, \" \\n L \").concat(begin + length, \",\").concat(-width / 2, \" \\n L \").concat(begin + length, \",\").concat(width / 2, \" \\n L \").concat(begin, \",\").concat(width / 2, \" Z\");\n return path;\n },\n diamond: function diamond(width, length, d) {\n if (width === void 0) {\n width = 15;\n }\n if (length === void 0) {\n length = 15;\n }\n if (d === void 0) {\n d = 0;\n }\n var begin = d * 2;\n var path = \"M \".concat(begin, \",0 \\n L \").concat(begin + length / 2, \",\").concat(-width / 2, \" \\n L \").concat(begin + length, \",0 \\n L \").concat(begin + length / 2, \",\").concat(width / 2, \" Z\");\n return path;\n },\n triangleRect: function triangleRect(tWidth, tLength, rWidth, rLength, gap, d) {\n if (tWidth === void 0) {\n tWidth = 15;\n }\n if (tLength === void 0) {\n tLength = 15;\n }\n if (rWidth === void 0) {\n rWidth = 15;\n }\n if (rLength === void 0) {\n rLength = 3;\n }\n if (gap === void 0) {\n gap = 5;\n }\n if (d === void 0) {\n d = 0;\n }\n var begin = d * 2;\n var rectBegin = begin + tLength + gap;\n var path = \"M \".concat(begin, \",0 L \").concat(begin + tLength, \",-\").concat(tWidth / 2, \" L \").concat(begin + tLength, \",\").concat(tWidth / 2, \" Z\\n M \").concat(rectBegin, \", -\").concat(rWidth / 2, \"\\n L \").concat(rectBegin + rLength, \" -\").concat(rWidth / 2, \"\\n L \").concat(rectBegin + rLength, \" \").concat(rWidth / 2, \"\\n L \").concat(rectBegin, \" \").concat(rWidth / 2, \"\\n Z\");\n return path;\n }\n};","export default {\n collapse: function collapse(x, y, r) {\n return [['M', x - r, y], ['a', r, r, 0, 1, 0, r * 2, 0], ['a', r, r, 0, 1, 0, -r * 2, 0], ['M', x - r + 4, y], ['L', x + r - 4, y]];\n },\n expand: function expand(x, y, r) {\n return [['M', x - r, y], ['a', r, r, 0, 1, 0, r * 2, 0], ['a', r, r, 0, 1, 0, -r * 2, 0], ['M', x - r + 4, y], ['L', x - r + 2 * r - 4, y], ['M', x - r + r, y - r + 4], ['L', x, y + r - 4]];\n },\n upTriangle: function upTriangle(x, y, r) {\n var l1 = r * Math.cos(Math.PI / 6);\n var l2 = r * Math.sin(Math.PI / 6);\n return [['M', x - l1, y + l2], ['L', x + l1, y + l2], ['L', x, y - r], ['Z']];\n },\n downTriangle: function downTriangle(x, y, r) {\n var l1 = r * Math.cos(Math.PI / 6);\n var l2 = r * Math.sin(Math.PI / 6);\n return [['M', x - l1, y - l2], ['L', x + l1, y - l2], ['L', x, y + r], ['Z']];\n }\n};","import Shape from './shape';\nimport './node';\nimport './edge';\nimport './combo';\nimport './combos';\nimport './nodes';\nexport { default as Arrow } from './arrow';\nexport { default as Marker } from './marker';\nexport default Shape;","export var defaultSubjectColors = ['#5F95FF', '#61DDAA', '#65789B', '#F6BD16', '#7262FD', '#78D3F8', '#9661BC', '#F6903D', '#008685', '#F08BB4'];","export var isForce = function isForce(layoutType) {\n return layoutType === 'force' || layoutType === 'g6force' || layoutType === 'gForce' || layoutType === 'force2';\n};","import { __assign } from \"tslib\";\nimport * as MathUtil from './math';\nimport * as GraphicUtil from './graphic';\nimport * as PathUtil from './path';\nimport * as BaseUtil from './base';\nimport * as ColorUtil from './color';\nimport * as LayoutUtil from './layout';\nimport { ext, mat3 } from '@antv/matrix-util';\nvar transform = ext.transform;\nvar Util = __assign(__assign(__assign(__assign(__assign(__assign(__assign({}, BaseUtil), GraphicUtil), PathUtil), MathUtil), ColorUtil), LayoutUtil), {\n transform: transform,\n mat3: mat3\n});\nexport default Util;","import { __assign, __rest } from \"tslib\";\nimport { isFunction, groupBy } from '@antv/util';\nimport { isNaN, calculationItemsBBox } from '../../util/base';\nimport { isForce } from '../../util/layout';\nvar LayoutController = /** @class */function () {\n function LayoutController(graph) {\n this.graph = graph;\n this.layoutCfg = graph.get('layout') || {};\n this.layoutType = this.getLayoutType();\n this.layoutMethods = [];\n this.initLayout();\n }\n // eslint-disable-next-line class-methods-use-this\n LayoutController.prototype.initLayout = function () {\n // no data before rendering\n };\n LayoutController.prototype.getLayoutType = function () {\n return this.getLayoutCfgType(this.layoutCfg);\n };\n LayoutController.prototype.getLayoutCfgType = function (layoutCfg) {\n var type = layoutCfg.type;\n // type should be top priority\n if (type) {\n return type;\n }\n var pipes = layoutCfg.pipes;\n if (Array.isArray(pipes)) {\n return pipes.map(function (pipe) {\n return (pipe === null || pipe === void 0 ? void 0 : pipe.type) || '';\n });\n }\n return null;\n };\n LayoutController.prototype.isLayoutTypeSame = function (cfg) {\n var current = this.getLayoutCfgType(cfg);\n var preHasPipies = Array.isArray(this.layoutType);\n var currentHasPipes = Array.isArray(current);\n // already has pipes, and the new one is pipes\n if (preHasPipies && currentHasPipes) {\n return this.layoutType.every(function (type, index) {\n return type === current[index];\n });\n }\n // only one of the pre and current is pipes\n if (Array.isArray(current) || Array.isArray(this.layoutType)) {\n return false;\n }\n // both of the pre and current are not pipes\n return (cfg === null || cfg === void 0 ? void 0 : cfg.type) === this.layoutType;\n };\n // 绘制\n LayoutController.prototype.refreshLayout = function () {\n var _a = this,\n graph = _a.graph,\n layoutType = _a.layoutType,\n _b = _a.layoutCfg,\n layoutCfg = _b === void 0 ? {} : _b;\n if (!graph) return;\n var animate = layoutCfg.animate;\n var isDefaultAnimateLayout = animate === undefined && (layoutType === 'force' || layoutType === 'force2');\n var forceAnimate = isForce(layoutType) && (animate || isDefaultAnimateLayout);\n if (graph.get('animate') && !forceAnimate) {\n graph.positionsAnimate(layoutType === 'comboCombined');\n } else {\n graph.refreshPositions(layoutType === 'comboCombined');\n }\n };\n // 更换布局\n LayoutController.prototype.changeLayout = function (cfg) {\n var disableTriggerLayout = cfg.disableTriggerLayout,\n otherCfgs = __rest(cfg, [\"disableTriggerLayout\"]);\n this.layoutCfg = otherCfgs;\n this.layoutType = otherCfgs.type || this.layoutType;\n // 不触发重新布局,仅更新参数\n if (disableTriggerLayout) return;\n this.layout();\n };\n // 更换数据\n LayoutController.prototype.changeData = function (success) {\n this.layout(success);\n };\n LayoutController.prototype.destoryLayoutMethods = function () {\n var layoutMethods = this.layoutMethods;\n var destroyedLayoutTypes = [];\n layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.forEach(function (layoutMethod) {\n var _a;\n var layoutType = (_a = layoutMethod.getType) === null || _a === void 0 ? void 0 : _a.call(layoutMethod);\n if (layoutType) destroyedLayoutTypes.push(layoutType);\n layoutMethod.destroy();\n });\n this.layoutMethods = [];\n return destroyedLayoutTypes;\n };\n // 销毁布局,不能使用 this.destroy,因为 controller 还需要被使用,只是把布局算法销毁\n LayoutController.prototype.destroyLayout = function () {\n this.destoryLayoutMethods();\n var graph = this.graph;\n if (graph && !graph.get('destroyed')) {\n graph.set('layout', undefined);\n }\n this.layoutCfg = undefined;\n this.layoutType = undefined;\n this.layoutMethods = undefined;\n };\n // 从 this.graph 获取数据\n LayoutController.prototype.setDataFromGraph = function () {\n var _a;\n var nodes = [];\n var hiddenNodes = [];\n var edges = [];\n var hiddenEdges = [];\n var comboEdges = [];\n var combos = [];\n var hiddenCombos = [];\n var nodeItems = this.graph.getNodes();\n var edgeItems = this.graph.getEdges();\n var comboItems = this.graph.getCombos();\n var nodeLength = nodeItems.length;\n for (var i = 0; i < nodeLength; i++) {\n var nodeItem = nodeItems[i];\n if (!nodeItem || nodeItem.destroyed) continue;\n var model = nodeItem.getModel();\n if (!nodeItem.isVisible()) {\n hiddenNodes.push(model);\n continue;\n }\n nodes.push(model);\n }\n var edgeLength = edgeItems.length;\n for (var i = 0; i < edgeLength; i++) {\n var edgeItem = edgeItems[i];\n if (!edgeItem || edgeItem.destroyed) continue;\n var model = edgeItem.getModel();\n if (!edgeItem.isVisible()) {\n hiddenEdges.push(model);\n continue;\n }\n if (!model.isComboEdge) edges.push(model);else comboEdges.push(model);\n }\n var comboLength = comboItems.length;\n for (var i = 0; i < comboLength; i++) {\n var comboItem = comboItems[i];\n if (comboItem.destroyed) continue;\n var model = comboItem.getModel();\n if (!comboItem.isVisible()) {\n hiddenCombos.push(model);\n continue;\n }\n combos.push(model);\n }\n return {\n nodes: nodes,\n hiddenNodes: hiddenNodes,\n edges: edges,\n hiddenEdges: hiddenEdges,\n combos: combos,\n hiddenCombos: hiddenCombos,\n comboEdges: comboEdges,\n vedges: (_a = this.graph.get('vedges')) === null || _a === void 0 ? void 0 : _a.map(function (edge) {\n return edge.getModel();\n })\n };\n };\n // 重新布局\n LayoutController.prototype.relayout = function (reloadData) {\n var _this = this;\n var _a = this,\n graph = _a.graph,\n layoutMethods = _a.layoutMethods,\n layoutCfg = _a.layoutCfg;\n if (!graph || graph.get('destroyed')) return;\n if (reloadData) {\n this.data = this.setDataFromGraph();\n var nodes = this.data.nodes;\n if (!nodes) {\n return false;\n }\n this.initPositions(layoutCfg.center, nodes);\n }\n graph.emit('beforelayout');\n var start = Promise.resolve();\n layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.forEach(function (layoutMethod, index) {\n var currentCfg = layoutCfg[index] || layoutCfg;\n start = start.then(function () {\n var _a;\n var relayoutPromise = _this.execLayoutMethod(currentCfg, index);\n if (index === layoutMethods.length - 1) {\n (_a = layoutCfg.onAllLayoutEnd) === null || _a === void 0 ? void 0 : _a.call(layoutCfg);\n }\n return relayoutPromise;\n });\n });\n };\n // 筛选参与布局的nodes和edges\n LayoutController.prototype.filterLayoutData = function (data, cfg) {\n var nodes = data.nodes,\n edges = data.edges,\n rest = __rest(data, [\"nodes\", \"edges\"]);\n if (!nodes) {\n return data;\n }\n var nodesFilter;\n var edegsFilter;\n if (isFunction(cfg === null || cfg === void 0 ? void 0 : cfg.nodesFilter)) {\n nodesFilter = cfg.nodesFilter;\n } else {\n nodesFilter = function nodesFilter() {\n return true;\n };\n }\n var fNodes = nodes.filter(nodesFilter);\n if (isFunction(cfg === null || cfg === void 0 ? void 0 : cfg.edgesFilter)) {\n edegsFilter = cfg.edgesFilter;\n } else {\n var nodesMap_1 = fNodes.reduce(function (acc, cur) {\n acc[cur.id] = true;\n return acc;\n }, {});\n edegsFilter = function edegsFilter(edge) {\n return nodesMap_1[edge.source] && nodesMap_1[edge.target];\n };\n }\n return __assign({\n nodes: fNodes,\n edges: edges.filter(edegsFilter)\n }, rest);\n };\n LayoutController.prototype.getLayoutBBox = function (nodes) {\n var graph = this.graph;\n var graphGroupNodes = groupBy(graph.getNodes(), function (n) {\n return n.getModel().layoutOrder;\n });\n var layoutNodes = Object.values(graphGroupNodes).map(function (value) {\n var bbox = calculationItemsBBox(value);\n bbox.size = [bbox.width, bbox.height];\n return bbox;\n });\n var groupNodes = Object.values(groupBy(nodes, 'layoutOrder'));\n return {\n groupNodes: groupNodes,\n layoutNodes: layoutNodes\n };\n };\n // 控制布局动画\n // eslint-disable-next-line class-methods-use-this\n LayoutController.prototype.layoutAnimate = function () {};\n // 将当前节点的平均中心移动到原点\n LayoutController.prototype.moveToZero = function () {\n var graph = this.graph;\n var data = graph.get('data');\n var nodes = data.nodes;\n if (nodes[0].x === undefined || nodes[0].x === null || isNaN(nodes[0].x)) {\n return;\n }\n var meanCenter = [0, 0];\n var nodeLength = nodes.length;\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n meanCenter[0] += node.x;\n meanCenter[1] += node.y;\n }\n meanCenter[0] /= nodes.length;\n meanCenter[1] /= nodes.length;\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n node.x -= meanCenter[0];\n node.y -= meanCenter[1];\n }\n };\n // 初始化节点到 center 附近\n LayoutController.prototype.initPositions = function (center, nodes) {\n var _a;\n var graph = this.graph;\n if (!nodes) {\n return false;\n }\n var nodesToInit = nodes.filter(function (node) {\n return isNaN(node.x) || isNaN(node.y);\n });\n var nodeLength = nodesToInit ? nodesToInit.length : 0;\n if (!nodeLength) return;\n var hasPreset = (_a = this.initWithPreset) === null || _a === void 0 ? void 0 : _a.call(this);\n if (hasPreset) return false;\n var width = graph.get('width') * 0.85;\n var height = graph.get('height') * 0.85;\n var horiNum = Math.ceil(Math.sqrt(nodeLength) * (width / height));\n var vertiNum = Math.ceil(nodeLength / horiNum);\n var horiGap = width / (horiNum - 1);\n var vertiGap = height / (vertiNum - 1);\n if (!isFinite(horiGap) || !horiGap) horiGap = 0;\n if (!isFinite(vertiGap) || !horiGap) vertiGap = 0;\n var beginX = center[0] - width / 2;\n var beginY = center[1] - height / 2;\n var allHavePos = true;\n for (var i = 0; i < nodeLength; i++) {\n var node = nodesToInit[i];\n if (isNaN(+node.x)) {\n allHavePos = false;\n node.x = i % horiNum * horiGap + beginX;\n }\n if (isNaN(+node.y)) {\n allHavePos = false;\n node.y = Math.floor(i / horiNum) * vertiGap + beginY;\n }\n }\n return allHavePos;\n };\n LayoutController.prototype.destroy = function () {\n this.graph = null;\n this.destoryLayoutMethods();\n this.destroyed = true;\n };\n return LayoutController;\n}();\nexport default LayoutController;","var EventController = /** @class */function () {\n function EventController(graph) {\n this.graph = graph;\n this.destroyed = false;\n this.initEvents();\n }\n return EventController;\n}();\nexport default EventController;","import Behavior from './behavior';\nimport AbstractGraph from './graph/graph';\nimport Shape, { Arrow, Marker } from './element';\nimport Global from './global';\nimport Util from './util';\n// 用于 PC 和 Mobile 端分别实现 layout 和 updateLayoutCfg 方法\nimport AbstractLayout from './graph/controller/layout';\nimport AbstractEvent from './graph/controller/event';\nimport Node from './item/node';\nimport Edge from './item/edge';\nimport Hull from './item/hull';\nimport Combo from './item/combo';\nvar registerNode = Shape.registerNode;\nvar registerEdge = Shape.registerEdge;\nvar registerCombo = Shape.registerCombo;\nvar registerBehavior = Behavior.registerBehavior;\nvar BaseGlobal = Global;\nexport * from './types';\nexport { Arrow, Shape, Node, Edge, Combo, Hull, Marker, registerNode, registerCombo, AbstractGraph, Util, registerEdge, registerBehavior, AbstractLayout, AbstractEvent, BaseGlobal };\nexport default {\n version: Global.version,\n AbstractGraph: AbstractGraph,\n BaseGlobal: BaseGlobal,\n Util: Util,\n Shape: Shape,\n Node: Node,\n Edge: Edge,\n Combo: Combo,\n Hull: Hull,\n registerNode: Shape.registerNode,\n registerEdge: Shape.registerEdge,\n registerCombo: Shape.registerCombo,\n registerBehavior: Behavior.registerBehavior,\n Arrow: Arrow,\n Marker: Marker,\n AbstractLayout: AbstractLayout,\n AbstractEvent: AbstractEvent\n};","export function getPixelRatio() {\n return window ? window.devicePixelRatio : 1;\n}\n\n/**\n * 两点之间的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n */\nexport function distance(x1: number, y1: number, x2: number, y2: number) {\n const dx = x1 - x2;\n const dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\n/**\n * 是否在包围盒内\n * @param {number} minX 包围盒开始的点 x\n * @param {number} minY 包围盒开始的点 y\n * @param {number} width 宽度\n * @param {number} height 高度\n * @param {[type]} x 检测点的 x\n * @param {[type]} y 监测点的 y\n */\nexport function inBox(minX: number, minY: number, width: number, height: number, x, y) {\n return x >= minX && x <= minX + width && y >= minY && y <= minY + height;\n}\n\nexport function intersectRect(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n}\n\n// 合并两个区域\nexport function mergeRegion(region1, region2) {\n if (!region1 || !region2) {\n return region1 || region2;\n }\n return {\n minX: Math.min(region1.minX, region2.minX),\n minY: Math.min(region1.minY, region2.minY),\n maxX: Math.max(region1.maxX, region2.maxX),\n maxY: Math.max(region1.maxY, region2.maxY),\n };\n}\n\n/**\n * 判断两个点是否重合,点坐标的格式为 [x, y]\n * @param {Array} point1 第一个点\n * @param {Array} point2 第二个点\n */\nexport function isSamePoint(point1, point2) {\n return point1[0] === point2[0] && point1[1] === point2[1];\n}\n\nexport {\n isNil,\n isString,\n isFunction,\n isArray,\n each,\n toRadian,\n mod,\n isNumberEqual,\n requestAnimationFrame,\n clearAnimationFrame,\n} from '@antv/util';\n","import { IElement } from '@antv/g-base';\nimport { isString, each, isArray } from './util';\n\nconst regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nconst regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nconst regexPR = /^p\\s*\\(\\s*([axyn])\\s*\\)\\s*(.*)/i;\nconst regexColorStop = /[\\d.]+:(#[^\\s]+|[^\\)]+\\))/gi;\n\nfunction addStop(steps, gradient) {\n const arr: string[] = steps.match(regexColorStop);\n each(arr, (item) => {\n const itemArr = item.split(':');\n gradient.addColorStop(itemArr[0], itemArr[1]);\n });\n}\n/**\n * 将边和填充设置的颜色转换成线性渐变对象\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} gradientStr 颜色\n * @returns {any} 渐变对象\n */\nexport function parseLineGradient(context: CanvasRenderingContext2D, element: IElement, gradientStr: string) {\n const arr = regexLG.exec(gradientStr);\n const angle = (parseFloat(arr[1]) % 360) * (Math.PI / 180);\n const steps = arr[2];\n const box = element.getBBox();\n let start;\n let end;\n\n if (angle >= 0 && angle < (1 / 2) * Math.PI) {\n start = {\n x: box.minX,\n y: box.minY,\n };\n end = {\n x: box.maxX,\n y: box.maxY,\n };\n } else if ((1 / 2) * Math.PI <= angle && angle < Math.PI) {\n start = {\n x: box.maxX,\n y: box.minY,\n };\n end = {\n x: box.minX,\n y: box.maxY,\n };\n } else if (Math.PI <= angle && angle < (3 / 2) * Math.PI) {\n start = {\n x: box.maxX,\n y: box.maxY,\n };\n end = {\n x: box.minX,\n y: box.minY,\n };\n } else {\n start = {\n x: box.minX,\n y: box.maxY,\n };\n end = {\n x: box.maxX,\n y: box.minY,\n };\n }\n\n const tanTheta = Math.tan(angle);\n const tanTheta2 = tanTheta * tanTheta;\n\n const x = (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.x;\n const y = (tanTheta * (end.x - start.x + tanTheta * (end.y - start.y))) / (tanTheta2 + 1) + start.y;\n const gradient = context.createLinearGradient(start.x, start.y, x, y);\n addStop(steps, gradient);\n return gradient;\n}\n\n/**\n * 将边和填充设置的颜色转换成圆形渐变对象\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} gradientStr 颜色\n * @returns {any} 渐变对象\n */\nexport function parseRadialGradient(context: CanvasRenderingContext2D, element: IElement, gradientStr: string) {\n const arr = regexRG.exec(gradientStr);\n const fx = parseFloat(arr[1]);\n const fy = parseFloat(arr[2]);\n const fr = parseFloat(arr[3]);\n const steps = arr[4];\n // 环半径为0时,默认无渐变,取渐变序列的最后一个颜色\n if (fr === 0) {\n const colors = steps.match(regexColorStop);\n return colors[colors.length - 1].split(':')[1];\n }\n const box = element.getBBox();\n const width = box.maxX - box.minX;\n const height = box.maxY - box.minY;\n const r = Math.sqrt(width * width + height * height) / 2;\n const gradient = context.createRadialGradient(\n box.minX + width * fx,\n box.minY + height * fy,\n 0,\n box.minX + width / 2,\n box.minY + height / 2,\n fr * r\n );\n addStop(steps, gradient);\n return gradient;\n}\n\n/**\n * 边和填充设置的颜色转换成 pattern\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} patternStr 生成 pattern 的字符串\n */\nexport function parsePattern(context: CanvasRenderingContext2D, element: IElement, patternStr: string) {\n // 在转换过程中进行了缓存\n if (element.get('patternSource') && element.get('patternSource') === patternStr) {\n return element.get('pattern');\n }\n let pattern;\n let img;\n const arr = regexPR.exec(patternStr);\n let repeat = arr[1];\n const source = arr[2];\n\n // Function to be called when pattern loads\n function onload() {\n // Create pattern\n pattern = context.createPattern(img, repeat);\n element.set('pattern', pattern); // be a cache\n element.set('patternSource', patternStr);\n }\n\n switch (repeat) {\n case 'a':\n repeat = 'repeat';\n break;\n case 'x':\n repeat = 'repeat-x';\n break;\n case 'y':\n repeat = 'repeat-y';\n break;\n case 'n':\n repeat = 'no-repeat';\n break;\n default:\n repeat = 'no-repeat';\n }\n\n img = new Image();\n // If source URL is not a data URL\n if (!source.match(/^data:/i)) {\n // Set crossOrigin for this image\n img.crossOrigin = 'Anonymous';\n }\n img.src = source;\n\n if (img.complete) {\n onload();\n } else {\n img.onload = onload;\n // Fix onload() bug in IE9\n img.src = img.src;\n }\n\n return pattern;\n}\n\nexport function parseStyle(context: CanvasRenderingContext2D, element: IElement, color: string | CanvasPattern) {\n const bbox = element.getBBox();\n if (isNaN(bbox.x) || isNaN(bbox.y) || isNaN(bbox.width) || isNaN(bbox.height)) {\n return color;\n }\n\n if (isString(color)) {\n if (color[1] === '(' || color[2] === '(') {\n if (color[0] === 'l') {\n // regexLG.test(color)\n return parseLineGradient(context, element, color);\n }\n if (color[0] === 'r') {\n // regexRG.test(color)\n return parseRadialGradient(context, element, color);\n }\n if (color[0] === 'p') {\n // regexPR.test(color)\n return parsePattern(context, element, color);\n }\n }\n return color;\n }\n\n if (color instanceof CanvasPattern) {\n return color;\n }\n}\n\nexport function parseRadius(radius) {\n let r1 = 0;\n let r2 = 0;\n let r3 = 0;\n let r4 = 0;\n if (isArray(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n } else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n } else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n } else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n } else {\n r1 = r2 = r3 = r4 = radius;\n }\n return [r1, r2, r3, r4];\n}\n","import { mod, toRadian, isSamePoint } from './util';\n\n// 向量长度\nfunction vMag(v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n\n// u.v/|u||v|,计算夹角的余弦值\nfunction vRatio(u, v) {\n // 当存在一个向量的长度为 0 时,夹角也为 0,即夹角的余弦值为 1\n return vMag(u) * vMag(v) ? (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)) : 1;\n}\n\n// 向量角度\nfunction vAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n}\n\n// A 0:rx 1:ry 2:x-axis-rotation 3:large-arc-flag 4:sweep-flag 5: x 6: y\nexport default function getArcParams(startPoint, params) {\n let rx = params[1];\n let ry = params[2];\n const xRotation = mod(toRadian(params[3]), Math.PI * 2);\n const arcFlag = params[4];\n const sweepFlag = params[5];\n // 弧形起点坐标\n const x1 = startPoint[0];\n const y1 = startPoint[1];\n // 弧形终点坐标\n const x2 = params[6];\n const y2 = params[7];\n const xp = (Math.cos(xRotation) * (x1 - x2)) / 2.0 + (Math.sin(xRotation) * (y1 - y2)) / 2.0;\n const yp = (-1 * Math.sin(xRotation) * (x1 - x2)) / 2.0 + (Math.cos(xRotation) * (y1 - y2)) / 2.0;\n const lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n const diff = rx * rx * (yp * yp) + ry * ry * (xp * xp);\n\n let f = diff ? Math.sqrt((rx * rx * (ry * ry) - diff) / diff) : 1;\n\n if (arcFlag === sweepFlag) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n\n // 旋转前的起点坐标,且当长半轴和短半轴的长度为 0 时,坐标按 (0, 0) 处理\n const cxp = ry ? (f * rx * yp) / ry : 0;\n const cyp = rx ? (f * -ry * xp) / rx : 0;\n\n // 椭圆圆心坐标\n const cx = (x1 + x2) / 2.0 + Math.cos(xRotation) * cxp - Math.sin(xRotation) * cyp;\n const cy = (y1 + y2) / 2.0 + Math.sin(xRotation) * cxp + Math.cos(xRotation) * cyp;\n\n // 起始点的单位向量\n const u = [(xp - cxp) / rx, (yp - cyp) / ry];\n // 终止点的单位向量\n const v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n // 计算起始点和圆心的连线,与 x 轴正方向的夹角\n const theta = vAngle([1, 0], u);\n\n // 计算圆弧起始点和终止点与椭圆圆心连线的夹角\n let dTheta = vAngle(u, v);\n\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (sweepFlag === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (sweepFlag === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return {\n cx,\n cy,\n // 弧形的起点和终点相同时,长轴和短轴的长度按 0 处理\n rx: isSamePoint(startPoint, [x2, y2]) ? 0 : rx,\n ry: isSamePoint(startPoint, [x2, y2]) ? 0 : ry,\n startAngle: theta,\n endAngle: theta + dTheta,\n xRotation,\n arcFlag,\n sweepFlag,\n };\n}\n","import { Path } from '../shape';\n\nconst { sin, cos, atan2, PI } = Math;\n\nfunction _addDefaultArrow(shape, attrs, x1, y1, x2, y2, isStart) {\n const { stroke, lineWidth } = attrs;\n const x = x1 - x2;\n const y = y1 - y2;\n const rad = atan2(y, x);\n const arrowShape = new Path({\n type: 'path',\n canvas: shape.get('canvas'),\n isArrowShape: true,\n attrs: {\n // 默认箭头的边长为 10,夹角为 60 度\n path: `M${10 * cos(PI / 6)},${10 * sin(PI / 6)} L0,0 L${10 * cos(PI / 6)},-${10 * sin(PI / 6)}`,\n // 使用 shape stroke 值\n stroke,\n lineWidth,\n },\n });\n arrowShape.translate(x2, y2);\n arrowShape.rotateAtPoint(x2, y2, rad);\n shape.set(isStart ? 'startArrowShape' : 'endArrowShape', arrowShape);\n}\n\n/**\n * 箭头 path 的设置要求\n * 1. 箭头顶点坐标需要为 (0, 0)\n * 2. 箭头夹角的中心分割线需要与 X 轴正方向对齐\n */\nfunction _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, isStart) {\n const { startArrow, endArrow, stroke, lineWidth } = attrs;\n const arrowAttrs = isStart ? startArrow : endArrow;\n const { d, fill: arrowFill, stroke: arrowStroke, lineWidth: arrowLineWidth, ...restAttrs } = arrowAttrs;\n const x = x1 - x2;\n const y = y1 - y2;\n const rad = atan2(y, x);\n\n if (d) {\n x2 = x2 - cos(rad) * d;\n y2 = y2 - sin(rad) * d;\n }\n\n const arrowShape = new Path({\n type: 'path',\n canvas: shape.get('canvas'),\n isArrowShape: true,\n attrs: {\n ...restAttrs,\n // 支持单独设置箭头的 stroke 和 lineWidth,若为空则使用 shape 的值\n stroke: arrowStroke || stroke,\n lineWidth: arrowLineWidth || lineWidth,\n // 箭头是否填充需要手动设置,不会继承自 shape 的值\n fill: arrowFill,\n },\n });\n\n arrowShape.translate(x2, y2);\n arrowShape.rotateAtPoint(x2, y2, rad);\n shape.set(isStart ? 'startArrowShape' : 'endArrowShape', arrowShape);\n}\n\n/**\n * 如果自定义箭头并且有 d 需要做偏移,如果直接画,线条会超出箭头尖端,因此需要根据箭头偏移 d, 返回线需要缩短的距离\n * |----------------\n * |<|--------------\n * |\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n * @param {number} d 箭头沿线条方向的偏移距离\n * @return {{dx: number, dy: number}} 返回线条偏移距离\n */\nexport function getShortenOffset(x1, y1, x2, y2, d) {\n const rad = atan2(y2 - y1, x2 - x1);\n return {\n dx: cos(rad) * d,\n dy: sin(rad) * d,\n };\n}\n\n/**\n * 绘制起始箭头\n * @param {IShape} shape 图形\n * @param {ShapeAttrs} attrs shape 的绘图属性\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n */\nexport function addStartArrow(shape, attrs, x1, y1, x2, y2) {\n if (typeof attrs.startArrow === 'object') {\n _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, true);\n } else if (attrs.startArrow) {\n _addDefaultArrow(shape, attrs, x1, y1, x2, y2, true);\n } else {\n shape.set('startArrowShape', null);\n }\n}\n\n/**\n * 绘制结束箭头\n * @param {IShape} shape 图形\n * @param {ShapeAttrs} attrs shape 的绘图属性\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n */\nexport function addEndArrow(shape, attrs, x1, y1, x2, y2) {\n if (typeof attrs.endArrow === 'object') {\n _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, false);\n } else if (attrs.endArrow) {\n _addDefaultArrow(shape, attrs, x1, y1, x2, y2, false);\n } else {\n shape.set('startArrowShape', null);\n }\n}\n","import { each, isArray, max, min } from '@antv/util';\nimport { IElement } from '../interfaces';\nimport { Region } from '../types';\nimport { parseStyle } from './parse';\nimport getArcParams from './arc-params';\nimport { mergeRegion, intersectRect } from './util';\nimport * as ArrowUtil from '../util/arrow';\n\nconst SHAPE_ATTRS_MAP = {\n fill: 'fillStyle',\n stroke: 'strokeStyle',\n opacity: 'globalAlpha',\n};\n\nexport function applyAttrsToContext(context: CanvasRenderingContext2D, element: IElement) {\n const attrs = element.attr();\n for (const k in attrs) {\n let v = attrs[k];\n // 转换一下不与 canvas 兼容的属性名\n const name = SHAPE_ATTRS_MAP[k] ? SHAPE_ATTRS_MAP[k] : k;\n if (name === 'matrix' && v) {\n // 设置矩阵\n context.transform(v[0], v[1], v[3], v[4], v[6], v[7]);\n } else if (name === 'lineDash' && context.setLineDash) {\n // 设置虚线,只支持数组形式,非数组形式不做任何操作\n isArray(v) && context.setLineDash(v);\n } else {\n if (name === 'strokeStyle' || name === 'fillStyle') {\n // 如果存在渐变、pattern 这个开销有些大\n // 可以考虑缓存机制,通过 hasUpdate 来避免一些运算\n v = parseStyle(context, element, v);\n } else if (name === 'globalAlpha') {\n // opacity 效果可以叠加,子元素的 opacity 需要与父元素 opacity 相乘\n v = v * context.globalAlpha;\n }\n context[name] = v;\n }\n }\n}\n\nexport function drawChildren(context: CanvasRenderingContext2D, children: IElement[], region?: Region) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i] as IElement;\n if (child.cfg.visible) {\n child.draw(context, region);\n } else {\n child.skipDraw();\n }\n }\n}\n\n// 这个地方的逻辑比较复杂,简单画了一张图:https://www.yuque.com/antv/ou292n/pcgt5g#OW1QE\nexport function checkRefresh(canvas, children: IElement[], region: Region) {\n const refreshElements = canvas.get('refreshElements');\n // 先遍历需要刷新的元素,将这些元素的父元素也设置 refresh\n each(refreshElements, (el) => {\n if (el !== canvas) {\n let parent = el.cfg.parent;\n while (parent && parent !== canvas && !parent.cfg.refresh) {\n parent.cfg.refresh = true;\n parent = parent.cfg.parent;\n }\n }\n });\n if (refreshElements[0] === canvas) {\n setChildrenRefresh(children, region);\n } else {\n // 检查所有子元素是否可以刷新\n checkChildrenRefresh(children, region);\n }\n}\n// 检查所有的子元素是否应该更新\nexport function checkChildrenRefresh(children: IElement[], region: Region) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i] as IElement;\n if (child.cfg.visible) {\n // 先判断 hasChanged,因为它的优先级判断应该高于 refresh\n if (child.cfg.hasChanged) {\n // 如果节点发生了 change,则需要级联设置子元素的 refresh\n child.cfg.refresh = true;\n if (child.isGroup()) {\n setChildrenRefresh(child.cfg.children, region);\n }\n } else if (child.cfg.refresh) {\n // 如果当前图形/分组 refresh = true,说明其子节点存在 changed\n if (child.isGroup()) {\n checkChildrenRefresh(child.cfg.children, region);\n }\n } else {\n // 这个分支说明此次局部刷新,所有的节点和父元素没有发生变化,仅需要检查包围盒(缓存)是否相交即可\n const refresh = checkElementRefresh(child, region);\n child.cfg.refresh = refresh;\n if (refresh && child.isGroup()) {\n // 如果需要刷新,说明子元素也需要刷新,继续进行判定\n checkChildrenRefresh(child.cfg.children, region);\n }\n }\n }\n }\n}\n\n// 由于对改变的图形放入 refreshElements 时做了优化,判定父元素 changed 时不加入\n// 那么有可能会出现 elements 都为空,所以最终 group\nexport function clearChanged(elements: IElement[]) {\n for (let i = 0; i < elements.length; i++) {\n const el = elements[i];\n el.cfg.hasChanged = false;\n // 级联清理\n if (el.isGroup() && !el.destroyed) {\n clearChanged(el.cfg.children);\n }\n }\n}\n\n// 当某个父元素发生改变时,调用这个方法级联设置 refresh\nfunction setChildrenRefresh(children: IElement[], region: Region) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i] as IElement;\n // let refresh = true;\n // 获取缓存的 bbox,如果这个 bbox 还存在则说明父元素不是矩阵发生了改变\n // const bbox = child.cfg.canvasBBox;\n // if (bbox) {\n // // 如果这时候\n // refresh = intersectRect(bbox, region);\n // }\n child.cfg.refresh = true;\n // 如果需要刷新当前节点,所有的子元素设置 refresh\n if (child.isGroup()) {\n setChildrenRefresh(child.get('children'), region);\n }\n }\n}\n\nfunction checkElementRefresh(shape: IElement, region: Region): boolean {\n const bbox = shape.cfg.cacheCanvasBBox;\n const isAllow = shape.cfg.isInView && bbox && intersectRect(bbox, region);\n return isAllow;\n}\n\n// 绘制 path\nexport function drawPath(shape, context, attrs, arcParamsCache) {\n const { path, startArrow, endArrow } = attrs;\n if (!path) {\n return;\n }\n let currentPoint = [0, 0]; // 当前图形\n let startMovePoint = [0, 0]; // 开始 M 的点,可能会有多个\n let distance = {\n dx: 0,\n dy: 0,\n };\n context.beginPath();\n for (let i = 0; i < path.length; i++) {\n const params = path[i];\n const command = params[0];\n if (i === 0 && startArrow && startArrow.d) {\n const tangent = shape.getStartTangent();\n distance = ArrowUtil.getShortenOffset(tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], startArrow.d);\n } else if (i === path.length - 2 && path[i + 1][0] === 'Z' && endArrow && endArrow.d) {\n // 为了防止结尾为 Z 的 segment 缩短不起效,需要取最后两个 segment 特殊处理\n const lastPath = path[i + 1];\n if (lastPath[0] === 'Z') {\n const tangent = shape.getEndTangent();\n distance = ArrowUtil.getShortenOffset(tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], endArrow.d);\n }\n } else if (i === path.length - 1 && endArrow && endArrow.d) {\n if (path[0] !== 'Z') {\n const tangent = shape.getEndTangent();\n distance = ArrowUtil.getShortenOffset(tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], endArrow.d);\n }\n }\n\n const { dx, dy } = distance;\n // V,H,S,T 都在前面被转换成标准形式\n switch (command) {\n case 'M':\n context.moveTo(params[1] - dx, params[2] - dy);\n startMovePoint = [params[1], params[2]];\n break;\n case 'L':\n context.lineTo(params[1] - dx, params[2] - dy);\n break;\n case 'Q':\n context.quadraticCurveTo(params[1], params[2], params[3] - dx, params[4] - dy);\n break;\n case 'C':\n context.bezierCurveTo(params[1], params[2], params[3], params[4], params[5] - dx, params[6] - dy);\n break;\n case 'A': {\n let arcParams;\n // 为了加速绘制,可以提供参数的缓存,各个图形自己缓存\n if (arcParamsCache) {\n arcParams = arcParamsCache[i];\n if (!arcParams) {\n arcParams = getArcParams(currentPoint, params);\n arcParamsCache[i] = arcParams;\n }\n } else {\n arcParams = getArcParams(currentPoint, params);\n }\n const { cx, cy, rx, ry, startAngle, endAngle, xRotation, sweepFlag } = arcParams;\n // 直接使用椭圆的 api\n if (context.ellipse) {\n context.ellipse(cx, cy, rx, ry, xRotation, startAngle, endAngle, 1 - sweepFlag);\n } else {\n const r = rx > ry ? rx : ry;\n const scaleX = rx > ry ? 1 : rx / ry;\n const scaleY = rx > ry ? ry / rx : 1;\n context.translate(cx, cy);\n context.rotate(xRotation);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, startAngle, endAngle, 1 - sweepFlag);\n context.scale(1 / scaleX, 1 / scaleY);\n context.rotate(-xRotation);\n context.translate(-cx, -cy);\n }\n break;\n }\n case 'Z':\n context.closePath();\n break;\n default:\n break;\n }\n\n // 有了 Z 后,当前节点从开始 M 的点开始\n if (command === 'Z') {\n currentPoint = startMovePoint;\n } else {\n const len = params.length;\n currentPoint = [params[len - 2], params[len - 1]];\n }\n }\n}\n\n// 刷新图形元素(Shape 或者 Group)\nexport function refreshElement(element, changeType) {\n const canvas = element.get('canvas');\n // 只有存在于 canvas 上时生效\n if (canvas) {\n if (changeType === 'remove') {\n // 一旦 remove,则无法在 element 上拿到包围盒\n // destroy 后所有属性都拿不到,所以需要暂存一下\n // 这是一段 hack 的代码\n element._cacheCanvasBBox = element.get('cacheCanvasBBox');\n }\n // 防止反复刷新\n if (!element.get('hasChanged')) {\n // 但是始终要标记为 hasChanged,便于后面进行局部渲染\n element.set('hasChanged', true);\n\n // 本来只有局部渲染模式下,才需要记录更新的元素队列\n // if (canvas.get('localRefresh')) {\n // canvas.refreshElement(element, changeType, canvas);\n // }\n // 但对于 https://github.com/antvis/g/issues/422 的场景,全局渲染的模式下也需要记录更新的元素队列\n // 如果当前元素的父元素发生了改变,可以不放入队列,这句话大概能够提升 15% 的初次渲染性能\n if (!(element.cfg.parent && element.cfg.parent.get('hasChanged'))) {\n canvas.refreshElement(element, changeType, canvas);\n if (canvas.get('autoDraw')) {\n canvas.draw();\n }\n }\n }\n }\n}\n\nexport function getRefreshRegion(element): Region | undefined {\n let region;\n if (!element.destroyed) {\n const cacheBox = element.get('cacheCanvasBBox');\n const validCache = cacheBox && !!(cacheBox.width && cacheBox.height);\n const bbox = element.getCanvasBBox();\n const validBBox = bbox && !!(bbox.width && bbox.height);\n // 是否是有效 bbox 判定,一些 NaN 或者 宽高为 0 的情况过滤掉\n if (validCache && validBBox) {\n region = mergeRegion(cacheBox, bbox);\n } else if (validCache) {\n region = cacheBox;\n } else if (validBBox) {\n region = bbox;\n }\n } else {\n // 因为元素已经销毁所以无法获取到缓存的包围盒\n region = element['_cacheCanvasBBox'];\n }\n return region;\n}\n\nexport function getMergedRegion(elements): Region {\n if (!elements.length) {\n return null;\n }\n const minXArr = [];\n const minYArr = [];\n const maxXArr = [];\n const maxYArr = [];\n each(elements, (el: IElement) => {\n const region = getRefreshRegion(el);\n if (region) {\n minXArr.push(region.minX);\n minYArr.push(region.minY);\n maxXArr.push(region.maxX);\n maxYArr.push(region.maxY);\n }\n });\n return {\n minX: min(minXArr),\n minY: min(minYArr),\n maxX: max(maxXArr),\n maxY: max(maxYArr),\n };\n}\n\nexport function mergeView(region, viewRegion) {\n if (!region || !viewRegion) {\n return null;\n }\n // 不相交,则直接返回 null\n if (!intersectRect(region, viewRegion)) {\n return null;\n }\n return {\n minX: Math.max(region.minX, viewRegion.minX),\n minY: Math.max(region.minY, viewRegion.minY),\n maxX: Math.min(region.maxX, viewRegion.maxX),\n maxY: Math.min(region.maxY, viewRegion.maxY),\n };\n}\n","import { AbstractGroup } from '@antv/g-base';\nimport { ChangeType } from '@antv/g-base';\nimport { IElement } from './interfaces';\nimport { Region } from './types';\nimport ShapeBase from './shape/base';\nimport * as Shape from './shape';\nimport { applyAttrsToContext, drawChildren, refreshElement } from './util/draw';\nimport { each, max, min } from '@antv/util';\nimport { intersectRect } from './util/util';\n\nclass Group extends AbstractGroup {\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n onCanvasChange(changeType: ChangeType) {\n refreshElement(this, changeType);\n }\n\n getShapeBase() {\n return Shape;\n }\n\n getGroupBase() {\n return Group;\n }\n\n // 同 shape 中的方法重复了\n _applyClip(context, clip: ShapeBase) {\n if (clip) {\n context.save();\n // 将 clip 的属性挂载到 context 上\n applyAttrsToContext(context, clip);\n // 绘制 clip 路径\n clip.createPath(context);\n context.restore();\n // 裁剪\n context.clip();\n clip._afterDraw();\n }\n }\n\n // 这个方法以前直接使用的 getCanvasBBox,由于 group 上没有缓存,所以每次重新计算,导致性能开销比较大\n // 大概能够节省全局渲染 15-20% 的性能,如果不在这里加缓存优化后 10W 个节点无法达到 5-6 ms,大概能够 30-40ms\n private cacheCanvasBBox() {\n const children = this.cfg.children;\n const xArr = [];\n const yArr = [];\n each(children, (child) => {\n const bbox = child.cfg.cacheCanvasBBox;\n // isInview 的判定是一旦图形或者分组渲染就要计算是否在视图内,\n // 这个判定 10W 个图形下差不多能够节省 5-6 ms 的开销\n if (bbox && child.cfg.isInView) {\n xArr.push(bbox.minX, bbox.maxX);\n yArr.push(bbox.minY, bbox.maxY);\n }\n });\n let bbox = null;\n if (xArr.length) {\n const minX = min(xArr);\n const maxX = max(xArr);\n const minY = min(yArr);\n const maxY = max(yArr);\n bbox = {\n minX,\n minY,\n x: minX,\n y: minY,\n maxX,\n maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n const canvas = this.cfg.canvas;\n if (canvas) {\n const viewRange = canvas.getViewRange();\n // 如果这个地方判定 isInView == false 设置 bbox 为 false 的话,拾取的性能会更高\n // 但是目前 10W 图形的拾取在 2-5ms 内,这个优化意义不大,可以后期观察再看\n this.set('isInView', intersectRect(bbox, viewRange));\n }\n } else {\n this.set('isInView', false);\n }\n\n this.set('cacheCanvasBBox', bbox);\n }\n\n draw(context: CanvasRenderingContext2D, region?: Region) {\n const children = this.cfg.children as IElement[];\n const allowDraw = region ? this.cfg.refresh : true; // 局部刷新需要判定\n // 这个地方需要判定,在 G6 的场景每个 group 都有 transform 的场景下性能会开销非常大\n // 通过 refresh 的判定,可以不刷新没有发生过变化的分组,不在视窗内的分组等等\n // 如果想进一步提升局部渲染性能,可以进一步优化 refresh 的判定,依然有潜力\n if (children.length && allowDraw) {\n context.save();\n // group 上的矩阵和属性也会应用到上下文上\n // 先将 attrs 应用到上下文中,再设置 clip。因为 clip 应该被当前元素的 matrix 所影响\n applyAttrsToContext(context, this);\n this._applyClip(context, this.getClip() as ShapeBase);\n drawChildren(context, children, region);\n context.restore();\n this.cacheCanvasBBox();\n }\n // 这里的成本比较大,如果不绘制则不再\n // this.set('cacheCanvasBBox', this.getCanvasBBox());\n this.cfg.refresh = null;\n // 绘制后,消除更新标记\n this.set('hasChanged', false);\n }\n // 绘制时被跳过,一般发生在分组隐藏时\n skipDraw() {\n this.set('cacheCanvasBBox', null);\n this.set('hasChanged', false);\n }\n}\n\nexport default Group;\n","import { AbstractShape } from '@antv/g-base';\nimport { ChangeType, BBox } from '@antv/g-base';\nimport { isNil, intersectRect } from '../util/util';\nimport { applyAttrsToContext, refreshElement } from '../util/draw';\nimport { getBBoxMethod } from '@antv/g-base';\nimport { Region } from '../types';\nimport * as Shape from './index';\nimport Group from '../group';\n\nclass ShapeBase extends AbstractShape {\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n // 设置默认值\n return {\n ...attrs,\n lineWidth: 1,\n lineAppendWidth: 0,\n strokeOpacity: 1,\n fillOpacity: 1,\n };\n }\n\n getShapeBase() {\n return Shape;\n }\n\n getGroupBase() {\n return Group;\n }\n\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n onCanvasChange(changeType: ChangeType) {\n refreshElement(this, changeType);\n }\n\n calculateBBox(): BBox {\n const type = this.get('type');\n const lineWidth = this.getHitLineWidth();\n // const attrs = this.attr();\n const bboxMethod = getBBoxMethod(type);\n const box = bboxMethod(this);\n const halfLineWidth = lineWidth / 2;\n const minX = box.x - halfLineWidth;\n const minY = box.y - halfLineWidth;\n const maxX = box.x + box.width + halfLineWidth;\n const maxY = box.y + box.height + halfLineWidth;\n return {\n x: minX,\n minX,\n y: minY,\n minY,\n width: box.width + lineWidth,\n height: box.height + lineWidth,\n maxX,\n maxY,\n };\n }\n\n isFill() {\n return !!this.attrs['fill'] || this.isClipShape();\n }\n\n isStroke() {\n return !!this.attrs['stroke'];\n }\n\n // 同 shape 中的方法重复了\n _applyClip(context, clip: ShapeBase) {\n if (clip) {\n context.save();\n // 将 clip 的属性挂载到 context 上\n applyAttrsToContext(context, clip);\n // 绘制 clip 路径\n clip.createPath(context);\n context.restore();\n // 裁剪\n context.clip();\n clip._afterDraw();\n }\n }\n\n // 绘制图形时需要考虑 region 限制\n draw(context: CanvasRenderingContext2D, region?: Region) {\n const clip = this.cfg.clipShape;\n // 如果指定了 region,同时不允许刷新时,直接返回\n if (region) {\n if (this.cfg.refresh === false) {\n // this._afterDraw();\n this.set('hasChanged', false);\n return;\n }\n // 是否相交需要考虑 clip 的包围盒\n const bbox = this.getCanvasBBox();\n if (!intersectRect(region, bbox)) {\n // 图形的包围盒与重绘区域不相交时,也需要清除标记\n this.set('hasChanged', false);\n // 存在多种情形需要更新 cacheCanvasBBox 和 isInview 的判定\n // 1. 之前图形在视窗内,但是现在不再视窗内\n // 2. 如果当前的图形以及父元素都没有发生过变化,refresh = false 不会走到这里,所以这里的图形都是父元素发生变化,但是没有在视图内的元素\n if (this.cfg.isInView) {\n this._afterDraw();\n }\n return;\n }\n }\n context.save();\n // 先将 attrs 应用到上下文中,再设置 clip。因为 clip 应该被当前元素的 matrix 所影响\n applyAttrsToContext(context, this);\n this._applyClip(context, clip as ShapeBase);\n this.drawPath(context);\n context.restore();\n this._afterDraw();\n }\n\n private getCanvasViewBox() {\n const canvas = this.cfg.canvas;\n if (canvas) {\n // @ts-ignore\n return canvas.getViewRange();\n }\n return null;\n }\n\n cacheCanvasBBox() {\n const canvasBBox = this.getCanvasViewBox();\n // 绘制的时候缓存包围盒\n if (canvasBBox) {\n const bbox = this.getCanvasBBox();\n const isInView = intersectRect(bbox, canvasBBox);\n this.set('isInView', isInView);\n // 不再视窗内 cacheCanvasBBox 设置成 null,会提升局部渲染的性能,\n // 因为在局部渲染影响的包围盒计算时不考虑这个图形的包围盒\n // 父元素 cacheCanvasBBox 计算的时候也不计算\n if (isInView) {\n this.set('cacheCanvasBBox', bbox);\n } else {\n this.set('cacheCanvasBBox', null);\n }\n }\n }\n\n _afterDraw() {\n this.cacheCanvasBBox();\n // 绘制后消除标记\n this.set('hasChanged', false);\n this.set('refresh', null);\n }\n\n skipDraw() {\n this.set('cacheCanvasBBox', null);\n this.set('isInView', null);\n this.set('hasChanged', false);\n }\n\n /**\n * 绘制图形的路径\n * @param {CanvasRenderingContext2D} context 上下文\n */\n drawPath(context: CanvasRenderingContext2D) {\n this.createPath(context);\n this.strokeAndFill(context);\n this.afterDrawPath(context);\n }\n\n /**\n * @protected\n * 填充图形\n * @param {CanvasRenderingContext2D} context context 上下文\n */\n fill(context: CanvasRenderingContext2D) {\n context.fill();\n }\n\n /**\n * @protected\n * 绘制图形边框\n * @param {CanvasRenderingContext2D} context context 上下文\n */\n stroke(context: CanvasRenderingContext2D) {\n context.stroke();\n }\n\n // 绘制或者填充\n strokeAndFill(context) {\n const { lineWidth, opacity, strokeOpacity, fillOpacity } = this.attrs;\n\n if (this.isFill()) {\n if (!isNil(fillOpacity) && fillOpacity !== 1) {\n context.globalAlpha = fillOpacity;\n this.fill(context);\n context.globalAlpha = opacity;\n } else {\n this.fill(context);\n }\n }\n\n if (this.isStroke()) {\n if (lineWidth > 0) {\n if (!isNil(strokeOpacity) && strokeOpacity !== 1) {\n context.globalAlpha = strokeOpacity;\n }\n this.stroke(context);\n }\n }\n this.afterDrawPath(context);\n }\n\n /**\n * @protected\n * 绘制图形的路径\n * @param {CanvasRenderingContext2D} context 上下文\n */\n createPath(context: CanvasRenderingContext2D) {}\n\n /**\n * 绘制完成 path 后的操作\n * @param {CanvasRenderingContext2D} context 上下文\n */\n afterDrawPath(context: CanvasRenderingContext2D) {}\n\n isInShape(refX: number, refY: number): boolean {\n // return HitUtil.isHitShape(this, refX, refY);\n const isStroke = this.isStroke();\n const isFill = this.isFill();\n const lineWidth = this.getHitLineWidth();\n return this.isInStrokeOrPath(refX, refY, isStroke, isFill, lineWidth);\n }\n\n // 之所以不拆成 isInStroke 和 isInPath 在于两者存在一些共同的计算\n isInStrokeOrPath(x, y, isStroke, isFill, lineWidth) {\n return false;\n }\n\n /**\n * 获取线拾取的宽度\n * @returns {number} 线的拾取宽度\n */\n getHitLineWidth() {\n if (!this.isStroke()) {\n return 0;\n }\n const attrs = this.attrs;\n return attrs['lineWidth'] + attrs['lineAppendWidth'];\n }\n}\n\nexport default ShapeBase;\n","/**\n * @fileoverview 圆\n * @author dxq613@gmail.com\n */\n\nimport ShapeBase from './base';\nimport { distance } from '../util/util';\n\nclass Circle extends ShapeBase {\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x: 0,\n y: 0,\n r: 0,\n };\n }\n\n isInStrokeOrPath(x, y, isStroke, isFill, lineWidth) {\n const attrs = this.attr();\n const cx = attrs.x;\n const cy = attrs.y;\n const r = attrs.r;\n const halfLineWidth = lineWidth / 2;\n const absDistance = distance(cx, cy, x, y);\n // 直接用距离,如果同时存在边和填充时,可以减少两次计算\n if (isFill && isStroke) {\n return absDistance <= r + halfLineWidth;\n }\n if (isFill) {\n return absDistance <= r;\n }\n if (isStroke) {\n return absDistance >= r - halfLineWidth && absDistance <= r + halfLineWidth;\n }\n return false;\n }\n\n createPath(context) {\n const attrs = this.attr();\n const cx = attrs.x;\n const cy = attrs.y;\n const r = attrs.r;\n context.beginPath();\n context.arc(cx, cy, r, 0, Math.PI * 2, false);\n context.closePath();\n }\n}\n\nexport default Circle;\n","/**\n * @fileoverview 椭圆\n * @author dxq613@gmail.com\n */\n\nimport ShapeBase from './base';\n\n// 根据椭圆公式计算 x*x/rx*rx + y*y/ry*ry;\nfunction ellipseDistance(squareX, squareY, rx, ry) {\n return squareX / (rx * rx) + squareY / (ry * ry);\n}\n\nclass Ellipse extends ShapeBase {\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x: 0,\n y: 0,\n rx: 0,\n ry: 0,\n };\n }\n\n isInStrokeOrPath(x, y, isStroke, isFill, lineWidth) {\n const attrs = this.attr();\n const halfLineWith = lineWidth / 2;\n const cx = attrs.x;\n const cy = attrs.y;\n const { rx, ry } = attrs;\n const squareX = (x - cx) * (x - cx);\n const squareY = (y - cy) * (y - cy);\n // 使用椭圆的公式: x*x/rx*rx + y*y/ry*ry = 1;\n if (isFill && isStroke) {\n return ellipseDistance(squareX, squareY, rx + halfLineWith, ry + halfLineWith) <= 1;\n }\n if (isFill) {\n return ellipseDistance(squareX, squareY, rx, ry) <= 1;\n }\n if (isStroke) {\n return (\n ellipseDistance(squareX, squareY, rx - halfLineWith, ry - halfLineWith) >= 1 &&\n ellipseDistance(squareX, squareY, rx + halfLineWith, ry + halfLineWith) <= 1\n );\n }\n return false;\n }\n\n createPath(context) {\n const attrs = this.attr();\n const cx = attrs.x;\n const cy = attrs.y;\n const rx = attrs.rx;\n const ry = attrs.ry;\n context.beginPath();\n // 兼容逻辑\n if (context.ellipse) {\n context.ellipse(cx, cy, rx, ry, 0, 0, Math.PI * 2, false);\n } else {\n // 如果不支持,则使用圆来绘制,进行变形\n const r = rx > ry ? rx : ry;\n const scaleX = rx > ry ? 1 : rx / ry;\n const scaleY = rx > ry ? ry / rx : 1;\n context.save();\n context.translate(cx, cy);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, 0, Math.PI * 2);\n context.restore();\n context.closePath();\n }\n }\n}\n\nexport default Ellipse;\n","/**\n * @fileoverview 图片\n * @author dxq613@gmail.com\n */\n\nimport ShapeBase from './base';\nimport { isString, isNil } from '../util/util';\nfunction isCanvas(dom) {\n return dom instanceof HTMLElement && isString(dom.nodeName) && dom.nodeName.toUpperCase() === 'CANVAS';\n}\n\nclass ImageShape extends ShapeBase {\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n\n initAttrs(attrs) {\n this._setImage(attrs.img);\n }\n\n // image 不计算 stroke\n isStroke() {\n return false;\n }\n\n // 仅仅使用包围盒检测来进行拾取\n // 所以不需要复写 isInStrokeOrPath 的方法\n isOnlyHitBox() {\n return true;\n }\n\n _afterLoading() {\n if (this.get('toDraw') === true) {\n const canvas = this.get('canvas');\n if (canvas) {\n // 这段应该改成局部渲染\n canvas.draw();\n } else {\n // 这种方式如果发生遮挡会出现问题\n this.createPath(this.get('context'));\n }\n }\n }\n\n _setImage(img) {\n const attrs = this.attrs;\n if (isString(img)) {\n const image = new Image();\n image.onload = () => {\n // 图片未加载完,则已经被销毁\n if (this.destroyed) {\n return false;\n }\n // 缓存原始地址,可以做对比,防止重复加载图片\n // 如果考虑到在加载过程中可能替换 img 属性,则情况更加复杂\n // this.set('imgSrc', img);\n // 这里会循环调用 _setImage 方法,但不会再走这个分支\n this.attr('img', image);\n this.set('loading', false);\n this._afterLoading();\n const callback = this.get('callback');\n if (callback) {\n callback.call(this);\n }\n };\n // 设置跨域\n image.crossOrigin = 'Anonymous';\n\n image.src = img;\n // loading 过程中不绘制\n this.set('loading', true);\n } else if (img instanceof Image) {\n // 如果是一个 image 对象,则设置宽高\n if (!attrs.width) {\n attrs.width = img.width;\n }\n if (!attrs.height) {\n attrs.height = img.height;\n }\n } else if (isCanvas(img)) {\n // 如果设置了 canvas 对象\n if (!attrs.width) {\n attrs.width = Number(img.getAttribute('width'));\n }\n\n if (!attrs.height) {\n attrs.height, Number(img.getAttribute('height'));\n }\n }\n }\n\n onAttrChange(name: string, value: any, originValue: any) {\n super.onAttrChange(name, value, originValue);\n // 如果加载的已经是当前图片,则不再处理\n if (name === 'img') {\n // 可以加缓冲,&& this.get('imgSrc') !== value\n this._setImage(value);\n }\n }\n\n createPath(context: CanvasRenderingContext2D) {\n // 正在加载则不绘制\n if (this.get('loading')) {\n this.set('toDraw', true); // 加载完成后绘制\n this.set('context', context);\n return;\n }\n const attrs = this.attr();\n const { x, y, width, height, sx, sy, swidth, sheight } = attrs;\n\n const img = attrs.img;\n if (img instanceof Image || isCanvas(img)) {\n if (!isNil(sx) && !isNil(sy) && !isNil(swidth) && !isNil(sheight)) {\n context.drawImage(img, sx, sy, swidth, sheight, x, y, width, height);\n } else {\n context.drawImage(img, x, y, width, height);\n }\n }\n }\n}\n\nexport default ImageShape;\n","import { Line as LineUtil } from '@antv/g-math';\n\nexport default function inLine(x1, y1, x2, y2, lineWidth, x, y) {\n const minX = Math.min(x1, x2);\n const maxX = Math.max(x1, x2);\n const minY = Math.min(y1, y2);\n const maxY = Math.max(y1, y2);\n const halfWidth = lineWidth / 2;\n // 因为目前的方案是计算点到直线的距离,而有可能会在延长线上,所以要先判断是否在包围盒内\n // 这种方案会在水平或者竖直的情况下载线的延长线上有半 lineWidth 的误差\n if (!(x >= minX - halfWidth && x <= maxX + halfWidth && y >= minY - halfWidth && y <= maxY + halfWidth)) {\n return false;\n }\n // 因为已经计算了包围盒,所以仅需要计算到直线的距离即可,可以显著提升性能\n return LineUtil.pointToLine(x1, y1, x2, y2, x, y) <= lineWidth / 2;\n}\n","/**\n * @fileoverview 线\n * @author dxq613@gmail.com\n */\nimport { Line as LineUtil } from '@antv/g-math';\nimport ShapeBase from './base';\nimport inLine from '../util/in-stroke/line';\nimport * as ArrowUtil from '../util/arrow';\n\nclass Line extends ShapeBase {\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n startArrow: false,\n endArrow: false,\n };\n }\n\n initAttrs(attrs) {\n this.setArrow();\n }\n\n // 更新属性时,检测是否更改了箭头\n onAttrChange(name: string, value: any, originValue: any) {\n super.onAttrChange(name, value, originValue);\n // 由于箭头的绘制依赖于 line 的诸多 attrs,因此这里不再对每个 attr 进行判断,attr 每次变化都会影响箭头的更新\n this.setArrow();\n }\n\n setArrow() {\n const attrs = this.attr();\n const { x1, y1, x2, y2, startArrow, endArrow } = attrs;\n if (startArrow) {\n ArrowUtil.addStartArrow(this, attrs, x2, y2, x1, y1);\n }\n if (endArrow) {\n ArrowUtil.addEndArrow(this, attrs, x1, y1, x2, y2);\n }\n }\n\n isInStrokeOrPath(x, y, isStroke, isFill, lineWidth) {\n if (!isStroke || !lineWidth) {\n return false;\n }\n const { x1, y1, x2, y2 } = this.attr();\n return inLine(x1, y1, x2, y2, lineWidth, x, y);\n }\n\n createPath(context) {\n const attrs = this.attr();\n const { x1, y1, x2, y2, startArrow, endArrow } = attrs;\n let startArrowDistance = {\n dx: 0,\n dy: 0,\n };\n let endArrowDistance = {\n dx: 0,\n dy: 0,\n };\n\n if (startArrow && startArrow.d) {\n startArrowDistance = ArrowUtil.getShortenOffset(x1, y1, x2, y2, attrs.startArrow.d);\n }\n if (endArrow && endArrow.d) {\n endArrowDistance = ArrowUtil.getShortenOffset(x1, y1, x2, y2, attrs.endArrow.d);\n }\n\n context.beginPath();\n // 如果自定义箭头,线条相应缩进\n context.moveTo(x1 + startArrowDistance.dx, y1 + startArrowDistance.dy);\n context.lineTo(x2 - endArrowDistance.dx, y2 - endArrowDistance.dy);\n }\n\n afterDrawPath(context) {\n const startArrowShape = this.get('startArrowShape');\n const endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n }\n\n /**\n * Get length of line\n * @return {number} length\n */\n getTotalLength() {\n const { x1, y1, x2, y2 } = this.attr();\n return LineUtil.length(x1, y1, x2, y2);\n }\n\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n getPoint(ratio: number) {\n const { x1, y1, x2, y2 } = this.attr();\n return LineUtil.pointAt(x1, y1, x2, y2, ratio);\n }\n}\n\nexport default Line;\n","/**\n * @fileoverview Marker\n * @author dxq613@gmail.com\n */\n\nimport { isNil } from '@antv/util';\nimport { path2Absolute } from '@antv/path-util';\nimport ShapeBase from './base';\nimport { isFunction } from '../util/util';\nimport { drawPath } from '../util/draw';\n\nconst Symbols = {\n // 圆\n circle(x, y, r) {\n return [\n ['M', x - r, y],\n ['A', r, r, 0, 1, 0, x + r, y],\n ['A', r, r, 0, 1, 0, x - r, y],\n ];\n },\n // 正方形\n square(x, y, r) {\n return [['M', x - r, y - r], ['L', x + r, y - r], ['L', x + r, y + r], ['L', x - r, y + r], ['Z']];\n },\n // 菱形\n diamond(x, y, r) {\n return [['M', x - r, y], ['L', x, y - r], ['L', x + r, y], ['L', x, y + r], ['Z']];\n },\n // 三角形\n triangle(x, y, r) {\n const diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y + diffY], ['L', x, y - diffY], ['L', x + r, y + diffY], ['Z']];\n },\n // 倒三角形\n 'triangle-down'(x, y, r) {\n const diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y - diffY], ['L', x + r, y - diffY], ['L', x, y + diffY], ['Z']];\n },\n};\n\nclass Marker extends ShapeBase {\n initAttrs(attrs) {\n this._resetParamsCache();\n }\n\n // 重置绘制 path 存储的缓存\n _resetParamsCache() {\n // 为了加速 path 的绘制、拾取和计算,这个地方可以缓存很多东西\n // 这些缓存都是第一次需要时计算和存储,虽然增加了复杂度,但是频繁调用的方法,性能有很大提升\n this.set('paramsCache', {}); // 清理缓存\n }\n\n // 更新属性时,检测是否更改了 path\n onAttrChange(name: string, value: any, originValue: any) {\n super.onAttrChange(name, value, originValue);\n if (['symbol', 'x', 'y', 'r', 'radius'].indexOf(name) !== -1) {\n // path 相关属性更改时,清理缓存\n this._resetParamsCache();\n }\n }\n\n // 仅仅使用包围盒检测来进行拾取\n // 所以不需要复写 isInStrokeOrPath 的方法\n isOnlyHitBox() {\n return true;\n }\n\n _getR(attrs) {\n // 兼容 r 和 radius 两种写法,推荐使用 r\n return isNil(attrs.r) ? attrs.radius : attrs.r;\n }\n\n _getPath() {\n const attrs = this.attr();\n const { x, y } = attrs;\n const symbol = attrs.symbol || 'circle';\n const r = this._getR(attrs);\n let method;\n let path;\n if (isFunction(symbol)) {\n method = symbol;\n path = method(x, y, r);\n // 将 path 转成绝对路径\n path = path2Absolute(path);\n } else {\n // 内置 symbol 的 path 都是绝对路径,直接绘制即可,不需要对 path 进行特殊处理\n method = Marker.Symbols[symbol];\n\n if (!method) {\n console.warn(`${symbol} marker is not supported.`);\n return null;\n }\n\n path = method(x, y, r);\n }\n\n return path;\n }\n\n createPath(context) {\n const path = this._getPath();\n const paramsCache = this.get('paramsCache');\n drawPath(this, context, { path }, paramsCache);\n }\n\n static Symbols = Symbols;\n}\n\nexport default Marker;\n","import { getOffScreenContext } from '@antv/g-base';\n\nexport default function isPointInPath(shape, x, y) {\n const ctx = getOffScreenContext();\n shape.createPath(ctx);\n return ctx.isPointInPath(x, y);\n}\n","/**\n * @fileoverview 判断点是否在多边形内\n * @author dxq613@gmail.com\n */\n\n// 多边形的射线检测,参考:https://blog.csdn.net/WilliamSun0122/article/details/77994526\nconst tolerance = 1e-6;\n// 三态函数,判断两个double在eps精度下的大小关系\nfunction dcmp(x) {\n if (Math.abs(x) < tolerance) {\n return 0;\n }\n\n return x < 0 ? -1 : 1;\n}\n\n// 判断点Q是否在p1和p2的线段上\nfunction onSegment(p1, p2, q) {\n if (\n (q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) &&\n Math.min(p1[0], p2[0]) <= q[0] &&\n q[0] <= Math.max(p1[0], p2[0]) &&\n Math.min(p1[1], p2[1]) <= q[1] &&\n q[1] <= Math.max(p1[1], p2[1])\n ) {\n return true;\n }\n return false;\n}\n\n// 判断点P在多边形内-射线法\nexport default function isInPolygon(points, x, y) {\n let isHit = false;\n const n = points.length;\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n for (let i = 0; i < n; i++) {\n const p1 = points[i];\n const p2 = points[(i + 1) % n];\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n }\n // 前一个判断min(p1[1],p2[1]) 0 !== dcmp(p2[1] - y) > 0 &&\n dcmp(x - ((y - p1[1]) * (p1[0] - p2[0])) / (p1[1] - p2[1]) - p1[0]) < 0\n ) {\n isHit = !isHit;\n }\n }\n return isHit;\n}\n","import { distance } from '../util';\nexport default function arc(cx, cy, r, startAngle, endAngle, lineWidth, x, y) {\n const angle = (Math.atan2(y - cy, x - cx) + Math.PI * 2) % (Math.PI * 2); // 转换到 0 - 2 * Math.PI 之间\n if (angle < startAngle || angle > endAngle) {\n return false;\n }\n const point = {\n x: cx + r * Math.cos(angle),\n y: cy + r * Math.sin(angle),\n };\n return distance(point.x, point.y, x, y) <= lineWidth / 2;\n}\n","/**\n * @fileoverview path 的一些工具\n * @author dxq613@gmail.com\n */\nimport { PathUtil } from '@antv/g-base';\nimport { Quad as QuadUtil } from '@antv/g-math';\nimport { Cubic as CubicUtil } from '@antv/g-math';\nimport { ext } from '@antv/matrix-util';\nimport * as vec3 from 'gl-matrix/vec3';\nimport { inBox } from './util';\nimport inLine from './in-stroke/line';\nimport inArc from './in-stroke/arc';\n\nconst { transform } = ext;\n\nfunction hasArc(path) {\n let hasArc = false;\n const count = path.length;\n for (let i = 0; i < count; i++) {\n const params = path[i];\n const cmd = params[0];\n if (cmd === 'C' || cmd === 'A' || cmd === 'Q') {\n hasArc = true;\n break;\n }\n }\n return hasArc;\n}\n\nfunction isPointInStroke(segments, lineWidth, x, y, length) {\n let isHit = false;\n const halfWidth = lineWidth / 2;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const { currentPoint, params, prePoint, box } = segment;\n // 如果在前面已经生成过包围盒,直接按照包围盒计算\n if (box && !inBox(box.x - halfWidth, box.y - halfWidth, box.width + lineWidth, box.height + lineWidth, x, y)) {\n continue;\n }\n switch (segment.command) {\n // L 和 Z 都是直线, M 不进行拾取\n case 'L':\n case 'Z':\n isHit = inLine(prePoint[0], prePoint[1], currentPoint[0], currentPoint[1], lineWidth, x, y);\n break;\n case 'Q':\n const qDistance = QuadUtil.pointDistance(\n prePoint[0],\n prePoint[1],\n params[1],\n params[2],\n params[3],\n params[4],\n x,\n y\n );\n isHit = qDistance <= lineWidth / 2;\n break;\n case 'C':\n const cDistance = CubicUtil.pointDistance(\n prePoint[0], // 上一段结束位置, 即 C 的起始点\n prePoint[1],\n params[1], // 'C' 的参数,1、2 为第一个控制点,3、4 为第二个控制点,5、6 为结束点\n params[2],\n params[3],\n params[4],\n params[5],\n params[6],\n x,\n y,\n length\n );\n isHit = cDistance <= lineWidth / 2;\n break;\n case 'A':\n // 计算点到椭圆圆弧的距离,暂时使用近似算法,后面可以改成切割法求最近距离\n const arcParams = segment.arcParams;\n const { cx, cy, rx, ry, startAngle, endAngle, xRotation } = arcParams;\n const p = [x, y, 1];\n const r = rx > ry ? rx : ry;\n const scaleX = rx > ry ? 1 : rx / ry;\n const scaleY = rx > ry ? ry / rx : 1;\n const m = transform(null, [\n ['t', -cx, -cy],\n ['r', -xRotation],\n ['s', 1 / scaleX, 1 / scaleY],\n ]);\n vec3.transformMat3(p, p, m);\n isHit = inArc(0, 0, r, startAngle, endAngle, lineWidth, p[0], p[1]);\n break;\n default:\n break;\n }\n if (isHit) {\n break;\n }\n }\n return isHit;\n}\n\n/**\n * 提取出内部的闭合多边形和非闭合的多边形,假设 path 不存在圆弧\n * @param {Array} path 路径\n * @returns {Array} 点的集合\n */\nfunction extractPolygons(path) {\n const count = path.length;\n const polygons = [];\n const polylines = [];\n let points = []; // 防止第一个命令不是 'M'\n for (let i = 0; i < count; i++) {\n const params = path[i];\n const cmd = params[0];\n if (cmd === 'M') {\n // 遇到 'M' 判定是否是新数组,新数组中没有点\n if (points.length) {\n // 如果存在点,则说明没有遇到 'Z',开始了一个新的多边形\n polylines.push(points);\n points = []; // 创建新的点\n }\n points.push([params[1], params[2]]);\n } else if (cmd === 'Z') {\n if (points.length) {\n // 存在点\n polygons.push(points);\n points = []; // 开始新的点集合\n }\n // 如果不存在点,同时 'Z',则说明是错误,不处理\n } else {\n points.push([params[1], params[2]]);\n }\n }\n // 说明 points 未放入 polygons 或者 polyline\n // 仅当只有一个 M,没有 Z 时会发生这种情况\n if (points.length > 0) {\n polylines.push(points);\n }\n return {\n polygons,\n polylines,\n };\n}\n\nexport default {\n hasArc,\n extractPolygons,\n isPointInStroke,\n ...PathUtil,\n};\n","/**\n * @fileoverview path\n * @author dxq613@gmail.com\n */\nimport { Point } from '@antv/g-base';\nimport { Cubic as CubicUtil } from '@antv/g-math';\nimport { each, isNil } from '@antv/util';\nimport ShapeBase from './base';\nimport { path2Absolute, path2Segments } from '@antv/path-util';\nimport { drawPath } from '../util/draw';\nimport isPointInPath from '../util/in-path/point-in-path';\nimport isInPolygon from '../util/in-path/polygon';\nimport PathUtil from '../util/path';\nimport * as ArrowUtil from '../util/arrow';\n\n// 是否在多个多边形内部\nfunction isInPolygons(polygons, x, y) {\n let isHit = false;\n for (let i = 0; i < polygons.length; i++) {\n const points = polygons[i];\n isHit = isInPolygon(points, x, y);\n if (isHit) {\n break;\n }\n }\n return isHit;\n}\n\nclass Path extends ShapeBase {\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n startArrow: false,\n endArrow: false,\n };\n }\n\n initAttrs(attrs) {\n this._setPathArr(attrs.path);\n this.setArrow();\n }\n\n // 更新属性时,检测是否更改了 path\n onAttrChange(name: string, value: any, originValue: any) {\n super.onAttrChange(name, value, originValue);\n if (name === 'path') {\n this._setPathArr(value);\n }\n // 由于箭头的绘制依赖于 line 的诸多 attrs,因此这里不再对每个 attr 进行判断,attr 每次变化都会影响箭头的更新\n this.setArrow();\n }\n\n // 将 path 转换成绝对路径\n _setPathArr(path) {\n // 转换 path 的格式\n this.attrs.path = path2Absolute(path);\n const hasArc = PathUtil.hasArc(path);\n // 为了加速 path 的绘制、拾取和计算,这个地方可以缓存很多东西\n // 这些缓存都是第一次需要时计算和存储,虽然增加了复杂度,但是频繁调用的方法,性能有很大提升\n this.set('hasArc', hasArc);\n this.set('paramsCache', {}); // 清理缓存\n this.set('segments', null); // 延迟生成 path,在动画场景下可能不会有拾取\n this.set('curve', null);\n this.set('tCache', null);\n this.set('totalLength', null);\n }\n\n getSegments() {\n let segments = this.get('segements');\n if (!segments) {\n segments = path2Segments(this.attr('path'));\n this.set('segments', segments);\n }\n return segments;\n }\n\n setArrow() {\n const attrs = this.attr();\n const { startArrow, endArrow } = attrs;\n\n if (startArrow) {\n const tangent = this.getStartTangent();\n ArrowUtil.addStartArrow(this, attrs, tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1]);\n }\n if (endArrow) {\n const tangent = this.getEndTangent();\n ArrowUtil.addEndArrow(this, attrs, tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1]);\n }\n }\n\n isInStrokeOrPath(x, y, isStroke, isFill, lineWidth) {\n const segments = this.getSegments();\n const hasArc = this.get('hasArc');\n let isHit = false;\n if (isStroke) {\n const length = this.getTotalLength();\n isHit = PathUtil.isPointInStroke(segments, lineWidth, x, y, length);\n }\n if (!isHit && isFill) {\n if (hasArc) {\n // 存在曲线时,暂时使用 canvas 的 api 计算,后续可以进行多边形切割\n isHit = isPointInPath(this, x, y);\n } else {\n const path = this.attr('path');\n const extractResutl = PathUtil.extractPolygons(path);\n // 提取出来的多边形包含闭合的和非闭合的,在这里统一按照多边形处理\n isHit = isInPolygons(extractResutl.polygons, x, y) || isInPolygons(extractResutl.polylines, x, y);\n }\n }\n return isHit;\n }\n\n createPath(context) {\n const attrs = this.attr();\n const paramsCache = this.get('paramsCache'); // 由于计算圆弧的参数成本很大,所以要缓存\n drawPath(this, context, attrs, paramsCache);\n }\n\n afterDrawPath(context: CanvasRenderingContext2D) {\n const startArrowShape = this.get('startArrowShape');\n const endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n }\n\n /**\n * Get total length of path\n * @return {number} length\n */\n getTotalLength() {\n const totalLength = this.get('totalLength');\n if (!isNil(totalLength)) {\n return totalLength;\n }\n this._calculateCurve();\n this._setTcache();\n return this.get('totalLength');\n }\n\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n getPoint(ratio: number): Point {\n let tCache = this.get('tCache');\n if (!tCache) {\n this._calculateCurve();\n this._setTcache();\n tCache = this.get('tCache');\n }\n\n let subt;\n let index;\n\n const curve = this.get('curve');\n if (!tCache || tCache.length === 0) {\n if (curve) {\n return {\n x: curve[0][1],\n y: curve[0][2],\n };\n }\n return null;\n }\n each(tCache, (v, i) => {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n\n const seg = curve[index];\n if (isNil(seg) || isNil(index)) {\n return null;\n }\n const l = seg.length;\n const nextSeg = curve[index + 1];\n return CubicUtil.pointAt(\n seg[l - 2],\n seg[l - 1],\n nextSeg[1],\n nextSeg[2],\n nextSeg[3],\n nextSeg[4],\n nextSeg[5],\n nextSeg[6],\n subt\n );\n }\n\n _calculateCurve() {\n const { path } = this.attr();\n this.set('curve', PathUtil.pathToCurve(path));\n }\n\n _setTcache() {\n let totalLength = 0;\n let tempLength = 0;\n // 每段 curve 对应起止点的长度比例列表,形如: [[0, 0.25], [0.25, 0.6]. [0.6, 0.9], [0.9, 1]]\n const tCache = [];\n let segmentT;\n let segmentL;\n let segmentN;\n let l;\n const curve = this.get('curve');\n\n if (!curve) {\n return;\n }\n\n each(curve, (segment, i) => {\n segmentN = curve[i + 1];\n l = segment.length;\n if (segmentN) {\n totalLength +=\n CubicUtil.length(\n segment[l - 2],\n segment[l - 1],\n segmentN[1],\n segmentN[2],\n segmentN[3],\n segmentN[4],\n segmentN[5],\n segmentN[6]\n ) || 0;\n }\n });\n this.set('totalLength', totalLength);\n\n if (totalLength === 0) {\n this.set('tCache', []);\n return;\n }\n\n each(curve, (segment, i) => {\n segmentN = curve[i + 1];\n l = segment.length;\n if (segmentN) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = CubicUtil.length(\n segment[l - 2],\n segment[l - 1],\n segmentN[1],\n segmentN[2],\n segmentN[3],\n segmentN[4],\n segmentN[5],\n segmentN[6]\n );\n // 当 path 不连续时,segmentL 可能为空,为空时需要作为 0 处理\n tempLength += segmentL || 0;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n }\n\n /**\n * Get start tangent vector\n * @return {Array}\n */\n getStartTangent(): number[][] {\n const segments = this.getSegments();\n let result;\n if (segments.length > 1) {\n const startPoint = segments[0].currentPoint;\n const endPoint = segments[1].currentPoint;\n const tangent = segments[1].startTangent;\n result = [];\n if (tangent) {\n result.push([startPoint[0] - tangent[0], startPoint[1] - tangent[1]]);\n result.push([startPoint[0], startPoint[1]]);\n } else {\n result.push([endPoint[0], endPoint[1]]);\n result.push([startPoint[0], startPoint[1]]);\n }\n }\n return result;\n }\n\n /**\n * Get end tangent vector\n * @return {Array}\n */\n getEndTangent(): number[][] {\n const segments = this.getSegments();\n const length = segments.length;\n let result;\n if (length > 1) {\n const startPoint = segments[length - 2].currentPoint;\n const endPoint = segments[length - 1].currentPoint;\n const tangent = segments[length - 1].endTangent;\n result = [];\n if (tangent) {\n result.push([endPoint[0] - tangent[0], endPoint[1] - tangent[1]]);\n result.push([endPoint[0], endPoint[1]]);\n } else {\n result.push([startPoint[0], startPoint[1]]);\n result.push([endPoint[0], endPoint[1]]);\n }\n }\n return result;\n }\n}\n\nexport default Path;\n","import inLine from './line';\n\nexport default function inPolyline(points: any[], lineWidth: number, x: number, y: number, isClose: boolean) {\n const count = points.length;\n if (count < 2) {\n return false;\n }\n for (let i = 0; i < count - 1; i++) {\n const x1 = points[i][0];\n const y1 = points[i][1];\n const x2 = points[i + 1][0];\n const y2 = points[i + 1][1];\n\n if (inLine(x1, y1, x2, y2, lineWidth, x, y)) {\n return true;\n }\n }\n\n // 如果封闭,则计算起始点和结束点的边\n if (isClose) {\n const first = points[0];\n const last = points[count - 1];\n if (inLine(first[0], first[1], last[0], last[1], lineWidth, x, y)) {\n return true;\n }\n }\n\n return false;\n}\n","/**\n * @fileoverview 多边形\n * @author dxq613@gmail.com\n */\n\nimport ShapeBase from './base';\nimport inPolyline from '../util/in-stroke/polyline';\nimport isInPolygon from '../util/in-path/polygon';\n\nclass Polygon extends ShapeBase {\n isInStrokeOrPath(x, y, isStroke, isFill, lineWidth) {\n const { points } = this.attr();\n let isHit = false;\n if (isStroke) {\n isHit = inPolyline(points, lineWidth, x, y, true);\n }\n if (!isHit && isFill) {\n isHit = isInPolygon(points, x, y); // isPointInPath(shape, x, y);\n }\n return isHit;\n }\n\n createPath(context) {\n const attrs = this.attr();\n const points = attrs.points;\n if (points.length < 2) {\n return;\n }\n context.beginPath();\n for (let i = 0; i < points.length; i++) {\n const point = points[i];\n if (i === 0) {\n context.moveTo(point[0], point[1]);\n } else {\n context.lineTo(point[0], point[1]);\n }\n }\n context.closePath();\n }\n}\n\nexport default Polygon;\n","/**\n * @fileoverview 多边形\n * @author dxq613@gmail.com\n */\nimport { Point } from '@antv/g-base';\nimport { Line as LineUtil } from '@antv/g-math';\nimport { Polyline as PolylineUtil } from '@antv/g-math';\nimport { each, isNil } from '@antv/util';\nimport ShapeBase from './base';\nimport inPolyline from '../util/in-stroke/polyline';\nimport * as ArrowUtil from '../util/arrow';\n\nclass PolyLine extends ShapeBase {\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n startArrow: false,\n endArrow: false,\n };\n }\n\n initAttrs(attrs) {\n this.setArrow();\n }\n\n // 更新属性时,检测是否更改了 points\n onAttrChange(name: string, value: any, originValue: any) {\n super.onAttrChange(name, value, originValue);\n this.setArrow();\n if (['points'].indexOf(name) !== -1) {\n this._resetCache();\n }\n }\n\n _resetCache() {\n this.set('totalLength', null);\n this.set('tCache', null);\n }\n\n setArrow() {\n const attrs = this.attr();\n const { points, startArrow, endArrow } = this.attrs;\n const length = points.length;\n const x1 = points[0][0];\n const y1 = points[0][1];\n const x2 = points[length - 1][0];\n const y2 = points[length - 1][1];\n\n if (startArrow) {\n ArrowUtil.addStartArrow(this, attrs, points[1][0], points[1][1], x1, y1);\n }\n if (endArrow) {\n ArrowUtil.addEndArrow(this, attrs, points[length - 2][0], points[length - 2][1], x2, y2);\n }\n }\n\n // 不允许 fill\n isFill() {\n return false;\n }\n\n isInStrokeOrPath(x, y, isStroke, isFill, lineWidth) {\n // 没有设置 stroke 不能被拾取, 没有线宽不能被拾取\n if (!isStroke || !lineWidth) {\n return false;\n }\n const { points } = this.attr();\n return inPolyline(points, lineWidth, x, y, false);\n }\n\n // 始终填充\n isStroke() {\n return true;\n }\n\n createPath(context) {\n const { points, startArrow, endArrow } = this.attr();\n const length = points.length;\n if (points.length < 2) {\n return;\n }\n let x1 = points[0][0];\n let y1 = points[0][1];\n let x2 = points[length - 1][0];\n let y2 = points[length - 1][1];\n // 如果定义了箭头,并且是自定义箭头,线条相应缩进\n if (startArrow && startArrow.d) {\n const distance = ArrowUtil.getShortenOffset(x1, y1, points[1][0], points[1][1], startArrow.d);\n x1 += distance.dx;\n y1 += distance.dy;\n }\n if (endArrow && endArrow.d) {\n const distance = ArrowUtil.getShortenOffset(points[length - 2][0], points[length - 2][1], x2, y2, endArrow.d);\n x2 -= distance.dx;\n y2 -= distance.dy;\n }\n\n context.beginPath();\n context.moveTo(x1, y1);\n for (let i = 0; i < length - 1; i++) {\n const point = points[i];\n context.lineTo(point[0], point[1]);\n }\n context.lineTo(x2, y2);\n }\n\n afterDrawPath(context: CanvasRenderingContext2D) {\n const startArrowShape = this.get('startArrowShape');\n const endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n }\n\n /**\n * Get length of polyline\n * @return {number} length\n */\n getTotalLength() {\n const { points } = this.attr();\n // get totalLength from cache\n const totalLength = this.get('totalLength');\n if (!isNil(totalLength)) {\n return totalLength;\n }\n this.set('totalLength', PolylineUtil.length(points));\n return this.get('totalLength');\n }\n\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n getPoint(ratio: number): Point {\n const { points } = this.attr();\n // get tCache from cache\n let tCache = this.get('tCache');\n if (!tCache) {\n this._setTcache();\n tCache = this.get('tCache');\n }\n\n let subt;\n let index;\n each(tCache, (v, i) => {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n return LineUtil.pointAt(points[index][0], points[index][1], points[index + 1][0], points[index + 1][1], subt);\n }\n\n _setTcache() {\n const { points } = this.attr();\n if (!points || points.length === 0) {\n return;\n }\n\n const totalLength = this.getTotalLength();\n if (totalLength <= 0) {\n return;\n }\n\n let tempLength = 0;\n const tCache = [];\n let segmentT;\n let segmentL;\n\n each(points, (p, i) => {\n if (points[i + 1]) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = LineUtil.length(p[0], p[1], points[i + 1][0], points[i + 1][1]);\n tempLength += segmentL;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n }\n\n /**\n * Get start tangent vector\n * @return {Array}\n */\n getStartTangent(): number[][] {\n const { points } = this.attr();\n const result = [];\n result.push([points[1][0], points[1][1]]);\n result.push([points[0][0], points[0][1]]);\n return result;\n }\n\n /**\n * Get end tangent vector\n * @return {Array}\n */\n getEndTangent(): number[][] {\n const { points } = this.attr();\n const l = points.length - 1;\n const result = [];\n result.push([points[l - 1][0], points[l - 1][1]]);\n result.push([points[l][0], points[l][1]]);\n return result;\n }\n}\n\nexport default PolyLine;\n","/**\n * @fileoverview 矩形\n * @author dxq613@gmail.com\n */\n\nimport ShapeBase from './base';\nimport { parseRadius } from '../util/parse';\nimport { inBox } from '../util/util';\nimport inRect from '../util/in-stroke/rect';\nimport inRectWithRadius from '../util/in-stroke/rect-radius';\nimport isPointInPath from '../util/in-path/point-in-path';\n\nclass Rect extends ShapeBase {\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n radius: 0,\n };\n }\n\n isInStrokeOrPath(x, y, isStroke, isFill, lineWidth) {\n const attrs = this.attr();\n const minX = attrs.x;\n const minY = attrs.y;\n const width = attrs.width;\n const height = attrs.height;\n const radius = attrs.radius;\n // 无圆角时的策略\n if (!radius) {\n const halfWidth = lineWidth / 2;\n // 同时填充和带有边框\n if (isFill && isStroke) {\n return inBox(minX - halfWidth, minY - halfWidth, width + halfWidth, height + halfWidth, x, y);\n }\n // 仅填充\n if (isFill) {\n return inBox(minX, minY, width, height, x, y);\n }\n if (isStroke) {\n return inRect(minX, minY, width, height, lineWidth, x, y);\n }\n } else {\n let isHit = false;\n if (isStroke) {\n isHit = inRectWithRadius(minX, minY, width, height, radius, lineWidth, x, y);\n }\n // 仅填充时带有圆角的矩形直接通过图形拾取\n // 以后可以改成纯数学的近似拾取,将圆弧切割成多边形\n if (!isHit && isFill) {\n isHit = isPointInPath(this, x, y);\n }\n return isHit;\n }\n }\n\n createPath(context) {\n const attrs = this.attr();\n const x = attrs.x;\n const y = attrs.y;\n const width = attrs.width;\n const height = attrs.height;\n const radius = attrs.radius;\n\n context.beginPath();\n if (radius === 0) {\n // 改成原生的rect方法\n context.rect(x, y, width, height);\n } else {\n const [r1, r2, r3, r4] = parseRadius(radius);\n context.moveTo(x + r1, y);\n context.lineTo(x + width - r2, y);\n r2 !== 0 && context.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\n context.lineTo(x + width, y + height - r3);\n r3 !== 0 && context.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\n context.lineTo(x + r4, y + height);\n r4 !== 0 && context.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\n context.lineTo(x, y + r1);\n r1 !== 0 && context.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\n context.closePath();\n }\n }\n}\n\nexport default Rect;\n","import inLine from './line';\nimport inArc from './arc';\n\nexport default function rectWithRadius(minX, minY, width, height, radius, lineWidth, x, y) {\n const halfWidth = lineWidth / 2;\n return (\n inLine(minX + radius, minY, minX + width - radius, minY, lineWidth, x, y) ||\n inLine(minX + width, minY + radius, minX + width, minY + height - radius, lineWidth, x, y) ||\n inLine(minX + width - radius, minY + height, minX + radius, minY + height, lineWidth, x, y) ||\n inLine(minX, minY + height - radius, minX, minY + radius, lineWidth, x, y) ||\n inArc(minX + width - radius, minY + radius, radius, 1.5 * Math.PI, 2 * Math.PI, lineWidth, x, y) ||\n inArc(minX + width - radius, minY + height - radius, radius, 0, 0.5 * Math.PI, lineWidth, x, y) ||\n inArc(minX + radius, minY + height - radius, radius, 0.5 * Math.PI, Math.PI, lineWidth, x, y) ||\n inArc(minX + radius, minY + radius, radius, Math.PI, 1.5 * Math.PI, lineWidth, x, y)\n );\n}\n","import { inBox } from '../util';\n\nexport default function inRect(minX, minY, width, height, lineWidth, x, y) {\n const halfWidth = lineWidth / 2;\n // 将四个边看做矩形来检测,比边的检测算法要快\n return (\n inBox(minX - halfWidth, minY - halfWidth, width, lineWidth, x, y) || // 上边\n inBox(minX + width - halfWidth, minY - halfWidth, lineWidth, height, x, y) || // 右边\n inBox(minX + halfWidth, minY + height - halfWidth, width, lineWidth, x, y) || // 下边\n inBox(minX - halfWidth, minY + halfWidth, lineWidth, height, x, y)\n ); // 左边\n}\n","/**\n * @fileoverview 文本\n * @author dxq613@gmail.com\n */\n\nimport ShapeBase from './base';\nimport { isNil, isString, each } from '../util/util';\nimport { getTextHeight, assembleFont } from '@antv/g-base';\nclass Text extends ShapeBase {\n // 默认文本属性\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x: 0,\n y: 0,\n text: null,\n fontSize: 12,\n fontFamily: 'sans-serif',\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontVariant: 'normal',\n textAlign: 'start',\n textBaseline: 'bottom',\n };\n }\n\n // 仅仅使用包围盒检测来进行拾取\n isOnlyHitBox() {\n return true;\n }\n\n // 初始化时组合 font,同时判断 text 是否换行\n initAttrs(attrs) {\n this._assembleFont();\n if (attrs.text) {\n this._setText(attrs.text);\n }\n }\n // 组装字体\n _assembleFont() {\n const attrs = this.attrs;\n attrs.font = assembleFont(attrs);\n }\n\n // 如果文本换行,则缓存数组\n _setText(text) {\n let textArr = null;\n if (isString(text) && text.indexOf('\\n') !== -1) {\n textArr = text.split('\\n');\n }\n this.set('textArr', textArr);\n }\n\n // 更新属性时,检测是否更改了 font、text\n onAttrChange(name: string, value: any, originValue: any) {\n super.onAttrChange(name, value, originValue);\n if (name.startsWith('font')) {\n this._assembleFont();\n }\n if (name === 'text') {\n this._setText(value);\n }\n }\n\n // 这个方法在 text 时没有可以做的事情,如果要支持文字背景时可以考虑\n // createPath(context) {\n\n // }\n\n // 如果文本多行,需要获取文本间距\n _getSpaceingY() {\n const attrs = this.attrs;\n const lineHeight = attrs.lineHeight;\n const fontSize = attrs.fontSize * 1;\n return lineHeight ? lineHeight - fontSize : fontSize * 0.14;\n }\n\n // 绘制文本,考虑多行的场景\n _drawTextArr(context, textArr, isFill) {\n const attrs = this.attrs;\n const textBaseline = attrs.textBaseline;\n const x = attrs.x;\n const y = attrs.y;\n const fontSize = attrs.fontSize * 1;\n const spaceingY = this._getSpaceingY();\n const height = getTextHeight(attrs.text, attrs.fontSize, attrs.lineHeight);\n let subY;\n each(textArr, (subText, index: number) => {\n subY = y + index * (spaceingY + fontSize) - height + fontSize; // bottom;\n if (textBaseline === 'middle') subY += height - fontSize - (height - fontSize) / 2;\n if (textBaseline === 'top') subY += height - fontSize;\n if (!isNil(subText)) {\n if (isFill) {\n context.fillText(subText, x, subY);\n } else {\n context.strokeText(subText, x, subY);\n }\n }\n });\n }\n\n // 绘制文本,同时考虑填充和绘制边框\n _drawText(context, isFill) {\n const attrs = this.attr();\n const x = attrs.x;\n const y = attrs.y;\n const textArr = this.get('textArr');\n if (textArr) {\n this._drawTextArr(context, textArr, isFill);\n } else {\n const text = attrs.text;\n if (!isNil(text)) {\n if (isFill) {\n context.fillText(text, x, y);\n } else {\n context.strokeText(text, x, y);\n }\n }\n }\n }\n\n // 复写绘制和填充的逻辑:对于文本,应该先绘制边框,再进行填充\n strokeAndFill(context) {\n const { lineWidth, opacity, strokeOpacity, fillOpacity } = this.attrs;\n\n if (this.isStroke()) {\n if (lineWidth > 0) {\n if (!isNil(strokeOpacity) && strokeOpacity !== 1) {\n context.globalAlpha = opacity;\n }\n this.stroke(context);\n }\n }\n\n if (this.isFill()) {\n if (!isNil(fillOpacity) && fillOpacity !== 1) {\n context.globalAlpha = fillOpacity;\n this.fill(context);\n context.globalAlpha = opacity;\n } else {\n this.fill(context);\n }\n }\n\n this.afterDrawPath(context);\n }\n\n // 复写填充逻辑\n fill(context) {\n this._drawText(context, true);\n }\n\n // 复写绘制边框的逻辑\n stroke(context) {\n this._drawText(context, false);\n }\n}\n\nexport default Text;\n","import { IContainer, IElement, IGroup, IShape, isAllowCapture, multiplyVec2, invert } from '@antv/g-base';\n\nfunction invertFromMatrix(v: number[], matrix: number[]): number[] {\n if (matrix) {\n const invertMatrix = invert(matrix);\n return multiplyVec2(invertMatrix, v);\n }\n return v;\n}\n\nfunction getRefXY(element: IElement, x: number, y: number) {\n // @ts-ignore\n const totalMatrix = element.getTotalMatrix();\n if (totalMatrix) {\n const [refX, refY] = invertFromMatrix([x, y, 1], totalMatrix);\n return [refX, refY];\n }\n return [x, y];\n}\n\n// 拾取前的检测,只有通过检测才能继续拾取\nfunction preTest(element: IElement, x: number, y: number) {\n // @ts-ignore\n if (element.isCanvas && element.isCanvas()) {\n return true;\n }\n // 不允许被拾取,则返回 null\n // @ts-ignore\n if (!isAllowCapture(element) || element.cfg.isInView === false) {\n return false;\n }\n\n if (element.cfg.clipShape) {\n // 如果存在 clip\n const [refX, refY] = getRefXY(element, x, y);\n if (element.isClipped(refX, refY)) {\n return false;\n }\n }\n // @ts-ignore ,这个地方调用过于频繁\n const bbox = element.cfg.cacheCanvasBBox || element.getCanvasBBox();\n // 如果没有缓存 bbox,则说明不可见\n // 注释掉的这段可能会加速拾取,上面的语句改写成 const bbox = element.cfg.cacheCanvasBBox;\n // 这时候的拾取假设图形/分组在上一次绘制都在视窗内,但是上面已经判定了 isInView 所以意义不大\n // 现在还调用 element.getCanvasBBox(); 一个很大的原因是便于单元测试\n // if (!bbox) {\n // return false;\n // }\n if (!(x >= bbox.minX && x <= bbox.maxX && y >= bbox.minY && y <= bbox.maxY)) {\n return false;\n }\n return true;\n}\n\n// 这个方法复写了 g-base 的 getShape\nexport function getShape(container: IContainer, x: number, y: number) {\n // 没有通过检测,则返回 null\n if (!preTest(container, x, y)) {\n return null;\n }\n let shape = null;\n const children = container.getChildren();\n const count = children.length;\n for (let i = count - 1; i >= 0; i--) {\n const child = children[i];\n if (child.isGroup()) {\n shape = getShape(child as IGroup, x, y);\n } else if (preTest(child, x, y)) {\n const curShape = child as IShape;\n const [refX, refY] = getRefXY(child, x, y);\n // @ts-ignore\n if (curShape.isInShape(refX, refY)) {\n shape = child;\n }\n }\n if (shape) {\n break;\n }\n }\n return shape;\n}\n","import { AbstractCanvas } from '@antv/g-base';\nimport { ChangeType } from '@antv/g-base';\nimport { IElement } from './interfaces';\nimport { getShape } from './util/hit';\nimport * as Shape from './shape';\nimport Group from './group';\nimport { each, getPixelRatio, requestAnimationFrame, clearAnimationFrame } from './util/util';\nimport { applyAttrsToContext, drawChildren, getMergedRegion, mergeView, checkRefresh, clearChanged } from './util/draw';\n\nclass Canvas extends AbstractCanvas {\n getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n // 设置渲染引擎为 canvas,只读属性\n cfg['renderer'] = 'canvas';\n // 是否自动绘制,不需要用户调用 draw 方法\n cfg['autoDraw'] = true;\n // 是否允许局部刷新图表\n cfg['localRefresh'] = true;\n cfg['refreshElements'] = [];\n // 是否在视图内自动裁剪\n cfg['clipView'] = true;\n // 是否使用快速拾取的方案,默认为 false,上层可以打开\n cfg['quickHit'] = false;\n return cfg;\n }\n\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n onCanvasChange(changeType: ChangeType) {\n /**\n * 触发画布更新的三种 changeType\n * 1. attr: 修改画布的绘图属性\n * 2. sort: 画布排序,图形的层次会发生变化\n * 3. changeSize: 改变画布大小\n */\n if (changeType === 'attr' || changeType === 'sort' || changeType === 'changeSize') {\n this.set('refreshElements', [this]);\n this.draw();\n }\n }\n\n getShapeBase() {\n return Shape;\n }\n\n getGroupBase() {\n return Group;\n }\n /**\n * 获取屏幕像素比\n */\n getPixelRatio() {\n const pixelRatio = this.get('pixelRatio') || getPixelRatio();\n // 不足 1 的取 1,超出 1 的取整\n return pixelRatio >= 1 ? Math.ceil(pixelRatio) : 1;\n }\n\n getViewRange() {\n return {\n minX: 0,\n minY: 0,\n maxX: this.cfg.width,\n maxY: this.cfg.height,\n };\n }\n\n // 复写基类的方法生成标签\n createDom(): HTMLElement {\n const element = document.createElement('canvas');\n const context = element.getContext('2d');\n // 缓存 context 对象\n this.set('context', context);\n return element;\n }\n setDOMSize(width: number, height: number) {\n super.setDOMSize(width, height);\n const context = this.get('context');\n const el = this.get('el');\n const pixelRatio = this.getPixelRatio();\n el.width = pixelRatio * width;\n el.height = pixelRatio * height;\n // 设置 canvas 元素的宽度和高度,会重置缩放,因此 context.scale 需要在每次设置宽、高后调用\n if (pixelRatio > 1) {\n context.scale(pixelRatio, pixelRatio);\n }\n }\n // 复写基类方法\n clear() {\n super.clear();\n this._clearFrame(); // 需要清理掉延迟绘制的帧\n const context = this.get('context');\n const element = this.get('el');\n context.clearRect(0, 0, element.width, element.height);\n }\n\n getShape(x: number, y: number) {\n let shape;\n if (this.get('quickHit')) {\n shape = getShape(this, x, y);\n } else {\n shape = super.getShape(x, y, null);\n }\n return shape;\n }\n // 对绘制区域边缘取整,避免浮点数问题\n _getRefreshRegion() {\n const elements = this.get('refreshElements');\n const viewRegion = this.getViewRange();\n let region;\n // 如果是当前画布整体发生了变化,则直接重绘整个画布\n if (elements.length && elements[0] === this) {\n region = viewRegion;\n } else {\n region = getMergedRegion(elements);\n if (region) {\n region.minX = Math.floor(region.minX);\n region.minY = Math.floor(region.minY);\n region.maxX = Math.ceil(region.maxX);\n region.maxY = Math.ceil(region.maxY);\n region.maxY += 1; // 在很多环境下字体的高低会不一致,附加一像素,避免残影\n const clipView = this.get('clipView');\n // 自动裁剪不在 view 内的区域\n if (clipView) {\n region = mergeView(region, viewRegion);\n }\n }\n }\n return region;\n }\n\n /**\n * 刷新图形元素,这里仅仅是放入队列,下次绘制时进行绘制\n * @param {IElement} element 图形元素\n */\n refreshElement(element: IElement) {\n const refreshElements = this.get('refreshElements');\n refreshElements.push(element);\n // if (this.get('autoDraw')) {\n // this._startDraw();\n // }\n }\n // 清理还在进行的绘制\n _clearFrame() {\n const drawFrame = this.get('drawFrame');\n if (drawFrame) {\n // 如果全部渲染时,存在局部渲染,则抛弃掉局部渲染\n clearAnimationFrame(drawFrame);\n this.set('drawFrame', null);\n this.set('refreshElements', []);\n }\n }\n\n // 手工调用绘制接口\n draw() {\n const drawFrame = this.get('drawFrame');\n if (this.get('autoDraw') && drawFrame) {\n return;\n }\n this._startDraw();\n }\n // 绘制所有图形\n _drawAll() {\n const context = this.get('context');\n const element = this.get('el');\n const children = this.getChildren() as IElement[];\n context.clearRect(0, 0, element.width, element.height);\n applyAttrsToContext(context, this);\n drawChildren(context, children);\n // 对于 https://github.com/antvis/g/issues/422 的场景,全局渲染的模式下也会记录更新的元素队列,因此全局渲染完后也需要置空\n this.set('refreshElements', []);\n }\n // 绘制局部\n _drawRegion() {\n const context = this.get('context');\n const refreshElements = this.get('refreshElements');\n const children = this.getChildren() as IElement[];\n const region = this._getRefreshRegion();\n // 需要注意可能没有 region 的场景\n // 一般发生在设置了 localRefresh ,在没有图形发生变化的情况下,用户调用了 draw\n if (region) {\n // 清理指定区域\n context.clearRect(region.minX, region.minY, region.maxX - region.minX, region.maxY - region.minY);\n // 保存上下文,设置 clip\n context.save();\n context.beginPath();\n context.rect(region.minX, region.minY, region.maxX - region.minX, region.maxY - region.minY);\n context.clip();\n applyAttrsToContext(context, this);\n // 确认更新的元素,这个优化可以提升 10 倍左右的性能,10W 个带有 group 的节点,局部渲染会从 90ms 下降到 5-6 ms\n checkRefresh(this, children, region);\n // 绘制子元素\n drawChildren(context, children, region);\n context.restore();\n } else if (refreshElements.length) {\n // 防止发生改变的 elements 没有 region 的场景,这会发生在多个情况下\n // 1. 空的 group\n // 2. 所有 elements 没有在绘图区域\n // 3. group 下面的 elements 隐藏掉\n // 如果不进行清理 hasChanged 的状态会不正确\n clearChanged(refreshElements);\n }\n each(refreshElements, (element) => {\n if (element.get('hasChanged')) {\n // 在视窗外的 Group 元素会加入到更新队列里,但实际却没有执行 draw() 逻辑,也就没有清除 hasChanged 标记\n // 即已经重绘完、但 hasChanged 标记没有清除的元素,需要统一清除掉。主要是 Group 存在问题,具体原因待排查\n element.set('hasChanged', false);\n }\n });\n this.set('refreshElements', []);\n }\n\n // 触发绘制\n _startDraw() {\n let drawFrame = this.get('drawFrame');\n if (!drawFrame) {\n drawFrame = requestAnimationFrame(() => {\n if (this.get('localRefresh')) {\n this._drawRegion();\n } else {\n this._drawAll();\n }\n this.set('drawFrame', null);\n });\n this.set('drawFrame', drawFrame);\n }\n }\n\n skipDraw() {}\n\n removeDom() {\n const el = this.get('el');\n // 需要清理 canvas 画布内容,否则ios下 创建的canvas垃圾未回收,导致Total canvas memory use exceeds问题\n // 相关问题列表\n // https://stackoverflow.com/questions/52532614/total-canvas-memory-use-exceeds-the-maximum-limit-safari-12\n // https://github.com/openlayers/openlayers/issues/9291\n el.width = 0;\n el.height = 0;\n el.parentNode.removeChild(el);\n }\n}\n\nexport default Canvas;\n","import * as Shape from './shape';\nexport * from '@antv/g-base';\nexport { IElement } from './interfaces';\nexport { Region } from './types';\nexport { default as Canvas } from './canvas';\nexport { default as Group } from './group';\nexport { Shape };\nexport { default as getArcParams } from './util/arc-params';\n\nexport const version = '0.5.12';\n","export const SHAPE_TO_TAGS = {\n rect: 'path',\n circle: 'circle',\n line: 'line',\n path: 'path',\n marker: 'path',\n text: 'text',\n polyline: 'polyline',\n polygon: 'polygon',\n image: 'image',\n ellipse: 'ellipse',\n dom: 'foreignObject',\n};\n\nexport const SVG_ATTR_MAP = {\n opacity: 'opacity',\n fillStyle: 'fill',\n fill: 'fill',\n fillOpacity: 'fill-opacity',\n strokeStyle: 'stroke',\n strokeOpacity: 'stroke-opacity',\n stroke: 'stroke',\n x: 'x',\n y: 'y',\n r: 'r',\n rx: 'rx',\n ry: 'ry',\n width: 'width',\n height: 'height',\n x1: 'x1',\n x2: 'x2',\n y1: 'y1',\n y2: 'y2',\n lineCap: 'stroke-linecap',\n lineJoin: 'stroke-linejoin',\n lineWidth: 'stroke-width',\n lineDash: 'stroke-dasharray',\n lineDashOffset: 'stroke-dashoffset',\n miterLimit: 'stroke-miterlimit',\n font: 'font',\n fontSize: 'font-size',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n fontFamily: 'font-family',\n startArrow: 'marker-start',\n endArrow: 'marker-end',\n path: 'd',\n class: 'class',\n id: 'id',\n style: 'style',\n preserveAspectRatio: 'preserveAspectRatio',\n};\n\nexport const EVENTS = [\n 'click',\n 'mousedown',\n 'mouseup',\n 'dblclick',\n 'contextmenu',\n 'mouseenter',\n 'mouseleave',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'wheel',\n];\n","import { toArray } from '@antv/util';\nimport { IShape, IGroup, IElement } from '../interfaces';\nimport { SHAPE_TO_TAGS } from '../constant';\n\n/**\n * 创建并返回图形的 svg 元素\n * @param type svg类型\n */\nexport function createSVGElement(type: string): SVGElement {\n return document.createElementNS('http://www.w3.org/2000/svg', type);\n}\n\n/**\n * 创建并返回图形的 dom 元素\n * @param {IShape} shape 图形\n * @return {SVGElement}\n */\nexport function createDom(shape: IShape) {\n const type = SHAPE_TO_TAGS[shape.type];\n const parent = shape.getParent();\n if (!type) {\n throw new Error(`the type ${shape.type} is not supported by svg`);\n }\n const element = createSVGElement(type);\n if (shape.get('id')) {\n element.id = shape.get('id');\n }\n shape.set('el', element);\n shape.set('attrs', {});\n // 对于 defs 下的 dom 节点,parent 为空,通过 context 统一挂载到 defs 节点下\n if (parent) {\n let parentNode = parent.get('el');\n if (parentNode) {\n parentNode.appendChild(element);\n } else {\n // parentNode maybe null for group\n parentNode = (parent as IGroup).createDom();\n parent.set('el', parentNode);\n parentNode.appendChild(element);\n }\n }\n return element;\n}\n\n/**\n * 对 dom 元素进行排序\n * @param {IElement} element 元素\n * @param {sorter} function 排序函数\n */\nexport function sortDom(element: IElement, sorter: (a: IElement, b: IElement) => number) {\n const el = element.get('el');\n const childList = toArray(el.children).sort(sorter);\n // create empty fragment\n const fragment = document.createDocumentFragment();\n childList.forEach((child) => {\n fragment.appendChild(child);\n });\n el.appendChild(fragment);\n}\n\n/**\n * 将 dom 元素移动到父元素下的指定位置\n * @param {SVGElement} element dom 元素\n * @param {number} targetIndex 目标位置(从 0 开始)\n */\nexport function moveTo(element: SVGElement, targetIndex: number) {\n const parentNode = element.parentNode;\n const siblings = Array.from(parentNode.childNodes).filter(\n // 要求为元素节点,且不能为 defs 节点\n (node: Node) => node.nodeType === 1 && node.nodeName.toLowerCase() !== 'defs'\n );\n // 获取目标节点\n const target = siblings[targetIndex];\n const currentIndex = siblings.indexOf(element);\n // 如果目标节点存在\n if (target) {\n // 当前索引 > 目标索引,直接插入到目标节点之前即可\n if (currentIndex > targetIndex) {\n parentNode.insertBefore(element, target);\n } else if (currentIndex < targetIndex) {\n // 当前索引 < 目标索引\n // 获取目标节点的下一个节点\n const targetNext = siblings[targetIndex + 1];\n // 如果目标节点的下一个节点存在,插入到该节点之前\n if (targetNext) {\n parentNode.insertBefore(element, targetNext);\n } else {\n // 如果该节点不存在,则追加到末尾\n parentNode.appendChild(element);\n }\n }\n } else {\n parentNode.appendChild(element);\n }\n}\n","import { createDom } from './dom';\n\nexport function setShadow(model, context) {\n const el = model.cfg.el;\n const attrs = model.attr();\n const cfg = {\n dx: attrs.shadowOffsetX,\n dy: attrs.shadowOffsetY,\n blur: attrs.shadowBlur,\n color: attrs.shadowColor,\n };\n if (!cfg.dx && !cfg.dy && !cfg.blur && !cfg.color) {\n el.removeAttribute('filter');\n } else {\n let id = context.find('filter', cfg);\n if (!id) {\n id = context.addShadow(cfg);\n }\n el.setAttribute('filter', `url(#${id})`);\n }\n}\n\nexport function setTransform(model) {\n const { matrix } = model.attr();\n if (matrix) {\n const el = model.cfg.el;\n let transform: any = [];\n for (let i = 0; i < 9; i += 3) {\n transform.push(`${matrix[i]},${matrix[i + 1]}`);\n }\n transform = transform.join(',');\n if (transform.indexOf('NaN') === -1) {\n el.setAttribute('transform', `matrix(${transform})`);\n } else {\n console.warn('invalid matrix:', matrix);\n }\n }\n}\n\nexport function setClip(model, context) {\n const clip = model.getClip();\n const el = model.get('el');\n if (!clip) {\n el.removeAttribute('clip-path');\n } else if (clip && !el.hasAttribute('clip-path')) {\n createDom(clip);\n clip.createPath(context);\n const id = context.addClip(clip);\n el.setAttribute('clip-path', `url(#${id})`);\n }\n}\n","import { ChangeType } from '@antv/g-base';\nimport { IElement } from '../interfaces';\nimport { setTransform, setClip } from './svg';\nimport { sortDom, moveTo } from './dom';\nimport Defs from '../defs';\n\nexport function drawChildren(context: Defs, children: IElement[]) {\n children.forEach((child) => {\n child.draw(context);\n });\n}\n\n/**\n * 更新元素,包括 group 和 shape\n * @param {IElement} element SVG 元素\n * @param {ChangeType} changeType 更新类型\n */\nexport function refreshElement(element: IElement, changeType: ChangeType) {\n // 对于还没有挂载到画布下的元素,canvas 可能为空\n const canvas = element.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n const context = canvas.get('context');\n const parent = element.getParent();\n const parentChildren = parent ? parent.getChildren() : [canvas];\n const el = element.get('el');\n if (changeType === 'remove') {\n const isClipShape = element.get('isClipShape');\n // 对于 clip,不仅需要将 clipShape 对于的 SVG 元素删除,还需要将上层的 clipPath 元素也删除\n if (isClipShape) {\n const clipPathEl = el && el.parentNode;\n const defsEl = clipPathEl && clipPathEl.parentNode;\n if (clipPathEl && defsEl) {\n defsEl.removeChild(clipPathEl);\n }\n } else if (el && el.parentNode) {\n el.parentNode.removeChild(el);\n }\n } else if (changeType === 'show') {\n el.setAttribute('visibility', 'visible');\n } else if (changeType === 'hide') {\n el.setAttribute('visibility', 'hidden');\n } else if (changeType === 'zIndex') {\n moveTo(el, parentChildren.indexOf(element));\n } else if (changeType === 'sort') {\n const children = element.get('children');\n if (children && children.length) {\n sortDom(element, (a: IElement, b: IElement) => {\n return children.indexOf(a) - children.indexOf(b) ? 1 : 0;\n });\n }\n } else if (changeType === 'clear') {\n // el maybe null for group\n if (el) {\n el.innerHTML = '';\n }\n } else if (changeType === 'matrix') {\n setTransform(element);\n } else if (changeType === 'clip') {\n setClip(element, context);\n } else if (changeType === 'attr') {\n // 已在 afterAttrsChange 进行了处理,此处 do nothing\n } else if (changeType === 'add') {\n element.draw(context);\n }\n }\n}\n","import { AbstractGroup } from '@antv/g-base';\nimport { ChangeType } from '@antv/g-base';\nimport { each } from '@antv/util';\nimport { IElement, IGroup } from './interfaces';\nimport * as Shape from './shape';\nimport Defs from './defs';\nimport { drawChildren, refreshElement } from './util/draw';\nimport { setClip, setTransform } from './util/svg';\nimport { SVG_ATTR_MAP } from './constant';\nimport { createSVGElement } from './util/dom';\n\nclass Group extends AbstractGroup {\n // SVG 中分组对应实体标签 \n isEntityGroup() {\n return true;\n }\n\n createDom() {\n const element = createSVGElement('g');\n this.set('el', element);\n const parent = this.getParent();\n if (parent) {\n let parentNode = parent.get('el');\n if (parentNode) {\n parentNode.appendChild(element);\n } else {\n // parentNode maybe null for group\n parentNode = (parent as IGroup).createDom();\n parent.set('el', parentNode);\n parentNode.appendChild(element);\n }\n }\n return element;\n }\n\n // 覆盖基类的 afterAttrsChange 方法\n afterAttrsChange(targetAttrs) {\n super.afterAttrsChange(targetAttrs);\n const canvas = this.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n const context = canvas.get('context');\n this.createPath(context, targetAttrs);\n }\n }\n\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n onCanvasChange(changeType: ChangeType) {\n refreshElement(this, changeType);\n }\n\n getShapeBase() {\n return Shape;\n }\n\n getGroupBase() {\n return Group;\n }\n\n draw(context: Defs) {\n const children = this.getChildren() as IElement[];\n const el = this.get('el');\n if (this.get('destroyed')) {\n if (el) {\n el.parentNode.removeChild(el);\n }\n } else {\n if (!el) {\n this.createDom();\n }\n setClip(this, context);\n this.createPath(context);\n if (children.length) {\n drawChildren(context, children);\n }\n }\n }\n\n /**\n * 绘制分组的路径\n * @param {Defs} context 上下文\n * @param {ShapeAttrs} targetAttrs 渲染的目标属性\n */\n createPath(context: Defs, targetAttrs?) {\n const attrs = this.attr();\n const el = this.get('el');\n each(targetAttrs || attrs, (value, attr) => {\n if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n setTransform(this);\n }\n}\n\nexport default Group;\n","import { AbstractShape } from '@antv/g-base';\nimport { ShapeAttrs, ChangeType, BBox } from '@antv/g-base';\nimport { IShape } from '../interfaces';\nimport Defs from '../defs';\nimport { setShadow, setTransform, setClip } from '../util/svg';\nimport { createDom } from '../util/dom';\nimport { refreshElement } from '../util/draw';\nimport { SVG_ATTR_MAP } from '../constant';\nimport * as Shape from './index';\nimport Group from '../group';\nimport { getBBoxMethod } from '@antv/g-base';\n\nclass ShapeBase extends AbstractShape implements IShape {\n type: string = 'svg';\n canFill: boolean = false;\n canStroke: boolean = false;\n\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n // 设置默认值\n return {\n ...attrs,\n lineWidth: 1,\n lineAppendWidth: 0,\n strokeOpacity: 1,\n fillOpacity: 1,\n };\n }\n\n // 覆盖基类的 afterAttrsChange 方法\n afterAttrsChange(targetAttrs: ShapeAttrs) {\n super.afterAttrsChange(targetAttrs);\n const canvas = this.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n const context = canvas.get('context');\n this.draw(context, targetAttrs);\n }\n }\n\n getShapeBase() {\n return Shape;\n }\n\n getGroupBase() {\n return Group;\n }\n\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n onCanvasChange(changeType: ChangeType) {\n refreshElement(this, changeType);\n }\n\n calculateBBox(): BBox {\n const el = this.get('el');\n let bbox = null;\n // 包围盒计算依赖于绘制,如果还没有生成对应的 Dom 元素,则包围盒的长宽均为 0\n if (el) {\n bbox = el.getBBox();\n } else {\n const bboxMethod = getBBoxMethod(this.get('type'));\n if (bboxMethod) {\n bbox = bboxMethod(this);\n }\n }\n if (bbox) {\n const { x, y, width, height } = bbox;\n const lineWidth = this.getHitLineWidth();\n const halfWidth = lineWidth / 2;\n const minX = x - halfWidth;\n const minY = y - halfWidth;\n const maxX = x + width + halfWidth;\n const maxY = y + height + halfWidth;\n return {\n x: minX,\n y: minY,\n minX,\n minY,\n maxX,\n maxY,\n width: width + lineWidth,\n height: height + lineWidth,\n };\n }\n return {\n x: 0,\n y: 0,\n minX: 0,\n minY: 0,\n maxX: 0,\n maxY: 0,\n width: 0,\n height: 0,\n };\n }\n\n isFill() {\n const { fill, fillStyle } = this.attr();\n return (fill || fillStyle || this.isClipShape()) && this.canFill;\n }\n\n isStroke() {\n const { stroke, strokeStyle } = this.attr();\n return (stroke || strokeStyle) && this.canStroke;\n }\n\n draw(context, targetAttrs) {\n const el = this.get('el');\n if (this.get('destroyed')) {\n if (el) {\n el.parentNode.removeChild(el);\n }\n } else {\n if (!el) {\n createDom(this);\n }\n setClip(this, context);\n this.createPath(context, targetAttrs);\n this.shadow(context, targetAttrs);\n this.strokeAndFill(context, targetAttrs);\n this.transform(targetAttrs);\n }\n }\n\n /**\n * @protected\n * 绘制图形的路径\n * @param {Defs} context 上下文\n * @param {ShapeAttrs} targetAttrs 渲染的目标属性\n */\n createPath(context: Defs, targetAttrs?: ShapeAttrs) {}\n\n // stroke and fill\n strokeAndFill(context, targetAttrs?) {\n const attrs = targetAttrs || this.attr();\n const { fill, fillStyle, stroke, strokeStyle, fillOpacity, strokeOpacity, lineWidth } = attrs;\n const el = this.get('el');\n\n if (this.canFill) {\n // 初次渲染和更新渲染的逻辑有所不同: 初次渲染值为空时,需要设置为 none,否则就会是黑色,而更新渲染则不需要\n if (!targetAttrs) {\n this._setColor(context, 'fill', fill || fillStyle);\n } else if ('fill' in attrs) {\n this._setColor(context, 'fill', fill);\n } else if ('fillStyle' in attrs) {\n // compatible with fillStyle\n this._setColor(context, 'fill', fillStyle);\n }\n if (fillOpacity) {\n el.setAttribute(SVG_ATTR_MAP['fillOpacity'], fillOpacity);\n }\n }\n\n if (this.canStroke && lineWidth > 0) {\n if (!targetAttrs) {\n this._setColor(context, 'stroke', stroke || strokeStyle);\n } else if ('stroke' in attrs) {\n this._setColor(context, 'stroke', stroke);\n } else if ('strokeStyle' in attrs) {\n // compatible with strokeStyle\n this._setColor(context, 'stroke', strokeStyle);\n }\n if (strokeOpacity) {\n el.setAttribute(SVG_ATTR_MAP['strokeOpacity'], strokeOpacity);\n }\n if (lineWidth) {\n el.setAttribute(SVG_ATTR_MAP['lineWidth'], lineWidth);\n }\n }\n }\n\n _setColor(context, attr, value) {\n const el = this.get('el');\n if (!value) {\n // need to set `none` to avoid default value\n el.setAttribute(SVG_ATTR_MAP[attr], 'none');\n return;\n }\n value = value.trim();\n if (/^[r,R,L,l]{1}[\\s]*\\(/.test(value)) {\n let id = context.find('gradient', value);\n if (!id) {\n id = context.addGradient(value);\n }\n el.setAttribute(SVG_ATTR_MAP[attr], `url(#${id})`);\n } else if (/^[p,P]{1}[\\s]*\\(/.test(value)) {\n let id = context.find('pattern', value);\n if (!id) {\n id = context.addPattern(value);\n }\n el.setAttribute(SVG_ATTR_MAP[attr], `url(#${id})`);\n } else {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n }\n\n shadow(context, targetAttrs?) {\n const attrs = this.attr();\n const { shadowOffsetX, shadowOffsetY, shadowBlur, shadowColor } = targetAttrs || attrs;\n if (shadowOffsetX || shadowOffsetY || shadowBlur || shadowColor) {\n setShadow(this, context);\n }\n }\n\n transform(targetAttrs?) {\n const attrs = this.attr();\n const { matrix } = targetAttrs || attrs;\n if (matrix) {\n setTransform(this);\n }\n }\n\n isInShape(refX: number, refY: number): boolean {\n return this.isPointInPath(refX, refY);\n }\n\n isPointInPath(refX: number, refY: number): boolean {\n const el = this.get('el');\n const canvas = this.get('canvas');\n const bbox = canvas.get('el').getBoundingClientRect();\n const clientX = refX + bbox.left;\n const clientY = refY + bbox.top;\n const element = document.elementFromPoint(clientX, clientY);\n if (element && element.isEqualNode(el)) {\n return true;\n }\n return false;\n }\n\n /**\n * 获取线拾取的宽度\n * @returns {number} 线的拾取宽度\n */\n getHitLineWidth() {\n const { lineWidth, lineAppendWidth } = this.attrs;\n if (this.isStroke()) {\n return lineWidth + lineAppendWidth;\n }\n return 0;\n }\n}\n\nexport default ShapeBase;\n","/**\n * @fileoverview circle\n * @author dengfuping_develop@163.com\n */\n\nimport { each } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\n\nclass Circle extends ShapeBase {\n type: string = 'circle';\n canFill: boolean = true;\n canStroke: boolean = true;\n\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x: 0,\n y: 0,\n r: 0,\n };\n }\n\n createPath(context, targetAttrs) {\n const attrs = this.attr();\n const el = this.get('el');\n each(targetAttrs || attrs, (value, attr) => {\n // 圆和椭圆的点坐标属性不是 x, y,而是 cx, cy\n if (attr === 'x' || attr === 'y') {\n el.setAttribute(`c${attr}`, value);\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n }\n}\n\nexport default Circle;\n","/**\n * @fileoverview dom\n * @author dengfuping_develop@163.com\n */\n\nimport { each } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\n\nclass Dom extends ShapeBase {\n type: string = 'dom';\n canFill: boolean = false;\n canStroke: boolean = false;\n\n createPath(context, targetAttrs) {\n const attrs = this.attr();\n const el = this.get('el');\n each(targetAttrs || attrs, (value, attr) => {\n if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n if (typeof attrs['html'] === 'function') {\n const element = attrs['html'].call(this, attrs);\n if (element instanceof Element || element instanceof HTMLDocument) {\n const children = el.childNodes;\n for (let i = children.length - 1; i >= 0; i--) {\n el.removeChild(children[i]);\n }\n el.appendChild(element); // append to el if it's an element\n } else {\n el.innerHTML = element; // set innerHTML\n }\n } else {\n el.innerHTML = attrs['html']; // set innerHTML\n }\n }\n}\n\nexport default Dom;\n","/**\n * @fileoverview ellipse\n * @author dengfuping_develop@163.com\n */\n\nimport { each } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\n\nclass Ellipse extends ShapeBase {\n type: string = 'ellipse';\n canFill: boolean = true;\n canStroke: boolean = true;\n\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x: 0,\n y: 0,\n rx: 0,\n ry: 0,\n };\n }\n\n createPath(context, targetAttrs) {\n const attrs = this.attr();\n const el = this.get('el');\n each(targetAttrs || attrs, (value, attr) => {\n // 圆和椭圆的点坐标属性不是 x, y,而是 cx, cy\n if (attr === 'x' || attr === 'y') {\n el.setAttribute(`c${attr}`, value);\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n }\n}\n\nexport default Ellipse;\n","/**\n * @fileoverview image\n * @author dengfuping_develop@163.com\n */\n\nimport { each, isString } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\n\nclass Image extends ShapeBase {\n type: string = 'image';\n canFill: boolean = false;\n canStroke: boolean = false;\n\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n\n createPath(context, targetAttrs) {\n const attrs = this.attr();\n const el = this.get('el');\n each(targetAttrs || attrs, (value, attr) => {\n if (attr === 'img') {\n this._setImage(attrs.img);\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n }\n\n setAttr(name: string, value: any) {\n this.attrs[name] = value;\n if (name === 'img') {\n this._setImage(value);\n }\n }\n\n _setImage(img) {\n const attrs = this.attr();\n const el = this.get('el');\n if (isString(img)) {\n el.setAttribute('href', img);\n } else if (img instanceof (window as any).Image) {\n if (!attrs.width) {\n el.setAttribute('width', img.width);\n this.attr('width', img.width);\n }\n if (!attrs.height) {\n el.setAttribute('height', img.height);\n this.attr('height', img.height);\n }\n el.setAttribute('href', img.src);\n } else if (img instanceof HTMLElement && isString(img.nodeName) && img.nodeName.toUpperCase() === 'CANVAS') {\n // @ts-ignore\n el.setAttribute('href', img.toDataURL());\n } else if (img instanceof ImageData) {\n const canvas = document.createElement('canvas');\n canvas.setAttribute('width', `${img.width}`);\n canvas.setAttribute('height', `${img.height}`);\n canvas.getContext('2d').putImageData(img, 0, 0);\n if (!attrs.width) {\n el.setAttribute('width', `${img.width}`);\n this.attr('width', img.width);\n }\n if (!attrs.height) {\n el.setAttribute('height', `${img.height}`);\n this.attr('height', img.height);\n }\n el.setAttribute('href', canvas.toDataURL());\n }\n }\n}\n\nexport default Image;\n","/**\n * @fileoverview line\n * @author dengfuping_develop@163.com\n */\nimport { Line as LineUtil } from '@antv/g-math';\nimport { each, isObject } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\n\nclass Line extends ShapeBase {\n type: string = 'line';\n canFill: boolean = false;\n canStroke: boolean = true;\n\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n startArrow: false,\n endArrow: false,\n };\n }\n\n createPath(context, targetAttrs) {\n const attrs = this.attr();\n const el = this.get('el');\n each(targetAttrs || attrs, (value, attr) => {\n if (attr === 'startArrow' || attr === 'endArrow') {\n if (value) {\n const id = isObject(value)\n ? context.addArrow(attrs, SVG_ATTR_MAP[attr])\n : context.getDefaultArrow(attrs, SVG_ATTR_MAP[attr]);\n el.setAttribute(SVG_ATTR_MAP[attr], `url(#${id})`);\n } else {\n el.removeAttribute(SVG_ATTR_MAP[attr]);\n }\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n }\n\n /**\n * Use math calculation to get length of line\n * @return {number} length\n */\n getTotalLength() {\n const { x1, y1, x2, y2 } = this.attr();\n return LineUtil.length(x1, y1, x2, y2);\n }\n\n /**\n * Use math calculation to get point according to ratio as same sa Canvas version\n * @param {number} ratio\n * @return {Point} point\n */\n getPoint(ratio: number) {\n const { x1, y1, x2, y2 } = this.attr();\n return LineUtil.pointAt(x1, y1, x2, y2, ratio);\n }\n}\n\nexport default Line;\n","const Symbols = {\n // 圆\n circle(x: number, y: number, r: number): any[] {\n return [\n ['M', x, y],\n ['m', -r, 0],\n ['a', r, r, 0, 1, 0, r * 2, 0],\n ['a', r, r, 0, 1, 0, -r * 2, 0],\n ];\n },\n // 正方形\n square(x: number, y: number, r: number): any[] {\n return [['M', x - r, y - r], ['L', x + r, y - r], ['L', x + r, y + r], ['L', x - r, y + r], ['Z']];\n },\n // 菱形\n diamond(x: number, y: number, r: number): any[] {\n return [['M', x - r, y], ['L', x, y - r], ['L', x + r, y], ['L', x, y + r], ['Z']];\n },\n // 三角形\n triangle(x: number, y: number, r: number): any[] {\n const diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y + diffY], ['L', x, y - diffY], ['L', x + r, y + diffY], ['z']];\n },\n // 倒三角形\n triangleDown(x: number, y: number, r: number): any[] {\n const diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y - diffY], ['L', x + r, y - diffY], ['L', x, y + diffY], ['Z']];\n },\n};\n\nexport type SymbolFunc = (x: number, y: number, r: number) => any[];\n\nexport default {\n get(type: string): SymbolFunc {\n return Symbols[type];\n },\n\n register(type: string, func: SymbolFunc) {\n Symbols[type] = func;\n },\n\n remove(type: string) {\n delete Symbols[type];\n },\n\n getAll() {\n return Symbols;\n },\n};\n","/**\n * @fileoverview marker\n * @author dengfuping_develop@163.com\n */\n\nimport { isArray, isFunction } from '@antv/util';\nimport ShapeBase from '../base';\nimport symbolsFactory from './symbols';\n\nclass Marker extends ShapeBase {\n type: string = 'marker';\n canFill: boolean = true;\n canStroke: boolean = true;\n\n // 作为其静态属性\n public static symbolsFactory = symbolsFactory;\n\n createPath(context) {\n const el = this.get('el');\n el.setAttribute('d', this._assembleMarker());\n }\n\n _assembleMarker() {\n const d = this._getPath();\n if (isArray(d)) {\n return d\n .map((path) => {\n return path.join(' ');\n })\n .join('');\n }\n return d;\n }\n\n _getPath(): any[] {\n const attrs = this.attr();\n const { x, y } = attrs;\n // 兼容 r 和 radius 两种写法,推荐使用 r\n const r = attrs.r || attrs.radius;\n const symbol = attrs.symbol || 'circle';\n let method;\n if (isFunction(symbol)) {\n method = symbol;\n } else {\n method = symbolsFactory.get(symbol);\n }\n\n if (!method) {\n console.warn(`${method} symbol is not exist.`);\n return null;\n }\n return method(x, y, r);\n }\n}\n\nexport default Marker;\n","/**\n * @fileoverview path\n * @author dengfuping_develop@163.com\n */\nimport { Point } from '@antv/g-base';\nimport { each, isArray, isObject } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\n\nclass Path extends ShapeBase {\n type: string = 'path';\n canFill: boolean = true;\n canStroke: boolean = true;\n\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n startArrow: false,\n endArrow: false,\n };\n }\n\n createPath(context, targetAttrs) {\n const attrs = this.attr();\n const el = this.get('el');\n each(targetAttrs || attrs, (value, attr) => {\n if (attr === 'path' && isArray(value)) {\n el.setAttribute('d', this._formatPath(value));\n } else if (attr === 'startArrow' || attr === 'endArrow') {\n if (value) {\n const id = isObject(value)\n ? context.addArrow(attrs, SVG_ATTR_MAP[attr])\n : context.getDefaultArrow(attrs, SVG_ATTR_MAP[attr]);\n el.setAttribute(SVG_ATTR_MAP[attr], `url(#${id})`);\n } else {\n el.removeAttribute(SVG_ATTR_MAP[attr]);\n }\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n }\n\n _formatPath(value) {\n const newValue = value\n .map((path) => {\n return path.join(' ');\n })\n .join('');\n if (~newValue.indexOf('NaN')) {\n return '';\n }\n return newValue;\n }\n\n /**\n * Get total length of path\n * 尽管通过浏览器的 SVGPathElement.getTotalLength() 接口获取的 path 长度,\n * 与 Canvas 版本通过数学计算的方式得到的长度有一些细微差异,但最大误差在个位数像素,精度上可以能接受\n * @return {number} length\n */\n getTotalLength() {\n const el = this.get('el');\n return el ? el.getTotalLength() : null;\n }\n\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n getPoint(ratio: number): Point {\n const el = this.get('el');\n const totalLength = this.getTotalLength();\n // @see https://github.com/antvis/g/issues/634\n if (totalLength === 0) {\n return null;\n }\n const point = el ? el.getPointAtLength(ratio * totalLength) : null;\n return point\n ? {\n x: point.x,\n y: point.y,\n }\n : null;\n }\n}\n\nexport default Path;\n","/**\n * @fileoverview polygon\n * @author dengfuping_develop@163.com\n */\nimport { each, isArray } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\n\nclass Polygon extends ShapeBase {\n type: string = 'polygon';\n canFill: boolean = true;\n canStroke: boolean = true;\n\n createPath(context, targetAttrs) {\n const attrs = this.attr();\n const el = this.get('el');\n each(targetAttrs || attrs, (value, attr) => {\n if (attr === 'points' && isArray(value) && value.length >= 2) {\n el.setAttribute('points', value.map((point) => `${point[0]},${point[1]}`).join(' '));\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n }\n}\n\nexport default Polygon;\n","/**\n * @fileoverview polyline\n * @author dengfuping_develop@163.com\n */\nimport { Point } from '@antv/g-base';\nimport { Polyline as PolylineUtil } from '@antv/g-math';\nimport { Line as LineUtil } from '@antv/g-math';\nimport { each, isArray, isNil } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\n\nclass Polyline extends ShapeBase {\n type: string = 'polyline';\n canFill: boolean = true;\n canStroke: boolean = true;\n\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n startArrow: false,\n endArrow: false,\n };\n }\n\n // 更新属性时,检测是否更改了 points\n onAttrChange(name: string, value: any, originValue: any) {\n super.onAttrChange(name, value, originValue);\n if (['points'].indexOf(name) !== -1) {\n this._resetCache();\n }\n }\n\n _resetCache() {\n this.set('totalLength', null);\n this.set('tCache', null);\n }\n\n createPath(context, targetAttrs) {\n const attrs = this.attr();\n const el = this.get('el');\n each(targetAttrs || attrs, (value, attr) => {\n if (attr === 'points' && isArray(value) && value.length >= 2) {\n el.setAttribute('points', value.map((point) => `${point[0]},${point[1]}`).join(' '));\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n }\n\n /**\n * Get length of polyline\n * @return {number} length\n */\n getTotalLength() {\n const { points } = this.attr();\n // get totalLength from cache\n const totalLength = this.get('totalLength');\n if (!isNil(totalLength)) {\n return totalLength;\n }\n this.set('totalLength', PolylineUtil.length(points));\n return this.get('totalLength');\n }\n\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n getPoint(ratio: number): Point {\n const { points } = this.attr();\n // get tCache from cache\n let tCache = this.get('tCache');\n if (!tCache) {\n this._setTcache();\n tCache = this.get('tCache');\n }\n\n let subt;\n let index;\n each(tCache, (v, i) => {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n return LineUtil.pointAt(points[index][0], points[index][1], points[index + 1][0], points[index + 1][1], subt);\n }\n\n _setTcache() {\n const { points } = this.attr();\n if (!points || points.length === 0) {\n return;\n }\n\n const totalLength = this.getTotalLength();\n if (totalLength <= 0) {\n return;\n }\n\n let tempLength = 0;\n const tCache = [];\n let segmentT;\n let segmentL;\n\n each(points, (p, i) => {\n if (points[i + 1]) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = LineUtil.length(p[0], p[1], points[i + 1][0], points[i + 1][1]);\n tempLength += segmentL;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n }\n\n /**\n * Get start tangent vector\n * @return {Array}\n */\n getStartTangent(): number[][] {\n const { points } = this.attr();\n const result = [];\n result.push([points[1][0], points[1][1]]);\n result.push([points[0][0], points[0][1]]);\n return result;\n }\n\n /**\n * Get end tangent vector\n * @return {Array}\n */\n getEndTangent(): number[][] {\n const { points } = this.attr();\n const l = points.length - 1;\n const result = [];\n result.push([points[l - 1][0], points[l - 1][1]]);\n result.push([points[l][0], points[l][1]]);\n return result;\n }\n}\n\nexport default Polyline;\n","/**\n * @fileoverview rect\n * @author dengfuping_develop@163.com\n */\n\nimport { each, isArray } from '@antv/util';\nimport ShapeBase from './base';\nimport { SVG_ATTR_MAP } from '../constant';\nimport { parseRadius } from '../util/format';\n\nclass Rect extends ShapeBase {\n type: string = 'rect';\n canFill: boolean = true;\n canStroke: boolean = true;\n\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n radius: 0,\n };\n }\n\n createPath(context, targetAttrs) {\n const attrs = this.attr();\n const el = this.get('el');\n // 加上状态量,用来标记 path 是否已组装\n let completed = false;\n // 和组装 path 相关的绘图属性\n const pathRelatedAttrs = ['x', 'y', 'width', 'height', 'radius'];\n each(targetAttrs || attrs, (value, attr) => {\n if (pathRelatedAttrs.indexOf(attr) !== -1 && !completed) {\n el.setAttribute('d', this._assembleRect(attrs));\n completed = true;\n } else if (pathRelatedAttrs.indexOf(attr) === -1 && SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n }\n\n _assembleRect(attrs) {\n const x = attrs.x;\n const y = attrs.y;\n const w = attrs.width;\n const h = attrs.height;\n const radius = attrs.radius;\n\n if (!radius) {\n return `M ${x},${y} l ${w},0 l 0,${h} l${-w} 0 z`;\n }\n const r = parseRadius(radius);\n if (isArray(radius)) {\n if (radius.length === 1) {\n r.r1 = r.r2 = r.r3 = r.r4 = radius[0];\n } else if (radius.length === 2) {\n r.r1 = r.r3 = radius[0];\n r.r2 = r.r4 = radius[1];\n } else if (radius.length === 3) {\n r.r1 = radius[0];\n r.r2 = r.r4 = radius[1];\n r.r3 = radius[2];\n } else {\n r.r1 = radius[0];\n r.r2 = radius[1];\n r.r3 = radius[2];\n r.r4 = radius[3];\n }\n } else {\n r.r1 = r.r2 = r.r3 = r.r4 = radius;\n }\n const d = [\n [`M ${x + r.r1},${y}`],\n [`l ${w - r.r1 - r.r2},0`],\n [`a ${r.r2},${r.r2},0,0,1,${r.r2},${r.r2}`],\n [`l 0,${h - r.r2 - r.r3}`],\n [`a ${r.r3},${r.r3},0,0,1,${-r.r3},${r.r3}`],\n [`l ${r.r3 + r.r4 - w},0`],\n [`a ${r.r4},${r.r4},0,0,1,${-r.r4},${-r.r4}`],\n [`l 0,${r.r4 + r.r1 - h}`],\n [`a ${r.r1},${r.r1},0,0,1,${r.r1},${-r.r1}`],\n ['z'],\n ];\n return d.join(' ');\n }\n}\n\nexport default Rect;\n","import { each, isArray, isString } from '@antv/util';\n\nconst regexTags = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/gi;\nconst regexDot = /[^\\s,]+/gi;\n\nexport function parseRadius(radius) {\n let r1 = 0;\n let r2 = 0;\n let r3 = 0;\n let r4 = 0;\n if (isArray(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n } else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n } else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n } else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n } else {\n r1 = r2 = r3 = r4 = radius;\n }\n return {\n r1,\n r2,\n r3,\n r4,\n };\n}\n\nexport function parsePath(path) {\n path = path || [];\n if (isArray(path)) {\n return path;\n }\n\n if (isString(path)) {\n path = path.match(regexTags);\n each(path, (item, index) => {\n item = item.match(regexDot);\n if (item[0].length > 1) {\n const tag = item[0].charAt(0);\n item.splice(1, 0, item[0].substr(1));\n item[0] = tag;\n }\n each(item, (sub, i) => {\n if (!isNaN(sub)) {\n item[i] = +sub;\n }\n });\n path[index] = item;\n });\n return path;\n }\n}\n","/**\n * @fileoverview text\n * @author dengfuping_develop@163.com\n */\n\nimport { each } from '@antv/util';\nimport { detect } from 'detect-browser';\nimport { setTransform } from '../util/svg';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\n\nconst LETTER_SPACING = 0.3;\n\nconst BASELINE_MAP = {\n top: 'before-edge',\n middle: 'central',\n bottom: 'after-edge',\n alphabetic: 'baseline',\n hanging: 'hanging',\n};\n\n// for FireFox\nconst BASELINE_MAP_FOR_FIREFOX = {\n top: 'text-before-edge',\n middle: 'central',\n bottom: 'text-after-edge',\n alphabetic: 'alphabetic',\n hanging: 'hanging',\n};\n\nconst ANCHOR_MAP = {\n left: 'left',\n start: 'left',\n center: 'middle',\n right: 'end',\n end: 'end',\n};\n\nclass Text extends ShapeBase {\n type: string = 'text';\n canFill: boolean = true;\n canStroke: boolean = true;\n\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x: 0,\n y: 0,\n text: null,\n fontSize: 12,\n fontFamily: 'sans-serif',\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontVariant: 'normal',\n textAlign: 'start',\n textBaseline: 'bottom',\n };\n }\n\n createPath(context, targetAttrs) {\n const attrs = this.attr();\n const el = this.get('el');\n this._setFont();\n each(targetAttrs || attrs, (value, attr) => {\n if (attr === 'text') {\n this._setText(`${value}`);\n } else if (attr === 'matrix' && value) {\n setTransform(this);\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n el.setAttribute('paint-order', 'stroke');\n el.setAttribute('style', 'stroke-linecap:butt; stroke-linejoin:miter;');\n }\n\n _setFont() {\n const el = this.get('el');\n const { textBaseline, textAlign } = this.attr();\n\n const browser = detect();\n if (browser && browser.name === 'firefox') {\n // compatible with FireFox browser, ref: https://github.com/antvis/g/issues/119\n el.setAttribute('dominant-baseline', BASELINE_MAP_FOR_FIREFOX[textBaseline] || 'alphabetic');\n } else {\n el.setAttribute('alignment-baseline', BASELINE_MAP[textBaseline] || 'baseline');\n }\n\n el.setAttribute('text-anchor', ANCHOR_MAP[textAlign] || 'left');\n }\n\n _setText(text) {\n const el = this.get('el');\n const { x, textBaseline: baseline = 'bottom' } = this.attr();\n if (!text) {\n el.innerHTML = '';\n } else if (~text.indexOf('\\n')) {\n const textArr = text.split('\\n');\n const textLen = textArr.length - 1;\n let arr = '';\n each(textArr, (segment, i: number) => {\n if (i === 0) {\n if (baseline === 'alphabetic') {\n arr += `${segment}`;\n } else if (baseline === 'top') {\n arr += `${segment}`;\n } else if (baseline === 'middle') {\n arr += `${segment}`;\n } else if (baseline === 'bottom') {\n arr += `${segment}`;\n } else if (baseline === 'hanging') {\n arr += `${segment}`;\n }\n } else {\n arr += `${segment}`;\n }\n });\n el.innerHTML = arr;\n } else {\n el.innerHTML = text;\n }\n }\n}\n\nexport default Text;\n","/**\n * @fileoverview gradient\n * @author dengfuping_develop@163.com\n */\n\nimport { each, mod, toRadian, uniqueId } from '@antv/util';\nimport { createSVGElement } from '../util/dom';\n\nconst regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nconst regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nconst regexColorStop = /[\\d.]+:(#[^\\s]+|[^)]+\\))/gi;\n\nfunction addStop(steps) {\n const arr = steps.match(regexColorStop);\n if (!arr) {\n return '';\n }\n let stops = '';\n arr.sort((a, b) => {\n a = a.split(':');\n b = b.split(':');\n return Number(a[0]) - Number(b[0]);\n });\n each(arr, (item: any) => {\n item = item.split(':');\n stops += ``;\n });\n return stops;\n}\n\nfunction parseLineGradient(color, el) {\n const arr = regexLG.exec(color);\n const angle = mod(toRadian(parseFloat(arr[1])), Math.PI * 2);\n const steps = arr[2];\n let start;\n let end;\n\n if (angle >= 0 && angle < 0.5 * Math.PI) {\n start = {\n x: 0,\n y: 0,\n };\n end = {\n x: 1,\n y: 1,\n };\n } else if (0.5 * Math.PI <= angle && angle < Math.PI) {\n start = {\n x: 1,\n y: 0,\n };\n end = {\n x: 0,\n y: 1,\n };\n } else if (Math.PI <= angle && angle < 1.5 * Math.PI) {\n start = {\n x: 1,\n y: 1,\n };\n end = {\n x: 0,\n y: 0,\n };\n } else {\n start = {\n x: 0,\n y: 1,\n };\n end = {\n x: 1,\n y: 0,\n };\n }\n\n const tanTheta = Math.tan(angle);\n const tanTheta2 = tanTheta * tanTheta;\n\n const x = (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.x;\n const y = (tanTheta * (end.x - start.x + tanTheta * (end.y - start.y))) / (tanTheta2 + 1) + start.y;\n el.setAttribute('x1', start.x);\n el.setAttribute('y1', start.y);\n el.setAttribute('x2', x);\n el.setAttribute('y2', y);\n el.innerHTML = addStop(steps);\n}\n\nfunction parseRadialGradient(color, self) {\n const arr = regexRG.exec(color);\n const cx = parseFloat(arr[1]);\n const cy = parseFloat(arr[2]);\n const r = parseFloat(arr[3]);\n const steps = arr[4];\n self.setAttribute('cx', cx);\n self.setAttribute('cy', cy);\n self.setAttribute('r', r);\n self.innerHTML = addStop(steps);\n}\n\nclass Gradient {\n el: SVGGradientElement;\n id: string;\n cfg: {\n [key: string]: any;\n } = {};\n\n constructor(cfg) {\n let el = null;\n const id = uniqueId('gradient_');\n if (cfg.toLowerCase()[0] === 'l') {\n el = createSVGElement('linearGradient');\n parseLineGradient(cfg, el);\n } else {\n el = createSVGElement('radialGradient');\n parseRadialGradient(cfg, el);\n }\n el.setAttribute('id', id);\n this.el = el;\n this.id = id;\n this.cfg = cfg;\n return this;\n }\n\n match(type, attr) {\n return this.cfg === attr;\n }\n}\n\nexport default Gradient;\n","/**\n * @fileoverview shadow\n * @author dengfuping_develop@163.com\n */\n\nimport { each, uniqueId } from '@antv/util';\nimport { createSVGElement } from '../util/dom';\n\nconst ATTR_MAP = {\n shadowColor: 'color',\n shadowOpacity: 'opacity',\n shadowBlur: 'blur',\n shadowOffsetX: 'dx',\n shadowOffsetY: 'dy',\n};\n\nconst SHADOW_DIMENSION = {\n x: '-40%',\n y: '-40%',\n width: '200%',\n height: '200%',\n};\n\nclass Shadow {\n type: string = 'filter';\n id: string;\n el: SVGFilterElement;\n cfg: {\n [key: string]: any;\n } = {};\n\n constructor(cfg) {\n this.type = 'filter';\n const el = createSVGElement('filter') as SVGFilterElement;\n // expand the filter region to fill in shadows\n each(SHADOW_DIMENSION, (v, k) => {\n el.setAttribute(k, v);\n });\n this.el = el;\n this.id = uniqueId('filter_');\n this.el.id = this.id;\n this.cfg = cfg;\n this._parseShadow(cfg, el);\n return this;\n }\n\n match(type, cfg) {\n if (this.type !== type) {\n return false;\n }\n let flag = true;\n const config = this.cfg;\n each(Object.keys(config), (attr) => {\n if (config[attr] !== cfg[attr]) {\n flag = false;\n return false;\n }\n });\n return flag;\n }\n\n update(name, value) {\n const config = this.cfg;\n config[ATTR_MAP[name]] = value;\n this._parseShadow(config, this.el);\n return this;\n }\n\n _parseShadow(config, el) {\n const child = ``;\n el.innerHTML = child;\n }\n}\n\nexport default Shadow;\n","/**\n * @fileoverview arrow\n * @author dengfuping_develop@163.com\n */\n\nimport { isArray, uniqueId } from '@antv/util';\nimport { createSVGElement } from '../util/dom';\n\nclass Arrow {\n id: string;\n el: SVGMarkerElement;\n child: SVGPathElement | any; // TODO G.Shape, not any\n stroke: string;\n cfg: {\n [key: string]: any;\n } = {};\n\n constructor(attrs, type) {\n const el = createSVGElement('marker') as SVGMarkerElement;\n const id = uniqueId('marker_');\n el.setAttribute('id', id);\n const shape = createSVGElement('path');\n shape.setAttribute('stroke', attrs.stroke || 'none');\n shape.setAttribute('fill', attrs.fill || 'none');\n el.appendChild(shape);\n el.setAttribute('overflow', 'visible');\n el.setAttribute('orient', 'auto-start-reverse');\n this.el = el;\n this.child = shape;\n this.id = id;\n const cfg = attrs[type === 'marker-start' ? 'startArrow' : 'endArrow'];\n this.stroke = attrs.stroke || '#000';\n if (cfg === true) {\n this._setDefaultPath(type, shape);\n } else {\n this.cfg = cfg; // when arrow config exists\n this._setMarker(attrs.lineWidth, shape);\n }\n return this;\n }\n\n match() {\n return false;\n }\n\n _setDefaultPath(type, el) {\n const parent = this.el;\n // 默认箭头的边长为 10,夹角为 60 度\n el.setAttribute('d', `M0,0 L${10 * Math.cos(Math.PI / 6)},5 L0,10`);\n parent.setAttribute('refX', `${10 * Math.cos(Math.PI / 6)}`);\n parent.setAttribute('refY', `${5}`);\n }\n\n _setMarker(r, el) {\n const parent = this.el;\n let path = this.cfg.path;\n const d = this.cfg.d;\n\n if (isArray(path)) {\n path = path\n .map((segment) => {\n return segment.join(' ');\n })\n .join('');\n }\n el.setAttribute('d', path);\n parent.appendChild(el);\n if (d) {\n parent.setAttribute('refX', `${d / r}`);\n }\n }\n\n update(fill) {\n const child = this.child;\n if (child.attr) {\n child.attr('fill', fill);\n } else {\n child.setAttribute('fill', fill);\n }\n }\n}\n\nexport default Arrow;\n","/**\n * @fileoverview clip\n * @author dengfuping_develop@163.com\n */\n\nimport { uniqueId } from '@antv/util';\nimport { createSVGElement } from '../util/dom';\n\nclass Clip {\n type: string = 'clip';\n id: string;\n el: SVGClipPathElement;\n cfg: {\n [key: string]: any;\n } = {};\n\n constructor(cfg) {\n const el = createSVGElement('clipPath') as SVGClipPathElement;\n this.el = el;\n this.id = uniqueId('clip_');\n el.id = this.id;\n const shapeEl = cfg.cfg.el;\n el.appendChild(shapeEl);\n this.cfg = cfg;\n return this;\n }\n\n match() {\n return false;\n }\n\n remove() {\n const el = this.el;\n el.parentNode.removeChild(el);\n }\n}\n\nexport default Clip;\n","/**\n * @fileoverview pattern\n * @author dengfuping_develop@163.com\n */\n\nimport { uniqueId } from '@antv/util';\nimport { createSVGElement } from '../util/dom';\n\nconst regexPR = /^p\\s*\\(\\s*([axyn])\\s*\\)\\s*(.*)/i;\n\nclass Pattern {\n el: SVGPatternElement;\n id: string;\n cfg: {\n [key: string]: any;\n } = {};\n\n constructor(cfg) {\n const el = createSVGElement('pattern') as SVGPatternElement;\n el.setAttribute('patternUnits', 'userSpaceOnUse');\n const child = createSVGElement('image');\n el.appendChild(child);\n const id = uniqueId('pattern_');\n el.id = id;\n this.el = el;\n this.id = id;\n this.cfg = cfg;\n const arr = regexPR.exec(cfg);\n const source = arr[2];\n child.setAttribute('href', source);\n const img = new Image();\n if (!source.match(/^data:/i)) {\n img.crossOrigin = 'Anonymous';\n }\n img.src = source;\n function onload() {\n el.setAttribute('width', `${img.width}`);\n el.setAttribute('height', `${img.height}`);\n }\n if (img.complete) {\n onload();\n } else {\n img.onload = onload;\n // Fix onload() bug in IE9\n img.src = img.src;\n }\n\n return this;\n }\n\n match(type, attr) {\n return this.cfg === attr;\n }\n}\n\nexport default Pattern;\n","/**\n * @fileoverview defs\n * @author dengfuping_develop@163.com\n */\n\nimport { uniqueId } from '@antv/util';\nimport Gradient from './gradient';\nimport Shadow from './shadow';\nimport Arrow from './arrow';\nimport Clip from './clip';\nimport Pattern from './pattern';\nimport { createSVGElement } from '../util/dom';\n\nclass Defs {\n id: string;\n defaultArrow: {};\n children: any[];\n el: SVGDefsElement;\n canvas: SVGSVGElement;\n\n constructor(canvas) {\n const el = createSVGElement('defs') as SVGDefsElement;\n const id = uniqueId('defs_');\n el.id = id;\n canvas.appendChild(el);\n this.children = [];\n this.defaultArrow = {};\n this.el = el;\n this.canvas = canvas;\n }\n\n find(type, attr) {\n const children = this.children;\n let result = null;\n for (let i = 0; i < children.length; i++) {\n if (children[i].match(type, attr)) {\n result = children[i].id;\n break;\n }\n }\n return result;\n }\n\n findById(id) {\n const children = this.children;\n let flag = null;\n for (let i = 0; i < children.length; i++) {\n if (children[i].id === id) {\n flag = children[i];\n break;\n }\n }\n return flag;\n }\n\n add(item) {\n this.children.push(item);\n item.canvas = this.canvas;\n item.parent = this;\n }\n\n getDefaultArrow(attrs, name) {\n const stroke = attrs.stroke || attrs.strokeStyle;\n if (this.defaultArrow[stroke]) {\n return this.defaultArrow[stroke].id;\n }\n const arrow = new Arrow(attrs, name);\n this.defaultArrow[stroke] = arrow;\n this.el.appendChild(arrow.el);\n this.add(arrow);\n return arrow.id;\n }\n\n addGradient(cfg) {\n const gradient = new Gradient(cfg);\n this.el.appendChild(gradient.el);\n this.add(gradient);\n return gradient.id;\n }\n\n addArrow(attrs, name) {\n const arrow = new Arrow(attrs, name);\n this.el.appendChild(arrow.el);\n this.add(arrow);\n return arrow.id;\n }\n\n addShadow(cfg) {\n const shadow = new Shadow(cfg);\n this.el.appendChild(shadow.el);\n this.add(shadow);\n return shadow.id;\n }\n\n addPattern(cfg) {\n const pattern = new Pattern(cfg);\n this.el.appendChild(pattern.el);\n this.add(pattern);\n return pattern.id;\n }\n\n addClip(cfg) {\n const clip = new Clip(cfg);\n this.el.appendChild(clip.el);\n this.add(clip);\n return clip.id;\n }\n}\n\nexport default Defs;\n","import { AbstractCanvas, IShape } from '@antv/g-base';\nimport { ChangeType } from '@antv/g-base';\nimport { IElement } from './interfaces';\nimport { SHAPE_TO_TAGS } from './constant';\nimport { drawChildren } from './util/draw';\nimport { setTransform, setClip } from './util/svg';\nimport { sortDom, createSVGElement } from './util/dom';\nimport * as Shape from './shape';\nimport Group from './group';\nimport Defs from './defs';\n\nclass Canvas extends AbstractCanvas {\n constructor(cfg) {\n super({\n ...cfg,\n autoDraw: true,\n // 设置渲染引擎为 canvas,只读属性\n renderer: 'svg',\n });\n }\n\n getShapeBase() {\n return Shape;\n }\n\n getGroupBase() {\n return Group;\n }\n\n // 覆盖 Container 中通过遍历的方式获取 shape 对象的逻辑,直接走 SVG 的 dom 拾取即可\n getShape(x: number, y: number, ev: Event): IShape {\n let target = ev.target || ev.srcElement;\n if (!SHAPE_TO_TAGS[target.tagName]) {\n let parent = target.parentNode;\n while (parent && !SHAPE_TO_TAGS[parent.tagName]) {\n parent = parent.parentNode;\n }\n target = parent;\n }\n return this.find((child) => child.get('el') === target) as IShape;\n }\n\n // 复写基类的方法生成标签\n createDom() {\n const element = createSVGElement('svg') as SVGSVGElement;\n const context = new Defs(element);\n element.setAttribute('width', `${this.get('width')}`);\n element.setAttribute('height', `${this.get('height')}`);\n // 缓存 context 对象\n this.set('context', context);\n return element;\n }\n\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n onCanvasChange(changeType: ChangeType) {\n const context = this.get('context');\n const el = this.get('el');\n if (changeType === 'sort') {\n const children = this.get('children');\n if (children && children.length) {\n sortDom(this, (a: IElement, b: IElement) => {\n return children.indexOf(a) - children.indexOf(b) ? 1 : 0;\n });\n }\n } else if (changeType === 'clear') {\n // el maybe null for canvas\n if (el) {\n // 清空 SVG 元素\n el.innerHTML = '';\n const defsEl = context.el;\n // 清空 defs 元素\n defsEl.innerHTML = '';\n // 将清空后的 defs 元素挂载到 el 下\n el.appendChild(defsEl);\n }\n } else if (changeType === 'matrix') {\n setTransform(this);\n } else if (changeType === 'clip') {\n setClip(this, context);\n } else if (changeType === 'changeSize') {\n el.setAttribute('width', `${this.get('width')}`);\n el.setAttribute('height', `${this.get('height')}`);\n }\n }\n\n // 复写基类的 draw 方法\n draw() {\n const context = this.get('context');\n const children = this.getChildren() as IElement[];\n setClip(this, context);\n if (children.length) {\n drawChildren(context, children);\n }\n }\n}\n\nexport default Canvas;\n","import * as Shape from './shape';\n\nexport * from '@antv/g-base';\nexport { IElement, IGroup, IShape } from './interfaces';\nexport { default as Canvas } from './canvas';\nexport { default as Group } from './group';\nexport { Shape };\n\nexport const version = '0.5.6';\n","// This file is autogenerated. It's used to publish ESM to npm.\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\nconst trimLeft = /^\\s+/;\nconst trimRight = /\\s+$/;\n\nfunction tinycolor(color, opts) {\n color = color ? color : \"\";\n opts = opts || {};\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n\n var rgb = inputToRGB(color);\n (this._originalInput = color),\n (this._r = rgb.r),\n (this._g = rgb.g),\n (this._b = rgb.b),\n (this._a = rgb.a),\n (this._roundA = Math.round(100 * this._a) / 100),\n (this._format = opts.format || rgb.format);\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) this._r = Math.round(this._r);\n if (this._g < 1) this._g = Math.round(this._g);\n if (this._b < 1) this._b = Math.round(this._b);\n\n this._ok = rgb.ok;\n}\n\ntinycolor.prototype = {\n isDark: function () {\n return this.getBrightness() < 128;\n },\n isLight: function () {\n return !this.isDark();\n },\n isValid: function () {\n return this._ok;\n },\n getOriginalInput: function () {\n return this._originalInput;\n },\n getFormat: function () {\n return this._format;\n },\n getAlpha: function () {\n return this._a;\n },\n getBrightness: function () {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function () {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r / 255;\n GsRGB = rgb.g / 255;\n BsRGB = rgb.b / 255;\n\n if (RsRGB <= 0.03928) R = RsRGB / 12.92;\n else R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n if (GsRGB <= 0.03928) G = GsRGB / 12.92;\n else G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n if (BsRGB <= 0.03928) B = BsRGB / 12.92;\n else B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n },\n setAlpha: function (value) {\n this._a = boundAlpha(value);\n this._roundA = Math.round(100 * this._a) / 100;\n return this;\n },\n toHsv: function () {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n },\n toHsvString: function () {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = Math.round(hsv.h * 360),\n s = Math.round(hsv.s * 100),\n v = Math.round(hsv.v * 100);\n return this._a == 1\n ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\"\n : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n },\n toHsl: function () {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n },\n toHslString: function () {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = Math.round(hsl.h * 360),\n s = Math.round(hsl.s * 100),\n l = Math.round(hsl.l * 100);\n return this._a == 1\n ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\"\n : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n },\n toHex: function (allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function (allow3Char) {\n return \"#\" + this.toHex(allow3Char);\n },\n toHex8: function (allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function (allow4Char) {\n return \"#\" + this.toHex8(allow4Char);\n },\n toRgb: function () {\n return {\n r: Math.round(this._r),\n g: Math.round(this._g),\n b: Math.round(this._b),\n a: this._a,\n };\n },\n toRgbString: function () {\n return this._a == 1\n ? \"rgb(\" +\n Math.round(this._r) +\n \", \" +\n Math.round(this._g) +\n \", \" +\n Math.round(this._b) +\n \")\"\n : \"rgba(\" +\n Math.round(this._r) +\n \", \" +\n Math.round(this._g) +\n \", \" +\n Math.round(this._b) +\n \", \" +\n this._roundA +\n \")\";\n },\n toPercentageRgb: function () {\n return {\n r: Math.round(bound01(this._r, 255) * 100) + \"%\",\n g: Math.round(bound01(this._g, 255) * 100) + \"%\",\n b: Math.round(bound01(this._b, 255) * 100) + \"%\",\n a: this._a,\n };\n },\n toPercentageRgbString: function () {\n return this._a == 1\n ? \"rgb(\" +\n Math.round(bound01(this._r, 255) * 100) +\n \"%, \" +\n Math.round(bound01(this._g, 255) * 100) +\n \"%, \" +\n Math.round(bound01(this._b, 255) * 100) +\n \"%)\"\n : \"rgba(\" +\n Math.round(bound01(this._r, 255) * 100) +\n \"%, \" +\n Math.round(bound01(this._g, 255) * 100) +\n \"%, \" +\n Math.round(bound01(this._b, 255) * 100) +\n \"%, \" +\n this._roundA +\n \")\";\n },\n toName: function () {\n if (this._a === 0) {\n return \"transparent\";\n }\n\n if (this._a < 1) {\n return false;\n }\n\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function (secondColor) {\n var hex8String = \"#\" + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = \"#\" + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n\n return (\n \"progid:DXImageTransform.Microsoft.gradient(\" +\n gradientType +\n \"startColorstr=\" +\n hex8String +\n \",endColorstr=\" +\n secondHex8String +\n \")\"\n );\n },\n toString: function (format) {\n var formatSet = !!format;\n format = format || this._format;\n\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat =\n !formatSet &&\n hasAlpha &&\n (format === \"hex\" ||\n format === \"hex6\" ||\n format === \"hex3\" ||\n format === \"hex4\" ||\n format === \"hex8\" ||\n format === \"name\");\n\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n\n return formattedString || this.toHexString();\n },\n clone: function () {\n return tinycolor(this.toString());\n },\n\n _applyModification: function (fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function () {\n return this._applyModification(lighten, arguments);\n },\n brighten: function () {\n return this._applyModification(brighten, arguments);\n },\n darken: function () {\n return this._applyModification(darken, arguments);\n },\n desaturate: function () {\n return this._applyModification(desaturate, arguments);\n },\n saturate: function () {\n return this._applyModification(saturate, arguments);\n },\n greyscale: function () {\n return this._applyModification(greyscale, arguments);\n },\n spin: function () {\n return this._applyModification(spin, arguments);\n },\n\n _applyCombination: function (fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function () {\n return this._applyCombination(analogous, arguments);\n },\n complement: function () {\n return this._applyCombination(complement, arguments);\n },\n monochromatic: function () {\n return this._applyCombination(monochromatic, arguments);\n },\n splitcomplement: function () {\n return this._applyCombination(splitcomplement, arguments);\n },\n // Disabled until https://github.com/bgrins/TinyColor/issues/254\n // polyad: function (number) {\n // return this._applyCombination(polyad, [number]);\n // },\n triad: function () {\n return this._applyCombination(polyad, [3]);\n },\n tetrad: function () {\n return this._applyCombination(polyad, [4]);\n },\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function (color, opts) {\n if (typeof color == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n } else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n\n if (typeof color == \"object\") {\n if (\n isValidCSSUnit(color.r) &&\n isValidCSSUnit(color.g) &&\n isValidCSSUnit(color.b)\n ) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n } else if (\n isValidCSSUnit(color.h) &&\n isValidCSSUnit(color.s) &&\n isValidCSSUnit(color.v)\n ) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n } else if (\n isValidCSSUnit(color.h) &&\n isValidCSSUnit(color.s) &&\n isValidCSSUnit(color.l)\n ) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n\n a = boundAlpha(a);\n\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a,\n };\n}\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// \n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// \n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255,\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n l = (max + min) / 2;\n\n if (max == min) {\n h = s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n\n h /= 6;\n }\n\n return { h: h, s: s, l: l };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n v = max;\n\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n\n // Return a 3 character hex if possible\n if (\n allow3Char &&\n hex[0].charAt(0) == hex[0].charAt(1) &&\n hex[1].charAt(0) == hex[1].charAt(1) &&\n hex[2].charAt(0) == hex[2].charAt(1)\n ) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n pad2(convertDecimalToHex(a)),\n ];\n\n // Return a 4 character hex if possible\n if (\n allow4Char &&\n hex[0].charAt(0) == hex[0].charAt(1) &&\n hex[1].charAt(0) == hex[1].charAt(1) &&\n hex[2].charAt(0) == hex[2].charAt(1) &&\n hex[3].charAt(0) == hex[3].charAt(1)\n ) {\n return (\n hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0)\n );\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) return false;\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\n\ntinycolor.random = function () {\n return tinycolor.fromRatio({\n r: Math.random(),\n g: Math.random(),\n b: Math.random(),\n });\n};\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// \n\nfunction desaturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction saturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\n\nfunction lighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\nfunction brighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var rgb = tinycolor(color).toRgb();\n rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n return tinycolor(rgb);\n}\n\nfunction darken(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// \n\nfunction complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\n\nfunction polyad(color, number) {\n if (isNaN(number) || number <= 0) {\n throw new Error(\"Argument to polyad must be a positive number\");\n }\n var hsl = tinycolor(color).toHsl();\n var result = [tinycolor(color)];\n var step = 360 / number;\n for (var i = 1; i < number; i++) {\n result.push(tinycolor({ h: (hsl.h + i * step) % 360, s: hsl.s, l: hsl.l }));\n }\n\n return result;\n}\n\nfunction splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l }),\n ];\n}\n\nfunction analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n\n for (hsl.h = (hsl.h - ((part * results) >> 1) + 720) % 360; --results; ) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\n\nfunction monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h,\n s = hsv.s,\n v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n\n while (results--) {\n ret.push(tinycolor({ h: h, s: s, v: v }));\n v = (v + modification) % 1;\n }\n\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function (color1, color2, amount) {\n amount = amount === 0 ? 0 : amount || 50;\n\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n\n var p = amount / 100;\n\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a,\n };\n\n return tinycolor(rgba);\n};\n\n// Readability Functions\n// ---------------------\n// false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function (color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n\n out = false;\n\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function (baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors;\n level = args.level;\n size = args.size;\n\n for (var i = 0; i < colorList.length; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n\n if (\n tinycolor.isReadable(baseColor, bestColor, {\n level: level,\n size: size,\n }) ||\n !includeFallbackColors\n ) {\n return bestColor;\n } else {\n args.includeFallbackColors = false;\n return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n }\n};\n\n// Big List of Colors\n// ------------------\n// \nvar names = (tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\",\n});\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = (tinycolor.hexNames = flip(names));\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = {};\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) n = \"100%\";\n\n var processPercent = isPercentage(n);\n n = Math.min(max, Math.max(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// \nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf(\".\") != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf(\"%\") != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? \"0\" + c : \"\" + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = n * 100 + \"%\";\n }\n\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\n\nvar matchers = (function () {\n // \n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // \n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 =\n \"[\\\\s|\\\\(]+(\" +\n CSS_UNIT +\n \")[,|\\\\s]+(\" +\n CSS_UNIT +\n \")[,|\\\\s]+(\" +\n CSS_UNIT +\n \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 =\n \"[\\\\s|\\\\(]+(\" +\n CSS_UNIT +\n \")[,|\\\\s]+(\" +\n CSS_UNIT +\n \")[,|\\\\s]+(\" +\n CSS_UNIT +\n \")[,|\\\\s]+(\" +\n CSS_UNIT +\n \")\\\\s*\\\\)?\";\n\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n };\n})();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n color = color.replace(trimLeft, \"\").replace(trimRight, \"\").toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n } else if (color == \"transparent\") {\n return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if ((match = matchers.rgb.exec(color))) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n if ((match = matchers.rgba.exec(color))) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n if ((match = matchers.hsl.exec(color))) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n if ((match = matchers.hsla.exec(color))) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n if ((match = matchers.hsv.exec(color))) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n if ((match = matchers.hsva.exec(color))) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n if ((match = matchers.hex8.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\",\n };\n }\n if ((match = matchers.hex6.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\",\n };\n }\n if ((match = matchers.hex4.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n a: convertHexToDecimal(match[4] + \"\" + match[4]),\n format: named ? \"name\" : \"hex8\",\n };\n }\n if ((match = matchers.hex3.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n format: named ? \"name\" : \"hex\",\n };\n }\n\n return false;\n}\n\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || { level: \"AA\", size: \"small\" };\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return { level: level, size: size };\n}\n\nexport { tinycolor as default };\n","import tinycolor from 'tinycolor2';\n\nvar hueStep = 2; // 色相阶梯\n\nvar saturationStep = 0.16; // 饱和度阶梯,浅色部分\n\nvar saturationStep2 = 0.05; // 饱和度阶梯,深色部分\n\nvar brightnessStep1 = 0.05; // 亮度阶梯,浅色部分\n\nvar brightnessStep2 = 0.15; // 亮度阶梯,深色部分\n\nvar lightColorCount = 5; // 浅色数量,主色上\n\nvar darkColorCount = 4; // 深色数量,主色下\n// 暗色主题颜色映射关系表\n\nvar darkColorMap = [{\n index: 7,\n opacity: 0.15\n}, {\n index: 6,\n opacity: 0.25\n}, {\n index: 5,\n opacity: 0.3\n}, {\n index: 5,\n opacity: 0.45\n}, {\n index: 5,\n opacity: 0.65\n}, {\n index: 5,\n opacity: 0.85\n}, {\n index: 4,\n opacity: 0.9\n}, {\n index: 3,\n opacity: 0.95\n}, {\n index: 2,\n opacity: 0.97\n}, {\n index: 1,\n opacity: 0.98\n}];\n\nfunction getHue(hsv, i, light) {\n var hue; // 根据色相不同,色相转向不同\n\n if (Math.round(hsv.h) >= 60 && Math.round(hsv.h) <= 240) {\n hue = light ? Math.round(hsv.h) - hueStep * i : Math.round(hsv.h) + hueStep * i;\n } else {\n hue = light ? Math.round(hsv.h) + hueStep * i : Math.round(hsv.h) - hueStep * i;\n }\n\n if (hue < 0) {\n hue += 360;\n } else if (hue >= 360) {\n hue -= 360;\n }\n\n return hue;\n}\n\nfunction getSaturation(hsv, i, light) {\n // grey color don't change saturation\n if (hsv.h === 0 && hsv.s === 0) {\n return hsv.s;\n }\n\n var saturation;\n\n if (light) {\n saturation = hsv.s - saturationStep * i;\n } else if (i === darkColorCount) {\n saturation = hsv.s + saturationStep;\n } else {\n saturation = hsv.s + saturationStep2 * i;\n } // 边界值修正\n\n\n if (saturation > 1) {\n saturation = 1;\n } // 第一格的 s 限制在 0.06-0.1 之间\n\n\n if (light && i === lightColorCount && saturation > 0.1) {\n saturation = 0.1;\n }\n\n if (saturation < 0.06) {\n saturation = 0.06;\n }\n\n return Number(saturation.toFixed(2));\n}\n\nfunction getValue(hsv, i, light) {\n var value;\n\n if (light) {\n value = hsv.v + brightnessStep1 * i;\n } else {\n value = hsv.v - brightnessStep2 * i;\n }\n\n if (value > 1) {\n value = 1;\n }\n\n return Number(value.toFixed(2));\n}\n\nfunction generate(color) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var patterns = [];\n var pColor = tinycolor(color);\n\n for (var i = lightColorCount; i > 0; i -= 1) {\n var hsv = pColor.toHsv();\n var colorString = tinycolor({\n h: getHue(hsv, i, true),\n s: getSaturation(hsv, i, true),\n v: getValue(hsv, i, true)\n }).toHexString();\n patterns.push(colorString);\n }\n\n patterns.push(pColor.toHexString());\n\n for (var _i = 1; _i <= darkColorCount; _i += 1) {\n var _hsv = pColor.toHsv();\n\n var _colorString = tinycolor({\n h: getHue(_hsv, _i),\n s: getSaturation(_hsv, _i),\n v: getValue(_hsv, _i)\n }).toHexString();\n\n patterns.push(_colorString);\n } // dark theme patterns\n\n\n if (opts.theme === 'dark') {\n return darkColorMap.map(function (_ref) {\n var index = _ref.index,\n opacity = _ref.opacity;\n var darkColorString = tinycolor.mix(opts.backgroundColor || '#141414', patterns[index], opacity * 100).toHexString();\n return darkColorString;\n });\n }\n\n return patterns;\n}\n\nvar presetPrimaryColors = {\n red: '#F5222D',\n volcano: '#FA541C',\n orange: '#FA8C16',\n gold: '#FAAD14',\n yellow: '#FADB14',\n lime: '#A0D911',\n green: '#52C41A',\n cyan: '#13C2C2',\n blue: '#1890FF',\n geekblue: '#2F54EB',\n purple: '#722ED1',\n magenta: '#EB2F96',\n grey: '#666666'\n};\nvar presetPalettes = {};\nvar presetDarkPalettes = {};\nObject.keys(presetPrimaryColors).forEach(function (key) {\n presetPalettes[key] = generate(presetPrimaryColors[key]);\n presetPalettes[key].primary = presetPalettes[key][5]; // dark presetPalettes\n\n presetDarkPalettes[key] = generate(presetPrimaryColors[key], {\n theme: 'dark',\n backgroundColor: '#141414'\n });\n presetDarkPalettes[key].primary = presetDarkPalettes[key][5];\n});\nvar red = presetPalettes.red;\nvar volcano = presetPalettes.volcano;\nvar gold = presetPalettes.gold;\nvar orange = presetPalettes.orange;\nvar yellow = presetPalettes.yellow;\nvar lime = presetPalettes.lime;\nvar green = presetPalettes.green;\nvar cyan = presetPalettes.cyan;\nvar blue = presetPalettes.blue;\nvar geekblue = presetPalettes.geekblue;\nvar purple = presetPalettes.purple;\nvar magenta = presetPalettes.magenta;\nvar grey = presetPalettes.grey;\n\nexport { blue, cyan, geekblue, generate, gold, green, grey, lime, magenta, orange, presetDarkPalettes, presetPalettes, presetPrimaryColors, purple, red, volcano, yellow };\n","import color from 'color';\nimport { generate } from '@ant-design/colors';\n/**\n * get the mix color of backColor and frontColor with alpah\n * @param backColor background color\n * @param frontColor foreground color\n * @param frontAlpha the opacity of foreground color\n */\nexport var mixColor = function mixColor(backColor, frontColor, frontAlpha) {\n var bc = color(backColor);\n var fc = color(frontColor);\n return color([(1 - frontAlpha) * bc.red() + frontAlpha * fc.red(), (1 - frontAlpha) * bc.green() + frontAlpha * fc.green(), (1 - frontAlpha) * bc.blue() + frontAlpha * fc.blue()]).rgb();\n};\nvar getColorsWithDefaultTheme = function getColorsWithDefaultTheme(subjectColor, backColor, disableColor) {\n if (backColor === void 0) {\n backColor = '#fff';\n }\n if (disableColor === void 0) {\n disableColor = 'rgb(150, 150, 150)';\n }\n var subjectColor005 = mixColor(backColor, subjectColor, 0.05).rgb().toString();\n var subjectColor01 = mixColor(backColor, subjectColor, 0.1).rgb().toString();\n var subjectColor02 = mixColor(backColor, subjectColor, 0.2).rgb().toString();\n var subjectColor04 = mixColor(backColor, subjectColor, 0.4).rgb().toString();\n var disableColor002 = mixColor(backColor, disableColor, 0.02).rgb().toString();\n var disableColor005 = mixColor(backColor, disableColor, 0.05).rgb().toString();\n var disableColor01 = mixColor(backColor, disableColor, 0.1).rgb().toString();\n var disableColor02 = mixColor(backColor, disableColor, 0.2).rgb().toString();\n var disableColor03 = mixColor(backColor, disableColor, 0.3).rgb().toString();\n var paletteFromSubject = generate(subjectColor, {\n theme: 'default',\n backgroundColor: backColor\n });\n var subjectHex = color(subjectColor).hex().toLowerCase();\n var subjectIdx = paletteFromSubject.indexOf(subjectHex);\n var deeperSubject = subjectColor;\n if (subjectIdx !== -1) {\n deeperSubject = paletteFromSubject[subjectIdx + 1];\n }\n return {\n // for nodes\n mainStroke: subjectColor,\n mainFill: subjectColor01,\n activeStroke: subjectColor,\n activeFill: subjectColor005,\n inactiveStroke: subjectColor04,\n inactiveFill: subjectColor005,\n selectedStroke: subjectColor,\n selectedFill: backColor,\n highlightStroke: deeperSubject,\n highlightFill: subjectColor02,\n disableStroke: disableColor03,\n disableFill: disableColor005,\n // for edges\n edgeMainStroke: disableColor03,\n edgeActiveStroke: subjectColor,\n edgeInactiveStroke: disableColor02,\n edgeSelectedStroke: subjectColor,\n edgeHighlightStroke: subjectColor,\n edgeDisableStroke: disableColor01,\n // for combos\n comboMainStroke: disableColor03,\n comboMainFill: disableColor002,\n comboActiveStroke: subjectColor,\n comboActiveFill: subjectColor005,\n comboInactiveStroke: disableColor03,\n comboInactiveFill: disableColor002,\n comboSelectedStroke: subjectColor,\n comboSelectedFill: disableColor002,\n comboHighlightStroke: deeperSubject,\n comboHighlightFill: disableColor002,\n comboDisableStroke: disableColor02,\n comboDisableFill: disableColor005\n };\n};\nvar getColorsWithDarkTheme = function getColorsWithDarkTheme(subjectColor, backColor, disableColor) {\n if (backColor === void 0) {\n backColor = '#fff';\n }\n if (disableColor === void 0) {\n disableColor = '#777';\n }\n var subjectColor02 = mixColor(backColor, subjectColor, 0.2).rgb().toString();\n var subjectColor03 = mixColor(backColor, subjectColor, 0.3).rgb().toString();\n var subjectColor06 = mixColor(backColor, subjectColor, 0.6).rgb().toString();\n var subjectColor08 = mixColor(backColor, subjectColor, 0.8).rgb().toString();\n var disableColor02 = mixColor(backColor, disableColor, 0.2).rgb().toString();\n var disableColor025 = mixColor(backColor, disableColor, 0.25).rgb().toString();\n var disableColor03 = mixColor(backColor, disableColor, 0.3).rgb().toString();\n var disableColor04 = mixColor(backColor, disableColor, 0.4).rgb().toString();\n var disableColor05 = mixColor(backColor, disableColor, 0.5).rgb().toString();\n var paletteFromSubject = generate(subjectColor, {\n theme: 'dark',\n backgroundColor: backColor\n });\n var subjectHex = color(subjectColor).hex().toLowerCase();\n var subjectIdx = paletteFromSubject.indexOf(subjectHex);\n var deeperSubject = subjectColor;\n if (subjectIdx !== -1) {\n deeperSubject = paletteFromSubject[subjectIdx + 1];\n }\n return {\n // for nodes\n mainStroke: subjectColor08,\n mainFill: subjectColor02,\n activeStroke: subjectColor,\n activeFill: subjectColor03,\n inactiveStroke: subjectColor08,\n inactiveFill: subjectColor02,\n selectedStroke: subjectColor,\n selectedFill: subjectColor02,\n highlightStroke: subjectColor,\n highlightFill: subjectColor06,\n disableStroke: disableColor05,\n disableFill: disableColor025,\n // for edges\n edgeMainStroke: disableColor,\n edgeActiveStroke: subjectColor,\n edgeInactiveStroke: disableColor,\n edgeSelectedStroke: subjectColor,\n edgeHighlightStroke: subjectColor,\n edgeDisableStroke: disableColor03,\n // for combos\n comboMainStroke: disableColor04,\n comboMainFill: disableColor025,\n comboActiveStroke: subjectColor,\n comboActiveFill: disableColor02,\n comboInactiveStroke: disableColor04,\n comboInactiveFill: disableColor025,\n comboSelectedStroke: subjectColor,\n comboSelectedFill: disableColor02,\n comboHighlightStroke: deeperSubject,\n comboHighlightFill: disableColor025,\n comboDisableStroke: disableColor04,\n comboDisableFill: disableColor02\n };\n};\n/**\n * get the set of colors according to the subject color and background color\n * @param subjectColor the subject color\n * @param backColor background color\n * @param disableColor the color for disable state\n */\nexport var getColorsWithSubjectColor = function getColorsWithSubjectColor(subjectColor, backColor, theme, disableColor) {\n if (backColor === void 0) {\n backColor = '#fff';\n }\n if (theme === void 0) {\n theme = 'default';\n }\n if (disableColor === void 0) {\n disableColor = 'rgb(150, 150, 150)';\n }\n if (theme === 'default') return getColorsWithDefaultTheme(subjectColor, backColor, 'rgb(150, 150, 150)');\n return getColorsWithDarkTheme(subjectColor, backColor, '#777');\n};\nexport var getColorSetsBySubjectColors = function getColorSetsBySubjectColors(subjectColors, backColor, theme, disableColor) {\n if (backColor === void 0) {\n backColor = '#fff';\n }\n if (theme === void 0) {\n theme = 'default';\n }\n if (disableColor === void 0) {\n disableColor = 'rgb(150, 150, 150)';\n }\n var sets = [];\n subjectColors.forEach(function (sColor) {\n sets.push(getColorsWithSubjectColor(sColor, backColor, theme, disableColor));\n });\n return sets;\n};","import { getColorsWithSubjectColor } from './util/color';\nvar subjectColor = 'rgb(95, 149, 255)';\nvar backColor = 'rgb(255, 255, 255)';\nvar textColor = 'rgb(0, 0, 0)';\nvar colorSet = getColorsWithSubjectColor(subjectColor, backColor);\nexport default {\n version: '0.8.3',\n rootContainerClassName: 'root-container',\n nodeContainerClassName: 'node-container',\n edgeContainerClassName: 'edge-container',\n comboContainerClassName: 'combo-container',\n delegateContainerClassName: 'delegate-container',\n defaultLoopPosition: 'top',\n nodeLabel: {\n style: {\n fill: '#000',\n fontSize: 12,\n textAlign: 'center',\n textBaseline: 'middle'\n },\n offset: 4 // 节点的默认文本不居中时的偏移量\n },\n\n defaultNode: {\n type: 'circle',\n style: {\n lineWidth: 1,\n stroke: colorSet.mainStroke,\n fill: colorSet.mainFill\n },\n size: 20,\n color: colorSet.mainStroke,\n linkPoints: {\n size: 8,\n lineWidth: 1,\n fill: colorSet.activeFill,\n stroke: colorSet.activeStroke\n }\n },\n // 节点应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n nodeStateStyles: {\n active: {\n fill: colorSet.activeFill,\n stroke: colorSet.activeStroke,\n lineWidth: 2,\n shadowColor: colorSet.mainStroke,\n shadowBlur: 10\n },\n selected: {\n fill: colorSet.selectedFill,\n stroke: colorSet.selectedStroke,\n lineWidth: 4,\n shadowColor: colorSet.selectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n fill: colorSet.highlightFill,\n stroke: colorSet.highlightStroke,\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n fill: colorSet.inactiveFill,\n stroke: colorSet.inactiveStroke,\n lineWidth: 1\n },\n disable: {\n fill: colorSet.disableFill,\n stroke: colorSet.disableStroke,\n lineWidth: 1\n }\n },\n edgeLabel: {\n style: {\n fill: textColor,\n textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 12\n }\n },\n defaultEdge: {\n type: 'line',\n size: 1,\n style: {\n stroke: colorSet.edgeMainStroke,\n lineAppendWidth: 2\n },\n color: colorSet.edgeMainStroke\n },\n // 边应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n edgeStateStyles: {\n active: {\n stroke: colorSet.edgeActiveStroke,\n lineWidth: 1\n },\n selected: {\n stroke: colorSet.edgeSelectedStroke,\n lineWidth: 2,\n shadowColor: colorSet.edgeSelectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n stroke: colorSet.edgeHighlightStroke,\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n stroke: colorSet.edgeInactiveStroke,\n lineWidth: 1\n },\n disable: {\n stroke: colorSet.edgeDisableStroke,\n lineWidth: 1\n }\n },\n comboLabel: {\n style: {\n fill: textColor,\n // textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 12\n },\n refY: 10,\n refX: 10 // Combo 的默认文本不居中时的偏移量\n },\n\n defaultCombo: {\n type: 'circle',\n style: {\n fill: colorSet.comboMainFill,\n lineWidth: 1,\n stroke: colorSet.comboMainStroke,\n r: 5,\n width: 20,\n height: 10\n },\n size: [20, 5],\n color: colorSet.comboMainStroke,\n padding: [25, 20, 15, 20]\n },\n // combo 应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n comboStateStyles: {\n active: {\n stroke: colorSet.comboActiveStroke,\n lineWidth: 1,\n fill: colorSet.comboActiveFill\n },\n selected: {\n stroke: colorSet.comboSelectedStroke,\n lineWidth: 2,\n fill: colorSet.comboSelectedFill,\n shadowColor: colorSet.comboSelectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n stroke: colorSet.comboHighlightStroke,\n lineWidth: 2,\n fill: colorSet.comboHighlightFill,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n stroke: colorSet.comboInactiveStroke,\n fill: colorSet.comboInactiveFill,\n lineWidth: 1\n },\n disable: {\n stroke: colorSet.comboDisableStroke,\n fill: colorSet.comboDisableFill,\n lineWidth: 1\n }\n },\n delegateStyle: {\n fill: '#F3F9FF',\n fillOpacity: 0.5,\n stroke: '#1890FF',\n strokeOpacity: 0.9,\n lineDash: [5, 5]\n },\n // 文本水印默认配置\n textWaterMarkerConfig: {\n width: 150,\n height: 100,\n compatible: false,\n text: {\n x: 0,\n y: 60,\n lineHeight: 20,\n rotate: 20,\n fontSize: 14,\n fontFamily: 'Microsoft YaHei',\n fill: 'rgba(0, 0, 0, 0.1)',\n baseline: 'Middle'\n }\n },\n imageWaterMarkerConfig: {\n width: 150,\n height: 130,\n compatible: false,\n image: {\n x: 0,\n y: 0,\n width: 30,\n height: 20,\n rotate: 0\n }\n },\n waterMarkerImage: 'https://gw.alipayobjects.com/os/s/prod/antv/assets/image/logo-with-text-73b8a.svg'\n};","export default function addEventListener(target: HTMLElement, eventType: string, callback: any) {\n if (target) {\n if (typeof target.addEventListener === 'function') {\n target.addEventListener(eventType, callback, false);\n return {\n remove() {\n target.removeEventListener(eventType, callback, false);\n },\n };\n // @ts-ignore\n } if (typeof target.attachEvent === 'function') {\n // @ts-ignore\n target.attachEvent('on' + eventType, callback);\n return {\n remove() {\n // @ts-ignore\n target.detachEvent('on' + eventType, callback);\n },\n };\n }\n }\n}\n","import { __extends } from \"tslib\";\nimport { addEventListener } from '@antv/dom-util';\nimport { each, isNil, wrapBehavior } from '@antv/util';\nimport { AbstractEvent, Util } from '@antv/g6-core';\nvar cloneEvent = Util.cloneEvent,\n isViewportChanged = Util.isViewportChanged;\nvar EventController = /** @class */function (_super) {\n __extends(EventController, _super);\n function EventController(graph) {\n var _this = _super.call(this, graph) || this;\n _this.extendEvents = [];\n _this.dragging = false;\n _this.mousedown = false;\n _this.preItem = null;\n _this.destroy();\n _this.graph = graph;\n _this.destroyed = false;\n _this.initEvents();\n return _this;\n }\n // 初始化 G6 中的事件\n EventController.prototype.initEvents = function () {\n var _a = this,\n graph = _a.graph,\n _b = _a.extendEvents,\n extendEvents = _b === void 0 ? [] : _b;\n var canvas = graph.get('canvas');\n // canvas.set('draggable', true);\n var el = canvas.get('el');\n var canvasHandler = wrapBehavior(this, 'onCanvasEvents');\n var originHandler = wrapBehavior(this, 'onExtendEvents');\n var wheelHandler = wrapBehavior(this, 'onWheelEvent');\n // each(EVENTS, event => {\n // canvas.off(event).on(event, canvasHandler);\n // });\n canvas.off('*').on('*', canvasHandler);\n this.canvasHandler = canvasHandler;\n extendEvents.push(addEventListener(el, 'wheel', wheelHandler));\n if (typeof window !== 'undefined') {\n extendEvents.push(addEventListener(window, 'keydown', originHandler));\n extendEvents.push(addEventListener(window, 'keyup', originHandler));\n extendEvents.push(addEventListener(window, 'focus', originHandler));\n }\n // 数据变更,重置一些状态\n if (this.resetHandler) graph.off('afterchangedata', this.resetHandler);\n this.resetHandler = wrapBehavior(this, 'resetStatus');\n graph.on('afterchangedata', this.resetHandler);\n };\n // 获取 shape 的 item 对象\n EventController.getItemRoot = function (shape) {\n while (shape && !shape.get('item')) {\n shape = shape.get('parent');\n }\n return shape;\n };\n /**\n * 处理 canvas 事件\n * @param evt 事件句柄\n */\n EventController.prototype.onCanvasEvents = function (evt) {\n var _this = this;\n var graph = this.graph;\n var canvas = graph.get('canvas');\n var target = evt.target;\n var eventType = evt.type;\n switch (eventType) {\n // solve G's problem: mousemove and mosueup are not triggered with drag and dragend\n case 'drag':\n this.onCanvasEvents(Object.assign({}, evt, {\n type: 'mousemove'\n }));\n break;\n case 'dragend':\n this.onCanvasEvents(Object.assign({}, evt, {\n type: 'mouseup'\n }));\n break;\n // solve G's problem: mousedown on other DOMs, mouseup on canvas, click event is triggered unexpectly\n case 'mousedown':\n this.mousedown = true;\n break;\n case 'dragend':\n case 'mouseup':\n // mouseup happend before click, so setTimeout to reset the tag for reference in click event\n setTimeout(function () {\n return _this.mousedown = false;\n });\n break;\n case 'click':\n // the mousedown is not happend, the click is invalid\n if (!this.mousedown) return;\n break;\n default:\n break;\n }\n /**\n * (clientX, clientY): 相对于页面的坐标;\n * (canvasX, canvasY): 相对于 左上角的坐标;\n * (x, y): 相对于整个画布的坐标, 与 model 的 x, y 是同一维度的。\n */\n evt.canvasX = evt.x;\n evt.canvasY = evt.y;\n var point = {\n x: evt.canvasX,\n y: evt.canvasY\n };\n var group = graph.get('group');\n var matrix = group.getMatrix();\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n if (isViewportChanged(matrix)) {\n point = graph.getPointByClient(evt.clientX, evt.clientY);\n }\n evt.x = point.x;\n evt.y = point.y;\n evt.currentTarget = graph;\n if (target === canvas) {\n if (eventType === 'mousemove' || eventType === 'mouseleave') {\n this.handleMouseMove(evt, 'canvas');\n }\n evt.target = canvas;\n evt.item = null;\n graph.emit(eventType, evt);\n graph.emit(\"canvas:\".concat(eventType), evt);\n return;\n }\n var itemShape = EventController.getItemRoot(target);\n if (!itemShape) {\n graph.emit(eventType, evt);\n return;\n }\n var item = itemShape.get('item');\n if (item.destroyed) {\n return;\n }\n var type = item.getType();\n // 事件target是触发事件的Shape实例,item是触发事件的item实例\n evt.target = target;\n evt.item = item;\n if (evt.canvasX === evt.x && evt.canvasY === evt.y) {\n var canvasPoint = graph.getCanvasByPoint(evt.x, evt.y);\n evt.canvasX = canvasPoint.x;\n evt.canvasY = canvasPoint.y;\n }\n if (evt.name && !evt.name.includes(':')) {\n graph.emit(\"\".concat(type, \":\").concat(eventType), evt); // emit('node:click', evt)\n graph.emit(eventType, evt); // emit('click', evt);\n } else if (evt.name) {\n graph.emit(evt.name, evt); // emit('text-shape:click', evt)\n }\n\n if (eventType === 'dragstart') {\n this.dragging = true;\n }\n if (eventType === 'dragend') {\n this.dragging = false;\n }\n if (eventType === 'mousemove') {\n this.handleMouseMove(evt, type);\n }\n };\n /**\n * 处理扩展事件\n * @param evt 事件句柄\n */\n EventController.prototype.onExtendEvents = function (evt) {\n this.graph.emit(evt.type, evt);\n };\n /**\n * 处理滚轮事件\n * @param evt 事件句柄\n */\n EventController.prototype.onWheelEvent = function (evt) {\n if (isNil(evt.wheelDelta)) {\n evt.wheelDelta = -evt.detail;\n }\n this.graph.emit('wheel', evt);\n };\n /**\n * 处理鼠标移动的事件\n * @param evt 事件句柄\n * @param type item 类型\n */\n EventController.prototype.handleMouseMove = function (evt, type) {\n var _a = this,\n graph = _a.graph,\n preItem = _a.preItem;\n var canvas = graph.get('canvas');\n var item = evt.target === canvas ? null : evt.item;\n evt = cloneEvent(evt);\n // 从前一个item直接移动到当前item,触发前一个item的leave事件\n if (preItem && preItem !== item && !preItem.destroyed) {\n evt.item = preItem;\n this.emitCustomEvent(preItem.getType(), 'mouseleave', evt);\n if (this.dragging) {\n this.emitCustomEvent(preItem.getType(), 'dragleave', evt);\n }\n }\n // 从一个item或canvas移动到当前item,触发当前item的enter事件\n if (item && preItem !== item) {\n evt.item = item;\n this.emitCustomEvent(type, 'mouseenter', evt);\n if (this.dragging) {\n this.emitCustomEvent(type, 'dragenter', evt);\n }\n }\n this.preItem = item;\n };\n /**\n * 在 graph 上面 emit 事件\n * @param itemType item 类型\n * @param eventType 事件类型\n * @param evt 事件句柄\n */\n EventController.prototype.emitCustomEvent = function (itemType, eventType, evt) {\n evt.type = eventType;\n this.graph.emit(\"\".concat(itemType, \":\").concat(eventType), evt);\n };\n EventController.prototype.resetStatus = function () {\n this.mousedown = false;\n this.dragging = false;\n this.preItem = null;\n };\n EventController.prototype.destroy = function () {\n var _a = this,\n graph = _a.graph,\n canvasHandler = _a.canvasHandler,\n extendEvents = _a.extendEvents;\n var canvas = graph.get('canvas');\n // each(EVENTS, event => {\n // canvas.off(event, canvasHandler);\n // });\n canvas.off('*', canvasHandler);\n each(extendEvents, function (event) {\n event.remove();\n });\n this.resetStatus();\n this.extendEvents.length = 0;\n this.canvasHandler = null;\n this.resetHandler = null;\n this.destroyed = true;\n };\n return EventController;\n}(AbstractEvent);\nexport default EventController;","import { Util } from '@antv/g6-core';\nimport { isNumber } from '@antv/util';\nvar traverseTree = Util.traverseTree;\n/**\n * 将 number | Function 类型的参数转换为 return number 的 Function\n * @param {number | Function} value 需要被转换的值\n * @param {number} defaultV 返回函数的默认返回值\n * @return {Function} 转换后的函数\n */\nexport var proccessToFunc = function proccessToFunc(value, defaultV) {\n var func;\n if (!value) {\n func = function func(d) {\n return defaultV || 1;\n };\n } else if (isNumber(value)) {\n func = function func(d) {\n return value;\n };\n } else {\n func = value;\n }\n return func;\n};\n/**\n * 将节点和边数据转换为 GPU 可读的数组。并返回 maxEdgePerVetex,每个节点上最多的边数\n * @param {NodeConfig[]} nodes 需要被转换的值\n * @param {EdgeConfig[]} edges 返回函数的默认返回值\n * @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象\n */\nexport var buildTextureData = function buildTextureData(nodes, edges) {\n var dataArray = [];\n var nodeDict = [];\n var mapIdPos = {};\n var i = 0;\n for (i = 0; i < nodes.length; i++) {\n var n = nodes[i];\n mapIdPos[n.id] = i;\n dataArray.push(n.x);\n dataArray.push(n.y);\n dataArray.push(0);\n dataArray.push(0);\n nodeDict.push([]);\n }\n for (i = 0; i < edges.length; i++) {\n var e = edges[i];\n nodeDict[mapIdPos[e.source]].push(mapIdPos[e.target]);\n nodeDict[mapIdPos[e.target]].push(mapIdPos[e.source]);\n }\n var maxEdgePerVetex = 0;\n for (i = 0; i < nodes.length; i++) {\n var offset = dataArray.length;\n var dests = nodeDict[i];\n var len = dests.length;\n dataArray[i * 4 + 2] = offset;\n dataArray[i * 4 + 3] = dests.length;\n maxEdgePerVetex = Math.max(maxEdgePerVetex, dests.length);\n for (var j = 0; j < len; ++j) {\n var dest = dests[j];\n dataArray.push(+dest);\n }\n }\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n return {\n array: new Float32Array(dataArray),\n maxEdgePerVetex: maxEdgePerVetex\n };\n};\n/**\n * 将节点和边数据转换为 GPU 可读的数组,每条边带有一个属性。并返回 maxEdgePerVetex,每个节点上最多的边数\n * @param {NodeConfig[]} nodes 节点数组\n * @param {EdgeConfig[]} edges 边数组\n * @param {Function} attrs 读取边属性的函数\n * @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象\n */\nexport var buildTextureDataWithOneEdgeAttr = function buildTextureDataWithOneEdgeAttr(nodes, edges, attrs) {\n var dataArray = [];\n var nodeDict = [];\n var mapIdPos = {};\n var i = 0;\n for (i = 0; i < nodes.length; i++) {\n var n = nodes[i];\n mapIdPos[n.id] = i;\n dataArray.push(n.x);\n dataArray.push(n.y);\n dataArray.push(0);\n dataArray.push(0);\n nodeDict.push([]);\n }\n for (i = 0; i < edges.length; i++) {\n var e = edges[i];\n nodeDict[mapIdPos[e.source]].push(mapIdPos[e.target]);\n nodeDict[mapIdPos[e.source]].push(attrs(e)); // 理想边长,后续可以改成每条边不同\n nodeDict[mapIdPos[e.target]].push(mapIdPos[e.source]);\n nodeDict[mapIdPos[e.target]].push(attrs(e)); // 理想边长,后续可以改成每条边不同\n }\n\n var maxEdgePerVetex = 0;\n for (i = 0; i < nodes.length; i++) {\n var offset = dataArray.length;\n var dests = nodeDict[i]; // dest 中节点 id 与边长间隔存储,即一位节点 id,一位边长……\n var len = dests.length;\n dataArray[i * 4 + 2] = offset;\n dataArray[i * 4 + 3] = len / 2; // 第四位存储与该节点相关的所有节点个数\n maxEdgePerVetex = Math.max(maxEdgePerVetex, len / 2);\n for (var j = 0; j < len; ++j) {\n var dest = dests[j];\n dataArray.push(+dest);\n }\n }\n // 不是 4 的倍数,填充 0\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n return {\n array: new Float32Array(dataArray),\n maxEdgePerVetex: maxEdgePerVetex\n };\n};\n/**\n * 将节点和边数据转换为 GPU 可读的数组,每条边带有一个以上属性。并返回 maxEdgePerVetex,每个节点上最多的边数\n * @param {NodeConfig[]} nodes 节点数组\n * @param {EdgeConfig[]} edges 边数组\n * @param {Function} attrs 读取边属性的函数\n * @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象\n */\nexport var buildTextureDataWithTwoEdgeAttr = function buildTextureDataWithTwoEdgeAttr(nodes, edges, attrs1, attrs2) {\n var dataArray = [];\n var nodeDict = [];\n var mapIdPos = {};\n var i = 0;\n for (i = 0; i < nodes.length; i++) {\n var n = nodes[i];\n mapIdPos[n.id] = i;\n dataArray.push(n.x);\n dataArray.push(n.y);\n dataArray.push(0);\n dataArray.push(0);\n nodeDict.push([]);\n }\n for (i = 0; i < edges.length; i++) {\n var e = edges[i];\n nodeDict[mapIdPos[e.source]].push(mapIdPos[e.target]);\n nodeDict[mapIdPos[e.source]].push(attrs1(e));\n nodeDict[mapIdPos[e.source]].push(attrs2(e));\n nodeDict[mapIdPos[e.source]].push(0);\n nodeDict[mapIdPos[e.target]].push(mapIdPos[e.source]);\n nodeDict[mapIdPos[e.target]].push(attrs1(e));\n nodeDict[mapIdPos[e.target]].push(attrs2(e));\n nodeDict[mapIdPos[e.target]].push(0);\n }\n var maxEdgePerVetex = 0;\n for (i = 0; i < nodes.length; i++) {\n var offset = dataArray.length;\n var dests = nodeDict[i]; // dest 中节点 id 与边长间隔存储,即一位节点 id,一位边长……\n var len = dests.length;\n // dataArray[i * 4 + 2] = offset;\n // dataArray[i * 4 + 3] = len / 4; // 第四位存储与该节点相关的所有节点个数\n // pack offset & length into float32: offset 20bit, length 12bit\n dataArray[i * 4 + 2] = offset + 1048576 * len / 4;\n dataArray[i * 4 + 3] = 0; // 第四位存储与上一次的距离差值\n maxEdgePerVetex = Math.max(maxEdgePerVetex, len / 4);\n for (var j = 0; j < len; ++j) {\n var dest = dests[j];\n dataArray.push(+dest);\n }\n }\n // 不是 4 的倍数,填充 0\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n return {\n array: new Float32Array(dataArray),\n maxEdgePerVetex: maxEdgePerVetex\n };\n};\n/**\n * transform the extended attributes of nodes or edges to a texture array\n * @param {string[]} attributeNames attributes' name to be read from items and put into output array\n * @param {ModelConfig[]} items the items to be read\n * @return {Float32Array} the attributes' value array to be read by GPU\n */\nexport var attributesToTextureData = function attributesToTextureData(attributeNames, items) {\n var dataArray = [];\n var attributeNum = attributeNames.length;\n var attributteStringMap = {};\n items.forEach(function (item) {\n attributeNames.forEach(function (name, i) {\n if (attributteStringMap[item[name]] === undefined) {\n attributteStringMap[item[name]] = Object.keys(attributteStringMap).length;\n }\n dataArray.push(attributteStringMap[item[name]]);\n // insure each node's attributes take inter number of grids\n if (i === attributeNum - 1) {\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n }\n });\n });\n return {\n array: new Float32Array(dataArray),\n count: Object.keys(attributteStringMap).length\n };\n};\n/**\n * transform the number array format of extended attributes of nodes or edges to a texture array\n * @param {string[]} attributeNames attributes' name to be read from items and put into output array\n * @return {Float32Array} the attributes' value array to be read by GPU\n */\nexport var arrayToTextureData = function arrayToTextureData(valueArrays) {\n var dataArray = [];\n var attributeNum = valueArrays.length;\n var itemNum = valueArrays[0].length;\n var _loop_1 = function _loop_1(j) {\n valueArrays.forEach(function (valueArray, i) {\n dataArray.push(valueArray[j]);\n // insure each node's attributes take inter number of grids\n if (i === attributeNum - 1) {\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n }\n });\n };\n for (var j = 0; j < itemNum; j++) {\n _loop_1(j);\n }\n return new Float32Array(dataArray);\n};\n/**\n *\n * @param data Tree graph data\n * @param layout\n */\nexport var radialLayout = function radialLayout(data, layout) {\n // 布局方式有 H / V / LR / RL / TB / BT\n var VERTICAL_LAYOUTS = ['V', 'TB', 'BT'];\n var min = {\n x: Infinity,\n y: Infinity\n };\n var max = {\n x: -Infinity,\n y: -Infinity\n };\n // 默认布局是垂直布局TB,此时x对应rad,y对应r\n var rScale = 'x';\n var radScale = 'y';\n if (layout && VERTICAL_LAYOUTS.indexOf(layout) >= 0) {\n // 若是水平布局,y对应rad,x对应r\n radScale = 'x';\n rScale = 'y';\n }\n var count = 0;\n traverseTree(data, function (node) {\n count++;\n if (node.x > max.x) {\n max.x = node.x;\n }\n if (node.x < min.x) {\n min.x = node.x;\n }\n if (node.y > max.y) {\n max.y = node.y;\n }\n if (node.y < min.y) {\n min.y = node.y;\n }\n return true;\n });\n var avgRad = Math.PI * 2 / count;\n var radDiff = max[radScale] - min[radScale];\n if (radDiff === 0) {\n return data;\n }\n traverseTree(data, function (node) {\n var radial = (node[radScale] - min[radScale]) / radDiff * (Math.PI * 2 - avgRad) + avgRad;\n var r = Math.abs(rScale === 'x' ? node.x - data.x : node.y - data.y);\n node.x = r * Math.cos(radial);\n node.y = r * Math.sin(radial);\n return true;\n });\n return data;\n};","/**\n * 调用 gpuDetector.webgl 判断当前浏览器是否支持 webgl。(支持 gpgpu 的浏览器一定也支持 webgl)\n */\nexport var gpuDetector = function gpuDetector() {\n if (typeof window === 'undefined' || typeof document === 'undefined') return {};\n return {\n canvas: !!window.CanvasRenderingContext2D,\n webgl: function () {\n try {\n var canvas = document.createElement('canvas');\n return !!(window.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl')));\n } catch (e) {\n return false;\n }\n }(),\n workers: !!window.Worker,\n fileapi: window.File && window.FileReader && window.FileList && window.Blob,\n getWebGLErrorMessage: function getWebGLErrorMessage() {\n var element = document.createElement('div');\n element.id = 'webgl-error-message';\n element.style.fontFamily = 'monospace';\n element.style.fontSize = '13px';\n element.style.fontWeight = 'normal';\n element.style.textAlign = 'center';\n element.style.background = '#fff';\n element.style.color = '#000';\n element.style.padding = '1.5em';\n element.style.width = '400px';\n element.style.margin = '5em auto 0';\n if (!this.webgl) {\n element.innerHTML = window.WebGLRenderingContext ? ['Your graphics card does not seem to support WebGL.
', 'Find out how to get it here.'].join('\\n') : ['Your browser does not seem to support WebGL.
', 'Find out how to get it here.'].join('\\n');\n }\n return element;\n },\n addGetWebGLMessage: function addGetWebGLMessage(parameters) {\n parameters = parameters || {};\n var parent = parameters.parent !== undefined ? parameters.parent : document.body;\n var id = parameters.id !== undefined ? parameters.id : 'oldie';\n var element = gpuDetector().getWebGLErrorMessage();\n element.id = id;\n parent.appendChild(element);\n }\n };\n};","import { __assign } from \"tslib\";\nimport * as ColorUtil from './color';\nimport * as LayoutUtil from './layout';\nimport * as GpuUtil from './gpu';\nimport { Util } from '@antv/g6-core';\nvar G6Util = __assign(__assign(__assign(__assign({}, Util), ColorUtil), LayoutUtil), GpuUtil);\nexport default G6Util;","import Hierarchy from '@antv/hierarchy';\nimport Util from '../util';\nvar radialLayout = Util.radialLayout;\nvar TreeLayout = /** @class */function () {\n function TreeLayout(cfg) {\n this.type = cfg.type;\n this.radial = cfg.radial;\n this.config = cfg;\n }\n TreeLayout.prototype.init = function (data) {\n var _this = this;\n this.data = data;\n if (this.radial) {\n this.layoutMethod = function (data) {\n var layoutData = Hierarchy[_this.type](data, _this.config);\n radialLayout(layoutData);\n return layoutData;\n };\n return;\n }\n this.layoutMethod = function (data) {\n return Hierarchy[_this.type](data, _this.config);\n };\n };\n TreeLayout.prototype.execute = function () {\n return this.layoutMethod(this.data, this.config);\n };\n TreeLayout.prototype.layout = function (data) {\n this.init(data);\n return this.execute();\n };\n return TreeLayout;\n}();\nexport default TreeLayout;","import { Layouts as Layout, registerLayout as oRegisterLayout, GridLayout, RandomLayout, ForceLayout, CircularLayout, DagreLayout, DagreCompoundLayout, RadialLayout, ConcentricLayout, MDSLayout, FruchtermanGPULayout, FruchtermanLayout, GForceLayout, Force2Layout, GForceGPULayout, ComboForceLayout, ComboCombinedLayout, ForceAtlas2Layout } from '@antv/layout/lib';\nimport TreeLayout from './tree-layout';\noRegisterLayout('grid', GridLayout);\noRegisterLayout('random', RandomLayout);\noRegisterLayout('force', ForceLayout);\noRegisterLayout('circular', CircularLayout);\noRegisterLayout('dagre', DagreLayout);\noRegisterLayout('dagreCompound', DagreCompoundLayout);\noRegisterLayout('radial', RadialLayout);\noRegisterLayout('concentric', ConcentricLayout);\noRegisterLayout('mds', MDSLayout);\noRegisterLayout('fruchterman', FruchtermanLayout);\noRegisterLayout('fruchterman-gpu', FruchtermanGPULayout);\noRegisterLayout('gForce', GForceLayout);\noRegisterLayout('force2', Force2Layout);\noRegisterLayout('gForce-gpu', GForceGPULayout);\noRegisterLayout('comboForce', ComboForceLayout);\noRegisterLayout('comboCombined', ComboCombinedLayout);\noRegisterLayout('forceAtlas2', ForceAtlas2Layout);\nvar registerLayout = function registerLayout(name, layoutOverride) {\n layoutOverride.isCustomLayout = true;\n Layout[name] = oRegisterLayout(name, layoutOverride);\n};\nexport { TreeLayout, Layout, registerLayout };","var WebWorker = /** @class */function () {\n function WebWorker(worker, workerScirptURL) {\n var code = worker.toString();\n var blob = new Blob([\"importScripts('\".concat(workerScirptURL, \"');(\").concat(code, \")()\")], {\n type: 'text/javascript'\n });\n return new Worker(URL.createObjectURL(blob));\n }\n return WebWorker;\n}();\nexport default WebWorker;","import WebWorker from './work';\nexport var LayoutWorker = function LayoutWorker(workerScriptURL) {\n if (workerScriptURL === void 0) {\n workerScriptURL = 'https://unpkg.com/@antv/layout@latest/dist/layout.min.js';\n }\n function workerCode() {\n var LAYOUT_MESSAGE = {\n // run layout\n RUN: 'LAYOUT_RUN',\n // layout ended with success\n END: 'LAYOUT_END',\n // layout error\n ERROR: 'LAYOUT_ERROR',\n // layout tick, used in force directed layout\n TICK: 'LAYOUT_TICK',\n GPURUN: 'GPU_LAYOUT_RUN',\n GPUEND: 'GPU_LAYOUT_END'\n };\n // @ts-ignore\n layout.registerLayout('grid', layout.GridLayout);\n // @ts-ignore\n layout.registerLayout('random', layout.RandomLayout);\n // @ts-ignore\n layout.registerLayout('force', layout.ForceLayout);\n // @ts-ignore\n layout.registerLayout('circular', layout.CircularLayout);\n // @ts-ignore\n layout.registerLayout('dagre', layout.DagreLayout);\n // @ts-ignore\n layout.registerLayout('dagreCompound', layout.DagreCompoundLayout);\n // @ts-ignore\n layout.registerLayout('radial', layout.RadialLayout);\n // @ts-ignore\n layout.registerLayout('concentric', layout.ConcentricLayout);\n // @ts-ignore\n layout.registerLayout('mds', layout.MDSLayout);\n // @ts-ignore\n layout.registerLayout('fruchterman', layout.FruchtermanLayout);\n // @ts-ignore\n layout.registerLayout('fruchterman-gpu', layout.FruchtermanGPULayout);\n // @ts-ignore\n layout.registerLayout('gForce', layout.GForceLayout);\n // @ts-ignore\n layout.registerLayout('gForce-gpu', layout.GForceGPULayout);\n // @ts-ignore\n layout.registerLayout('comboForce', layout.ComboForceLayout);\n // @ts-ignore\n layout.registerLayout('comboCombined', layout.ComboCombinedLayout);\n // @ts-ignore\n layout.registerLayout('forceAtlas2', layout.ForceAtlas2Layout);\n function isLayoutMessage(event) {\n var type = event.data.type;\n return type === LAYOUT_MESSAGE.RUN || type === LAYOUT_MESSAGE.GPURUN;\n }\n function handleLayoutMessage(event) {\n var _this = this;\n var type = event.data.type;\n switch (type) {\n case LAYOUT_MESSAGE.RUN:\n {\n var _a = event.data,\n nodes_1 = _a.nodes,\n edges = _a.edges,\n _b = _a.layoutCfg,\n layoutCfg = _b === void 0 ? {} : _b;\n var layoutType = layoutCfg.type;\n // @ts-ignore\n var LayoutClass = layout.getLayoutByName(layoutType);\n if (!LayoutClass) {\n this.postMessage({\n type: LAYOUT_MESSAGE.ERROR,\n message: \"layout \".concat(layoutType, \" not found\")\n });\n break;\n }\n // eslint-disable-next-line prefer-const\n var layoutMethod_1;\n layoutCfg.onLayoutEnd = function () {\n _this.postMessage({\n type: LAYOUT_MESSAGE.END,\n nodes: nodes_1\n });\n layoutMethod_1 === null || layoutMethod_1 === void 0 ? void 0 : layoutMethod_1.destroy();\n };\n layoutMethod_1 = new LayoutClass(layoutCfg);\n layoutMethod_1.init({\n nodes: nodes_1,\n edges: edges\n });\n layoutMethod_1.execute();\n break;\n }\n case LAYOUT_MESSAGE.GPURUN:\n {\n var _c = event.data,\n nodes = _c.nodes,\n edges = _c.edges,\n _d = _c.layoutCfg,\n layoutCfg = _d === void 0 ? {} : _d,\n canvas = _c.canvas;\n var layoutType = layoutCfg.type;\n // @ts-ignore\n var LayoutClass = layout.getLayoutByName(layoutType);\n if (!LayoutClass) {\n this.postMessage({\n type: LAYOUT_MESSAGE.ERROR,\n message: \"layout \".concat(layoutType, \" not found\")\n });\n break;\n }\n if (layoutType.split('-')[1] !== 'gpu') {\n this.postMessage({\n type: LAYOUT_MESSAGE.ERROR,\n message: \"layout \".concat(layoutType, \" does not support GPU\")\n });\n break;\n }\n var layoutMethod = new LayoutClass(layoutCfg);\n layoutMethod.init({\n nodes: nodes,\n edges: edges\n });\n layoutMethod.executeWithWorker(canvas, this);\n break;\n }\n default:\n break;\n }\n }\n onmessage = function onmessage(event) {\n if (isLayoutMessage(event)) {\n handleLayoutMessage(event);\n }\n };\n }\n var layoutWorker = new WebWorker(workerCode, workerScriptURL);\n return layoutWorker;\n};","/**\n * @fileoverview constants for layout\n * @author changzhe.zb@antfin.com\n */\n/** layout message type */\nexport var LAYOUT_MESSAGE = {\n // run layout\n RUN: 'LAYOUT_RUN',\n // layout ended with success\n END: 'LAYOUT_END',\n // layout error\n ERROR: 'LAYOUT_ERROR',\n // layout tick, used in force directed layout\n TICK: 'LAYOUT_TICK',\n GPURUN: 'GPU_LAYOUT_RUN',\n GPUEND: 'GPU_LAYOUT_END'\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nimport { __awaiter, __extends, __generator, __rest } from \"tslib\";\nimport { AbstractLayout, Util } from '@antv/g6-core';\nimport { Layout } from '../../layout';\nimport { LayoutWorker } from '../../layout/worker/layout';\nimport { LAYOUT_MESSAGE } from '../../layout/worker/layoutConst';\nimport { gpuDetector } from '../../util/gpu';\nimport { mix, clone } from '@antv/util';\n// eslint-disable-next-line @typescript-eslint/no-implied-eval\nvar mockRaf = function mockRaf(cb) {\n return setTimeout(cb, 16);\n};\nvar mockCaf = function mockCaf(reqId) {\n return clearTimeout(reqId);\n};\nvar helper = {\n // pollyfill\n requestAnimationFrame: function requestAnimationFrame(callback) {\n var fn = typeof window !== 'undefined' ? window.requestAnimationFrame || window.webkitRequestAnimationFrame || mockRaf : mockRaf;\n return fn(callback);\n },\n cancelAnimationFrame: function cancelAnimationFrame(requestId) {\n var fn = typeof window !== 'undefined' ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || mockCaf : mockCaf;\n return fn(requestId);\n }\n};\nvar GPU_LAYOUT_NAMES = ['fruchterman', 'gForce'];\nvar LAYOUT_PIPES_ADJUST_NAMES = ['force', 'grid', 'circular'];\nvar LayoutController = /** @class */function (_super) {\n __extends(LayoutController, _super);\n // the configurations of the layout\n // private layoutCfg: any; // LayoutOptions\n // the type name of the layout\n // private layoutType: string;\n // private data: GraphData;\n // private layoutMethods: typeof Layout;\n function LayoutController(graph) {\n var _this = _super.call(this, graph) || this;\n _this.graph = graph;\n _this.layoutCfg = graph.get('layout') || {};\n _this.layoutType = _this.getLayoutType();\n _this.worker = null;\n _this.workerData = {};\n _this.initLayout();\n return _this;\n }\n // eslint-disable-next-line class-methods-use-this\n LayoutController.prototype.initLayout = function () {\n // no data before rendering\n };\n // get layout worker and create one if not exists\n LayoutController.prototype.getWorker = function () {\n if (this.worker) {\n return this.worker;\n }\n if (typeof Worker === 'undefined') {\n // 如果当前浏览器不支持 web worker,则不使用 web worker\n console.warn('Web worker is not supported in current browser.');\n this.worker = null;\n } else {\n this.worker = LayoutWorker(this.layoutCfg.workerScriptURL);\n }\n return this.worker;\n };\n // stop layout worker\n LayoutController.prototype.stopWorker = function () {\n var workerData = this.workerData;\n if (!this.worker) {\n return;\n }\n this.worker.terminate();\n this.worker = null;\n // 重新开始新的布局之前,先取消之前布局的requestAnimationFrame。\n if (workerData.requestId) {\n helper.cancelAnimationFrame(workerData.requestId);\n workerData.requestId = null;\n }\n if (workerData.requestId2) {\n helper.cancelAnimationFrame(workerData.requestId2);\n workerData.requestId2 = null;\n }\n };\n LayoutController.prototype.execLayoutMethod = function (layoutCfg, order) {\n var _this = this;\n return new Promise(function (reslove, reject) {\n return __awaiter(_this, void 0, void 0, function () {\n var graph, layoutType, onTick_1, animate_1, isDefaultAnimateLayout_1, tick, enableTick, layoutMethod, onTick_2, tick, layoutData;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n graph = this.graph;\n if (!graph || graph.get('destroyed')) return [2 /*return*/];\n layoutType = layoutCfg.type;\n // 每个布局方法都需要注册\n layoutCfg.onLayoutEnd = function () {\n graph.emit('aftersublayout', {\n type: layoutType\n });\n reslove();\n };\n // 若用户指定开启 gpu,且当前浏览器支持 webgl,且该算法存在 GPU 版本(目前仅支持 fruchterman 和 gForce),使用 gpu 版本的布局\n if (layoutType && this.isGPU) {\n if (!this.hasGPUVersion(layoutType)) {\n console.warn(\"The '\".concat(layoutType, \"' layout does not support GPU calculation for now, it will run in CPU.\"));\n } else {\n layoutType = \"\".concat(layoutType, \"-gpu\");\n }\n }\n if (Util.isForce(layoutType)) {\n onTick_1 = layoutCfg.onTick, animate_1 = layoutCfg.animate;\n isDefaultAnimateLayout_1 = animate_1 === undefined && (layoutType === 'force' || layoutType === 'force2');\n tick = function tick() {\n if (onTick_1) {\n onTick_1();\n }\n if (animate_1 || isDefaultAnimateLayout_1) graph.refreshPositions();\n };\n layoutCfg.tick = tick;\n } else if (layoutType === 'comboForce' || layoutType === 'comboCombined') {\n layoutCfg.comboTrees = graph.get('comboTrees');\n }\n enableTick = false;\n try {\n layoutMethod = new Layout[layoutType](layoutCfg);\n if (this.layoutMethods[order]) {\n this.layoutMethods[order].destroy();\n }\n this.layoutMethods[order] = layoutMethod;\n } catch (e) {\n console.warn(\"The layout method: '\".concat(layoutType, \"' does not exist! Please specify it first.\"));\n reject();\n }\n // 是否需要迭代的方式完成布局。这里是来自布局对象的实例属性,是由布局的定义者在布局类定义的。\n enableTick = layoutMethod.enableTick;\n if (enableTick) {\n onTick_2 = layoutCfg.onTick;\n tick = function tick() {\n if (onTick_2) {\n onTick_2();\n }\n graph.refreshPositions();\n };\n layoutMethod.tick = tick;\n }\n layoutData = this.filterLayoutData(this.data, layoutCfg);\n addLayoutOrder(layoutData, order);\n layoutMethod.init(layoutData);\n // 若存在节点没有位置信息,且没有设置 layout,在 initPositions 中 random 给出了所有节点的位置,不需要再次执行 random 布局\n // 所有节点都有位置信息,且指定了 layout,则执行布局(代表不是第一次进行布局)\n graph.emit('beforesublayout', {\n type: layoutType\n });\n return [4 /*yield*/, layoutMethod.execute()];\n case 1:\n _a.sent();\n if (layoutMethod.isCustomLayout && layoutCfg.onLayoutEnd) layoutCfg.onLayoutEnd();\n return [2 /*return*/];\n }\n });\n });\n });\n };\n\n LayoutController.prototype.updateLayoutMethod = function (layoutMethod, layoutCfg) {\n var _this = this;\n return new Promise(function (reslove, reject) {\n return __awaiter(_this, void 0, void 0, function () {\n var graph, layoutType, layoutData;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n graph = this.graph;\n layoutType = layoutCfg === null || layoutCfg === void 0 ? void 0 : layoutCfg.type;\n // 每个布局方法都需要注册\n layoutCfg.onLayoutEnd = function () {\n graph.emit('aftersublayout', {\n type: layoutType\n });\n reslove();\n };\n layoutData = this.filterLayoutData(this.data, layoutCfg);\n layoutMethod.init(layoutData);\n layoutMethod.updateCfg(layoutCfg);\n graph.emit('beforesublayout', {\n type: layoutType\n });\n return [4 /*yield*/, layoutMethod.execute()];\n case 1:\n _a.sent();\n if (layoutMethod.isCustomLayout && layoutCfg.onLayoutEnd) layoutCfg.onLayoutEnd();\n return [2 /*return*/];\n }\n });\n });\n });\n };\n /**\n * @param {function} success callback\n * @return {boolean} 是否使用web worker布局\n */\n LayoutController.prototype.layout = function (success) {\n var _this = this;\n var _a;\n var graph = this.graph;\n if (!graph || graph.get('destroyed')) return;\n this.data = this.setDataFromGraph();\n var _b = this.data,\n nodes = _b.nodes,\n hiddenNodes = _b.hiddenNodes;\n if (!nodes) {\n return false;\n }\n var width = graph.get('width');\n var height = graph.get('height');\n var layoutCfg = {};\n Object.assign(layoutCfg, {\n width: width,\n height: height,\n center: [width / 2, height / 2]\n }, this.layoutCfg);\n this.layoutCfg = layoutCfg;\n var layoutType = layoutCfg.type;\n var prevHasNodes = false;\n (_a = this.layoutMethods) === null || _a === void 0 ? void 0 : _a.forEach(function (method) {\n var _a;\n return prevHasNodes = !!((_a = method.nodes) === null || _a === void 0 ? void 0 : _a.length) || prevHasNodes;\n });\n var preLayoutTypes = this.destoryLayoutMethods();\n graph.emit('beforelayout');\n // 增量情况下(上一次的布局与当前布局一致),上一次有节点,使用 treakInit\n if (prevHasNodes && layoutType && (preLayoutTypes === null || preLayoutTypes === void 0 ? void 0 : preLayoutTypes.length) === 1 && preLayoutTypes[0] === layoutType) {\n this.tweakInit();\n } else {\n // 初始化位置,若配置了 preset,则使用 preset 的参数生成布局作为预布局,否则使用 grid\n this.initPositions(layoutCfg.center, nodes);\n }\n // init hidden nodes\n this.initPositions(layoutCfg.center, hiddenNodes);\n // 防止用户直接用 -gpu 结尾指定布局\n if (layoutType && layoutType.split('-')[1] === 'gpu') {\n layoutType = layoutType.split('-')[0];\n layoutCfg.gpuEnabled = true;\n }\n // 若用户指定开启 gpu,且当前浏览器支持 webgl,且该算法存在 GPU 版本(目前仅支持 fruchterman 和 gForce),使用 gpu 版本的布局\n var enableGPU = false;\n if (layoutCfg.gpuEnabled) {\n enableGPU = true;\n // 打开下面语句将会导致 webworker 报找不到 window\n if (!gpuDetector().webgl) {\n console.warn(\"Your browser does not support webGL or GPGPU. The layout will run in CPU.\");\n enableGPU = false;\n }\n }\n // the layout does not support GPU, will run in CPU\n if (enableGPU && !this.hasGPUVersion(layoutType)) {\n console.warn(\"The '\".concat(layoutType, \"' layout does not support GPU calculation for now, it will run in CPU.\"));\n enableGPU = false;\n }\n this.isGPU = enableGPU;\n // 在 onAllLayoutEnd 中执行用户自定义 onLayoutEnd,触发 afterlayout、更新节点位置、fitView/fitCenter、触发 afterrender\n var onLayoutEnd = layoutCfg.onLayoutEnd,\n layoutEndFormatted = layoutCfg.layoutEndFormatted,\n adjust = layoutCfg.adjust;\n if (!layoutEndFormatted) {\n layoutCfg.layoutEndFormatted = true;\n layoutCfg.onAllLayoutEnd = function () {\n return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // 执行用户自定义 onLayoutEnd\n if (onLayoutEnd) {\n onLayoutEnd(nodes);\n }\n // 更新节点位置\n this.refreshLayout();\n if (!(adjust && layoutCfg.pipes)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.adjustPipesBox(this.data, adjust)];\n case 1:\n _a.sent();\n this.refreshLayout();\n _a.label = 2;\n case 2:\n // 触发 afterlayout\n graph.emit('afterlayout');\n return [2 /*return*/];\n }\n });\n });\n };\n }\n\n this.stopWorker();\n if (layoutCfg.workerEnabled && this.layoutWithWorker(this.data, success)) {\n // 如果启用布局web worker并且浏览器支持web worker,用web worker布局。否则回退到不用web worker布局。\n return true;\n }\n var start = Promise.resolve();\n var hasLayout = false;\n if (layoutCfg.type) {\n hasLayout = true;\n start = start.then(function () {\n return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4 /*yield*/, this.execLayoutMethod(layoutCfg, 0)];\n case 1:\n return [2 /*return*/, _a.sent()];\n }\n });\n });\n });\n } else if (layoutCfg.pipes) {\n hasLayout = true;\n layoutCfg.pipes.forEach(function (cfg, index) {\n start = start.then(function () {\n return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4 /*yield*/, this.execLayoutMethod(cfg, index)];\n case 1:\n return [2 /*return*/, _a.sent()];\n }\n });\n });\n });\n });\n }\n if (hasLayout) {\n // 最后统一在外部调用onAllLayoutEnd\n start.then(function () {\n if (layoutCfg.onAllLayoutEnd) layoutCfg.onAllLayoutEnd();\n // 在执行 execute 后立即执行 success,且在 timeBar 中有 throttle,可以防止 timeBar 监听 afterrender 进行 changeData 后 layout,从而死循环\n // 对于 force 一类布局完成后的 fitView 需要用户自己在 onLayoutEnd 中配置\n if (success) success();\n }).catch(function (error) {\n console.warn('graph layout failed,', error);\n });\n } else {\n // 无布局配置\n graph.refreshPositions();\n success === null || success === void 0 ? void 0 : success();\n }\n return false;\n };\n /**\n * 增量数据初始化位置\n */\n LayoutController.prototype.tweakInit = function () {\n var _a = this,\n data = _a.data,\n graph = _a.graph;\n var nodes = data.nodes,\n edges = data.edges;\n if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length)) return;\n var positionMap = {};\n nodes.forEach(function (node) {\n var x = node.x,\n y = node.y;\n if (!isNaN(x) && !isNaN(y)) {\n positionMap[node.id] = {\n x: x,\n y: y\n };\n // 有位置信息,则是原有节点,增加 mass\n node.mass = node.mass || 2;\n }\n });\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourcePosition = positionMap[source];\n var targetPosition = positionMap[target];\n if (!sourcePosition && targetPosition) {\n positionMap[source] = {\n x: targetPosition.x + (Math.random() - 0.5) * 80,\n y: targetPosition.y + (Math.random() - 0.5) * 80\n };\n } else if (!targetPosition && sourcePosition) {\n positionMap[target] = {\n x: sourcePosition.x + (Math.random() - 0.5) * 80,\n y: sourcePosition.y + (Math.random() - 0.5) * 80\n };\n }\n });\n var width = graph.get('width');\n var height = graph.get('height');\n nodes.forEach(function (node) {\n var position = positionMap[node.id] || {\n x: width / 2 + (Math.random() - 0.5) * 20,\n y: height / 2 + (Math.random() - 0.5) * 20\n };\n node.x = position.x;\n node.y = position.y;\n });\n };\n LayoutController.prototype.initWithPreset = function () {\n var _a = this,\n layoutCfg = _a.layoutCfg,\n data = _a.data;\n var preset = layoutCfg.preset;\n if (!(preset === null || preset === void 0 ? void 0 : preset.type) || !Layout[preset === null || preset === void 0 ? void 0 : preset.type]) return false;\n var presetLayout = new Layout[preset === null || preset === void 0 ? void 0 : preset.type](preset);\n presetLayout.layout(data);\n delete layoutCfg.preset;\n return true;\n };\n /**\n * layout with web worker\n * @param {object} data graph data\n * @return {boolean} 是否支持web worker\n */\n LayoutController.prototype.layoutWithWorker = function (data, success) {\n var _this = this;\n var _a = this,\n layoutCfg = _a.layoutCfg,\n graph = _a.graph;\n var worker = this.getWorker();\n // 每次worker message event handler调用之间的共享数据,会被修改。\n var workerData = this.workerData;\n if (!worker) {\n return false;\n }\n workerData.requestId = null;\n workerData.requestId2 = null;\n workerData.currentTick = null;\n workerData.currentTickData = null;\n graph.emit('beforelayout');\n var start = Promise.resolve();\n var hasLayout = false;\n if (layoutCfg.type) {\n hasLayout = true;\n start = start.then(function () {\n return _this.runWebworker(worker, data, layoutCfg);\n });\n } else if (layoutCfg.pipes) {\n hasLayout = true;\n var _loop_1 = function _loop_1(cfg) {\n start = start.then(function () {\n return _this.runWebworker(worker, data, cfg);\n });\n };\n for (var _i = 0, _b = layoutCfg.pipes; _i < _b.length; _i++) {\n var cfg = _b[_i];\n _loop_1(cfg);\n }\n }\n if (hasLayout) {\n // 最后统一在外部调用onAllLayoutEnd\n start.then(function () {\n if (layoutCfg.onAllLayoutEnd) layoutCfg.onAllLayoutEnd();\n success === null || success === void 0 ? void 0 : success();\n }).catch(function (error) {\n console.error('layout failed', error);\n });\n }\n return true;\n };\n LayoutController.prototype.runWebworker = function (worker, allData, layoutCfg) {\n var _this = this;\n var isGPU = this.isGPU;\n var data = this.filterLayoutData(allData, layoutCfg);\n var nodes = data.nodes,\n edges = data.edges;\n var offScreenCanvas = document.createElement('canvas');\n var gpuWorkerAbility = isGPU && typeof window !== 'undefined' &&\n // eslint-disable-next-line @typescript-eslint/dot-notation\n window.navigator && !navigator[\"gpu\"] &&\n // WebGPU 还不支持 OffscreenCanvas\n 'OffscreenCanvas' in window && 'transferControlToOffscreen' in offScreenCanvas;\n // NOTE: postMessage的message参数里面不能包含函数,否则postMessage会报错,\n // 例如:'function could not be cloned'。\n // 详情参考:https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm\n // 所以这里需要把过滤layoutCfg里的函数字段过滤掉。\n var filteredLayoutCfg = filterObject(layoutCfg, function (value) {\n return typeof value !== 'function';\n });\n if (!gpuWorkerAbility) {\n worker.postMessage({\n type: LAYOUT_MESSAGE.RUN,\n nodes: nodes,\n edges: edges,\n layoutCfg: filteredLayoutCfg\n });\n } else {\n var offscreen = offScreenCanvas.transferControlToOffscreen();\n // filteredLayoutCfg.canvas = offscreen;\n filteredLayoutCfg.type = \"\".concat(filteredLayoutCfg.type, \"-gpu\");\n worker.postMessage({\n type: LAYOUT_MESSAGE.GPURUN,\n nodes: nodes,\n edges: edges,\n layoutCfg: filteredLayoutCfg,\n canvas: offscreen\n }, [offscreen]);\n }\n return new Promise(function (reslove, reject) {\n worker.onmessage = function (event) {\n _this.handleWorkerMessage(reslove, reject, event, data, layoutCfg);\n };\n });\n };\n // success callback will be called when updating graph positions for the first time.\n LayoutController.prototype.handleWorkerMessage = function (reslove, reject, event, data, layoutCfg) {\n var _a = this,\n graph = _a.graph,\n workerData = _a.workerData;\n var eventData = event.data;\n var type = eventData.type;\n var onTick = function onTick() {\n if (layoutCfg.onTick) {\n layoutCfg.onTick();\n }\n };\n switch (type) {\n case LAYOUT_MESSAGE.TICK:\n workerData.currentTick = eventData.currentTick;\n workerData.currentTickData = eventData;\n if (!workerData.requestId) {\n workerData.requestId = helper.requestAnimationFrame(function requestId() {\n updateLayoutPosition(data, eventData);\n graph.refreshPositions();\n onTick();\n if (eventData.currentTick === eventData.totalTicks) {\n // 如果是最后一次tick\n reslove();\n } else if (workerData.currentTick === eventData.totalTicks) {\n // 注意这里workerData.currentTick可能已经不再是前面赋值时候的值了,\n // 因为在requestAnimationFrame等待时间里,可能产生新的tick。\n // 如果当前tick不是最后一次tick,并且所有的tick消息都已发出来了,那么需要用最后一次tick的数据再刷新一次。\n workerData.requestId2 = helper.requestAnimationFrame(function requestId2() {\n updateLayoutPosition(data, workerData.currentTickData);\n graph.refreshPositions();\n workerData.requestId2 = null;\n onTick();\n reslove();\n });\n }\n workerData.requestId = null;\n });\n }\n break;\n case LAYOUT_MESSAGE.END:\n // 如果没有tick消息(非力导布局)\n if (workerData.currentTick == null) {\n updateLayoutPosition(data, eventData);\n reslove();\n }\n break;\n case LAYOUT_MESSAGE.GPUEND:\n // 如果没有tick消息(非力导布局)\n if (workerData.currentTick == null) {\n updateGPUWorkerLayoutPosition(data, eventData);\n reslove();\n }\n break;\n case LAYOUT_MESSAGE.ERROR:\n console.warn('Web-Worker layout error!', eventData.message);\n reject();\n break;\n default:\n reject();\n break;\n }\n };\n // 更新布局参数\n LayoutController.prototype.updateLayoutCfg = function (cfg) {\n var _this = this;\n var _a = this,\n graph = _a.graph,\n layoutMethods = _a.layoutMethods;\n if (!graph || graph.get('destroyed')) return;\n // disableTriggerLayout 不触发重新布局,仅更新参数\n var disableTriggerLayout = cfg.disableTriggerLayout,\n otherCfg = __rest(cfg, [\"disableTriggerLayout\"]);\n var layoutCfg = mix({}, this.layoutCfg, otherCfg);\n this.layoutCfg = layoutCfg;\n // disableTriggerLayout 不触发重新布局,仅更新参数\n if (disableTriggerLayout) {\n return;\n }\n if (!(layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.length)) {\n this.layout();\n return;\n }\n this.data = this.setDataFromGraph();\n this.stopWorker();\n if (otherCfg.workerEnabled && this.layoutWithWorker(this.data, null)) {\n // 如果启用布局web worker并且浏览器支持web worker,用web worker布局。否则回退到不用web worker布局。\n return;\n }\n graph.emit('beforelayout');\n var start = Promise.resolve();\n var hasLayout = false;\n if ((layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.length) === 1) {\n hasLayout = true;\n start = start.then(function () {\n return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4 /*yield*/, this.updateLayoutMethod(layoutMethods[0], layoutCfg)];\n case 1:\n return [2 /*return*/, _a.sent()];\n }\n });\n });\n });\n } else if (layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.length) {\n hasLayout = true;\n layoutMethods.forEach(function (layoutMethod, index) {\n var currentCfg = layoutCfg.pipes[index];\n start = start.then(function () {\n return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4 /*yield*/, this.updateLayoutMethod(layoutMethod, currentCfg)];\n case 1:\n return [2 /*return*/, _a.sent()];\n }\n });\n });\n });\n });\n }\n if (hasLayout) {\n start.then(function () {\n if (layoutCfg.onAllLayoutEnd) layoutCfg.onAllLayoutEnd();\n }).catch(function (error) {\n console.warn('layout failed', error);\n });\n }\n };\n LayoutController.prototype.adjustPipesBox = function (data, adjust) {\n var _this = this;\n return new Promise(function (resolve) {\n var nodes = data.nodes;\n if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length)) {\n resolve();\n }\n if (!LAYOUT_PIPES_ADJUST_NAMES.includes(adjust)) {\n console.warn(\"The adjust type \".concat(adjust, \" is not supported yet, please assign it with 'force', 'grid', or 'circular'.\"));\n resolve();\n }\n var layoutCfg = {\n center: _this.layoutCfg.center,\n nodeSize: function nodeSize(d) {\n return Math.max(d.height, d.width);\n },\n preventOverlap: true,\n onLayoutEnd: function onLayoutEnd() {}\n };\n // 计算出大单元\n var _a = _this.getLayoutBBox(nodes),\n groupNodes = _a.groupNodes,\n layoutNodes = _a.layoutNodes;\n var preNodes = clone(layoutNodes);\n // 根据大单元坐标的变化,调整这里面每个小单元nodes\n layoutCfg.onLayoutEnd = function () {\n layoutNodes === null || layoutNodes === void 0 ? void 0 : layoutNodes.forEach(function (ele, index) {\n var _a, _b, _c;\n var dx = ele.x - ((_a = preNodes[index]) === null || _a === void 0 ? void 0 : _a.x);\n var dy = ele.y - ((_b = preNodes[index]) === null || _b === void 0 ? void 0 : _b.y);\n (_c = groupNodes[index]) === null || _c === void 0 ? void 0 : _c.forEach(function (n) {\n n.x += dx;\n n.y += dy;\n });\n });\n resolve();\n };\n var layoutMethod = new Layout[adjust](layoutCfg);\n layoutMethod.layout({\n nodes: layoutNodes\n });\n });\n };\n LayoutController.prototype.hasGPUVersion = function (layoutName) {\n return GPU_LAYOUT_NAMES.includes(layoutName);\n };\n LayoutController.prototype.destroy = function () {\n this.destoryLayoutMethods();\n var worker = this.worker;\n if (worker) {\n worker.terminate();\n this.worker = null;\n }\n this.destroyed = true;\n this.graph.set('layout', undefined);\n this.layoutCfg = undefined;\n this.layoutType = undefined;\n this.layoutMethods = undefined;\n this.graph = null;\n };\n return LayoutController;\n}(AbstractLayout);\nexport default LayoutController;\nfunction updateLayoutPosition(data, layoutData) {\n var nodes = data.nodes;\n var layoutNodes = layoutData.nodes;\n var nodeLength = nodes.length;\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n node.x = layoutNodes[i].x;\n node.y = layoutNodes[i].y;\n }\n}\nfunction filterObject(collection, callback) {\n var result = {};\n if (collection && _typeof(collection) === 'object') {\n Object.keys(collection).forEach(function (key) {\n if (collection.hasOwnProperty(key) && callback(collection[key])) {\n result[key] = collection[key];\n }\n });\n return result;\n }\n return collection;\n}\nfunction updateGPUWorkerLayoutPosition(data, layoutData) {\n var nodes = data.nodes;\n var vertexEdgeData = layoutData.vertexEdgeData;\n var nodeLength = nodes.length;\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n var x = vertexEdgeData[4 * i];\n var y = vertexEdgeData[4 * i + 1];\n node.x = x;\n node.y = y;\n }\n}\nfunction addLayoutOrder(data, order) {\n var _a;\n if (!((_a = data === null || data === void 0 ? void 0 : data.nodes) === null || _a === void 0 ? void 0 : _a.length)) {\n return;\n }\n var nodes = data.nodes;\n nodes.forEach(function (node) {\n node.layoutOrder = order;\n });\n}","/**\n * 创建DOM 节点\n * @param {String} str Dom 字符串\n * @return {HTMLElement} DOM 节点\n */\n\nlet TABLE:HTMLTableElement;\nlet TABLE_TR:HTMLTableRowElement;\nlet FRAGMENT_REG:RegExp;\nlet CONTAINERS:{\n '*': HTMLDivElement;\n [key:string]: any;\n};\n\nfunction initConstants() {\n TABLE = document.createElement('table');\n TABLE_TR = document.createElement('tr');\n FRAGMENT_REG = /^\\s*<(\\w+|!)[^>]*>/;\n CONTAINERS = {\n tr: document.createElement('tbody'),\n tbody: TABLE,\n thead: TABLE,\n tfoot: TABLE,\n td: TABLE_TR,\n th: TABLE_TR,\n '*': document.createElement('div'),\n };\n}\n\nexport default function createDom(str:string): any {\n if (!TABLE) {\n initConstants();\n }\n let name = FRAGMENT_REG.test(str) && RegExp.$1;\n if (!name || !(name in CONTAINERS)) {\n name = '*';\n }\n const container = CONTAINERS[name];\n str = typeof str === 'string' ? str.replace(/(^\\s*)|(\\s*$)/g, '') : str;\n container.innerHTML = '' + str;\n const dom = container.childNodes[0];\n if (dom && container.contains(dom)) {\n container.removeChild(dom);\n }\n return dom;\n}\n","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { Canvas as GCanvas } from '@antv/g-canvas';\nimport { Canvas as GSVGCanvas } from '@antv/g-svg';\nimport { ext } from '@antv/matrix-util';\nimport { clone, deepMix, each, isString, isNumber } from '@antv/util';\nimport { AbstractGraph } from '@antv/g6-core';\nimport Global from '../global';\nimport { LayoutController, EventController } from './controller';\nimport { createDom } from '@antv/dom-util';\nvar transform = ext.transform;\nvar SVG = 'svg';\nvar Graph = /** @class */function (_super) {\n __extends(Graph, _super);\n function Graph(cfg) {\n var _this = _super.call(this, cfg) || this;\n var defaultNode = _this.get('defaultNode');\n if (!defaultNode) {\n _this.set('defaultNode', {\n type: 'circle'\n });\n }\n if (!defaultNode.type) {\n defaultNode.type = 'circle';\n _this.set('defaultNode', defaultNode);\n }\n _this.destroyed = false;\n return _this;\n }\n Graph.prototype.initLayoutController = function () {\n var layoutController = new LayoutController(this);\n this.set({\n layoutController: layoutController\n });\n };\n Graph.prototype.initEventController = function () {\n var eventController = new EventController(this);\n this.set({\n eventController: eventController\n });\n };\n Graph.prototype.initCanvas = function () {\n var container = this.get('container');\n if (typeof container === 'string') {\n container = document.getElementById(container);\n this.set('container', container);\n }\n if (!container) {\n throw new Error('invalid container');\n }\n var clientWidth = container.clientWidth,\n clientHeight = container.clientHeight;\n var width = this.get('width') || clientWidth;\n var height = this.get('height') || clientHeight;\n if (!this.get('width') && !this.get('height')) {\n this.set('width', clientWidth);\n this.set('height', clientHeight);\n }\n var renderer = this.get('renderer');\n var canvas;\n if (renderer === SVG) {\n canvas = new GSVGCanvas({\n container: container,\n width: width,\n height: height\n });\n } else {\n var canvasCfg = {\n container: container,\n width: width,\n height: height\n };\n var pixelRatio = this.get('pixelRatio');\n if (pixelRatio) {\n canvasCfg.pixelRatio = pixelRatio;\n window.devicePixelRatio = pixelRatio;\n }\n canvas = new GCanvas(canvasCfg);\n }\n this.set('canvas', canvas);\n };\n Graph.prototype.initPlugins = function () {\n var self = this;\n each(self.get('plugins'), function (plugin) {\n if (!plugin.destroyed && plugin.initPlugin) {\n plugin.initPlugin(self);\n }\n });\n };\n /**\n * 增加图片下载水印功能\n */\n Graph.prototype.downloadImageWatermark = function (watermarker, context, width, height) {\n return __awaiter(this, void 0, void 0, function () {\n var watermarkStr, watermarkbase64, img;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n watermarkStr = watermarker.style.backgroundImage;\n watermarkbase64 = watermarkStr.slice(5, watermarkStr.length - 2);\n img = new Image();\n img.src = watermarkbase64;\n return [4 /*yield*/, new Promise(function (resolve) {\n img.onload = function () {\n var pat = context.createPattern(img, \"repeat\");\n context.rect(0, 0, width, height);\n context.fillStyle = pat;\n context.fill();\n resolve('');\n };\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * 用于生成图片 (异步callback)\n * @param {String} type 图片类型,可选值:\"image/png\" | \"image/jpeg\" | \"image/webp\" | \"image/bmp\"\n * @param {string} backgroundColor 图片背景色\n * @return {string} 图片 dataURL\n */\n Graph.prototype.asyncToDataUrl = function (type, backgroundColor, callback, widths, heights, vCanvasEl) {\n var _this = this;\n var watermarker = document.querySelector('.g6-graph-watermarker');\n var canvas = this.get('canvas');\n var renderer = canvas.getRenderer();\n var canvasDom = vCanvasEl || canvas.get('el');\n var dataURL = '';\n if (!type) type = 'image/png';\n setTimeout(function () {\n return __awaiter(_this, void 0, void 0, function () {\n var cloneNode, svgDocType, svgDoc, svgData, imageData, context, width, height, compositeOperation, pixelRatio;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(renderer === 'svg')) return [3 /*break*/, 1];\n cloneNode = canvasDom.cloneNode(true);\n svgDocType = document.implementation.createDocumentType('svg', '-//W3C//DTD SVG 1.1//EN', 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd');\n svgDoc = document.implementation.createDocument('http://www.w3.org/2000/svg', 'svg', svgDocType);\n svgDoc.replaceChild(cloneNode, svgDoc.documentElement);\n svgData = new XMLSerializer().serializeToString(svgDoc);\n dataURL = \"data:image/svg+xml;charset=utf8,\".concat(encodeURIComponent(svgData));\n return [3 /*break*/, 4];\n case 1:\n imageData = void 0;\n context = canvasDom.getContext('2d');\n width = widths || this.get('width');\n height = heights || this.get('height');\n compositeOperation = void 0;\n if (!watermarker) return [3 /*break*/, 3];\n return [4 /*yield*/, this.downloadImageWatermark(watermarker, context, width, height)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n if (backgroundColor) {\n pixelRatio = typeof window !== 'undefined' ? window.devicePixelRatio : 1;\n try {\n imageData = context.getImageData(0, 0, width * pixelRatio, height * pixelRatio);\n compositeOperation = context.globalCompositeOperation;\n context.globalCompositeOperation = 'destination-over';\n context.fillStyle = backgroundColor;\n context.fillRect(0, 0, width, height);\n } catch (error) {\n console.error('Download image failed. Out of memory at ImageData creation');\n }\n }\n dataURL = canvasDom.toDataURL(type);\n if (backgroundColor) {\n context.clearRect(0, 0, width, height);\n context.putImageData(imageData, 0, 0);\n context.globalCompositeOperation = compositeOperation;\n }\n _a.label = 4;\n case 4:\n if (callback) callback(dataURL);\n return [2 /*return*/];\n }\n });\n });\n }, 16);\n };\n /**\n * 返回可见区域的图的 dataUrl,用于生成图片\n * @param {String} type 图片类型,可选值:\"image/png\" | \"image/jpeg\" | \"image/webp\" | \"image/bmp\"\n * @param {string} backgroundColor 图片背景色\n * @return {string} 图片 dataURL\n */\n Graph.prototype.toDataURL = function (type, backgroundColor) {\n var canvas = this.get('canvas');\n var renderer = canvas.getRenderer();\n var canvasDom = canvas.get('el');\n if (!type) type = 'image/png';\n var dataURL = '';\n if (renderer === 'svg') {\n var cloneNode = canvasDom.cloneNode(true);\n var svgDocType = document.implementation.createDocumentType('svg', '-//W3C//DTD SVG 1.1//EN', 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd');\n var svgDoc = document.implementation.createDocument('http://www.w3.org/2000/svg', 'svg', svgDocType);\n svgDoc.replaceChild(cloneNode, svgDoc.documentElement);\n var svgData = new XMLSerializer().serializeToString(svgDoc);\n dataURL = \"data:image/svg+xml;charset=utf8,\".concat(encodeURIComponent(svgData));\n } else {\n var imageData = void 0;\n var context = canvasDom.getContext('2d');\n var width = Math.max(this.get('width'), 500);\n var height = Math.max(this.get('height'), 500);\n var compositeOperation = void 0;\n if (backgroundColor) {\n var pixelRatio = typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\n try {\n imageData = context.getImageData(0, 0, width * pixelRatio, height * pixelRatio);\n compositeOperation = context.globalCompositeOperation;\n context.globalCompositeOperation = 'destination-over';\n context.fillStyle = backgroundColor;\n context.fillRect(0, 0, width, height);\n } catch (error) {\n console.error('Download image failed. Out of memory at ImageData creation');\n }\n }\n dataURL = canvasDom.toDataURL(type);\n if (backgroundColor) {\n context.clearRect(0, 0, width, height);\n context.putImageData(imageData, 0, 0);\n context.globalCompositeOperation = compositeOperation;\n }\n }\n return dataURL;\n };\n /**\n * 返回整个图(包括超出可见区域的部分)的 dataUrl,用于生成图片\n * @param {Function} callback 异步生成 dataUrl 完成后的回调函数,在这里处理生成的 dataUrl 字符串\n * @param {String} type 图片类型,可选值:\"image/png\" | \"image/jpeg\" | \"image/webp\" | \"image/bmp\"\n * @param {Object} imageConfig 图片配置项,包括背景色和上下左右的 padding\n */\n Graph.prototype.toFullDataURL = function (callback, type, imageConfig) {\n var bbox = this.get('group').getCanvasBBox();\n var height = bbox.height;\n var width = bbox.width;\n var renderer = this.get('renderer');\n var vContainerDOM = createDom('
');\n var backgroundColor = imageConfig ? imageConfig.backgroundColor : undefined;\n var padding = imageConfig ? imageConfig.padding : undefined;\n if (!padding) padding = [0, 0, 0, 0];else if (isNumber(padding)) padding = [padding, padding, padding, padding];\n var vHeight = height + padding[0] + padding[2];\n var vWidth = width + padding[1] + padding[3];\n var canvasOptions = {\n container: vContainerDOM,\n height: vHeight,\n width: vWidth,\n quickHit: true\n };\n var vCanvas = renderer === 'svg' ? new GSVGCanvas(canvasOptions) : new GCanvas(canvasOptions);\n var group = this.get('group');\n var vGroup = group.clone();\n var matrix = clone(vGroup.getMatrix());\n if (!matrix) matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var centerX = (bbox.maxX + bbox.minX) / 2;\n var centerY = (bbox.maxY + bbox.minY) / 2;\n matrix = transform(matrix, [['t', -centerX, -centerY], ['t', width / 2 + padding[3], height / 2 + padding[0]]]);\n vGroup.resetMatrix();\n vGroup.setMatrix(matrix);\n vCanvas.add(vGroup);\n var vCanvasEl = vCanvas.get('el');\n var dataURL = '';\n if (!type) type = 'image/png';\n setTimeout(function () {\n if (renderer === 'svg') {\n var cloneNode = vCanvasEl.cloneNode(true);\n var svgDocType = document.implementation.createDocumentType('svg', '-//W3C//DTD SVG 1.1//EN', 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd');\n var svgDoc = document.implementation.createDocument('http://www.w3.org/2000/svg', 'svg', svgDocType);\n svgDoc.replaceChild(cloneNode, svgDoc.documentElement);\n var svgData = new XMLSerializer().serializeToString(svgDoc);\n dataURL = \"data:image/svg+xml;charset=utf8,\".concat(encodeURIComponent(svgData));\n } else {\n var imageData = void 0;\n var context = vCanvasEl.getContext('2d');\n var compositeOperation = void 0;\n if (backgroundColor) {\n var pixelRatio = typeof window !== 'undefined' ? window.devicePixelRatio : 1;\n try {\n imageData = context.getImageData(0, 0, vWidth * pixelRatio, vHeight * pixelRatio);\n compositeOperation = context.globalCompositeOperation;\n context.globalCompositeOperation = 'destination-over';\n context.fillStyle = backgroundColor;\n context.fillRect(0, 0, vWidth, vHeight);\n } catch (error) {\n console.error('Download image failed. Out of memory at ImageData creation');\n }\n }\n dataURL = vCanvasEl.toDataURL(type);\n if (backgroundColor) {\n context.clearRect(0, 0, vWidth, vHeight);\n context.putImageData(imageData, 0, 0);\n context.globalCompositeOperation = compositeOperation;\n }\n }\n if (callback) callback(dataURL);\n }, 16);\n };\n /**\n * 导出包含全图的图片\n * @param {String} name 图片的名称\n * @param {String} type 图片类型,可选值:\"image/png\" | \"image/jpeg\" | \"image/webp\" | \"image/bmp\"\n * @param {Object} imageConfig 图片配置项,包括背景色和上下左右的 padding\n */\n Graph.prototype.downloadFullImage = function (name, type, imageConfig) {\n var _this = this;\n var bbox = this.get('group').getCanvasBBox();\n var height = bbox.height;\n var width = bbox.width;\n var renderer = this.get('renderer');\n var vContainerDOM = createDom('
');\n var watermarker = document.querySelector('.g6-graph-watermarker');\n var backgroundColor = imageConfig ? imageConfig.backgroundColor : undefined;\n var padding = imageConfig ? imageConfig.padding : undefined;\n if (!padding) padding = [0, 0, 0, 0];else if (isNumber(padding)) padding = [padding, padding, padding, padding];\n var vHeight = height + padding[0] + padding[2];\n var vWidth = width + padding[1] + padding[3];\n if (watermarker) {\n var _a = this.get('graphWaterMarker').cfg || {},\n wmWidth = _a.width,\n wmHeight = _a.height;\n vHeight = Math.ceil(vHeight / wmHeight) * wmHeight;\n vWidth = Math.ceil(vWidth / wmWidth) * wmWidth;\n }\n var canvasOptions = {\n container: vContainerDOM,\n height: vHeight,\n width: vWidth\n };\n var vCanvas = renderer === 'svg' ? new GSVGCanvas(canvasOptions) : new GCanvas(canvasOptions);\n var group = this.get('group');\n var vGroup = group.clone();\n var matrix = clone(vGroup.getMatrix());\n if (!matrix) matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var centerX = (bbox.maxX + bbox.minX) / 2;\n var centerY = (bbox.maxY + bbox.minY) / 2;\n matrix = transform(matrix, [['t', -centerX, -centerY], ['t', width / 2 + padding[3], height / 2 + padding[0]]]);\n vGroup.resetMatrix();\n vGroup.setMatrix(matrix);\n vCanvas.add(vGroup);\n var vCanvasEl = vCanvas.get('el');\n if (!type) type = 'image/png';\n this.asyncToDataUrl(type, backgroundColor, function (dataURL) {\n var link = document.createElement('a');\n var fileName = (name || 'graph') + (renderer === 'svg' ? '.svg' : \".\".concat(type.split('/')[1]));\n _this.dataURLToImage(dataURL, renderer, link, fileName);\n var e = document.createEvent('MouseEvents');\n e.initEvent('click', false, false);\n link.dispatchEvent(e);\n }, vWidth, vHeight, vCanvasEl);\n };\n /**\n * 画布导出图片,图片仅包含画布可见区域部分内容\n * @param {String} name 图片的名称\n * @param {String} type 图片类型,可选值:\"image/png\" | \"image/jpeg\" | \"image/webp\" | \"image/bmp\"\n * @param {string} backgroundColor 图片背景色\n */\n Graph.prototype.downloadImage = function (name, type, backgroundColor) {\n var _this = this;\n var self = this;\n self.stopAnimate();\n var canvas = self.get('canvas');\n var renderer = canvas.getRenderer();\n if (!type) type = 'image/png';\n var fileName = (name || 'graph') + (renderer === 'svg' ? '.svg' : type.split('/')[1]);\n var link = document.createElement('a');\n self.asyncToDataUrl(type, backgroundColor, function (dataURL) {\n _this.dataURLToImage(dataURL, renderer, link, fileName);\n var e = document.createEvent('MouseEvents');\n e.initEvent('click', false, false);\n link.dispatchEvent(e);\n });\n };\n Graph.prototype.dataURLToImage = function (dataURL, renderer, link, fileName) {\n if (!dataURL || dataURL === 'data:') {\n console.error('Download image failed. The graph is too large or there is invalid attribute values in graph items');\n return;\n }\n if (typeof window !== 'undefined') {\n if (window.Blob && window.URL && renderer !== 'svg') {\n var arr = dataURL.split(',');\n var mime = '';\n if (arr && arr.length > 0) {\n var match = arr[0].match(/:(.*?);/);\n // eslint-disable-next-line prefer-destructuring\n if (match && match.length >= 2) mime = match[1];\n }\n var bstr = atob(arr[1]);\n var n = bstr.length;\n var u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n var blobObj_1 = new Blob([u8arr], {\n type: mime\n });\n if (window.navigator.msSaveBlob) {\n window.navigator.msSaveBlob(blobObj_1, fileName);\n } else {\n link.addEventListener('click', function () {\n link.download = fileName;\n link.href = window.URL.createObjectURL(blobObj_1);\n });\n }\n } else {\n link.addEventListener('click', function () {\n link.download = fileName;\n link.href = dataURL;\n });\n }\n }\n };\n /**\n * 添加插件\n * @param {object} plugin 插件实例\n */\n Graph.prototype.addPlugin = function (plugin) {\n var self = this;\n if (plugin.destroyed) {\n return;\n }\n self.get('plugins').push(plugin);\n plugin.initPlugin(self);\n };\n /**\n * 添加插件\n * @param {object} plugin 插件实例\n */\n Graph.prototype.removePlugin = function (plugin) {\n var plugins = this.get('plugins');\n var index = plugins.indexOf(plugin);\n if (index >= 0) {\n plugin.destroyPlugin();\n plugins.splice(index, 1);\n }\n };\n /**\n * 设置图片水印\n * @param {string} imgURL 图片水印的url地址\n * @param {WaterMarkerConfig} config 文本水印的配置项\n */\n Graph.prototype.setImageWaterMarker = function (imgURL, config) {\n if (imgURL === void 0) {\n imgURL = Global.waterMarkerImage;\n }\n var container = this.get('container');\n if (isString(container)) {\n container = document.getElementById(container);\n }\n if (!container.style.position) {\n container.style.position = 'relative';\n }\n var canvas = this.get('graphWaterMarker');\n var waterMarkerConfig = deepMix({}, Global.imageWaterMarkerConfig, config);\n var width = waterMarkerConfig.width,\n height = waterMarkerConfig.height,\n compatible = waterMarkerConfig.compatible,\n image = waterMarkerConfig.image;\n if (!imgURL) {\n var dom = compatible ? container : document.querySelector('.g6-graph-watermarker');\n if (dom) dom.style.cssText = undefined;\n if (canvas) canvas.clear();\n return;\n }\n if (!canvas) {\n var canvasCfg = {\n container: container,\n width: width,\n height: height,\n capture: false\n };\n var pixelRatio = this.get('pixelRatio');\n if (pixelRatio) {\n canvasCfg.pixelRatio = pixelRatio;\n window.devicePixelRatio = pixelRatio;\n }\n canvas = new GCanvas(canvasCfg);\n this.set('graphWaterMarker', canvas);\n } else {\n canvas.clear();\n }\n canvas.get('el').style.display = 'none';\n var ctx = canvas.get('context');\n var rotate = image.rotate,\n x = image.x,\n y = image.y;\n // 旋转20度\n ctx.rotate(-rotate * Math.PI / 180);\n var img = new Image();\n img.crossOrigin = 'anonymous';\n img.src = imgURL;\n img.onload = function () {\n ctx.drawImage(img, x, y, image.width, image.height);\n // 恢复旋转角度\n ctx.rotate(rotate * Math.PI / 180);\n // 默认按照现代浏览器处理\n if (!compatible) {\n var box = document.querySelector('.g6-graph-watermarker');\n if (!box) {\n box = document.createElement('div');\n box.className = 'g6-graph-watermarker';\n }\n box.className = 'g6-graph-watermarker';\n if (!canvas.destroyed) {\n box.style.cssText = \"background-image: url(\".concat(canvas.get('el').toDataURL('image/png'), \");background-repeat:repeat;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;z-index:-1;\");\n container.appendChild(box);\n }\n } else {\n // 当需要兼容不支持 pointer-events属性的浏览器时,将 compatible 设置为 true\n container.style.cssText = \"background-image: url(\".concat(canvas.get('el').toDataURL('image/png'), \");background-repeat:repeat;\");\n }\n };\n };\n /**\n * 设置文本水印\n * @param {string[]} texts 水印的文本内容\n * @param {WaterMarkerConfig} config 文本水印的配置项\n */\n Graph.prototype.setTextWaterMarker = function (texts, config) {\n var container = this.get('container');\n if (isString(container)) {\n container = document.getElementById(container);\n }\n if (!container.style.position) {\n container.style.position = 'relative';\n }\n var canvas = this.get('graphWaterMarker');\n var waterMarkerConfig = deepMix({}, Global.textWaterMarkerConfig, config);\n var width = waterMarkerConfig.width,\n height = waterMarkerConfig.height,\n compatible = waterMarkerConfig.compatible,\n text = waterMarkerConfig.text;\n if (!(texts === null || texts === void 0 ? void 0 : texts.length)) {\n var dom = compatible ? container : document.querySelector('.g6-graph-watermarker');\n if (dom) dom.style.cssText = undefined;\n if (canvas) canvas.clear();\n return;\n }\n if (!canvas) {\n var canvasCfg = {\n container: container,\n width: width,\n height: height,\n capture: false\n };\n var pixelRatio = this.get('pixelRatio');\n if (pixelRatio) {\n canvasCfg.pixelRatio = pixelRatio;\n window.devicePixelRatio = pixelRatio;\n }\n canvas = new GCanvas(canvasCfg);\n this.set('graphWaterMarker', canvas);\n } else {\n canvas.clear();\n }\n canvas.get('el').style.display = 'none';\n var ctx = canvas.get('context');\n var rotate = text.rotate,\n fill = text.fill,\n fontFamily = text.fontFamily,\n fontSize = text.fontSize,\n baseline = text.baseline,\n x = text.x,\n y = text.y,\n lineHeight = text.lineHeight;\n // 旋转20度\n ctx.rotate(-rotate * Math.PI / 180);\n // 设置文字样式\n ctx.font = \"\".concat(fontSize, \"px \").concat(fontFamily);\n // 设置文字颜色\n ctx.fillStyle = fill;\n ctx.textBaseline = baseline;\n var displayTexts = isString(texts) ? [texts] : texts;\n for (var i = displayTexts.length - 1; i >= 0; i--) {\n // 将文字绘制到画布\n ctx.fillText(displayTexts[i], x, y + i * lineHeight);\n }\n // 恢复旋转角度\n ctx.rotate(rotate * Math.PI / 180);\n // 默认按照现代浏览器处理\n if (!compatible) {\n var box = document.querySelector('.g6-graph-watermarker');\n if (!box) {\n box = document.createElement('div');\n box.className = 'g6-graph-watermarker';\n }\n box.style.cssText = \"background-image: url(\".concat(canvas.get('el').toDataURL('image/png'), \");background-repeat:repeat;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;z-index:99;\");\n container.appendChild(box);\n } else {\n // 当需要兼容不支持 pointer-events属性的浏览器时,将 compatible 设置为 true\n container.style.cssText = \"background-image: url(\".concat(canvas.get('el').toDataURL('image/png'), \");background-repeat:repeat;\");\n }\n };\n /**\n * 销毁画布\n */\n Graph.prototype.destroy = function () {\n var _a, _b, _c, _d;\n each(this.get('plugins'), function (plugin) {\n plugin.destroyPlugin();\n });\n // destroy tooltip doms, removed when upgrade G6 4.0\n var tooltipDOMs = this.get('tooltips');\n if (tooltipDOMs) {\n for (var i = 0; i < tooltipDOMs.length; i++) {\n var container = tooltipDOMs[i];\n if (!container) continue;\n var parent_1 = container.parentElement;\n if (!parent_1) continue;\n parent_1.removeChild(container);\n }\n }\n (_a = this.get('eventController')) === null || _a === void 0 ? void 0 : _a.destroy();\n (_b = this.get('layoutController')) === null || _b === void 0 ? void 0 : _b.destroy();\n // this.get('eventController').destroy();\n // this.get('itemController').destroy();\n // this.get('modeController').destroy();\n // this.get('viewController').destroy();\n // this.get('stateController').destroy();\n // this.get('canvas').destroy();\n (_c = this.get('graphWaterMarker')) === null || _c === void 0 ? void 0 : _c.destroy();\n (_d = document.querySelector('.g6-graph-watermarker')) === null || _d === void 0 ? void 0 : _d.remove();\n _super.prototype.destroy.call(this);\n };\n return Graph;\n}(AbstractGraph);\nexport default Graph;","import { __extends } from \"tslib\";\nimport Hierarchy from '@antv/hierarchy';\nimport { each, isObject, isString } from '@antv/util';\nimport Util from '../util';\nimport Graph from './graph';\nvar radialLayout = Util.radialLayout,\n traverseTree = Util.traverseTree;\nvar TreeGraph = /** @class */function (_super) {\n __extends(TreeGraph, _super);\n function TreeGraph(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.layoutAnimating = false;\n // 用于缓存动画结束后需要删除的节点\n _this.set('removeList', []);\n _this.set('layoutMethod', _this.getLayout());\n return _this;\n }\n /**\n * 通过 Layout 配置获取布局配置\n */\n TreeGraph.prototype.getLayout = function () {\n var layout = this.get('layout');\n if (!layout) {\n return null;\n }\n if (typeof layout === 'function') {\n return layout;\n }\n if (!layout.type) {\n layout.type = 'dendrogram';\n }\n if (!layout.direction) {\n layout.direction = 'TB';\n }\n if (layout.radial) {\n return function (data) {\n var layoutData = Hierarchy[layout.type](data, layout);\n radialLayout(layoutData);\n return layoutData;\n };\n }\n return function (data) {\n return Hierarchy[layout.type](data, layout);\n };\n };\n /**\n * 返回指定节点在树图数据中的索引\n * @param children 树图数据\n * @param child 树图中某一个 Item 的数据\n */\n TreeGraph.indexOfChild = function (children, id) {\n var index = -1;\n // eslint-disable-next-line consistent-return\n each(children, function (former, i) {\n if (id === former.id) {\n index = i;\n return false;\n }\n });\n return index;\n };\n TreeGraph.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n // 树图默认打开动画\n cfg.animate = true;\n return cfg;\n };\n /**\n * 向🌲树中添加数据\n * @param treeData 树图数据\n * @param parent 父节点实例\n * @param animate 是否开启动画\n */\n TreeGraph.prototype.innerAddChild = function (treeData, parent, animate) {\n var self = this;\n var model = treeData.data;\n if (model) {\n // model 中应存储真实的数据,特别是真实的 children\n model.x = treeData.x;\n model.y = treeData.y;\n model.depth = treeData.depth;\n }\n var node = self.addItem('node', model, false);\n if (parent) {\n node.set('parent', parent);\n if (animate) {\n var origin_1 = parent.get('originAttrs');\n if (origin_1) {\n node.set('originAttrs', origin_1);\n } else {\n var parentModel = parent.getModel();\n node.set('originAttrs', {\n x: parentModel.x,\n y: parentModel.y\n });\n }\n }\n var childrenList = parent.get('children');\n if (!childrenList) {\n parent.set('children', [node]);\n } else {\n childrenList.push(node);\n }\n self.addItem('edge', {\n source: parent.get('id'),\n target: node.get('id'),\n id: \"\".concat(parent.get('id'), \":\").concat(node.get('id'))\n }, false);\n }\n // 渲染到视图上应参考布局的children, 避免多绘制了收起的节点\n each(treeData.children || [], function (child) {\n self.innerAddChild(child, node, animate);\n });\n self.emit('afteraddchild', {\n item: node,\n parent: parent\n });\n return node;\n };\n /**\n * 将数据上的变更转换到视图上\n * @param data\n * @param parent\n * @param animate\n */\n TreeGraph.prototype.innerUpdateChild = function (data, parent, animate) {\n var self = this;\n var current = self.findById(data.id);\n // 若子树不存在,整体添加即可\n if (!current) {\n self.innerAddChild(data, parent, animate);\n return;\n }\n // 更新新节点下所有子节点\n each(data.children || [], function (child) {\n self.innerUpdateChild(child, current, animate);\n });\n // 用现在节点的children实例来删除移除的子节点\n var children = current.get('children');\n if (children) {\n var len = children.length;\n if (len > 0) {\n for (var i = children.length - 1; i >= 0; i--) {\n var child = children[i].getModel();\n if (TreeGraph.indexOfChild(data.children || [], child.id) === -1) {\n self.innerRemoveChild(child.id, {\n x: data.x,\n y: data.y\n }, animate);\n // 更新父节点下缓存的子节点 item 实例列表\n children.splice(i, 1);\n }\n }\n }\n }\n var oriX;\n var oriY;\n if (current.get('originAttrs')) {\n oriX = current.get('originAttrs').x;\n oriY = current.get('originAttrs').y;\n }\n var model = current.getModel();\n if (animate) {\n // 如果有动画,先缓存节点运动再更新节点\n current.set('originAttrs', {\n x: model.x,\n y: model.y\n });\n }\n current.set('model', Object.assign(model, data.data));\n if (oriX !== data.x || oriY !== data.y) {\n current.updatePosition({\n x: data.x,\n y: data.y\n });\n }\n };\n /**\n * 删除子节点Item对象\n * @param id\n * @param to\n * @param animate\n */\n TreeGraph.prototype.innerRemoveChild = function (id, to, animate) {\n var self = this;\n var node = self.findById(id);\n if (!node) {\n return;\n }\n each(node.get('children'), function (child) {\n self.innerRemoveChild(child.getModel().id, to, animate);\n });\n if (animate) {\n var model = node.getModel();\n node.set('to', to);\n node.set('originAttrs', {\n x: model.x,\n y: model.y\n });\n self.get('removeList').push(node);\n } else {\n self.removeItem(node, false);\n }\n };\n /**\n * 更新数据模型,差量更新并重新渲染\n * @param {object} data 数据模型\n */\n TreeGraph.prototype.changeData = function (data, stack) {\n if (stack === void 0) {\n stack = true;\n }\n var self = this;\n // 更改数据源后,取消所有状态\n this.getNodes().map(function (node) {\n return self.clearItemStates(node);\n });\n this.getEdges().map(function (edge) {\n return self.clearItemStates(edge);\n });\n if (stack && this.get('enabledStack')) {\n this.pushStack('changedata', {\n before: self.get('originData'),\n after: data || self.get('data')\n });\n }\n if (data) {\n self.data(data);\n self.render(false);\n } else {\n self.layout(this.get('fitView'));\n }\n };\n /**\n * 已更名为 updateLayout,为保持兼容暂且保留。\n * 更改并应用树布局算法\n * @param {object} layout 布局算法\n */\n TreeGraph.prototype.changeLayout = function (layout) {\n // eslint-disable-next-line no-console\n console.warn('Please call updateLayout instead of changeLayout. changeLayout will be discarded soon');\n var self = this;\n self.updateLayout(layout);\n };\n /**\n * 更改并应用树布局算法\n * @param {object} layout 布局算法\n */\n TreeGraph.prototype.updateLayout = function (layout, stack) {\n if (stack === void 0) {\n stack = true;\n }\n var self = this;\n if (!layout) {\n // eslint-disable-next-line no-console\n console.warn('layout cannot be null');\n return;\n }\n if (stack && this.get('enabledStack')) {\n this.pushStack('layout', {\n before: self.get('layout'),\n after: layout\n });\n }\n self.set('layout', layout);\n self.set('layoutMethod', self.getLayout());\n self.layout();\n };\n /**\n * 已更名为 layout,为保持兼容暂且保留。\n * 根据目前的 data 刷新布局,更新到画布上。用于变更数据之后刷新视图。\n * @param {boolean} fitView 更新布局时是否需要适应窗口\n */\n TreeGraph.prototype.refreshLayout = function (fitView) {\n // eslint-disable-next-line no-console\n console.warn('Please call layout instead of refreshLayout. refreshLayout will be discarded soon');\n var self = this;\n self.layout(fitView);\n };\n /**\n * 根据目前的 data 刷新布局,更新到画布上。用于变更数据之后刷新视图。\n * @param {boolean} fitView 更新布局时是否需要适应窗口\n */\n TreeGraph.prototype.layout = function (fitView) {\n var self = this;\n var data = self.get('data');\n var layoutMethod = self.get('layoutMethod');\n var layoutData = layoutMethod ? layoutMethod(data, self.get('layout')) : data;\n var animate = self.get('animate');\n self.emit('beforerefreshlayout', {\n data: data,\n layoutData: layoutData\n });\n self.emit('beforelayout');\n self.innerUpdateChild(layoutData, undefined, animate);\n if (fitView) {\n var viewController = self.get('viewController');\n viewController.fitView();\n }\n if (!animate) {\n // 如果没有动画,目前仅更新了节点的位置,刷新一下边的样式\n self.refresh();\n self.paint();\n } else {\n self.layoutAnimate(layoutData);\n }\n self.emit('afterrefreshlayout', {\n data: data,\n layoutData: layoutData\n });\n self.emit('afterlayout');\n };\n /**\n * 添加子树到对应 id 的节点\n * @param {TreeGraphData} data 子树数据模型\n * @param {string} parent 子树的父节点id\n */\n TreeGraph.prototype.addChild = function (data, parent, stack) {\n if (stack === void 0) {\n stack = true;\n }\n var self = this;\n self.emit('beforeaddchild', {\n model: data,\n parent: parent\n });\n // 将数据添加到源数据中,走changeData方法\n if (!isString(parent)) {\n parent = parent.get('id');\n }\n var parentData = self.findDataById(parent);\n if (parentData) {\n if (!parentData.children) {\n parentData.children = [];\n }\n parentData.children.push(data);\n var parentItem = self.findById(parent);\n parentItem.refresh();\n self.changeData(undefined, stack);\n }\n };\n /**\n * 更新某个节点下的所有子节点\n * @param {TreeGraphData[]} data 子树数据模型集合\n * @param {string} parent 子树的父节点id\n */\n TreeGraph.prototype.updateChildren = function (data, parentId, stack) {\n if (stack === void 0) {\n stack = true;\n }\n var self = this;\n // 如果没有父节点或找不到该节点,是全量的更新,直接重置data\n var parentItem = self.findById(parentId);\n if (!parentId || !parentItem) {\n console.warn(\"Update children failed! There is no node with id '\".concat(parentId, \"'\"));\n return;\n }\n var parentModel = self.findDataById(parentId);\n parentModel.children = data;\n parentItem.refresh();\n self.changeData(undefined, stack);\n };\n /**\n * 更新源数据,差量更新子树\n * @param {TreeGraphData} data 子树数据模型\n * @param {string} parentId 子树的父节点id\n */\n TreeGraph.prototype.updateChild = function (data, parentId, stack) {\n if (stack === void 0) {\n stack = true;\n }\n var self = this;\n // 如果没有父节点或找不到该节点,是全量的更新,直接重置data\n if (!parentId || !self.findById(parentId)) {\n self.changeData(data, stack);\n return;\n }\n var parentModel = self.findDataById(parentId);\n var current = self.findById(data.id);\n if (!parentModel.children) {\n // 当 current 不存在时,children 为空数组\n parentModel.children = [];\n }\n // 如果不存在该节点,则添加\n if (!current) {\n parentModel.children.push(data);\n } else {\n var index = TreeGraph.indexOfChild(parentModel.children, data.id);\n if (index > -1) parentModel.children[index] = data;\n }\n var parentItem = self.findById(parentId);\n parentItem === null || parentItem === void 0 ? void 0 : parentItem.refresh();\n self.changeData(undefined, stack);\n };\n /**\n * 删除子树\n * @param {string} id 子树根节点id\n */\n TreeGraph.prototype.removeChild = function (id, stack) {\n if (stack === void 0) {\n stack = true;\n }\n var self = this;\n var node = self.findById(id);\n var parent;\n if (!node) {\n parent = self.getNodes().find(function (node) {\n var children = node.getModel().children || [];\n return !!children.find(function (child) {\n return child.id === id;\n });\n });\n } else {\n parent = node === null || node === void 0 ? void 0 : node.get('parent');\n }\n if (parent && !parent.destroyed) {\n var parentId = parent.get('id');\n var parentNode = self.findDataById(parentId);\n var siblings = parentNode && parentNode.children || [];\n var index = TreeGraph.indexOfChild(siblings, id);\n siblings.splice(index, 1);\n parent.refresh();\n }\n self.changeData(undefined, stack);\n };\n /**\n * 根据id获取对应的源数据\n * @param {string} id 元素id\n * @param {TreeGraphData | undefined} parent 从哪个节点开始寻找,为空时从根节点开始查找\n * @return {TreeGraphData} 对应源数据\n */\n TreeGraph.prototype.findDataById = function (id, parent) {\n var self = this;\n if (!parent) {\n parent = self.get('data');\n }\n if (id === parent.id) {\n return parent;\n }\n var result = null;\n // eslint-disable-next-line consistent-return\n each(parent.children || [], function (child) {\n if (child.id === id) {\n result = child;\n return false;\n }\n result = self.findDataById(id, child);\n if (result) {\n return false;\n }\n });\n return result;\n };\n /**\n * 布局动画接口,用于数据更新时做节点位置更新的动画\n * @param {TreeGraphData} data 更新的数据\n * @param {function} onFrame 定义节点位置更新时如何移动\n */\n TreeGraph.prototype.layoutAnimate = function (data, onFrame) {\n var self = this;\n var animateCfg = this.get('animateCfg');\n self.emit('beforeanimate', {\n data: data\n });\n // 如果边中没有指定锚点,但是本身有锚点控制,在动画过程中保持锚点不变\n self.getEdges().forEach(function (edge) {\n var model = edge.get('model');\n if (!model.sourceAnchor) {\n model.sourceAnchor = edge.get('sourceAnchorIndex');\n }\n });\n this.get('canvas').animate(function (ratio) {\n traverseTree(data, function (child) {\n var node = self.findById(child.id);\n // 只有当存在node的时候才执行\n if (node) {\n var origin_2 = node.get('originAttrs');\n var model = node.get('model');\n if (!origin_2) {\n origin_2 = {\n x: model.x,\n y: model.y\n };\n node.set('originAttrs', origin_2);\n }\n if (onFrame) {\n var attrs = onFrame(node, ratio, origin_2, data);\n node.set('model', Object.assign(model, attrs));\n } else {\n model.x = origin_2.x + (child.x - origin_2.x) * ratio;\n model.y = origin_2.y + (child.y - origin_2.y) * ratio;\n }\n }\n return true;\n });\n each(self.get('removeList'), function (node) {\n var model = node.getModel();\n var from = node.get('originAttrs');\n var to = node.get('to');\n model.x = from.x + (to.x - from.x) * ratio;\n model.y = from.y + (to.y - from.y) * ratio;\n });\n self.refreshPositions();\n }, {\n duration: animateCfg.duration,\n easing: animateCfg.ease,\n callback: function callback() {\n each(self.getNodes(), function (node) {\n node.set('originAttrs', null);\n });\n each(self.get('removeList'), function (node) {\n self.removeItem(node, false);\n });\n self.set('removeList', []);\n if (animateCfg.callback) {\n animateCfg.callback();\n }\n self.emit('afteranimate', {\n data: data\n });\n },\n delay: animateCfg.delay\n });\n };\n /**\n * 立即停止布局动画\n */\n TreeGraph.prototype.stopLayoutAnimate = function () {\n this.get('canvas').stopAnimate();\n this.emit('layoutanimateend', {\n data: this.get('data')\n });\n this.layoutAnimating = false;\n };\n /**\n * 是否在布局动画\n * @return {boolean} 是否有布局动画\n */\n TreeGraph.prototype.isLayoutAnimating = function () {\n return this.layoutAnimating;\n };\n /**\n * 根据data接口的数据渲染视图\n */\n TreeGraph.prototype.render = function (clearStack) {\n if (clearStack === void 0) {\n clearStack = true;\n }\n var self = this;\n var data = self.get('data');\n if (!data || !isObject(data) || !Object.keys(data).length) {\n throw new Error('data must be defined first');\n }\n self.clear();\n if (clearStack && this.get('enabledStack')) {\n // render 之前清空 redo 和 undo 栈\n this.clearStack();\n }\n self.emit('beforerender');\n self.layout(this.get('fitView'));\n self.emit('afterrender');\n };\n /**\n * 导出图数据\n * @return {object} data\n */\n TreeGraph.prototype.save = function () {\n return this.get('data');\n };\n /**\n * 设置视图初始化数据\n * @param {TreeGraphData} data 初始化数据\n */\n TreeGraph.prototype.data = function (data) {\n _super.prototype.data.call(this, data);\n this.set('originData', JSON.parse(JSON.stringify(data)));\n };\n return TreeGraph;\n}(Graph);\nexport default TreeGraph;","export default function modifyCSS(dom: HTMLElement, css: { [key:string]: any }): HTMLElement {\n if (dom) {\n for (const key in css) {\n if (css.hasOwnProperty(key)) {\n dom.style[key] = css[key];\n }\n }\n }\n return dom;\n}\n","import { wrapBehavior, each, deepMix } from '@antv/util';\nvar PluginBase = /** @class */function () {\n /**\n * 插件基类的构造函数\n * @param cfgs 插件的配置项\n */\n function PluginBase(cfgs) {\n this._cfgs = deepMix(this.getDefaultCfgs(), cfgs);\n this._events = {};\n this.destroyed = false;\n }\n /**\n * 获取默认的插件配置\n */\n PluginBase.prototype.getDefaultCfgs = function () {\n return {};\n };\n /**\n * 初始化插件\n * @param graph IGraph 实例\n */\n PluginBase.prototype.initPlugin = function (graph) {\n var self = this;\n self.set('graph', graph);\n var events = self.getEvents();\n var bindEvents = {};\n each(events, function (v, k) {\n var event = wrapBehavior(self, v);\n bindEvents[k] = event;\n graph.on(k, event);\n });\n this._events = bindEvents;\n this.init();\n };\n /**\n * 获取插件中的事件和事件处理方法,供子类实现\n */\n PluginBase.prototype.getEvents = function () {\n return {};\n };\n /**\n * 获取配置项中的某个值\n * @param key 键值\n */\n PluginBase.prototype.get = function (key) {\n var _a;\n return (_a = this._cfgs) === null || _a === void 0 ? void 0 : _a[key];\n };\n /**\n * 将指定的值存储到 cfgs 中\n * @param key 键值\n * @param val 设置的值\n */\n PluginBase.prototype.set = function (key, val) {\n this._cfgs[key] = val;\n };\n /**\n * 销毁方法,供子类复写\n */\n PluginBase.prototype.destroy = function () {};\n /**\n * 销毁插件\n */\n PluginBase.prototype.destroyPlugin = function () {\n this.destroy();\n var graph = this.get('graph');\n var events = this._events;\n each(events, function (v, k) {\n graph.off(k, v);\n });\n this._events = null;\n this._cfgs = null;\n this.destroyed = true;\n };\n return PluginBase;\n}();\nexport default PluginBase;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nimport { modifyCSS, createDom } from '@antv/dom-util';\nimport Base from '../base';\n// 网格背景图片\nvar GRID_PNG = 'url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImdyaWQiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTSAwIDEwIEwgNDAgMTAgTSAxMCAwIEwgMTAgNDAgTSAwIDIwIEwgNDAgMjAgTSAyMCAwIEwgMjAgNDAgTSAwIDMwIEwgNDAgMzAgTSAzMCAwIEwgMzAgNDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2UwZTBlMCIgb3BhY2l0eT0iMC4yIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNIDQwIDAgTCAwIDAgMCA0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIiBzdHJva2Utd2lkdGg9IjEiLz48L3BhdHRlcm4+PC9kZWZzPjxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JpZCkiLz48L3N2Zz4=)';\nvar Grid = /** @class */function (_super) {\n __extends(Grid, _super);\n function Grid(config) {\n return _super.call(this, config) || this;\n }\n Grid.prototype.getDefaultCfgs = function () {\n return {\n img: GRID_PNG,\n follow: true\n };\n };\n Grid.prototype.init = function () {\n var graph = this.get('graph');\n var graphContainer = graph.get('container');\n var canvas = graph.get('canvas').get('el');\n var img = this.get('img') || GRID_PNG;\n if (!img.includes('url(')) {\n img = \"url(\\\"\".concat(img, \"\\\")\");\n }\n var container = createDom(\"
\");\n var gridContainer = createDom(\"\"));\n this.set('container', container);\n this.set('gridContainer', gridContainer);\n this.positionInit();\n container.appendChild(gridContainer);\n graphContainer.insertBefore(container, canvas);\n };\n /** 定位信息初始化 */\n Grid.prototype.positionInit = function () {\n var graph = this.get('graph');\n var minZoom = graph.get('minZoom');\n var width = graph.get('width');\n var height = graph.get('height');\n modifyCSS(this.get('container'), {\n width: \"\".concat(width, \"px\"),\n height: \"\".concat(height, \"px\")\n });\n // 网格 40*40 需保证 (gridContainerWidth / 2) % 40 = 0 才能让网格线对齐左上角 故 * 80\n var gridContainerWidth = width * 80 / minZoom;\n var gridContainerHeight = height * 80 / minZoom;\n modifyCSS(this.get('gridContainer'), {\n width: \"\".concat(gridContainerWidth, \"px\"),\n height: \"\".concat(gridContainerHeight, \"px\"),\n left: \"-\".concat(gridContainerWidth / 2, \"px\"),\n top: \"-\".concat(gridContainerHeight / 2, \"px\")\n });\n };\n // class-methods-use-this\n Grid.prototype.getEvents = function () {\n return {\n viewportchange: 'updateGrid'\n };\n };\n /**\n * viewport change 事件的响应函数\n * @param param\n */\n Grid.prototype.updateGrid = function (param) {\n var gridContainer = this.get('gridContainer');\n var matrix = param.matrix;\n if (!matrix) matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var isFollow = this.get('follow');\n var transform = \"matrix(\".concat(matrix[0], \", \").concat(matrix[1], \", \").concat(matrix[3], \", \").concat(matrix[4], \", \").concat(isFollow ? matrix[6] : '0', \", \").concat(isFollow ? matrix[7] : '0', \")\");\n modifyCSS(gridContainer, {\n transform: transform\n });\n };\n Grid.prototype.getContainer = function () {\n return this.get('container');\n };\n Grid.prototype.destroy = function () {\n var graph = this.get('graph');\n var graphContainer = graph.get('container');\n var container = this.get('container');\n graphContainer.removeChild(container);\n };\n return Grid;\n}(Base);\nexport default Grid;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nimport { modifyCSS, createDom } from '@antv/dom-util';\nimport { isString } from '@antv/util';\nimport insertCss from 'insert-css';\nimport Base from '../base';\ntypeof document !== 'undefined' && insertCss(\"\\n .g6-component-contextmenu {\\n border: 1px solid #e2e2e2;\\n border-radius: 4px;\\n font-size: 12px;\\n color: #545454;\\n background-color: rgba(255, 255, 255, 0.9);\\n padding: 10px 8px;\\n box-shadow: rgb(174, 174, 174) 0px 0px 10px;\\n }\\n .g6-contextmenu-ul {\\n padding: 0;\\n margin: 0;\\n list-style: none;\\n }\\n\\n\");\nvar Menu = /** @class */function (_super) {\n __extends(Menu, _super);\n function Menu(config) {\n return _super.call(this, config) || this;\n }\n Menu.prototype.getDefaultCfgs = function () {\n return {\n offsetX: 6,\n offsetY: 6,\n handleMenuClick: undefined,\n // 指定菜单内容,function(e) {...}\n getContent: function getContent(e) {\n return \"\\n
    \\n
  • \\u83DC\\u5355\\u98791
  • \\n
  • \\u83DC\\u5355\\u98792
  • \\n
\\n \";\n },\n shouldBegin: function shouldBegin(e) {\n return true;\n },\n // 菜单隐藏事件\n onHide: function onHide() {\n return true;\n },\n itemTypes: ['node', 'edge', 'combo'],\n trigger: 'contextmenu'\n };\n };\n // class-methods-use-this\n Menu.prototype.getEvents = function () {\n if (this.get('trigger') === 'click') {\n return {\n click: 'onMenuShow',\n touchend: 'onMenuShow'\n };\n }\n return {\n contextmenu: 'onMenuShow'\n };\n };\n Menu.prototype.init = function () {\n var className = this.get('className');\n var menu = createDom(\"
\"));\n modifyCSS(menu, {\n top: '0px',\n position: 'absolute',\n visibility: 'hidden'\n });\n var container = this.get('container');\n if (!container) {\n container = this.get('graph').get('container');\n }\n if (isString(container)) {\n container = document.getElementById(container);\n }\n container.appendChild(menu);\n this.set('menu', menu);\n };\n Menu.prototype.onMenuShow = function (e) {\n var self = this;\n e.preventDefault();\n var itemTypes = this.get('itemTypes');\n if (!e.item) {\n if (itemTypes.indexOf('canvas') === -1) {\n self.onMenuHide();\n return;\n }\n } else {\n if (e.item && e.item.getType && itemTypes.indexOf(e.item.getType()) === -1) {\n self.onMenuHide();\n return;\n }\n }\n var shouldBegin = this.get('shouldBegin');\n if (!shouldBegin(e)) return;\n var menuDom = this.get('menu');\n var getContent = this.get('getContent');\n var graph = this.get('graph');\n var menu = getContent(e, graph);\n if (isString(menu)) {\n menuDom.innerHTML = menu;\n } else {\n menuDom.innerHTML = menu.outerHTML;\n }\n // 清除之前监听的事件\n this.removeMenuEventListener();\n var handleMenuClick = this.get('handleMenuClick');\n if (handleMenuClick) {\n var handleMenuClickWrapper = function handleMenuClickWrapper(evt) {\n handleMenuClick(evt.target, e.item, graph);\n };\n this.set('handleMenuClickWrapper', handleMenuClickWrapper);\n menuDom.addEventListener('click', handleMenuClickWrapper);\n }\n var width = graph.get('width');\n var height = graph.get('height');\n var bbox = menuDom.getBoundingClientRect();\n var offsetX = this.get('offsetX') || 0;\n var offsetY = this.get('offsetY') || 0;\n var graphTop = graph.getContainer().offsetTop;\n var graphLeft = graph.getContainer().offsetLeft;\n var x = e.canvasX + graphLeft + offsetX;\n var y = e.canvasY + graphTop + offsetY;\n // when the menu is (part of) out of the canvas\n if (x + bbox.width > width) {\n x = e.canvasX - bbox.width - offsetX + graphLeft;\n }\n if (y + bbox.height > height) {\n y = e.canvasY - bbox.height - offsetY + graphTop;\n }\n modifyCSS(menuDom, {\n top: \"\".concat(y, \"px\"),\n left: \"\".concat(x, \"px\"),\n visibility: 'visible'\n });\n // 左键单击会触发 body 上监听的 click 事件,导致菜单展示出来后又立即被隐藏了,需要过滤掉\n var triggeredByFirstClick = this.get('trigger') === 'click';\n var handler = function handler(evt) {\n if (triggeredByFirstClick) {\n triggeredByFirstClick = false;\n return;\n }\n self.onMenuHide();\n };\n // 如果在页面中其他任意地方进行click, 隐去菜单\n document.body.addEventListener('click', handler);\n this.set('handler', handler);\n };\n Menu.prototype.removeMenuEventListener = function () {\n var handleMenuClickWrapper = this.get('handleMenuClickWrapper');\n var handler = this.get('handler');\n if (handleMenuClickWrapper) {\n var menuDom = this.get('menu');\n menuDom.removeEventListener('click', handleMenuClickWrapper);\n this.set('handleMenuClickWrapper', null);\n }\n if (handler) {\n document.body.removeEventListener('click', handler);\n }\n };\n Menu.prototype.onMenuHide = function () {\n var menuDom = this.get('menu');\n if (menuDom) {\n modifyCSS(menuDom, {\n visibility: 'hidden'\n });\n }\n // 隐藏菜单后需要移除事件监听\n this.removeMenuEventListener();\n };\n Menu.prototype.destroy = function () {\n var menu = this.get('menu');\n this.removeMenuEventListener();\n if (menu) {\n var container = this.get('container');\n if (!container) {\n container = this.get('graph').get('container');\n }\n if (isString(container)) {\n container = document.getElementById(container);\n }\n container.removeChild(menu);\n }\n };\n return Menu;\n}(Base);\nexport default Menu;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { Canvas as GCanvas } from '@antv/g-canvas';\nimport { Canvas as GSVGCanvas } from '@antv/g-svg';\nimport { isString, isNil, each, debounce } from '@antv/util';\nimport { createDom, modifyCSS } from '@antv/dom-util';\nimport { ext } from '@antv/matrix-util';\nimport Base from '../base';\nvar max = Math.max;\nvar transform = ext.transform;\nvar DEFAULT_MODE = 'default';\nvar KEYSHAPE_MODE = 'keyShape';\nvar DELEGATE_MODE = 'delegate';\nvar SVG = 'svg';\nvar MiniMap = /** @class */function (_super) {\n __extends(MiniMap, _super);\n function MiniMap(config) {\n var _this = _super.call(this, config) || this;\n /**\n * 主图更新的监听函数,使用 debounce 减少渲染频率\n * e.g. 拖拽节点只会在松手后的 100ms 后执行 updateCanvas\n * e.g. render 时大量 addItem 也只会执行一次 updateCanvas\n */\n _this.handleUpdateCanvas = debounce(function (event) {\n var self = _this;\n if (self.destroyed) return;\n self.updateCanvas();\n }, 100, false);\n return _this;\n }\n MiniMap.prototype.getDefaultCfgs = function () {\n return {\n container: null,\n className: 'g6-minimap',\n viewportClassName: 'g6-minimap-viewport',\n // Minimap 中默认展示和主图一样的内容,KeyShape 只展示节点和边的 key shape 部分,delegate表示展示自定义的rect,用户可自定义样式\n type: 'default',\n padding: 50,\n size: [200, 120],\n delegateStyle: {\n fill: '#40a9ff',\n stroke: '#096dd9'\n },\n refresh: true,\n hideEdge: false\n };\n };\n MiniMap.prototype.getEvents = function () {\n return {\n beforepaint: 'updateViewport',\n beforeanimate: 'disableRefresh',\n afteranimate: 'enableRefresh',\n viewportchange: 'disableOneRefresh'\n };\n };\n // 若是正在进行动画,不刷新缩略图\n MiniMap.prototype.disableRefresh = function () {\n this.set('refresh', false);\n };\n MiniMap.prototype.enableRefresh = function () {\n this.set('refresh', true);\n this.updateCanvas();\n };\n MiniMap.prototype.disableOneRefresh = function () {\n this.set('viewportChange', true);\n };\n MiniMap.prototype.initViewport = function () {\n var _this = this;\n var cfgs = this._cfgs;\n var size = cfgs.size,\n graph = cfgs.graph;\n if (this.destroyed) return;\n var canvas = this.get('canvas');\n var containerDOM = canvas.get('container');\n var isFireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n var isSafari = navigator.userAgent.toLowerCase().indexOf('safari') > -1;\n var viewport = createDom(\"\\n \"));\n // 计算拖拽水平方向距离\n var x = 0;\n // 计算拖拽垂直方向距离\n var y = 0;\n // 是否在拖拽minimap的视口\n var dragging = false;\n // 缓存viewport当前对于画布的x\n var left = 0;\n // 缓存viewport当前对于画布的y\n var top = 0;\n // 缓存viewport当前宽度\n var width = 0;\n // 缓存viewport当前高度\n var height = 0;\n var ratio = 0;\n var zoom = 0;\n var dragstartevent = isSafari || isFireFox ? 'mousedown' : 'dragstart';\n viewport.addEventListener(dragstartevent, function (e) {\n var _a, _b;\n if (e.dataTransfer) {\n var img = new Image();\n img.src = \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' %3E%3Cpath /%3E%3C/svg%3E\";\n (_b = (_a = e.dataTransfer).setDragImage) === null || _b === void 0 ? void 0 : _b.call(_a, img, 0, 0);\n try {\n e.dataTransfer.setData('text/html', 'view-port-minimap');\n } catch (_c) {\n // support IE\n e.dataTransfer.setData('text', 'view-port-minimap');\n }\n }\n cfgs.refresh = false;\n if (e.target !== viewport) {\n return;\n }\n // 如果视口已经最大了,不需要拖拽\n var style = viewport.style;\n left = parseInt(style.left, 10);\n top = parseInt(style.top, 10);\n width = parseInt(style.width, 10);\n height = parseInt(style.height, 10);\n if (width > size[0] || height > size[1]) {\n return;\n }\n zoom = graph.getZoom();\n ratio = _this.get('ratio');\n dragging = true;\n x = e.clientX;\n y = e.clientY;\n }, false);\n var dragListener = function dragListener(e) {\n if (!dragging || isNil(e.clientX) || isNil(e.clientY)) {\n return;\n }\n var dx = x - e.clientX;\n var dy = y - e.clientY;\n // 若视口移动到最左边或最右边了,仅移动到边界\n if (left - dx < 0 || left - dx + width >= size[0]) {\n dx = 0;\n }\n // 若视口移动到最上或最下边了,仅移动到边界\n if (top - dy < 0 || top - dy + height >= size[1]) {\n dy = 0;\n }\n left -= dx;\n top -= dy;\n // 先移动视口,避免移动到边上以后出现视口闪烁\n modifyCSS(viewport, {\n left: \"\".concat(left, \"px\"),\n top: \"\".concat(top, \"px\")\n });\n // graph 移动需要偏移量 dx/dy * 缩放比例才会得到正确的移动距离\n graph.translate(dx * zoom / ratio, dy * zoom / ratio);\n x = e.clientX;\n y = e.clientY;\n };\n if (!isSafari && !isFireFox) {\n viewport.addEventListener('drag', dragListener, false);\n }\n var dragendListener = function dragendListener() {\n dragging = false;\n cfgs.refresh = true;\n };\n var dragendevent = isSafari || isFireFox ? 'mouseup' : 'dragend';\n viewport.addEventListener(dragendevent, dragendListener, false);\n containerDOM.addEventListener('mouseleave', dragendListener);\n containerDOM.addEventListener('mouseup', dragendListener);\n if (isSafari || isFireFox) {\n containerDOM.addEventListener('mousemove', dragListener, false);\n }\n this.set('viewport', viewport);\n containerDOM.appendChild(viewport);\n };\n /**\n * 更新 viewport 视图\n */\n MiniMap.prototype.updateViewport = function () {\n if (this.destroyed) return;\n var ratio = this.get('ratio');\n var totaldx = this.get('totaldx');\n var totaldy = this.get('totaldy');\n var graph = this.get('graph');\n var size = this.get('size');\n var graphCanvasEl = graph.get('canvas').get('el');\n var graphWidth = graph.get('width') || graphCanvasEl.scrollWidth || 500;\n var graphHeight = graph.get('height') || graphCanvasEl.scrollHeight || 500;\n var topLeft = graph.getPointByCanvas(0, 0);\n var bottomRight = graph.getPointByCanvas(graphWidth, graphHeight);\n var viewport = this.get('viewport');\n if (!viewport) {\n this.initViewport();\n }\n // viewport宽高,左上角点的计算\n var width = (bottomRight.x - topLeft.x) * ratio;\n var height = (bottomRight.y - topLeft.y) * ratio;\n var left = topLeft.x * ratio + totaldx;\n var top = topLeft.y * ratio + totaldy;\n var right = left + width;\n var bottom = top + height;\n if (left < 0) {\n width += left;\n left = 0;\n }\n if (right > size[0]) {\n width = width - (right - size[0]);\n }\n if (top < 0) {\n height += top;\n top = 0;\n }\n if (bottom > size[1]) {\n height = height - (bottom - size[1]);\n }\n // 缓存目前缩放比,在移动 minimap 视窗时就不用再计算大图的移动量\n this.set('ratio', ratio);\n var correctLeft = \"\".concat(left, \"px\");\n var correctTop = \"\".concat(top, \"px\");\n modifyCSS(viewport, {\n left: correctLeft,\n top: correctTop,\n width: \"\".concat(width, \"px\"),\n height: \"\".concat(height, \"px\")\n });\n };\n /**\n * 将主图上的图形完全复制到小图\n */\n MiniMap.prototype.updateGraphShapes = function () {\n var graph = this._cfgs.graph;\n var canvas = this.get('canvas');\n var graphGroup = graph.get('group');\n if (graphGroup.destroyed) return;\n canvas.clear();\n var clonedGroup;\n if (this.get('hideEdge')) {\n clonedGroup = canvas.addGroup();\n graphGroup.get('children').forEach(function (group) {\n if (group.get('id').includes('-edge')) return;\n clonedGroup.add(group.clone());\n });\n } else {\n clonedGroup = graphGroup.clone();\n clonedGroup.resetMatrix();\n canvas.add(clonedGroup);\n }\n // 当 renderer 是 svg,由于渲染引擎的 bug,这里需要将 visible 为 false 的元素手动隐藏\n var renderer = graph.get('renderer');\n if (renderer === SVG) {\n // 递归更新子元素\n this.updateVisible(clonedGroup);\n }\n };\n // svg 在 canvas.add(clonedGroup) 之后会出现 visible 为 false 的元素被展示出来,需要递归更新\n MiniMap.prototype.updateVisible = function (ele) {\n var _this = this;\n if (!ele.isGroup() && !ele.get('visible')) {\n ele.hide();\n } else {\n var children = ele.get('children');\n if (!children || !children.length) return;\n children.forEach(function (child) {\n if (!child.get('visible')) child.hide();\n _this.updateVisible(child);\n });\n }\n };\n // 仅在 minimap 上绘制 keyShape\n // FIXME 如果用户自定义绘制了其他内容,minimap上就无法画出\n MiniMap.prototype.updateKeyShapes = function () {\n var _this = this;\n var graph = this._cfgs.graph;\n var canvas = this.get('canvas');\n var group = canvas.get('children')[0] || canvas.addGroup();\n if (!this.get('hideEdge')) {\n each(graph.getEdges(), function (edge) {\n _this.updateOneEdgeKeyShape(edge, group);\n });\n }\n each(graph.getNodes(), function (node) {\n _this.updateOneNodeKeyShape(node, group);\n });\n var combos = graph.getCombos();\n if (combos && combos.length) {\n var comboGroup_1 = group.find(function (e) {\n return e.get('name') === 'comboGroup';\n }) || group.addGroup({\n name: 'comboGroup'\n });\n setTimeout(function () {\n if (_this.destroyed) return;\n each(combos, function (combo) {\n _this.updateOneComboKeyShape(combo, comboGroup_1);\n });\n comboGroup_1 === null || comboGroup_1 === void 0 ? void 0 : comboGroup_1.sort();\n comboGroup_1 === null || comboGroup_1 === void 0 ? void 0 : comboGroup_1.toBack();\n _this.updateCanvas();\n }, 250);\n }\n this.clearDestroyedShapes();\n };\n /**\n * 增加/更新单个元素的 keyShape\n * @param item ICombo 实例\n */\n MiniMap.prototype.updateOneComboKeyShape = function (item, comboGroup) {\n if (this.destroyed) return;\n var itemMap = this.get('itemMap') || {};\n // 差量更新 minimap 上的一个节点,对应主图的 item\n var mappedItem = itemMap[item.get('id')];\n var bbox = item.getBBox(); // 计算了节点父组矩阵的 bbox\n var cKeyShape = item.get('keyShape').clone();\n var keyShapeStyle = cKeyShape.attr();\n var attrs = {\n x: bbox.centerX,\n y: bbox.centerY\n };\n if (!mappedItem) {\n mappedItem = cKeyShape;\n comboGroup.add(mappedItem);\n } else {\n attrs = Object.assign(keyShapeStyle, attrs);\n }\n var shapeType = mappedItem.get('type');\n if (shapeType === 'rect' || shapeType === 'image') {\n attrs.x = bbox.minX;\n attrs.y = bbox.minY;\n }\n mappedItem.attr(attrs);\n if (!item.isVisible()) mappedItem.hide();else mappedItem.show();\n mappedItem.exist = true;\n var zIndex = item.getModel().depth;\n if (!isNaN(zIndex)) mappedItem.set('zIndex', zIndex);\n itemMap[item.get('id')] = mappedItem;\n this.set('itemMap', itemMap);\n };\n /**\n * 增加/更新单个元素的 keyShape\n * @param item INode 实例\n */\n MiniMap.prototype.updateOneNodeKeyShape = function (item, group) {\n var itemMap = this.get('itemMap') || {};\n // 差量更新 minimap 上的一个节点,对应主图的 item\n var mappedItem = itemMap[item.get('id')];\n var bbox = item.getBBox(); // 计算了节点父组矩阵的 bbox\n var cKeyShape = item.get('keyShape').clone();\n var keyShapeStyle = cKeyShape.attr();\n var attrs = {\n x: bbox.centerX,\n y: bbox.centerY\n };\n if (!mappedItem) {\n mappedItem = cKeyShape;\n group.add(mappedItem);\n } else {\n attrs = Object.assign(keyShapeStyle, attrs);\n mappedItem.toFront();\n }\n var shapeType = mappedItem.get('type');\n if (shapeType === 'rect' || shapeType === 'image') {\n attrs.x = bbox.minX;\n attrs.y = bbox.minY;\n }\n mappedItem.attr(attrs);\n if (!item.isVisible()) mappedItem.hide();else mappedItem.show();\n mappedItem.exist = true;\n var zIndex = item.getModel().depth;\n if (!isNaN(zIndex)) mappedItem.set('zIndex', zIndex);\n itemMap[item.get('id')] = mappedItem;\n this.set('itemMap', itemMap);\n };\n /**\n * Minimap 中展示自定义的rect,支持用户自定义样式和节点大小\n */\n MiniMap.prototype.updateDelegateShapes = function () {\n var _this = this;\n var graph = this._cfgs.graph;\n var canvas = this.get('canvas');\n var group = canvas.get('children')[0] || canvas.addGroup();\n // 差量更新 minimap 上的节点和边\n if (!this.get('hideEdge')) {\n each(graph.getEdges(), function (edge) {\n _this.updateOneEdgeKeyShape(edge, group);\n });\n }\n each(graph.getNodes(), function (node) {\n _this.updateOneNodeDelegateShape(node, group);\n });\n var combos = graph.getCombos();\n if (combos && combos.length) {\n var comboGroup_2 = group.find(function (e) {\n return e.get('name') === 'comboGroup';\n }) || group.addGroup({\n name: 'comboGroup'\n });\n setTimeout(function () {\n if (_this.destroyed) return;\n each(combos, function (combo) {\n _this.updateOneComboKeyShape(combo, comboGroup_2);\n });\n comboGroup_2 === null || comboGroup_2 === void 0 ? void 0 : comboGroup_2.sort();\n comboGroup_2 === null || comboGroup_2 === void 0 ? void 0 : comboGroup_2.toBack();\n _this.updateCanvas();\n }, 250);\n }\n this.clearDestroyedShapes();\n };\n MiniMap.prototype.clearDestroyedShapes = function () {\n var itemMap = this.get('itemMap') || {};\n var keys = Object.keys(itemMap);\n if (!keys || keys.length === 0) return;\n for (var i = keys.length - 1; i >= 0; i--) {\n var shape = itemMap[keys[i]];\n var exist = shape.exist;\n shape.exist = false;\n if (!exist) {\n shape.remove();\n delete itemMap[keys[i]];\n }\n }\n };\n /**\n * 设置只显示 edge 的 keyShape\n * @param item IEdge 实例\n */\n MiniMap.prototype.updateOneEdgeKeyShape = function (item, group) {\n var itemMap = this.get('itemMap') || {};\n // 差量更新 minimap 上的一个节点,对应主图的 item\n var mappedItem = itemMap[item.get('id')];\n if (mappedItem) {\n var path = item.get('keyShape').attr('path');\n mappedItem.attr('path', path);\n } else {\n mappedItem = item.get('keyShape').clone();\n group.add(mappedItem);\n }\n if (!item.isVisible()) mappedItem.hide();else mappedItem.show();\n mappedItem.exist = true;\n itemMap[item.get('id')] = mappedItem;\n this.set('itemMap', itemMap);\n };\n /**\n * Minimap 中展示自定义的 rect,支持用户自定义样式和节点大小\n * 增加/更新单个元素\n * @param item INode 实例\n */\n MiniMap.prototype.updateOneNodeDelegateShape = function (item, group) {\n var delegateStyle = this.get('delegateStyle');\n var itemMap = this.get('itemMap') || {};\n // 差量更新 minimap 上的一个节点,对应主图的 item\n var mappedItem = itemMap[item.get('id')];\n var bbox = item.getBBox(); // 计算了节点父组矩阵的 bbox\n if (mappedItem) {\n var attrs = {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.width,\n height: bbox.height\n };\n mappedItem.attr(attrs);\n mappedItem.toFront();\n } else {\n mappedItem = group.addShape('rect', {\n attrs: __assign({\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.width,\n height: bbox.height\n }, delegateStyle),\n name: 'minimap-node-shape'\n });\n }\n if (!item.isVisible()) mappedItem.hide();else mappedItem.show();\n mappedItem.exist = true;\n itemMap[item.get('id')] = mappedItem;\n this.set('itemMap', itemMap);\n };\n MiniMap.prototype.init = function () {\n this.initContainer();\n this.get('graph').on('afterupdateitem', this.handleUpdateCanvas);\n this.get('graph').on('afteritemstatechange', this.handleUpdateCanvas);\n this.get('graph').on('afteradditem', this.handleUpdateCanvas);\n this.get('graph').on('afterremoveitem', this.handleUpdateCanvas);\n this.get('graph').on('afterrender', this.handleUpdateCanvas);\n this.get('graph').on('afterlayout', this.handleUpdateCanvas);\n };\n /**\n * 初始化 Minimap 的容器\n */\n MiniMap.prototype.initContainer = function () {\n var self = this;\n var graph = self.get('graph');\n var size = self.get('size');\n var className = self.get('className');\n var parentNode = self.get('container');\n var container = createDom(\"
\"));\n if (isString(parentNode)) {\n parentNode = document.getElementById(parentNode);\n }\n if (parentNode) {\n parentNode.appendChild(container);\n } else {\n graph.get('container').appendChild(container);\n }\n self.set('container', container);\n var containerDOM = createDom('
');\n container.appendChild(containerDOM);\n containerDOM.addEventListener('dragenter', function (e) {\n e.preventDefault();\n });\n containerDOM.addEventListener('dragover', function (e) {\n e.preventDefault();\n });\n var canvas;\n var renderer = graph.get('renderer');\n if (renderer === SVG) {\n canvas = new GSVGCanvas({\n container: containerDOM,\n width: size[0],\n height: size[1]\n });\n } else {\n canvas = new GCanvas({\n container: containerDOM,\n width: size[0],\n height: size[1]\n });\n }\n self.set('canvas', canvas);\n self.updateCanvas();\n };\n MiniMap.prototype.updateCanvas = function () {\n if (this.destroyed) return;\n // 如果是在动画,则不刷新视图\n var isRefresh = this.get('refresh');\n if (!isRefresh) {\n return;\n }\n var graph = this.get('graph');\n if (graph.get('destroyed')) {\n return;\n }\n // 如果是视口变换,也不刷新视图,但是需要重置视口大小和位置\n if (this.get('viewportChange')) {\n this.set('viewportChange', false);\n this.updateViewport();\n }\n var size = this.get('size'); // 用户定义的 minimap size\n var canvas = this.get('canvas'); // minimap 的 canvas\n var type = this.get('type'); // minimap 的类型\n var padding = this.get('padding'); // 用户额定义的 minimap 的 padding\n if (canvas.destroyed) {\n return;\n }\n switch (type) {\n case DEFAULT_MODE:\n this.updateGraphShapes();\n break;\n case KEYSHAPE_MODE:\n this.updateKeyShapes();\n break;\n case DELEGATE_MODE:\n // 得到的节点直接带有 x 和 y,每个节点不存在父 group,即每个节点位置不由父 group 控制\n this.updateDelegateShapes();\n break;\n default:\n break;\n }\n var group = canvas.get('children')[0];\n if (!group) return;\n group.resetMatrix();\n // 该 bbox 是准确的,不计算 matrix 的包围盒\n var bbox = group.getCanvasBBox();\n var graphBBox = graph.get('canvas').getCanvasBBox(); // 主图的 bbox\n var graphZoom = graph.getZoom() || 1;\n var width = graphBBox.width / graphZoom;\n var height = graphBBox.height / graphZoom;\n if (Number.isFinite(bbox.width)) {\n // 刷新后bbox可能会变,需要重置画布矩阵以缩放到合适的大小\n width = max(bbox.width, width);\n height = max(bbox.height, height);\n }\n width += 2 * padding;\n height += 2 * padding;\n var ratio = Math.min(size[0] / width, size[1] / height);\n var matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var minX = 0;\n var minY = 0;\n // 平移到左上角\n if (Number.isFinite(bbox.minX)) {\n minX = -bbox.minX;\n }\n if (Number.isFinite(bbox.minY)) {\n minY = -bbox.minY;\n }\n // 缩放到适合视口后, 平移到画布中心\n var dx = (size[0] - (width - 2 * padding) * ratio) / 2;\n var dy = (size[1] - (height - 2 * padding) * ratio) / 2;\n matrix = transform(matrix, [['t', minX, minY], ['s', ratio, ratio], ['t', dx, dy] // 移动到画布中心\n ]);\n\n group.setMatrix(matrix);\n // 更新minimap视口\n this.set('ratio', ratio);\n this.set('totaldx', dx + minX * ratio);\n this.set('totaldy', dy + minY * ratio);\n this.set('dx', dx);\n this.set('dy', dy);\n this.updateViewport();\n };\n /**\n * 获取minimap的画布\n * @return {GCanvas} G的canvas实例\n */\n MiniMap.prototype.getCanvas = function () {\n return this.get('canvas');\n };\n /**\n * 获取minimap的窗口\n * @return {HTMLElement} 窗口的dom实例\n */\n MiniMap.prototype.getViewport = function () {\n return this.get('viewport');\n };\n /**\n * 获取minimap的容器dom\n * @return {HTMLElement} dom\n */\n MiniMap.prototype.getContainer = function () {\n return this.get('container');\n };\n MiniMap.prototype.destroy = function () {\n var _a;\n (_a = this.get('canvas')) === null || _a === void 0 ? void 0 : _a.destroy();\n var container = this.get('container');\n if (container === null || container === void 0 ? void 0 : container.parentNode) container.parentNode.removeChild(container);\n };\n return MiniMap;\n}(Base);\nexport default MiniMap;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nimport Base from '../base';\nfunction getEucliDis(pointA, pointB, eps) {\n var vx = pointA.x - pointB.x;\n var vy = pointA.y - pointB.y;\n if (!eps || Math.abs(vx) > eps || Math.abs(vy) > eps) {\n return Math.sqrt(vx * vx + vy * vy);\n }\n return eps;\n}\nfunction getDotProduct(ei, ej) {\n return ei.x * ej.x + ei.y * ej.y;\n}\nfunction projectPointToEdge(p, e) {\n var k = (e.source.y - e.target.y) / (e.source.x - e.target.x);\n var x = (k * k * e.source.x + k * (p.y - e.source.y) + p.x) / (k * k + 1);\n var y = k * (x - e.source.x) + e.source.y;\n return {\n x: x,\n y: y\n };\n}\nvar Bundling = /** @class */function (_super) {\n __extends(Bundling, _super);\n function Bundling(config) {\n return _super.call(this, config) || this;\n }\n Bundling.prototype.getDefaultCfgs = function () {\n return {\n edgeBundles: [],\n edgePoints: [],\n K: 0.1,\n lambda: 0.1,\n divisions: 1,\n divRate: 2,\n cycles: 6,\n iterations: 90,\n iterRate: 0.6666667,\n bundleThreshold: 0.6,\n eps: 1e-6,\n onLayoutEnd: function onLayoutEnd() {},\n onTick: function onTick() {}\n };\n };\n Bundling.prototype.init = function () {\n var graph = this.get('graph');\n var onTick = this.get('onTick');\n var tick = function tick() {\n if (onTick) {\n onTick();\n }\n graph.refreshPositions();\n };\n this.set('tick', tick);\n };\n Bundling.prototype.bundling = function (data) {\n var self = this;\n self.set('data', data);\n // 如果正在布局,忽略布局请求\n if (self.isTicking()) {\n return;\n }\n var edges = data.edges || [];\n var nodes = data.nodes || [];\n var nodeIdMap = {};\n var error = false;\n nodes.forEach(function (node) {\n if (node.x === null || !node.y === null || node.x === undefined || !node.y === undefined) {\n error = true;\n }\n nodeIdMap[node.id] = node;\n });\n if (error) throw new Error('please layout the graph or assign x and y for nodes first');\n self.set('nodeIdMap', nodeIdMap);\n // subdivide each edges\n var divisions = self.get('divisions');\n var divRate = self.get('divRate');\n var edgePoints = self.divideEdges(divisions);\n self.set('edgePoints', edgePoints);\n // compute the bundles\n var edgeBundles = self.getEdgeBundles();\n self.set('edgeBundles', edgeBundles);\n // iterations\n var C = self.get('cycles');\n var iterations = self.get('iterations');\n var iterRate = self.get('iterRate');\n var lambda = self.get('lambda');\n for (var i = 0; i < C; i++) {\n var _loop_1 = function _loop_1(j) {\n var forces = [];\n edges.forEach(function (e, k) {\n if (e.source === e.target) return;\n var source = nodeIdMap[e.source];\n var target = nodeIdMap[e.target];\n forces[k] = self.getEdgeForces({\n source: source,\n target: target\n }, k, divisions, lambda);\n for (var p = 0; p < divisions + 1; p++) {\n edgePoints[k][p].x += forces[k][p].x;\n edgePoints[k][p].y += forces[k][p].y;\n }\n });\n };\n for (var j = 0; j < iterations; j++) {\n _loop_1(j);\n }\n // parameters for nex cycle\n lambda = lambda / 2;\n divisions *= divRate;\n iterations *= iterRate;\n edgePoints = self.divideEdges(divisions);\n self.set('edgePoints', edgePoints);\n }\n // change the edges according to edgePoints\n edges.forEach(function (e, i) {\n if (e.source === e.target) return;\n e.type = 'polyline';\n e.controlPoints = edgePoints[i].slice(1, edgePoints[i].length - 1);\n });\n var graph = self.get('graph');\n graph.refresh();\n };\n Bundling.prototype.updateBundling = function (cfg) {\n var self = this;\n var data = cfg.data;\n if (data) {\n self.set('data', data);\n }\n if (self.get('ticking')) {\n self.set('ticking', false);\n }\n Object.keys(cfg).forEach(function (key) {\n self.set(key, cfg[key]);\n });\n if (cfg.onTick) {\n var graph_1 = this.get('graph');\n self.set('tick', function () {\n cfg.onTick();\n graph_1.refresh();\n });\n }\n self.bundling(data);\n };\n Bundling.prototype.divideEdges = function (divisions) {\n var self = this;\n var edges = self.get('data').edges;\n var nodeIdMap = self.get('nodeIdMap');\n var edgePoints = self.get('edgePoints');\n if (!edgePoints || edgePoints === undefined) edgePoints = [];\n edges.forEach(function (edge, i) {\n var _a;\n if (!edgePoints[i] || edgePoints[i] === undefined) {\n edgePoints[i] = [];\n }\n var source = nodeIdMap[edge.source];\n var target = nodeIdMap[edge.target];\n if (divisions === 1) {\n edgePoints[i].push({\n x: source.x,\n y: source.y\n }); // source\n edgePoints[i].push({\n x: 0.5 * (source.x + target.x),\n y: 0.5 * (source.y + target.y)\n }); // mid\n edgePoints[i].push({\n x: target.x,\n y: target.y\n }); // target\n } else {\n var edgeLength = 0;\n if (!((_a = edgePoints[i]) === null || _a === void 0 ? void 0 : _a.length)) {\n // it is a straight line\n edgeLength = getEucliDis({\n x: source.x,\n y: source.y\n }, {\n x: target.x,\n y: target.y\n });\n } else {\n edgeLength = self.getEdgeLength(edgePoints[i]);\n }\n var divisionLength_1 = edgeLength / (divisions + 1);\n var currentDivisonLength_1 = divisionLength_1;\n var newEdgePoints_1 = [{\n x: source.x,\n y: source.y\n }]; // source\n edgePoints[i].forEach(function (ep, j) {\n if (j === 0) return;\n var oriDivisionLength = getEucliDis(ep, edgePoints[i][j - 1]);\n while (oriDivisionLength > currentDivisonLength_1) {\n var ratio = currentDivisonLength_1 / oriDivisionLength;\n var edgePoint = {\n x: edgePoints[i][j - 1].x,\n y: edgePoints[i][j - 1].y\n };\n edgePoint.x += ratio * (ep.x - edgePoints[i][j - 1].x);\n edgePoint.y += ratio * (ep.y - edgePoints[i][j - 1].y);\n newEdgePoints_1.push(edgePoint);\n oriDivisionLength -= currentDivisonLength_1;\n currentDivisonLength_1 = divisionLength_1;\n }\n currentDivisonLength_1 -= oriDivisionLength;\n });\n newEdgePoints_1.push({\n x: target.x,\n y: target.y\n }); // target\n edgePoints[i] = newEdgePoints_1;\n }\n });\n return edgePoints;\n };\n /**\n * 计算边的长度\n * @param points\n */\n Bundling.prototype.getEdgeLength = function (points) {\n var length = 0;\n points.forEach(function (p, i) {\n if (i === 0) return;\n length += getEucliDis(p, points[i - 1]);\n });\n return length;\n };\n Bundling.prototype.getEdgeBundles = function () {\n var self = this;\n var data = self.get('data');\n var edges = data.edges || [];\n var bundleThreshold = self.get('bundleThreshold');\n var nodeIdMap = self.get('nodeIdMap');\n var edgeBundles = self.get('edgeBundles');\n if (!edgeBundles) edgeBundles = [];\n edges.forEach(function (e, i) {\n if (!edgeBundles[i] || edgeBundles[i] === undefined) {\n edgeBundles[i] = [];\n }\n });\n edges.forEach(function (ei, i) {\n var iSource = nodeIdMap[ei.source];\n var iTarget = nodeIdMap[ei.target];\n edges.forEach(function (ej, j) {\n if (j <= i) return;\n var jSource = nodeIdMap[ej.source];\n var jTarget = nodeIdMap[ej.target];\n var score = self.getBundleScore({\n source: iSource,\n target: iTarget\n }, {\n source: jSource,\n target: jTarget\n });\n if (score >= bundleThreshold) {\n edgeBundles[i].push(j);\n edgeBundles[j].push(i);\n }\n });\n });\n return edgeBundles;\n };\n Bundling.prototype.getBundleScore = function (ei, ej) {\n var self = this;\n ei.vx = ei.target.x - ei.source.x;\n ei.vy = ei.target.y - ei.source.y;\n ej.vx = ej.target.x - ej.source.x;\n ej.vy = ej.target.y - ej.source.y;\n ei.length = getEucliDis({\n x: ei.source.x,\n y: ei.source.y\n }, {\n x: ei.target.x,\n y: ei.target.y\n });\n ej.length = getEucliDis({\n x: ej.source.x,\n y: ej.source.y\n }, {\n x: ej.target.x,\n y: ej.target.y\n });\n // angle score\n var aScore = self.getAngleScore(ei, ej);\n // scale score\n var sScore = self.getScaleScore(ei, ej);\n // position score\n var pScore = self.getPositionScore(ei, ej);\n // visibility socre\n var vScore = self.getVisibilityScore(ei, ej);\n return aScore * sScore * pScore * vScore;\n };\n Bundling.prototype.getAngleScore = function (ei, ej) {\n var dotProduct = getDotProduct({\n x: ei.vx,\n y: ei.vy\n }, {\n x: ej.vx,\n y: ej.vy\n });\n return dotProduct / (ei.length * ej.length);\n };\n Bundling.prototype.getScaleScore = function (ei, ej) {\n var aLength = (ei.length + ej.length) / 2;\n var score = 2 / (aLength / Math.min(ei.length, ej.length) + Math.max(ei.length, ej.length) / aLength);\n return score;\n };\n Bundling.prototype.getPositionScore = function (ei, ej) {\n var aLength = (ei.length + ej.length) / 2;\n var iMid = {\n x: (ei.source.x + ei.target.x) / 2,\n y: (ei.source.y + ei.target.y) / 2\n };\n var jMid = {\n x: (ej.source.x + ej.target.x) / 2,\n y: (ej.source.y + ej.target.y) / 2\n };\n var distance = getEucliDis(iMid, jMid);\n return aLength / (aLength + distance);\n };\n Bundling.prototype.getVisibilityScore = function (ei, ej) {\n var vij = this.getEdgeVisibility(ei, ej);\n var vji = this.getEdgeVisibility(ej, ei);\n return vij < vji ? vij : vji;\n };\n Bundling.prototype.getEdgeVisibility = function (ei, ej) {\n var ps = projectPointToEdge(ej.source, ei);\n var pt = projectPointToEdge(ej.target, ei);\n var pMid = {\n x: (ps.x + pt.x) / 2,\n y: (ps.y + pt.y) / 2\n };\n var iMid = {\n x: (ei.source.x + ei.target.x) / 2,\n y: (ei.source.y + ei.target.y) / 2\n };\n return Math.max(0, 1 - 2 * getEucliDis(pMid, iMid) / getEucliDis(ps, pt));\n };\n Bundling.prototype.getEdgeForces = function (e, eidx, divisions, lambda) {\n var self = this;\n var edgePoints = self.get('edgePoints');\n var K = self.get('K');\n var kp = K / (getEucliDis(e.source, e.target) * (divisions + 1));\n var edgePointForces = [{\n x: 0,\n y: 0\n }];\n for (var i = 1; i < divisions; i++) {\n var force = {\n x: 0,\n y: 0\n };\n var spring = self.getSpringForce({\n pre: edgePoints[eidx][i - 1],\n cur: edgePoints[eidx][i],\n next: edgePoints[eidx][i + 1]\n }, kp);\n var electrostatic = self.getElectrostaticForce(i, eidx);\n force.x = lambda * (spring.x + electrostatic.x);\n force.y = lambda * (spring.y + electrostatic.y);\n edgePointForces.push(force);\n }\n edgePointForces.push({\n x: 0,\n y: 0\n });\n return edgePointForces;\n };\n Bundling.prototype.getSpringForce = function (divisions, kp) {\n var x = divisions.pre.x + divisions.next.x - 2 * divisions.cur.x;\n var y = divisions.pre.y + divisions.next.y - 2 * divisions.cur.y;\n x *= kp;\n y *= kp;\n return {\n x: x,\n y: y\n };\n };\n Bundling.prototype.getElectrostaticForce = function (pidx, eidx) {\n var self = this;\n var eps = self.get('eps');\n var edgeBundles = self.get('edgeBundles');\n var edgePoints = self.get('edgePoints');\n var edgeBundle = edgeBundles[eidx];\n var resForce = {\n x: 0,\n y: 0\n };\n edgeBundle.forEach(function (eb) {\n var force = {\n x: edgePoints[eb][pidx].x - edgePoints[eidx][pidx].x,\n y: edgePoints[eb][pidx].y - edgePoints[eidx][pidx].y\n };\n if (Math.abs(force.x) > eps || Math.abs(force.y) > eps) {\n var length_1 = getEucliDis(edgePoints[eb][pidx], edgePoints[eidx][pidx]);\n var diff = 1 / length_1;\n resForce.x += force.x * diff;\n resForce.y += force.y * diff;\n }\n });\n return resForce;\n };\n Bundling.prototype.isTicking = function () {\n return this.get('ticking');\n };\n Bundling.prototype.getSimulation = function () {\n return this.get('forceSimulation');\n };\n Bundling.prototype.destroy = function () {\n if (this.get('ticking')) {\n this.getSimulation().stop();\n }\n _super.prototype.destroy.call(this);\n };\n return Bundling;\n}(Base);\nexport default Bundling;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { clone } from '@antv/util';\nimport Base from '../base';\nvar DELTA = 0.05;\nvar lensDelegateStyle = {\n stroke: '#000',\n strokeOpacity: 0.8,\n lineWidth: 2,\n fillOpacity: 0.1,\n fill: '#ccc'\n};\nvar Fisheye = /** @class */function (_super) {\n __extends(Fisheye, _super);\n function Fisheye(config) {\n return _super.call(this, config) || this;\n }\n Fisheye.prototype.getDefaultCfgs = function () {\n return {\n trigger: 'mousemove',\n d: 1.5,\n r: 300,\n delegateStyle: clone(lensDelegateStyle),\n showLabel: false,\n maxD: 5,\n minD: 0,\n scaleRBy: 'unset',\n scaleDBy: 'unset',\n showDPercent: true\n };\n };\n // class-methods-use-this\n Fisheye.prototype.getEvents = function () {\n var events;\n switch (this.get('trigger')) {\n case 'click':\n events = {\n click: 'magnify'\n };\n break;\n case 'drag':\n events = {\n click: 'createDelegate'\n };\n break;\n default:\n events = {\n mousemove: 'magnify'\n };\n break;\n }\n return events;\n };\n Fisheye.prototype.init = function () {\n var self = this;\n var r = self.get('r');\n self.set('cachedMagnifiedModels', []);\n self.set('cachedOriginPositions', {});\n self.set('r2', r * r);\n var d = self.get('d');\n self.set('molecularParam', (d + 1) * r);\n };\n // Create the delegate when the trigger is drag\n Fisheye.prototype.createDelegate = function (e) {\n var _this = this;\n var self = this;\n var lensDelegate = self.get('delegate');\n if (!lensDelegate || lensDelegate.destroyed) {\n self.magnify(e);\n lensDelegate = self.get('delegate');\n // drag to move the lens\n lensDelegate.on('dragstart', function (evt) {\n self.set('delegateCenterDiff', {\n x: lensDelegate.attr('x') - evt.x,\n y: lensDelegate.attr('y') - evt.y\n });\n });\n lensDelegate.on('drag', function (evt) {\n self.magnify(evt);\n });\n // 绑定调整范围(r)和缩放系数(d)的监听\n // 由于 drag 用于改变 lens 位置, 因此在此模式下, drag 不能用于调整 r 和 d\n // scaling d\n if (this.get('scaleDBy') === 'wheel') {\n lensDelegate.on('mousewheel', function (evt) {\n _this.scaleDByWheel(evt);\n });\n }\n // scaling r\n if (this.get('scaleRBy') === 'wheel') {\n lensDelegate.on('mousewheel', function (evt) {\n self.scaleRByWheel(evt);\n });\n }\n }\n };\n /**\n * Scale the range by wheel\n * @param e mouse wheel event\n */\n Fisheye.prototype.scaleRByWheel = function (e) {\n var self = this;\n if (!e || !e.originalEvent) return;\n if (e.preventDefault) e.preventDefault();\n var graph = self.get('graph');\n var ratio;\n var lensDelegate = self.get('delegate');\n var lensCenter = lensDelegate ? {\n x: lensDelegate.attr('x'),\n y: lensDelegate.attr('y')\n } : undefined;\n var mousePos = lensCenter || graph.getPointByClient(e.clientX, e.clientY);\n if (e.originalEvent.wheelDelta < 0) {\n ratio = 1 - DELTA;\n } else {\n ratio = 1 / (1 - DELTA);\n }\n var maxR = self.get('maxR');\n var minR = self.get('minR');\n var r = self.get('r');\n if (r > (maxR || graph.get('height')) && ratio > 1 || r < (minR || graph.get('height') * 0.05) && ratio < 1) {\n ratio = 1;\n }\n r *= ratio;\n self.set('r', r);\n self.set('r2', r * r);\n var d = self.get('d');\n self.set('molecularParam', (d + 1) * r);\n self.set('delegateCenterDiff', undefined);\n self.magnify(e, mousePos);\n };\n /**\n * Scale the range by dragging\n * @param e mouse event\n */\n Fisheye.prototype.scaleRByDrag = function (e) {\n var self = this;\n if (!e) return;\n var dragPrePos = self.get('dragPrePos');\n var graph = self.get('graph');\n var ratio;\n var mousePos = graph.getPointByClient(e.clientX, e.clientY);\n if (e.x - dragPrePos.x < 0) {\n ratio = 1 - DELTA;\n } else {\n ratio = 1 / (1 - DELTA);\n }\n var maxR = self.get('maxR');\n var minR = self.get('minR');\n var r = self.get('r');\n if (r > (maxR || graph.get('height')) && ratio > 1 || r < (minR || graph.get('height') * 0.05) && ratio < 1) {\n ratio = 1;\n }\n r *= ratio;\n self.set('r', r);\n self.set('r2', r * r);\n var d = self.get('d');\n self.set('molecularParam', (d + 1) * r);\n self.magnify(e, mousePos);\n self.set('dragPrePos', {\n x: e.x,\n y: e.y\n });\n };\n /**\n * Scale the magnifying factor by wheel\n * @param e mouse wheel event\n */\n Fisheye.prototype.scaleDByWheel = function (evt) {\n var self = this;\n if (!evt && !evt.originalEvent) return;\n if (evt.preventDefault) evt.preventDefault();\n var delta = 0;\n if (evt.originalEvent.wheelDelta < 0) {\n delta = -0.1;\n } else {\n delta = 0.1;\n }\n var d = self.get('d');\n var newD = d + delta;\n var maxD = self.get('maxD');\n var minD = self.get('minD');\n if (newD < maxD && newD > minD) {\n self.set('d', newD);\n var r = self.get('r');\n self.set('molecularParam', (newD + 1) * r);\n var lensDelegate = self.get('delegate');\n var lensCenter = lensDelegate ? {\n x: lensDelegate.attr('x'),\n y: lensDelegate.attr('y')\n } : undefined;\n self.set('delegateCenterDiff', undefined);\n self.magnify(evt, lensCenter);\n }\n };\n /**\n * Scale the magnifying factor by dragging\n * @param e mouse event\n */\n Fisheye.prototype.scaleDByDrag = function (e) {\n var self = this;\n var dragPrePos = self.get('dragPrePos');\n var delta = e.x - dragPrePos.x > 0 ? 0.1 : -0.1;\n var d = self.get('d');\n var newD = d + delta;\n var maxD = self.get('maxD');\n var minD = self.get('minD');\n if (newD < maxD && newD > minD) {\n self.set('d', newD);\n var r = self.get('r');\n self.set('molecularParam', (newD + 1) * r);\n self.magnify(e);\n }\n self.set('dragPrePos', {\n x: e.x,\n y: e.y\n });\n };\n /**\n * Response function for mousemove, click, or drag to magnify\n * @param e mouse event\n */\n Fisheye.prototype.magnify = function (e, mousePos) {\n var self = this;\n self.restoreCache();\n var graph = self.get('graph');\n var cachedMagnifiedModels = self.get('cachedMagnifiedModels');\n var cachedOriginPositions = self.get('cachedOriginPositions');\n var showLabel = self.get('showLabel');\n var r = self.get('r');\n var r2 = self.get('r2');\n var d = self.get('d');\n var molecularParam = self.get('molecularParam');\n var nodes = graph.getNodes();\n var nodeLength = nodes.length;\n var mCenter = mousePos ? {\n x: mousePos.x,\n y: mousePos.y\n } : {\n x: e.x,\n y: e.y\n };\n if (self.get('dragging') && (self.get('trigger') === 'mousemove' || self.get('trigger') === 'click')) {\n mCenter = self.get('cacheCenter');\n }\n var delegateCenterDiff = self.get('delegateCenterDiff');\n if (delegateCenterDiff) {\n mCenter.x += delegateCenterDiff.x;\n mCenter.y += delegateCenterDiff.y;\n }\n self.updateDelegate(mCenter, r);\n for (var i = 0; i < nodeLength; i++) {\n var model = nodes[i].getModel();\n var x = model.x,\n y = model.y;\n if (isNaN(x) || isNaN(y)) continue;\n // the square of the distance between the node and the magnified center\n var dist2 = (x - mCenter.x) * (x - mCenter.x) + (y - mCenter.y) * (y - mCenter.y);\n if (!isNaN(dist2) && dist2 < r2 && dist2 !== 0) {\n var dist = Math.sqrt(dist2);\n // (r * (d + 1) * (dist / r)) / (d * (dist / r) + 1);\n var magnifiedDist = molecularParam * dist / (d * dist + r);\n var cos = (x - mCenter.x) / dist;\n var sin = (y - mCenter.y) / dist;\n model.x = cos * magnifiedDist + mCenter.x;\n model.y = sin * magnifiedDist + mCenter.y;\n if (!cachedOriginPositions[model.id]) {\n cachedOriginPositions[model.id] = {\n x: x,\n y: y,\n texts: []\n };\n }\n cachedMagnifiedModels.push(model);\n if (showLabel && 2 * dist < r) {\n var node = nodes[i];\n var nodeGroup = node.getContainer();\n var shapes = nodeGroup.getChildren();\n var shapeLength = shapes.length;\n for (var j = 0; j < shapeLength; j++) {\n var shape = shapes[j];\n if (shape.get('type') === 'text') {\n cachedOriginPositions[model.id].texts.push({\n visible: shape.get('visible'),\n shape: shape\n });\n shape.set('visible', true);\n }\n }\n }\n }\n }\n graph.refreshPositions();\n };\n /**\n * Restore the cache nodes while magnifying\n */\n Fisheye.prototype.restoreCache = function () {\n var self = this;\n var cachedMagnifiedModels = self.get('cachedMagnifiedModels');\n var cachedOriginPositions = self.get('cachedOriginPositions');\n var cacheLength = cachedMagnifiedModels.length;\n for (var i = 0; i < cacheLength; i++) {\n var node = cachedMagnifiedModels[i];\n var id = node.id;\n var ori = cachedOriginPositions[id];\n node.x = ori.x;\n node.y = ori.y;\n var textLength = ori.texts.length;\n for (var j = 0; j < textLength; j++) {\n var text = ori.texts[j];\n text.shape.set('visible', text.visible);\n }\n }\n self.set('cachedMagnifiedModels', []);\n self.set('cachedOriginPositions', {});\n };\n /**\n * Adjust part of the parameters, including trigger, d, r, maxR, minR, maxD, minD, scaleRBy, and scaleDBy\n * @param {FisheyeConfig} cfg\n */\n Fisheye.prototype.updateParams = function (cfg) {\n var self = this;\n var r = cfg.r,\n d = cfg.d,\n trigger = cfg.trigger,\n minD = cfg.minD,\n maxD = cfg.maxD,\n minR = cfg.minR,\n maxR = cfg.maxR,\n scaleDBy = cfg.scaleDBy,\n scaleRBy = cfg.scaleRBy;\n if (!isNaN(cfg.r)) {\n self.set('r', r);\n self.set('r2', r * r);\n }\n if (!isNaN(d)) {\n self.set('d', d);\n }\n if (!isNaN(maxD)) {\n self.set('maxD', maxD);\n }\n if (!isNaN(minD)) {\n self.set('minD', minD);\n }\n if (!isNaN(maxR)) {\n self.set('maxR', maxR);\n }\n if (!isNaN(minR)) {\n self.set('minR', minR);\n }\n var nd = self.get('d');\n var nr = self.get('r');\n self.set('molecularParam', (nd + 1) * nr);\n if (trigger === 'mousemove' || trigger === 'click' || trigger === 'drag') {\n self.set('trigger', trigger);\n }\n if (scaleDBy === 'drag' || scaleDBy === 'wheel' || scaleDBy === 'unset') {\n self.set('scaleDBy', scaleDBy);\n self.get('delegate').remove();\n self.get('delegate').destroy();\n var dPercentText = self.get('dPercentText');\n if (dPercentText) {\n dPercentText.remove();\n dPercentText.destroy();\n }\n }\n if (scaleRBy === 'drag' || scaleRBy === 'wheel' || scaleRBy === 'unset') {\n self.set('scaleRBy', scaleRBy);\n self.get('delegate').remove();\n self.get('delegate').destroy();\n var dPercentText = self.get('dPercentText');\n if (dPercentText) {\n dPercentText.remove();\n dPercentText.destroy();\n }\n }\n };\n /**\n * Update the delegate shape of the lens\n * @param {Point} mCenter the center of the shape\n * @param {number} r the radius of the shape\n */\n Fisheye.prototype.updateDelegate = function (mCenter, r) {\n var _this = this;\n var self = this;\n var graph = self.get('graph');\n var lensDelegate = self.get('delegate');\n if (!lensDelegate || lensDelegate.destroyed) {\n // 拖动多个\n var parent_1 = graph.get('group');\n var attrs = self.get('delegateStyle') || lensDelegateStyle;\n // model上的x, y是相对于图形中心的, delegateShape是g实例, x,y是绝对坐标\n lensDelegate = parent_1.addShape('circle', {\n attrs: __assign({\n r: r / 1.5,\n x: mCenter.x,\n y: mCenter.y\n }, attrs),\n name: 'lens-shape',\n draggable: true\n });\n if (this.get('trigger') !== 'drag') {\n // 调整范围 r 的监听\n if (this.get('scaleRBy') === 'wheel') {\n // 使用滚轮调整 r\n lensDelegate.on('mousewheel', function (evt) {\n self.scaleRByWheel(evt);\n });\n } else if (this.get('scaleRBy') === 'drag') {\n // 使用拖拽调整 r\n lensDelegate.on('dragstart', function (e) {\n self.set('dragging', true);\n self.set('cacheCenter', {\n x: e.x,\n y: e.y\n });\n self.set('dragPrePos', {\n x: e.x,\n y: e.y\n });\n });\n lensDelegate.on('drag', function (evt) {\n self.scaleRByDrag(evt);\n });\n lensDelegate.on('dragend', function (e) {\n self.set('dragging', false);\n });\n }\n // 调整缩放系数 d 的监听\n if (this.get('scaleDBy') === 'wheel') {\n // 使用滚轮调整 d\n lensDelegate.on('mousewheel', function (evt) {\n _this.scaleDByWheel(evt);\n });\n } else if (this.get('scaleDBy') === 'drag') {\n // 使用拖拽调整 d\n lensDelegate.on('dragstart', function (evt) {\n self.set('dragging', true);\n self.set('cacheCenter', {\n x: evt.x,\n y: evt.y\n });\n self.set('dragPrePos', {\n x: evt.x,\n y: evt.y\n });\n });\n lensDelegate.on('drag', function (evt) {\n _this.scaleDByDrag(evt);\n });\n lensDelegate.on('dragend', function (evt) {\n self.set('dragging', false);\n });\n }\n }\n } else {\n lensDelegate.attr({\n x: mCenter.x,\n y: mCenter.y,\n r: r / 1.5\n });\n }\n // 绘制缩放系数百分比文本\n if (self.get('showDPercent')) {\n var percent = Math.round((self.get('d') - self.get('minD')) / (self.get('maxD') - self.get('minD')) * 100);\n var dPercentText = self.get('dPercentText');\n var textY = mCenter.y + r / 1.5 + 16;\n if (!dPercentText || dPercentText.destroyed) {\n var parent_2 = graph.get('group');\n dPercentText = parent_2.addShape('text', {\n attrs: {\n text: \"\".concat(percent, \"%\"),\n x: mCenter.x,\n y: textY,\n fill: '#aaa',\n stroke: '#fff',\n lineWidth: 1,\n fontSize: 12\n }\n });\n self.set('dPercentText', dPercentText);\n } else {\n dPercentText.attr({\n text: \"\".concat(percent, \"%\"),\n x: mCenter.x,\n y: textY\n });\n }\n }\n self.set('delegate', lensDelegate);\n };\n /**\n * Clear the fisheye lens\n */\n Fisheye.prototype.clear = function () {\n var graph = this.get('graph');\n this.restoreCache();\n graph.refreshPositions();\n var lensDelegate = this.get('delegate');\n if (lensDelegate && !lensDelegate.destroyed) {\n lensDelegate.remove();\n lensDelegate.destroy();\n }\n var dPercentText = this.get('dPercentText');\n if (dPercentText && !dPercentText.destroyed) {\n dPercentText.remove();\n dPercentText.destroy();\n }\n };\n /**\n * Destroy the component\n */\n Fisheye.prototype.destroy = function () {\n this.clear();\n };\n return Fisheye;\n}(Base);\nexport default Fisheye;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nimport { modifyCSS, createDom } from '@antv/dom-util';\nimport { clone, isString } from '@antv/util';\nimport Base from '../base';\nimport insertCss from 'insert-css';\nvar DELTA = 0.05;\ntypeof document !== 'undefined' && insertCss(\"\\n .g6-component-toolbar {\\n position: absolute;\\n list-style-type: none;\\n padding: 6px;\\n left: 0px;\\n top: 0px;\\n background-color: rgba(255, 255, 255, 0.9);\\n border: 1px solid #e2e2e2;\\n border-radius: 4px;\\n font-size: 12px;\\n color: #545454;\\n margin: 0;\\n }\\n .g6-component-toolbar li {\\n float: left;\\n text-align: center;\\n width: 35px;\\n height: 24px;\\n cursor: pointer;\\n\\t\\tlist-style-type:none;\\n list-style: none;\\n margin-left: 0px;\\n }\\n .g6-component-toolbar li .icon {\\n opacity: 0.7;\\n }\\n .g6-component-toolbar li .icon:hover {\\n opacity: 1;\\n }\\n\");\nvar getEventPath = function getEventPath(evt) {\n if (!evt) {\n return [];\n }\n if (evt.composedPath) {\n return evt.composedPath();\n }\n var path = [];\n var el = evt.target;\n while (el) {\n path.push(el);\n if (el.tagName === 'HTML') {\n path.push(document, window);\n return path;\n }\n el = el.parentElement;\n }\n return path;\n};\nvar ToolBar = /** @class */function (_super) {\n __extends(ToolBar, _super);\n function ToolBar(config) {\n return _super.call(this, config) || this;\n }\n ToolBar.prototype.getDefaultCfgs = function () {\n return {\n handleClick: undefined,\n // 指定菜单内容,function(e) {...}\n getContent: function getContent(graph) {\n return \"\\n
    \\n
  • \\n \\n \\n \\n
  • \\n
  • \\n \\n \\n \\n
  • \\n
  • \\n \\n \\n \\n
  • \\n
  • \\n \\n \\n \\n
  • \\n
  • \\n \\n \\n \\n
  • \\n
  • \\n \\n \\n \\n
  • \\n
\\n \";\n },\n zoomSensitivity: 2\n };\n };\n ToolBar.prototype.init = function () {\n var _this = this;\n var graph = this.get('graph');\n var getContent = this.get('getContent');\n var toolBar = getContent(graph);\n var toolBarDOM = toolBar;\n if (isString(toolBar)) {\n toolBarDOM = createDom(toolBar);\n }\n var className = this.get('className');\n toolBarDOM.setAttribute('class', className || 'g6-component-toolbar');\n var container = this.get('container');\n if (!container) {\n container = this.get('graph').get('container');\n }\n if (isString(container)) {\n container = document.getElementById(container);\n }\n container.appendChild(toolBarDOM);\n this.set('toolBar', toolBarDOM);\n var handleClick = this.get('handleClick');\n toolBarDOM.addEventListener('click', function (evt) {\n var current = getEventPath(evt).filter(function (p) {\n return p.nodeName === 'LI';\n });\n if (current.length === 0) {\n return;\n }\n var code = current[0].getAttribute('code');\n if (!code) {\n return;\n }\n if (handleClick) {\n handleClick(code, graph);\n } else {\n _this.handleDefaultOperator(code);\n }\n });\n var pos = this.get('position');\n if (pos) {\n modifyCSS(toolBarDOM, {\n top: \"\".concat(pos.y, \"px\"),\n left: \"\".concat(pos.x, \"px\")\n });\n }\n this.bindUndoRedo();\n };\n ToolBar.prototype.bindUndoRedo = function () {\n var graph = this.get('graph');\n var undoDom = document.querySelector('.g6-component-toolbar li[code=\"undo\"]');\n var undoDomIcon = document.querySelector('.g6-component-toolbar li[code=\"undo\"] svg');\n var redoDom = document.querySelector('.g6-component-toolbar li[code=\"redo\"]');\n var redoDomIcon = document.querySelector('.g6-component-toolbar li[code=\"redo\"] svg');\n if (!undoDom || !undoDomIcon || !redoDom || !redoDomIcon) {\n return;\n }\n // initialy disabled redo and undo icons\n undoDom.setAttribute('style', 'cursor: not-allowed');\n undoDomIcon.setAttribute('style', 'opacity: 0.4');\n redoDom.setAttribute('style', 'cursor: not-allowed');\n redoDomIcon.setAttribute('style', 'opacity: 0.4');\n graph.on('stackchange', function (evt) {\n var undoStack = evt.undoStack,\n redoStack = evt.redoStack;\n var undoStackLen = undoStack.length;\n var redoStackLen = redoStack.length;\n // undo 不可用\n if (undoStackLen === 0) {\n undoDom.setAttribute('style', 'cursor: not-allowed');\n undoDomIcon.setAttribute('style', 'opacity: 0.4');\n } else {\n undoDom.removeAttribute('style');\n undoDomIcon.removeAttribute('style');\n }\n // redo 不可用\n if (redoStackLen === 0) {\n redoDom.setAttribute('style', 'cursor: not-allowed');\n redoDomIcon.setAttribute('style', 'opacity: 0.4');\n } else {\n redoDom.removeAttribute('style');\n redoDomIcon.removeAttribute('style');\n }\n });\n };\n /**\n * undo 操作\n */\n ToolBar.prototype.undo = function () {\n var graph = this.get('graph');\n var undoStack = graph.getUndoStack();\n if (!undoStack || undoStack.length === 0) {\n return;\n }\n var currentData = undoStack.pop();\n if (currentData) {\n var action = currentData.action;\n graph.pushStack(action, clone(currentData.data), 'redo');\n var data_1 = currentData.data.before;\n if (action === 'add') {\n data_1 = currentData.data.after;\n }\n if (!data_1) return;\n switch (action) {\n case 'visible':\n {\n Object.keys(data_1).forEach(function (key) {\n var array = data_1[key];\n if (!array) return;\n array.forEach(function (model) {\n var item = graph.findById(model.id);\n if (model.visible) {\n graph.showItem(item, false);\n } else {\n graph.hideItem(item, false);\n }\n });\n });\n break;\n }\n case 'render':\n case 'update':\n Object.keys(data_1).forEach(function (key) {\n var array = data_1[key];\n if (!array) return;\n array.forEach(function (model) {\n var item = graph.findById(model.id);\n delete model.id;\n graph.updateItem(item, model, false);\n if (item.getType() === 'combo') graph.updateCombo(item);\n });\n });\n break;\n case 'changedata':\n graph.changeData(data_1, false);\n break;\n case 'delete':\n {\n Object.keys(data_1).forEach(function (key) {\n var array = data_1[key];\n if (!array) return;\n array.forEach(function (model) {\n var itemType = model.itemType;\n delete model.itemType;\n graph.addItem(itemType, model, false);\n });\n });\n break;\n }\n case 'add':\n Object.keys(data_1).forEach(function (key) {\n var array = data_1[key];\n if (!array) return;\n array.forEach(function (model) {\n graph.removeItem(model.id, false);\n });\n });\n break;\n case 'updateComboTree':\n Object.keys(data_1).forEach(function (key) {\n var array = data_1[key];\n if (!array) return;\n array.forEach(function (model) {\n graph.updateComboTree(model.id, model.parentId, false);\n });\n });\n break;\n case 'createCombo':\n var afterCombos = currentData.data.after.combos;\n var createdCombo = afterCombos[afterCombos.length - 1];\n Object.keys(data_1).forEach(function (key) {\n var array = data_1[key];\n if (!array) return;\n array.forEach(function (model) {\n graph.updateComboTree(model.id, model.parentId, false);\n });\n });\n graph.removeItem(createdCombo.id, false);\n break;\n case 'uncombo':\n var targetCombo_1 = data_1.combos[data_1.combos.length - 1];\n var childrenIds = data_1.nodes.concat(data_1.combos).map(function (child) {\n return child.id;\n }).filter(function (id) {\n return id !== targetCombo_1.id;\n });\n graph.createCombo(targetCombo_1, childrenIds, false);\n break;\n case 'layout':\n graph.updateLayout(data_1, undefined, undefined, false);\n break;\n default:\n }\n }\n };\n /**\n * redo 操作\n */\n ToolBar.prototype.redo = function () {\n var graph = this.get('graph');\n var redoStack = graph.getRedoStack();\n if (!redoStack || redoStack.length === 0) {\n return;\n }\n var currentData = redoStack.pop();\n if (currentData) {\n var action = currentData.action;\n var data_2 = currentData.data.after;\n graph.pushStack(action, clone(currentData.data));\n if (action === 'delete') {\n data_2 = currentData.data.before;\n }\n if (!data_2) return;\n switch (action) {\n case 'visible':\n {\n Object.keys(data_2).forEach(function (key) {\n var array = data_2[key];\n if (!array) return;\n array.forEach(function (model) {\n var item = graph.findById(model.id);\n if (model.visible) {\n graph.showItem(item, false);\n } else {\n graph.hideItem(item, false);\n }\n });\n });\n break;\n }\n case 'render':\n case 'update':\n Object.keys(data_2).forEach(function (key) {\n var array = data_2[key];\n if (!array) return;\n array.forEach(function (model) {\n var item = graph.findById(model.id);\n delete model.id;\n graph.updateItem(item, model, false);\n if (item.getType() === 'combo') graph.updateCombo(item);\n });\n });\n break;\n case 'changedata':\n graph.changeData(data_2, false);\n break;\n case 'delete':\n if (data_2.edges) {\n data_2.edges.forEach(function (model) {\n graph.removeItem(model.id, false);\n });\n }\n if (data_2.nodes) {\n data_2.nodes.forEach(function (model) {\n graph.removeItem(model.id, false);\n });\n }\n if (data_2.combos) {\n data_2.combos.forEach(function (model) {\n graph.removeItem(model.id, false);\n });\n }\n break;\n case 'add':\n {\n Object.keys(data_2).forEach(function (key) {\n var array = data_2[key];\n if (!array) return;\n array.forEach(function (model) {\n var itemType = model.itemType;\n delete model.itemType;\n graph.addItem(itemType, model, false);\n });\n });\n break;\n }\n case 'updateComboTree':\n Object.keys(data_2).forEach(function (key) {\n var array = data_2[key];\n if (!array) return;\n array.forEach(function (model) {\n graph.updateComboTree(model.id, model.parentId, false);\n });\n });\n break;\n case 'createCombo':\n var createdCombo = data_2.combos[data_2.combos.length - 1];\n graph.createCombo(createdCombo, createdCombo.children.map(function (child) {\n return child.id;\n }), false);\n break;\n case 'uncombo':\n var beforeCombos = currentData.data.before.combos;\n var targertCombo = beforeCombos[beforeCombos.length - 1];\n graph.uncombo(targertCombo.id, false);\n break;\n case 'layout':\n graph.updateLayout(data_2, undefined, undefined, false);\n break;\n default:\n }\n }\n };\n /**\n * zoomOut 操作\n */\n ToolBar.prototype.zoomOut = function () {\n var graph = this.get('graph');\n var currentZoom = graph.getZoom();\n var ratioOut = 1 / (1 - DELTA * this.get('zoomSensitivity'));\n var maxZoom = this.get('maxZoom') || graph.get('maxZoom');\n if (ratioOut * currentZoom > maxZoom) {\n return;\n }\n graph.zoomTo(currentZoom * ratioOut);\n };\n /**\n * zoomIn 操作\n */\n ToolBar.prototype.zoomIn = function () {\n var graph = this.get('graph');\n var currentZoom = graph.getZoom();\n var ratioIn = 1 - DELTA * this.get('zoomSensitivity');\n var minZoom = this.get('minZoom') || graph.get('minZoom');\n if (ratioIn * currentZoom < minZoom) {\n return;\n }\n graph.zoomTo(currentZoom * ratioIn);\n };\n /**\n * realZoom 操作\n */\n ToolBar.prototype.realZoom = function () {\n var graph = this.get('graph');\n graph.zoomTo(1);\n };\n /**\n * autoZoom 操作\n */\n ToolBar.prototype.autoZoom = function () {\n var graph = this.get('graph');\n graph.fitView([20, 20]);\n };\n /**\n * 根据 Toolbar 上不同类型对图进行操作\n * @param code 操作类型编码\n * @param graph Graph 实例\n */\n ToolBar.prototype.handleDefaultOperator = function (code) {\n switch (code) {\n case 'redo':\n this.redo();\n break;\n case 'undo':\n this.undo();\n break;\n case 'zoomOut':\n this.zoomOut();\n break;\n case 'zoomIn':\n this.zoomIn();\n break;\n case 'realZoom':\n this.realZoom();\n break;\n case 'autoZoom':\n this.autoZoom();\n break;\n default:\n }\n };\n ToolBar.prototype.destroy = function () {\n var toolBar = this.get('toolBar');\n if (toolBar) {\n var container = this.get('container');\n if (!container) {\n container = this.get('graph').get('container');\n }\n if (isString(container)) {\n container = document.getElementById(container);\n }\n container.removeChild(toolBar);\n }\n var handleClick = this.get('handleClick');\n if (handleClick) {\n toolBar.removeEventListener('click', handleClick);\n }\n };\n return ToolBar;\n}(Base);\nexport default ToolBar;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nimport { modifyCSS, createDom } from '@antv/dom-util';\nimport { isArray, isString } from '@antv/util';\nimport insertCss from 'insert-css';\nimport Base from '../base';\ntypeof document !== 'undefined' && insertCss(\"\\n .g6-component-tooltip {\\n border: 1px solid #e2e2e2;\\n border-radius: 4px;\\n font-size: 12px;\\n color: #545454;\\n background-color: rgba(255, 255, 255, 0.9);\\n padding: 10px 8px;\\n box-shadow: rgb(174, 174, 174) 0px 0px 10px;\\n }\\n .tooltip-type {\\n padding: 0;\\n margin: 0;\\n }\\n .tooltip-id {\\n color: #531dab;\\n }\\n\");\nvar Tooltip = /** @class */function (_super) {\n __extends(Tooltip, _super);\n function Tooltip(config) {\n return _super.call(this, config) || this;\n }\n Tooltip.prototype.getDefaultCfgs = function () {\n return {\n offsetX: 6,\n offsetY: 6,\n // 指定菜单内容,function(e) {...}\n getContent: function getContent(e) {\n return \"\\n

\\u7C7B\\u578B\\uFF1A\".concat(e.item.getType(), \"

\\n ID\\uFF1A\").concat(e.item.getID(), \"\\n \");\n },\n shouldBegin: function shouldBegin(e) {\n return true;\n },\n itemTypes: ['node', 'edge', 'combo'],\n trigger: 'mouseenter',\n fixToNode: undefined\n };\n };\n // class-methods-use-this\n Tooltip.prototype.getEvents = function () {\n if (this.get('trigger') === 'click') {\n return {\n 'node:click': 'onClick',\n 'edge:click': 'onClick',\n 'combo:click': 'onClick',\n 'canvas:click': 'onMouseLeave',\n afterremoveitem: 'onMouseLeave',\n contextmenu: 'onMouseLeave',\n drag: 'onMouseLeave'\n };\n }\n return {\n 'node:mouseenter': 'onMouseEnter',\n 'node:mouseleave': 'onMouseLeave',\n 'node:mousemove': 'onMouseMove',\n 'edge:mouseenter': 'onMouseEnter',\n 'edge:mouseleave': 'onMouseLeave',\n 'edge:mousemove': 'onMouseMove',\n 'combo:mouseenter': 'onMouseEnter',\n 'combo:mouseleave': 'onMouseLeave',\n 'combo:mousemove': 'onMouseMove',\n afterremoveitem: 'onMouseLeave',\n contextmenu: 'onMouseLeave',\n 'node:drag': 'onMouseLeave'\n };\n };\n Tooltip.prototype.init = function () {\n var self = this;\n var className = self.get('className') || 'g6-component-tooltip';\n var tooltip = createDom(\"
\"));\n var container = self.get('container');\n if (!container) {\n container = self.get('graph').get('container');\n }\n if (isString(container)) {\n container = document.getElementById(container);\n }\n modifyCSS(tooltip, {\n position: 'absolute',\n visibility: 'hidden',\n display: 'none'\n });\n container.appendChild(tooltip);\n if (self.get('trigger') !== 'click') {\n tooltip.addEventListener('mouseenter', function (e) {\n modifyCSS(tooltip, {\n visibility: 'visible',\n display: 'unset'\n });\n });\n tooltip.addEventListener('mouseleave', function (e) {\n self.hideTooltip();\n });\n }\n self.set('tooltip', tooltip);\n };\n Tooltip.prototype.onClick = function (e) {\n var itemTypes = this.get('itemTypes');\n if (e.item && e.item.getType && itemTypes.indexOf(e.item.getType()) === -1) return;\n var item = e.item;\n var graph = this.get('graph');\n // 若与上一次同一 item,隐藏该 tooltip\n if (this.currentTarget === item) {\n this.currentTarget = null;\n this.hideTooltip();\n graph.emit('tooltipchange', {\n item: e.item,\n action: 'hide'\n });\n } else {\n this.currentTarget = item;\n this.showTooltip(e);\n graph.emit('tooltipchange', {\n item: e.item,\n action: 'show'\n });\n }\n };\n Tooltip.prototype.onMouseEnter = function (e) {\n var itemTypes = this.get('itemTypes');\n if (e.item && e.item.getType && itemTypes.indexOf(e.item.getType()) === -1) return;\n var item = e.item;\n var graph = this.get('graph');\n this.currentTarget = item;\n this.showTooltip(e);\n graph.emit('tooltipchange', {\n item: e.item,\n action: 'show'\n });\n };\n Tooltip.prototype.onMouseMove = function (e) {\n var itemTypes = this.get('itemTypes');\n if (e.item && e.item.getType && itemTypes.indexOf(e.item.getType()) === -1) return;\n if (!this.currentTarget || e.item !== this.currentTarget) {\n return;\n }\n this.showTooltip(e);\n };\n Tooltip.prototype.onMouseLeave = function () {\n this.hideTooltip();\n var graph = this.get('graph');\n graph.emit('tooltipchange', {\n item: this.currentTarget,\n action: 'hide'\n });\n this.currentTarget = null;\n };\n Tooltip.prototype.clearContainer = function () {\n var container = this.get('tooltip');\n if (container) {\n container.innerHTML = '';\n }\n };\n Tooltip.prototype.showTooltip = function (e) {\n if (!e.item) {\n return;\n }\n var itemTypes = this.get('itemTypes');\n if (e.item.getType && itemTypes.indexOf(e.item.getType()) === -1) return;\n var container = this.get('tooltip');\n var getContent = this.get('getContent');\n var tooltip = getContent(e);\n if (isString(tooltip)) {\n container.innerHTML = tooltip;\n } else {\n this.clearContainer();\n container.appendChild(tooltip);\n }\n this.updatePosition(e);\n };\n Tooltip.prototype.hideTooltip = function () {\n var tooltip = this.get('tooltip');\n if (tooltip) {\n modifyCSS(tooltip, {\n visibility: 'hidden',\n display: 'none'\n });\n }\n };\n Tooltip.prototype.updatePosition = function (e) {\n var shouldBegin = this.get('shouldBegin');\n var tooltip = this.get('tooltip');\n if (!shouldBegin(e)) {\n modifyCSS(tooltip, {\n visibility: 'hidden',\n display: 'none'\n });\n return;\n }\n var graph = this.get('graph');\n var width = graph.get('width');\n var height = graph.get('height');\n var offsetX = this.get('offsetX') || 0;\n var offsetY = this.get('offsetY') || 0;\n var point = graph.getPointByClient(e.clientX, e.clientY);\n var fixToNode = this.get('fixToNode');\n var item = e.item;\n if (item.getType && item.getType() === 'node' && fixToNode && isArray(fixToNode) && fixToNode.length >= 2) {\n var itemBBox = item.getBBox();\n point = {\n x: itemBBox.minX + itemBBox.width * fixToNode[0],\n y: itemBBox.minY + itemBBox.height * fixToNode[1]\n };\n }\n var _a = graph.getCanvasByPoint(point.x, point.y),\n x = _a.x,\n y = _a.y;\n var graphContainer = graph.getContainer();\n var res = {\n x: x + graphContainer.offsetLeft + offsetX,\n y: y + graphContainer.offsetTop + offsetY\n };\n // 先修改为 visible 方可正确计算 bbox\n modifyCSS(tooltip, {\n visibility: 'visible',\n display: 'unset'\n });\n var bbox = tooltip.getBoundingClientRect();\n if (x + bbox.width + offsetX > width) {\n res.x -= bbox.width + offsetX;\n }\n if (y + bbox.height + offsetY > height) {\n res.y -= bbox.height + offsetY;\n }\n modifyCSS(tooltip, {\n left: \"\".concat(res.x, \"px\"),\n top: \"\".concat(res.y, \"px\")\n });\n };\n Tooltip.prototype.hide = function () {\n this.onMouseLeave();\n };\n Tooltip.prototype.destroy = function () {\n var tooltip = this.get('tooltip');\n if (tooltip) {\n var container = this.get('container');\n if (!container) {\n container = this.get('graph').get('container');\n }\n if (isString(container)) {\n container = document.getElementById(container);\n }\n container.removeChild(tooltip);\n }\n };\n return Tooltip;\n}(Base);\nexport default Tooltip;","import { TickMethod } from '../types';\ninterface MethodMap {\n [key: string]: TickMethod;\n}\nconst methodCache: MethodMap = {};\n\n/**\n * 获取计算 ticks 的方法\n * @param key 键值\n * @returns 计算 ticks 的方法\n */\nexport function getTickMethod(key: string): TickMethod {\n return methodCache[key];\n}\n\n/**\n * 注册计算 ticks 的方法\n * @param key 键值\n * @param method 方法\n */\nexport function registerTickMethod(key: string, method: TickMethod) {\n methodCache[key] = method;\n}\n","import { assign, isEmpty, isFunction, isNil, isNumber, isObject, isString, map } from '@antv/util';\nimport { getTickMethod } from './tick-method/register';\nimport { ScaleConfig, Tick } from './types';\nexport default abstract class Scale {\n /**\n * 度量的类型\n */\n public type: string = 'base';\n /**\n * 是否分类类型的度量\n */\n public isCategory?: boolean = false;\n /**\n * 是否线性度量,有linear, time 度量\n */\n public isLinear?: boolean = false;\n /**\n * 是否连续类型的度量,linear,time,log, pow, quantile, quantize 都支持\n */\n public isContinuous?: boolean = false;\n /**\n * 是否是常量的度量,传入和传出一致\n */\n public isIdentity: boolean = false;\n\n public field?: ScaleConfig['field'];\n public alias?: ScaleConfig['alias'];\n public values: ScaleConfig['values'] = [];\n public min?: ScaleConfig['min'];\n public max?: ScaleConfig['max'];\n public minLimit?: ScaleConfig['minLimit'];\n public maxLimit?: ScaleConfig['maxLimit'];\n public range: ScaleConfig['range'] = [0, 1];\n public ticks: ScaleConfig['ticks'] = [];\n public tickCount: ScaleConfig['tickCount'];\n public tickInterval: ScaleConfig['tickInterval'];\n public formatter?: ScaleConfig['formatter'];\n public tickMethod?: ScaleConfig['tickMethod'];\n protected __cfg__: ScaleConfig; // 缓存的旧配置, 用于 clone\n\n constructor(cfg: ScaleConfig) {\n this.__cfg__ = cfg;\n this.initCfg();\n this.init();\n }\n\n // 对于原始值的必要转换,如分类、时间字段需转换成数值,用transform/map命名可能更好\n public translate(v: any) {\n return v;\n }\n\n /** 将定义域转换为值域 */\n public abstract scale(value: any): number;\n\n /** 将值域转换为定义域 */\n public abstract invert(scaled: number): any;\n\n /** 重新初始化 */\n public change(cfg: ScaleConfig) {\n // 覆盖配置项,而不替代\n assign(this.__cfg__, cfg);\n this.init();\n }\n\n public clone(): Scale {\n return this.constructor(this.__cfg__);\n }\n\n /** 获取坐标轴需要的ticks */\n public getTicks(): Tick[] {\n return map(this.ticks, (tick: any, idx: number) => {\n if (isObject(tick)) {\n // 仅当符合Tick类型时才有意义\n return tick as Tick;\n }\n return {\n text: this.getText(tick, idx),\n tickValue: tick, // 原始value\n value: this.scale(tick), // scaled\n };\n });\n }\n\n /** 获取Tick的格式化结果 */\n public getText(value: any, key?: number): string {\n const formatter = this.formatter;\n const res = formatter ? formatter(value, key) : value;\n if (isNil(res) || !isFunction(res.toString)) {\n return '';\n }\n return res.toString();\n }\n\n // 获取配置项中的值,当前 scale 上的值可能会被修改\n protected getConfig(key) {\n return this.__cfg__[key];\n }\n\n // scale初始化\n protected init(): void {\n assign(this, this.__cfg__);\n this.setDomain();\n if (isEmpty(this.getConfig('ticks'))) {\n this.ticks = this.calculateTicks();\n }\n }\n\n // 子类上覆盖某些属性,不能直接在类上声明,否则会被覆盖\n protected initCfg() {}\n\n protected setDomain(): void {}\n\n protected calculateTicks(): any[] {\n const tickMethod = this.tickMethod;\n let ticks = [];\n if (isString(tickMethod)) {\n const method = getTickMethod(tickMethod);\n if (!method) {\n throw new Error('There is no method to to calculate ticks!');\n }\n ticks = method(this);\n } else if (isFunction(tickMethod)) {\n ticks = tickMethod(this);\n }\n return ticks;\n }\n\n // range 的最小值\n protected rangeMin() {\n return this.range[0];\n }\n\n // range 的最大值\n protected rangeMax() {\n return this.range[1];\n }\n\n /** 定义域转 0~1 */\n protected calcPercent(value: any, min: number, max: number): number {\n if (isNumber(value)) {\n return (value - min) / (max - min);\n }\n return NaN;\n }\n\n /** 0~1转定义域 */\n protected calcValue(percent: number, min: number, max: number): number {\n return min + percent * (max - min);\n }\n}\n","import { indexOf, isNil, isNumber } from '@antv/util';\nimport Base from '../base';\n\n/**\n * 分类度量\n * @class\n */\nclass Category extends Base {\n public readonly type: string = 'cat';\n public readonly isCategory: boolean = true;\n\n // 用于缓存 translate 函数\n private translateIndexMap;\n\n private buildIndexMap() {\n if (!this.translateIndexMap) {\n this.translateIndexMap = new Map();\n // 重新构建缓存\n for (let i = 0; i < this.values.length; i ++) {\n this.translateIndexMap.set(this.values[i], i);\n }\n }\n }\n\n public translate(value: any): number {\n // 按需构建 map\n this.buildIndexMap();\n // 找得到\n let idx = this.translateIndexMap.get(value);\n \n if (idx === undefined) {\n idx = isNumber(value) ? value : NaN;\n }\n return idx;\n }\n\n public scale(value: any): number {\n const order = this.translate(value);\n // 分类数据允许 0.5 范围内调整\n // if (order < this.min - 0.5 || order > this.max + 0.5) {\n // return NaN;\n // }\n const percent = this.calcPercent(order, this.min, this.max);\n return this.calcValue(percent, this.rangeMin(), this.rangeMax());\n }\n\n public invert(scaledValue: number) {\n const domainRange = this.max - this.min;\n const percent = this.calcPercent(scaledValue, this.rangeMin(), this.rangeMax());\n const idx = Math.round(domainRange * percent) + this.min;\n if (idx < this.min || idx > this.max) {\n return NaN;\n }\n return this.values[idx];\n }\n\n public getText(value: any, ...args: any[]): string {\n let v = value;\n // value为index\n if (isNumber(value) && !this.values.includes(value)) {\n v = this.values[v];\n }\n return super.getText(v, ...args);\n }\n // 复写属性\n protected initCfg() {\n this.tickMethod = 'cat';\n }\n // 设置 min, max\n protected setDomain() {\n // 用户有可能设置 min\n if (isNil(this.getConfig('min'))) {\n this.min = 0;\n }\n if (isNil(this.getConfig('max'))) {\n const size = this.values.length;\n this.max = size > 1 ? size - 1 : size;\n }\n\n // scale.init 的时候清除缓存\n if (this.translateIndexMap) {\n this.translateIndexMap = undefined;\n }\n }\n}\n\nexport default Category;\n","const token = /d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|Z|([HhMsDm])\\1?|[aA]|\"[^\"]*\"|'[^']*'/g;\nconst twoDigitsOptional = \"\\\\d\\\\d?\";\nconst twoDigits = \"\\\\d\\\\d\";\nconst threeDigits = \"\\\\d{3}\";\nconst fourDigits = \"\\\\d{4}\";\nconst word = \"[^\\\\s]+\";\nconst literal = /\\[([^]*?)\\]/gm;\n\ntype DateInfo = {\n year: number;\n month: number;\n day: number;\n hour: number;\n minute: number;\n second: number;\n millisecond: number;\n isPm: number | null;\n timezoneOffset: number | null;\n};\n\nexport type I18nSettings = {\n amPm: [string, string];\n dayNames: Days;\n dayNamesShort: Days;\n monthNames: Months;\n monthNamesShort: Months;\n DoFn(dayOfMonth: number): string;\n};\n\nexport type I18nSettingsOptional = Partial;\n\nexport type Days = [string, string, string, string, string, string, string];\nexport type Months = [\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string\n];\n\nfunction shorten(arr: T, sLen: number): string[] {\n const newArr: string[] = [];\n for (let i = 0, len = arr.length; i < len; i++) {\n newArr.push(arr[i].substr(0, sLen));\n }\n return newArr;\n}\n\nconst monthUpdate = (\n arrName: \"monthNames\" | \"monthNamesShort\" | \"dayNames\" | \"dayNamesShort\"\n) => (v: string, i18n: I18nSettings): number | null => {\n const lowerCaseArr = i18n[arrName].map(v => v.toLowerCase());\n const index = lowerCaseArr.indexOf(v.toLowerCase());\n if (index > -1) {\n return index;\n }\n return null;\n};\n\nexport function assign(a: A): A;\nexport function assign(a: A, b: B): A & B;\nexport function assign(a: A, b: B, c: C): A & B & C;\nexport function assign(a: A, b: B, c: C, d: D): A & B & C & D;\nexport function assign(origObj: any, ...args: any[]): any {\n for (const obj of args) {\n for (const key in obj) {\n // @ts-ignore ex\n origObj[key] = obj[key];\n }\n }\n return origObj;\n}\n\nconst dayNames: Days = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n];\nconst monthNames: Months = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n];\n\nconst monthNamesShort: Months = shorten(monthNames, 3) as Months;\nconst dayNamesShort: Days = shorten(dayNames, 3) as Days;\n\nconst defaultI18n: I18nSettings = {\n dayNamesShort,\n dayNames,\n monthNamesShort,\n monthNames,\n amPm: [\"am\", \"pm\"],\n DoFn(dayOfMonth: number) {\n return (\n dayOfMonth +\n [\"th\", \"st\", \"nd\", \"rd\"][\n dayOfMonth % 10 > 3\n ? 0\n : ((dayOfMonth - (dayOfMonth % 10) !== 10 ? 1 : 0) * dayOfMonth) % 10\n ]\n );\n }\n};\nlet globalI18n = assign({}, defaultI18n);\nconst setGlobalDateI18n = (i18n: I18nSettingsOptional): I18nSettings =>\n (globalI18n = assign(globalI18n, i18n));\n\nconst regexEscape = (str: string): string =>\n str.replace(/[|\\\\{()[^$+*?.-]/g, \"\\\\$&\");\n\nconst pad = (val: string | number, len = 2): string => {\n val = String(val);\n while (val.length < len) {\n val = \"0\" + val;\n }\n return val;\n};\n\nconst formatFlags: Record<\n string,\n (dateObj: Date, i18n: I18nSettings) => string\n> = {\n D: (dateObj: Date): string => String(dateObj.getDate()),\n DD: (dateObj: Date): string => pad(dateObj.getDate()),\n Do: (dateObj: Date, i18n: I18nSettings): string =>\n i18n.DoFn(dateObj.getDate()),\n d: (dateObj: Date): string => String(dateObj.getDay()),\n dd: (dateObj: Date): string => pad(dateObj.getDay()),\n ddd: (dateObj: Date, i18n: I18nSettings): string =>\n i18n.dayNamesShort[dateObj.getDay()],\n dddd: (dateObj: Date, i18n: I18nSettings): string =>\n i18n.dayNames[dateObj.getDay()],\n M: (dateObj: Date): string => String(dateObj.getMonth() + 1),\n MM: (dateObj: Date): string => pad(dateObj.getMonth() + 1),\n MMM: (dateObj: Date, i18n: I18nSettings): string =>\n i18n.monthNamesShort[dateObj.getMonth()],\n MMMM: (dateObj: Date, i18n: I18nSettings): string =>\n i18n.monthNames[dateObj.getMonth()],\n YY: (dateObj: Date): string =>\n pad(String(dateObj.getFullYear()), 4).substr(2),\n YYYY: (dateObj: Date): string => pad(dateObj.getFullYear(), 4),\n h: (dateObj: Date): string => String(dateObj.getHours() % 12 || 12),\n hh: (dateObj: Date): string => pad(dateObj.getHours() % 12 || 12),\n H: (dateObj: Date): string => String(dateObj.getHours()),\n HH: (dateObj: Date): string => pad(dateObj.getHours()),\n m: (dateObj: Date): string => String(dateObj.getMinutes()),\n mm: (dateObj: Date): string => pad(dateObj.getMinutes()),\n s: (dateObj: Date): string => String(dateObj.getSeconds()),\n ss: (dateObj: Date): string => pad(dateObj.getSeconds()),\n S: (dateObj: Date): string =>\n String(Math.round(dateObj.getMilliseconds() / 100)),\n SS: (dateObj: Date): string =>\n pad(Math.round(dateObj.getMilliseconds() / 10), 2),\n SSS: (dateObj: Date): string => pad(dateObj.getMilliseconds(), 3),\n a: (dateObj: Date, i18n: I18nSettings): string =>\n dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1],\n A: (dateObj: Date, i18n: I18nSettings): string =>\n dateObj.getHours() < 12\n ? i18n.amPm[0].toUpperCase()\n : i18n.amPm[1].toUpperCase(),\n ZZ(dateObj: Date): string {\n const offset = dateObj.getTimezoneOffset();\n return (\n (offset > 0 ? \"-\" : \"+\") +\n pad(Math.floor(Math.abs(offset) / 60) * 100 + (Math.abs(offset) % 60), 4)\n );\n },\n Z(dateObj: Date): string {\n const offset = dateObj.getTimezoneOffset();\n return (\n (offset > 0 ? \"-\" : \"+\") +\n pad(Math.floor(Math.abs(offset) / 60), 2) +\n \":\" +\n pad(Math.abs(offset) % 60, 2)\n );\n }\n};\n\ntype ParseInfo = [\n keyof DateInfo,\n string,\n ((v: string, i18n: I18nSettings) => number | null)?,\n string?\n];\nconst monthParse = (v: string): number => +v - 1;\nconst emptyDigits: ParseInfo = [null, twoDigitsOptional];\nconst emptyWord: ParseInfo = [null, word];\nconst amPm: ParseInfo = [\n \"isPm\",\n word,\n (v: string, i18n: I18nSettings): number | null => {\n const val = v.toLowerCase();\n if (val === i18n.amPm[0]) {\n return 0;\n } else if (val === i18n.amPm[1]) {\n return 1;\n }\n return null;\n }\n];\nconst timezoneOffset: ParseInfo = [\n \"timezoneOffset\",\n \"[^\\\\s]*?[\\\\+\\\\-]\\\\d\\\\d:?\\\\d\\\\d|[^\\\\s]*?Z?\",\n (v: string): number | null => {\n const parts = (v + \"\").match(/([+-]|\\d\\d)/gi);\n\n if (parts) {\n const minutes = +parts[1] * 60 + parseInt(parts[2], 10);\n return parts[0] === \"+\" ? minutes : -minutes;\n }\n\n return 0;\n }\n];\nconst parseFlags: Record = {\n D: [\"day\", twoDigitsOptional],\n DD: [\"day\", twoDigits],\n Do: [\"day\", twoDigitsOptional + word, (v: string): number => parseInt(v, 10)],\n M: [\"month\", twoDigitsOptional, monthParse],\n MM: [\"month\", twoDigits, monthParse],\n YY: [\n \"year\",\n twoDigits,\n (v: string): number => {\n const now = new Date();\n const cent = +(\"\" + now.getFullYear()).substr(0, 2);\n return +(\"\" + (+v > 68 ? cent - 1 : cent) + v);\n }\n ],\n h: [\"hour\", twoDigitsOptional, undefined, \"isPm\"],\n hh: [\"hour\", twoDigits, undefined, \"isPm\"],\n H: [\"hour\", twoDigitsOptional],\n HH: [\"hour\", twoDigits],\n m: [\"minute\", twoDigitsOptional],\n mm: [\"minute\", twoDigits],\n s: [\"second\", twoDigitsOptional],\n ss: [\"second\", twoDigits],\n YYYY: [\"year\", fourDigits],\n S: [\"millisecond\", \"\\\\d\", (v: string): number => +v * 100],\n SS: [\"millisecond\", twoDigits, (v: string): number => +v * 10],\n SSS: [\"millisecond\", threeDigits],\n d: emptyDigits,\n dd: emptyDigits,\n ddd: emptyWord,\n dddd: emptyWord,\n MMM: [\"month\", word, monthUpdate(\"monthNamesShort\")],\n MMMM: [\"month\", word, monthUpdate(\"monthNames\")],\n a: amPm,\n A: amPm,\n ZZ: timezoneOffset,\n Z: timezoneOffset\n};\n\n// Some common format strings\nconst globalMasks: { [key: string]: string } = {\n default: \"ddd MMM DD YYYY HH:mm:ss\",\n shortDate: \"M/D/YY\",\n mediumDate: \"MMM D, YYYY\",\n longDate: \"MMMM D, YYYY\",\n fullDate: \"dddd, MMMM D, YYYY\",\n isoDate: \"YYYY-MM-DD\",\n isoDateTime: \"YYYY-MM-DDTHH:mm:ssZ\",\n shortTime: \"HH:mm\",\n mediumTime: \"HH:mm:ss\",\n longTime: \"HH:mm:ss.SSS\"\n};\nconst setGlobalDateMasks = (masks: {\n [key: string]: string;\n}): { [key: string]: string } => assign(globalMasks, masks);\n\n/***\n * Format a date\n * @method format\n * @param {Date|number} dateObj\n * @param {string} mask Format of the date, i.e. 'mm-dd-yy' or 'shortDate'\n * @returns {string} Formatted date string\n */\nconst format = (\n dateObj: Date,\n mask: string = globalMasks[\"default\"],\n i18n: I18nSettingsOptional = {}\n): string => {\n if (typeof dateObj === \"number\") {\n dateObj = new Date(dateObj);\n }\n\n if (\n Object.prototype.toString.call(dateObj) !== \"[object Date]\" ||\n isNaN(dateObj.getTime())\n ) {\n throw new Error(\"Invalid Date pass to format\");\n }\n\n mask = globalMasks[mask] || mask;\n\n const literals: string[] = [];\n\n // Make literals inactive by replacing them with @@@\n mask = mask.replace(literal, function($0, $1) {\n literals.push($1);\n return \"@@@\";\n });\n\n const combinedI18nSettings: I18nSettings = assign(\n assign({}, globalI18n),\n i18n\n );\n // Apply formatting rules\n mask = mask.replace(token, $0 =>\n formatFlags[$0](dateObj, combinedI18nSettings)\n );\n // Inline literal values back into the formatted value\n return mask.replace(/@@@/g, () => literals.shift());\n};\n\n/**\n * Parse a date string into a Javascript Date object /\n * @method parse\n * @param {string} dateStr Date string\n * @param {string} format Date parse format\n * @param {i18n} I18nSettingsOptional Full or subset of I18N settings\n * @returns {Date|null} Returns Date object. Returns null what date string is invalid or doesn't match format\n */\nfunction parse(\n dateStr: string,\n format: string,\n i18n: I18nSettingsOptional = {}\n): Date | null {\n if (typeof format !== \"string\") {\n throw new Error(\"Invalid format in fecha parse\");\n }\n\n // Check to see if the format is actually a mask\n format = globalMasks[format] || format;\n\n // Avoid regular expression denial of service, fail early for really long strings\n // https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS\n if (dateStr.length > 1000) {\n return null;\n }\n\n // Default to the beginning of the year.\n const today = new Date();\n const dateInfo: DateInfo = {\n year: today.getFullYear(),\n month: 0,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n isPm: null,\n timezoneOffset: null\n };\n const parseInfo: ParseInfo[] = [];\n const literals: string[] = [];\n\n // Replace all the literals with @@@. Hopefully a string that won't exist in the format\n let newFormat = format.replace(literal, ($0, $1) => {\n literals.push(regexEscape($1));\n return \"@@@\";\n });\n const specifiedFields: { [field: string]: boolean } = {};\n const requiredFields: { [field: string]: boolean } = {};\n\n // Change every token that we find into the correct regex\n newFormat = regexEscape(newFormat).replace(token, $0 => {\n const info = parseFlags[$0];\n const [field, regex, , requiredField] = info;\n\n // Check if the person has specified the same field twice. This will lead to confusing results.\n if (specifiedFields[field]) {\n throw new Error(`Invalid format. ${field} specified twice in format`);\n }\n\n specifiedFields[field] = true;\n\n // Check if there are any required fields. For instance, 12 hour time requires AM/PM specified\n if (requiredField) {\n requiredFields[requiredField] = true;\n }\n\n parseInfo.push(info);\n return \"(\" + regex + \")\";\n });\n\n // Check all the required fields are present\n Object.keys(requiredFields).forEach(field => {\n if (!specifiedFields[field]) {\n throw new Error(\n `Invalid format. ${field} is required in specified format`\n );\n }\n });\n\n // Add back all the literals after\n newFormat = newFormat.replace(/@@@/g, () => literals.shift());\n\n // Check if the date string matches the format. If it doesn't return null\n const matches = dateStr.match(new RegExp(newFormat, \"i\"));\n if (!matches) {\n return null;\n }\n\n const combinedI18nSettings: I18nSettings = assign(\n assign({}, globalI18n),\n i18n\n );\n\n // For each match, call the parser function for that date part\n for (let i = 1; i < matches.length; i++) {\n const [field, , parser] = parseInfo[i - 1];\n const value = parser\n ? parser(matches[i], combinedI18nSettings)\n : +matches[i];\n\n // If the parser can't make sense of the value, return null\n if (value == null) {\n return null;\n }\n\n dateInfo[field] = value;\n }\n\n if (dateInfo.isPm === 1 && dateInfo.hour != null && +dateInfo.hour !== 12) {\n dateInfo.hour = +dateInfo.hour + 12;\n } else if (dateInfo.isPm === 0 && +dateInfo.hour === 12) {\n dateInfo.hour = 0;\n }\n\n let dateTZ: Date;\n if (dateInfo.timezoneOffset == null) {\n dateTZ = new Date(\n dateInfo.year,\n dateInfo.month,\n dateInfo.day,\n dateInfo.hour,\n dateInfo.minute,\n dateInfo.second,\n dateInfo.millisecond\n );\n const validateFields: [\n \"month\" | \"day\" | \"hour\" | \"minute\" | \"second\",\n \"getMonth\" | \"getDate\" | \"getHours\" | \"getMinutes\" | \"getSeconds\"\n ][] = [\n [\"month\", \"getMonth\"],\n [\"day\", \"getDate\"],\n [\"hour\", \"getHours\"],\n [\"minute\", \"getMinutes\"],\n [\"second\", \"getSeconds\"]\n ];\n for (let i = 0, len = validateFields.length; i < len; i++) {\n // Check to make sure the date field is within the allowed range. Javascript dates allows values\n // outside the allowed range. If the values don't match the value was invalid\n if (\n specifiedFields[validateFields[i][0]] &&\n dateInfo[validateFields[i][0]] !== dateTZ[validateFields[i][1]]()\n ) {\n return null;\n }\n }\n } else {\n dateTZ = new Date(\n Date.UTC(\n dateInfo.year,\n dateInfo.month,\n dateInfo.day,\n dateInfo.hour,\n dateInfo.minute - dateInfo.timezoneOffset,\n dateInfo.second,\n dateInfo.millisecond\n )\n );\n\n // We can't validate dates in another timezone unfortunately. Do a basic check instead\n if (\n dateInfo.month > 11 ||\n dateInfo.month < 0 ||\n dateInfo.day > 31 ||\n dateInfo.day < 1 ||\n dateInfo.hour > 23 ||\n dateInfo.hour < 0 ||\n dateInfo.minute > 59 ||\n dateInfo.minute < 0 ||\n dateInfo.second > 59 ||\n dateInfo.second < 0\n ) {\n return null;\n }\n }\n\n // Don't allow invalid dates\n\n return dateTZ;\n}\nexport default {\n format,\n parse,\n defaultI18n,\n setGlobalDateI18n,\n setGlobalDateMasks\n};\nexport { format, parse, defaultI18n, setGlobalDateI18n, setGlobalDateMasks };\n","import { isDate, isString, last } from '@antv/util';\nimport fecha from 'fecha';\nimport * as fecha1 from 'fecha';\n\nimport bisector from './bisector';\nconst FORMAT_METHOD = 'format';\n\nexport function timeFormat(time, mask) { // 由于 fecha 包的 typescript 定义有问题,所以暂时兼容一下\n const method = fecha1[FORMAT_METHOD] || fecha[FORMAT_METHOD];\n return method(time, mask);\n}\n/**\n * 转换成时间戳\n * @param value 时间值\n */\nexport function toTimeStamp(value: any): number {\n if (isString(value)) {\n if (value.indexOf('T') > 0) {\n value = new Date(value).getTime();\n } else {\n // new Date('2010/01/10') 和 new Date('2010-01-10') 的差别在于:\n // 如果仅有年月日时,前者是带有时区的: Fri Jan 10 2020 02:40:13 GMT+0800 (中国标准时间)\n // 后者会格式化成 Sun Jan 10 2010 08:00:00 GMT+0800 (中国标准时间)\n value = new Date(value.replace(/-/gi, '/')).getTime();\n }\n }\n if (isDate(value)) {\n value = value.getTime();\n }\n return value;\n}\n\nconst SECOND = 1000;\nconst MINUTE = 60 * SECOND;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst MONTH = DAY * 31;\nconst YEAR = DAY * 365;\n\nexport { SECOND, MINUTE, HOUR, DAY, MONTH, YEAR };\ntype Interval = [string, number]; // [defaultMomentFormat, interval]\nconst intervals: Interval[] = [\n ['HH:mm:ss', SECOND],\n ['HH:mm:ss', SECOND * 10],\n ['HH:mm:ss', SECOND * 30],\n ['HH:mm', MINUTE],\n ['HH:mm', MINUTE * 10],\n ['HH:mm', MINUTE * 30],\n ['HH', HOUR],\n ['HH', HOUR * 6],\n ['HH', HOUR * 12],\n ['YYYY-MM-DD', DAY],\n ['YYYY-MM-DD', DAY * 4],\n ['YYYY-WW', DAY * 7],\n ['YYYY-MM', MONTH],\n ['YYYY-MM', MONTH * 4],\n ['YYYY-MM', MONTH * 6],\n ['YYYY', DAY * 380], // 借鉴echarts,保证每个周期累加时不会碰到恰巧不够的问题\n];\n\nexport function getTickInterval(min: number, max: number, tickCount: number): Interval {\n const target = (max - min) / tickCount;\n const idx = bisector((o: Interval) => o[1])(intervals, target) - 1;\n let interval: Interval = intervals[idx];\n if (idx < 0) {\n interval = intervals[0];\n } else if (idx >= intervals.length) {\n interval = last(intervals);\n }\n return interval;\n}\n","import { isNil } from '@antv/util';\n\ntype GetterFunc = (o: T) => number;\n\n/**\n * 二分右侧查找\n * https://github.com/d3/d3-array/blob/master/src/bisector.js\n */\nexport default function(getter: GetterFunc) {\n /**\n * x: 目标值\n * lo: 起始位置\n * hi: 结束位置\n */\n return function(a: T[], x: number, _lo?: number, _hi?: number) {\n let lo = isNil(_lo) ? 0 : _lo;\n let hi = isNil(_hi) ? a.length : _hi;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (getter(a[mid]) > x) {\n hi = mid;\n } else {\n lo = mid + 1;\n }\n }\n return lo;\n };\n}\n","import { each, isNumber } from '@antv/util';\nimport { timeFormat, toTimeStamp } from '../util/time';\nimport Category from './base';\n\n/**\n * 时间分类度量\n * @class\n */\nclass TimeCat extends Category {\n public readonly type: string = 'timeCat';\n public mask;\n /**\n * @override\n */\n public translate(value) {\n value = toTimeStamp(value);\n let index = this.values.indexOf(value);\n if (index === -1) {\n if (isNumber(value) && value < this.values.length) {\n index = value;\n } else {\n index = NaN;\n }\n }\n return index;\n }\n\n /**\n * 由于时间类型数据需要转换一下,所以复写 getText\n * @override\n */\n public getText(value: string | number, tickIndex?: number) {\n const index = this.translate(value);\n if (index > -1) {\n let result = this.values[index];\n const formatter = this.formatter;\n result = formatter ? formatter(result, tickIndex) : timeFormat(result, this.mask);\n return result;\n }\n return value;\n }\n protected initCfg() {\n this.tickMethod = 'time-cat';\n this.mask = 'YYYY-MM-DD';\n this.tickCount = 7; // 一般时间数据会显示 7, 14, 30 天的数字\n }\n\n protected setDomain() {\n const values = this.values;\n // 针对时间分类类型,会将时间统一转换为时间戳\n each(values, (v, i) => {\n values[i] = toTimeStamp(v);\n });\n values.sort((v1, v2) => {\n return v1 - v2;\n });\n super.setDomain();\n }\n}\n\nexport default TimeCat;\n","import { filter, getRange, head, isNil, last } from '@antv/util';\nimport Base from '../base';\n\n/**\n * 连续度量的基类\n * @class\n */\nexport default abstract class Continuous extends Base {\n public isContinuous?: boolean = true;\n public nice: boolean;\n\n public scale(value: any): number {\n if (isNil(value)) {\n return NaN;\n }\n const rangeMin = this.rangeMin();\n const rangeMax = this.rangeMax();\n const max = this.max;\n const min = this.min;\n if (max === min) {\n return rangeMin;\n }\n const percent = this.getScalePercent(value);\n return rangeMin + percent * (rangeMax - rangeMin);\n }\n\n protected init() {\n super.init();\n // init 完成后保证 min, max 包含 ticks 的范围\n const ticks = this.ticks;\n const firstTick = head(ticks);\n const lastTick = last(ticks);\n if (firstTick < this.min) {\n this.min = firstTick;\n }\n if (lastTick > this.max) {\n this.max = lastTick;\n }\n // strict-limit 方式\n if (!isNil(this.minLimit)) {\n this.min = firstTick;\n }\n if (!isNil(this.maxLimit)) {\n this.max = lastTick;\n }\n }\n\n protected setDomain() {\n const { min, max } = getRange(this.values);\n if (isNil(this.min)) {\n this.min = min;\n }\n if (isNil(this.max)) {\n this.max = max;\n }\n if (this.min > this.max) {\n this.min = min;\n this.max = max;\n }\n }\n\n protected calculateTicks(): any[] {\n let ticks = super.calculateTicks();\n if (!this.nice) {\n ticks = filter(ticks, (tick) => {\n return tick >= this.min && tick <= this.max;\n });\n }\n return ticks;\n }\n\n // 计算原始值值占的百分比\n protected getScalePercent(value) {\n const max = this.max;\n const min = this.min;\n return (value - min) / (max - min);\n }\n\n protected getInvertPercent(value) {\n return (value - this.rangeMin()) / (this.rangeMax() - this.rangeMin());\n }\n}\n","import Continuous from './base';\n\n/**\n * 线性度量\n * @class\n */\nexport default class Linear extends Continuous {\n public minTickInterval: number;\n public type = 'linear';\n public readonly isLinear: boolean = true;\n\n public invert(value: number): any {\n const percent = this.getInvertPercent(value);\n return this.min + percent * (this.max - this.min);\n }\n\n protected initCfg() {\n this.tickMethod = 'wilkinson-extended';\n this.nice = false;\n }\n}\n","import { each, isNil } from '@antv/util';\n\n// 求以a为次幂,结果为b的基数,如 x^^a = b;求x\n// 虽然数学上 b 不支持负数,但是这里需要支持 负数\nexport function calBase(a: number, b: number) {\n const e = Math.E;\n let value;\n if (b >= 0) {\n value = Math.pow(e, Math.log(b) / a); // 使用换底公式求底\n } else {\n value = Math.pow(e, Math.log(-b) / a) * -1; // 使用换底公式求底\n }\n return value;\n}\n\nexport function log(a: number, b: number) {\n if (a === 1) {\n return 1;\n }\n return Math.log(b) / Math.log(a);\n}\n\nexport function getLogPositiveMin(values, base, max?: number) {\n if (isNil(max)) {\n max = Math.max.apply(null, values);\n }\n let positiveMin = max;\n each(values, (value) => {\n if (value > 0 && value < positiveMin) {\n positiveMin = value;\n }\n });\n if (positiveMin === max) {\n positiveMin = max / base;\n }\n if (positiveMin > 1) {\n positiveMin = 1;\n }\n return positiveMin;\n}\n\nfunction digitLength(num: number) {\n // Get digit length of e\n const eSplit = num.toString().split(/[eE]/);\n const len = (eSplit[0].split('.')[1] || '').length - +(eSplit[1] || 0);\n return len > 0 ? len : 0;\n}\n\n/**\n * 高精度加法,解决 0.1 + 0.2 !== 0.3 的经典问题\n *\n * @param num1 加数\n * @param num2 被加数\n * @return {number} 返回值\n */\nexport function precisionAdd(num1: number, num2: number) {\n const num1Digits = digitLength(num1);\n const num2Digits = digitLength(num2);\n const baseNum = 10 ** Math.max(num1Digits, num2Digits);\n return (num1 * baseNum + num2 * baseNum) / baseNum;\n}\n","import { getLogPositiveMin, log } from '../util/math';\nimport Continuous from './base';\n/**\n * Log 度量,处理非均匀分布\n */\nclass Log extends Continuous {\n public readonly type: string = 'log';\n public base: number;\n // 用于解决 min: 0 的场景下的问题\n private positiveMin: number;\n\n /**\n * @override\n */\n public invert(value: number) {\n const base = this.base;\n const max = log(base, this.max);\n const rangeMin = this.rangeMin();\n const range = this.rangeMax() - rangeMin;\n let min;\n const positiveMin = this.positiveMin;\n if (positiveMin) {\n if (value === 0) {\n return 0;\n }\n min = log(base, positiveMin / base);\n const appendPercent = (1 / (max - min)) * range; // 0 到 positiveMin的占比\n if (value < appendPercent) {\n // 落到 0 - positiveMin 之间\n return (value / appendPercent) * positiveMin;\n }\n } else {\n min = log(base, this.min);\n }\n const percent = (value - rangeMin) / range;\n const tmp = percent * (max - min) + min;\n return Math.pow(base, tmp);\n }\n\n protected initCfg() {\n this.tickMethod = 'log';\n this.base = 10;\n this.tickCount = 6;\n this.nice = true;\n }\n\n // 设置\n protected setDomain() {\n super.setDomain();\n const min = this.min;\n if (min < 0) {\n throw new Error('When you use log scale, the minimum value must be greater than zero!');\n }\n if (min === 0) {\n this.positiveMin = getLogPositiveMin(this.values, this.base, this.max);\n }\n }\n\n // 根据当前值获取占比\n protected getScalePercent(value: number) {\n const max = this.max;\n let min = this.min;\n if (max === min) {\n return 0;\n }\n // 如果值小于等于0,则按照0处理\n if (value <= 0) {\n return 0;\n }\n const base = this.base;\n const positiveMin = this.positiveMin;\n // 如果min == 0, 则根据比0大的最小值,计算比例关系。这个最小值作为坐标轴上的第二个tick,第一个是0但是不显示\n if (positiveMin) {\n min = (positiveMin * 1) / base;\n }\n let percent;\n // 如果数值小于次小值,那么就计算 value / 次小值 占整体的比例\n if (value < positiveMin) {\n percent = value / positiveMin / (log(base, max) - log(base, min));\n } else {\n percent = (log(base, value) - log(base, min)) / (log(base, max) - log(base, min));\n }\n return percent;\n }\n}\n\nexport default Log;\n","import { calBase } from '../util/math';\nimport Continuous from './base';\n\n/**\n * Pow 度量,处理非均匀分布\n */\nclass Pow extends Continuous {\n public readonly type: string = 'pow';\n /**\n * 指数\n */\n public exponent: number;\n\n /**\n * @override\n */\n public invert(value: number) {\n const percent = this.getInvertPercent(value);\n const exponent = this.exponent;\n const max = calBase(exponent, this.max);\n const min = calBase(exponent, this.min);\n const tmp = percent * (max - min) + min;\n const factor = tmp >= 0 ? 1 : -1;\n return Math.pow(tmp, exponent) * factor;\n }\n\n protected initCfg() {\n this.tickMethod = 'pow';\n this.exponent = 2;\n this.tickCount = 5;\n this.nice = true;\n }\n\n // 获取度量计算时,value占的定义域百分比\n protected getScalePercent(value: number) {\n const max = this.max;\n const min = this.min;\n if (max === min) {\n return 0;\n }\n const exponent = this.exponent;\n const percent =\n (calBase(exponent, value) - calBase(exponent, min)) / (calBase(exponent, max) - calBase(exponent, min));\n return percent;\n }\n}\n\nexport default Pow;\n","import { each, isDate, isNil, isNumber, isString } from '@antv/util';\nimport { timeFormat, toTimeStamp } from '../util/time';\nimport Linear from './linear';\n\n/**\n * 时间度量\n * @class\n */\nclass Time extends Linear {\n public readonly type: string = 'time';\n public mask: string;\n\n /**\n * @override\n */\n public getText(value: string | number | Date, index?: number) {\n const numberValue = this.translate(value);\n const formatter = this.formatter;\n return formatter ? formatter(numberValue, index) : timeFormat(numberValue, this.mask);\n }\n /**\n * @override\n */\n public scale(value): number {\n let v = value;\n if (isString(v) || isDate(v)) {\n v = this.translate(v);\n }\n return super.scale(v);\n }\n /**\n * 将时间转换成数字\n * @override\n */\n public translate(v): number {\n return toTimeStamp(v);\n }\n protected initCfg() {\n this.tickMethod = 'time-pretty';\n this.mask = 'YYYY-MM-DD';\n this.tickCount = 7;\n this.nice = false;\n }\n\n protected setDomain() {\n const values = this.values;\n // 是否设置了 min, max,而不是直接取 this.min, this.max\n const minConfig = this.getConfig('min');\n const maxConfig = this.getConfig('max');\n // 如果设置了 min,max 则转换成时间戳\n if (!isNil(minConfig) || !isNumber(minConfig)) {\n this.min = this.translate(this.min);\n }\n if (!isNil(maxConfig) || !isNumber(maxConfig)) {\n this.max = this.translate(this.max);\n }\n // 没有设置 min, max 时\n if (values && values.length) {\n // 重新计算最大最小值\n const timeStamps = [];\n let min = Infinity; // 最小值\n let secondMin = min; // 次小值\n let max = 0;\n // 使用一个循环,计算min,max,secondMin\n each(values, (v) => {\n const timeStamp = toTimeStamp(v);\n if (isNaN(timeStamp)) {\n throw new TypeError(`Invalid Time: ${v} in time scale!`);\n }\n if (min > timeStamp) {\n secondMin = min;\n min = timeStamp;\n } else if (secondMin > timeStamp) {\n secondMin = timeStamp;\n }\n if (max < timeStamp) {\n max = timeStamp;\n }\n timeStamps.push(timeStamp);\n });\n // 存在多个值时,设置最小间距\n if (values.length > 1) {\n this.minTickInterval = secondMin - min;\n }\n if (isNil(minConfig)) {\n this.min = min;\n }\n if (isNil(maxConfig)) {\n this.max = max;\n }\n }\n }\n}\nexport default Time;\n","import { each, head, last } from '@antv/util';\nimport Continuous from './base';\n\n/**\n * 分段度量\n */\nclass Quantize extends Continuous {\n public type = 'quantize';\n\n public invert(value): number {\n const ticks = this.ticks;\n const length = ticks.length;\n const percent = this.getInvertPercent(value);\n const minIndex = Math.floor(percent * (length - 1));\n // 最后一个\n if (minIndex >= length - 1) {\n return last(ticks);\n }\n // 超出左边界, 则取第一个\n if (minIndex < 0) {\n return head(ticks);\n }\n const minTick = ticks[minIndex];\n const nextTick = ticks[minIndex + 1];\n // 比当前值小的 tick 在度量上的占比\n const minIndexPercent = minIndex / (length - 1);\n const maxIndexPercent = (minIndex + 1) / (length - 1);\n return minTick + (percent - minIndexPercent) / (maxIndexPercent - minIndexPercent) * (nextTick - minTick);\n }\n\n protected initCfg() {\n this.tickMethod = 'r-pretty';\n this.tickCount = 5;\n this.nice = true;\n }\n\n protected calculateTicks(): any[] {\n const ticks = super.calculateTicks();\n if (!this.nice) { // 如果 nice = false ,补充 min, max\n if (last(ticks) !== this.max) {\n ticks.push(this.max);\n }\n if (head(ticks) !== this.min) {\n ticks.unshift(this.min);\n }\n }\n return ticks;\n }\n\n // 计算当前值在刻度中的占比\n protected getScalePercent(value) {\n const ticks = this.ticks;\n // 超出左边界\n if (value < head(ticks)) {\n return 0;\n }\n // 超出右边界\n if (value > last(ticks)) {\n return 1;\n }\n let minIndex = 0;\n each(ticks, (tick, index) => {\n if (value >= tick) {\n minIndex = index;\n } else {\n return false;\n }\n });\n return minIndex / (ticks.length - 1);\n }\n}\n\nexport default Quantize;\n","import Quantize from './quantize';\n\nclass Quantile extends Quantize {\n public type = 'quantile';\n protected initCfg() {\n this.tickMethod = 'quantile';\n this.tickCount = 5;\n this.nice = true;\n }\n}\n\nexport default Quantile;\n","import Scale from './base';\nimport { ScaleConfig } from './types';\ntype ScaleConstructor = new (cfg: ScaleConfig) => T;\n\ninterface ScaleMap {\n [key: string]: ScaleConstructor;\n}\n\nconst map: ScaleMap = {};\n\nfunction getClass(key: string): ScaleConstructor {\n return map[key];\n}\n\nfunction registerClass(key: string, cls: ScaleConstructor) {\n if (getClass(key)) {\n throw new Error(`type '${key}' existed.`);\n }\n map[key] = cls;\n}\n\nexport { Scale, getClass as getScale, registerClass as registerScale };\n","import { has, isNumber } from '@antv/util';\nimport Base from '../base';\nimport { ScaleType } from '../types';\n\n/**\n * identity scale原则上是定义域和值域一致,scale/invert方法也是一致的\n * 参考R的实现:https://github.com/r-lib/scales/blob/master/R/pal-identity.r\n * 参考d3的实现(做了下转型):https://github.com/d3/d3-scale/blob/master/src/identity.js\n */\nexport default class Identity extends Base {\n public readonly type: ScaleType = 'identity';\n public readonly isIdentity: boolean = true;\n\n public calculateTicks() {\n return this.values;\n }\n\n public scale(value: any): number {\n // 如果传入的值不等于 identity 的值,则直接返回,用于一维图时的 dodge\n if (this.values[0] !== value && isNumber(value)) {\n return value;\n }\n return this.range[0];\n }\n\n public invert(value?: number): number {\n const range = this.range;\n if (value < range[0] || value > range[1]) {\n return NaN;\n }\n return this.values[0];\n }\n}\n","import { filter, isNil, isNumber, last } from '@antv/util';\nimport { ScaleConfig } from '../types';\n\n/**\n * 计算分类 ticks\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function calculateCatTicks(cfg: ScaleConfig): any[] {\n const { values, tickInterval, tickCount, showLast } = cfg;\n\n if (isNumber(tickInterval)) {\n const ticks = filter(values, (__: any, i: number) => i % tickInterval === 0);\n const lastValue = last(values);\n if (showLast && last(ticks) !== lastValue) {\n ticks.push(lastValue);\n }\n return ticks;\n }\n\n const len = values.length;\n let { min, max } = cfg;\n if (isNil(min)) {\n min = 0;\n }\n if (isNil(max)) {\n max = values.length - 1;\n }\n\n if (!isNumber(tickCount) || tickCount >= len) return values.slice(min, max + 1);\n if (tickCount <= 0 || max <= 0) return [];\n\n const interval = tickCount === 1 ? len : Math.floor(len / (tickCount - 1));\n const ticks = [];\n\n let idx = min;\n for (let i = 0; i < tickCount; i++) {\n if (idx >= max) break;\n\n idx = Math.min(min + i * interval, max);\n if (i === tickCount - 1 && showLast) ticks.push(values[max]);\n else ticks.push(values[idx]);\n }\n return ticks;\n}\n","import { ScaleConfig } from '../types';\n\nexport default function d3Linear(cfg: ScaleConfig): number[] {\n const { min, max, nice, tickCount } = cfg;\n const linear = new D3Linear();\n linear.domain([min, max]);\n if (nice) {\n linear.nice(tickCount);\n }\n return linear.ticks(tickCount);\n}\n\nconst DEFAULT_COUNT = 5;\nconst e10 = Math.sqrt(50);\nconst e5 = Math.sqrt(10);\nconst e2 = Math.sqrt(2);\n\n// https://github.com/d3/d3-scale\nexport class D3Linear {\n private _domain: number[] = [0, 1];\n\n public domain(domain?: number[]): D3Linear | number[] {\n if (domain) {\n this._domain = Array.from(domain, Number);\n return this;\n }\n return this._domain.slice();\n }\n\n public nice(count = DEFAULT_COUNT) {\n const d = this._domain.slice();\n let i0 = 0;\n let i1 = this._domain.length - 1;\n let start = this._domain[i0];\n let stop = this._domain[i1];\n let step;\n\n if (stop < start) {\n [start, stop] = [stop, start];\n [i0, i1] = [i1, i0];\n }\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n this.domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n this.domain(d);\n }\n\n return this;\n }\n\n public ticks(count = DEFAULT_COUNT): number[] {\n return d3ArrayTicks(this._domain[0], this._domain[this._domain.length - 1], count || DEFAULT_COUNT);\n }\n}\n\nfunction d3ArrayTicks(start: number, stop: number, count: number): number[] {\n let reverse;\n let i = -1;\n let n;\n let ticks;\n let step;\n\n (stop = +stop), (start = +start), (count = +count);\n if (start === stop && count > 0) {\n return [start];\n }\n // tslint:disable-next-line\n if ((reverse = stop < start)) {\n (n = start), (start = stop), (stop = n);\n }\n // tslint:disable-next-line\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) {\n return [];\n }\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array((n = Math.ceil(stop - start + 1)));\n while (++i < n) {\n ticks[i] = (start + i) * step;\n }\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array((n = Math.ceil(start - stop + 1)));\n while (++i < n) {\n ticks[i] = (start - i) / step;\n }\n }\n\n if (reverse) {\n ticks.reverse();\n }\n\n return ticks;\n}\n\nfunction tickIncrement(start: number, stop: number, count: number): number {\n const step = (stop - start) / Math.max(0, count);\n const power = Math.floor(Math.log(step) / Math.LN10);\n const error = step / Math.pow(10, power);\n\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n","\nimport { fixedBase } from '@antv/util';\n\nfunction snapMultiple(v, base, snapType) {\n let div;\n if (snapType === 'ceil') {\n div = Math.ceil(v / base);\n } else if (snapType === 'floor') {\n div = Math.floor(v / base);\n } else {\n div = Math.round(v / base);\n }\n return div * base;\n}\n\nexport default function intervalTicks(min, max, interval) {\n // 变成 interval 的倍数\n let minTick = snapMultiple(min, interval, 'floor');\n let maxTick = snapMultiple(max, interval, 'ceil');\n // 统一小数位数\n minTick = fixedBase(minTick, interval);\n maxTick = fixedBase(maxTick, interval);\n const ticks = [];\n // https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Errors/Invalid_array_length\n const availableInterval = Math.max((maxTick - minTick) / (2 ** 12 - 1), interval);\n for (let i = minTick; i <= maxTick; i = i + availableInterval) {\n const tickValue = fixedBase(i, availableInterval); // 防止浮点数加法出现问题\n ticks.push(tickValue);\n }\n return {\n min: minTick,\n max: maxTick,\n ticks\n };\n}","import { isNil } from '@antv/util';\nimport { ScaleConfig } from '../types';\n\n/**\n * 按照给定的 minLimit/maxLimit/tickCount 均匀计算出刻度 ticks\n *\n * @param cfg Scale 配置项\n * @return ticks\n */\nexport default function strictLimit(cfg: ScaleConfig, defaultMin?: number, defaultMax?: number): number[] {\n const { minLimit, maxLimit, min, max, tickCount = 5 } = cfg;\n let tickMin = isNil(minLimit) ? (isNil(defaultMin) ? min : defaultMin) : minLimit;\n let tickMax = isNil(maxLimit) ? (isNil(defaultMax) ? max : defaultMax) : maxLimit;\n\n if (tickMin > tickMax) {\n [tickMax, tickMin] = [tickMin, tickMax];\n }\n\n if (tickCount <= 2) {\n return [tickMin, tickMax];\n }\n\n const step = (tickMax - tickMin) / (tickCount - 1);\n const ticks: number[] = [];\n\n for (let i = 0; i < tickCount; i++) {\n ticks.push(tickMin + step * i);\n }\n\n return ticks;\n}\n","// 为了解决 js 运算的精度问题\nexport function prettyNumber(n: number) {\n return Math.abs(n) < 1e-15 ? n : parseFloat(n.toFixed(15));\n}\n","import { head, indexOf, size, last } from '@antv/util';\nimport { prettyNumber } from './pretty-number';\n\nexport const DEFAULT_Q = [1, 5, 2, 2.5, 4, 3];\n\nexport const ALL_Q = [1, 5, 2, 2.5, 4, 3, 1.5, 7, 6, 8, 9];\n\nconst eps = Number.EPSILON * 100;\n\nfunction mod(n: number, m: number) {\n return ((n % m) + m) % m;\n}\n\nfunction round(n: number) {\n return Math.round(n * 1e12) / 1e12;\n}\n\nfunction simplicity(q: number, Q: number[], j: number, lmin: number, lmax: number, lstep: number) {\n const n = size(Q);\n const i = indexOf(Q, q);\n let v = 0;\n const m = mod(lmin, lstep);\n if ((m < eps || lstep - m < eps) && lmin <= 0 && lmax >= 0) {\n v = 1;\n }\n return 1 - i / (n - 1) - j + v;\n}\n\nfunction simplicityMax(q: number, Q: number[], j: number) {\n const n = size(Q);\n const i = indexOf(Q, q);\n const v = 1;\n return 1 - i / (n - 1) - j + v;\n}\n\nfunction density(k: number, m: number, dMin: number, dMax: number, lMin: number, lMax: number) {\n const r = (k - 1) / (lMax - lMin);\n const rt = (m - 1) / (Math.max(lMax, dMax) - Math.min(dMin, lMin));\n return 2 - Math.max(r / rt, rt / r);\n}\n\nfunction densityMax(k: number, m: number) {\n if (k >= m) {\n return 2 - (k - 1) / (m - 1);\n }\n return 1;\n}\n\nfunction coverage(dMin: number, dMax: number, lMin: number, lMax: number) {\n const range = dMax - dMin;\n return 1 - (0.5 * ((dMax - lMax) ** 2 + (dMin - lMin) ** 2)) / (0.1 * range) ** 2;\n}\n\nfunction coverageMax(dMin: number, dMax: number, span: number) {\n const range = dMax - dMin;\n if (span > range) {\n const half = (span - range) / 2;\n return 1 - half ** 2 / (0.1 * range) ** 2;\n }\n return 1;\n}\n\nfunction legibility() {\n return 1;\n}\n\n/**\n * An Extension of Wilkinson's Algorithm for Position Tick Labels on Axes\n * https://www.yuque.com/preview/yuque/0/2019/pdf/185317/1546999150858-45c3b9c2-4e86-4223-bf1a-8a732e8195ed.pdf\n * @param dMin 最小值\n * @param dMax 最大值\n * @param m tick个数\n * @param onlyLoose 是否允许扩展min、max,不绝对强制,例如[3, 97]\n * @param Q nice numbers集合\n * @param w 四个优化组件的权重\n */\nexport default function extended(\n dMin: number,\n dMax: number,\n n: number = 5,\n onlyLoose: boolean = true,\n Q: number[] = DEFAULT_Q,\n w: [number, number, number, number] = [0.25, 0.2, 0.5, 0.05]\n): { min: number; max: number; ticks: number[] } {\n // 处理小于 0 和小数的 tickCount\n const m = n < 0 ? 0 : Math.round(n);\n\n // nan 也会导致异常\n if (Number.isNaN(dMin) || Number.isNaN(dMax) || typeof dMin !== 'number' || typeof dMax !== 'number' || !m) {\n return {\n min: 0,\n max: 0,\n ticks: [],\n };\n }\n\n // js 极大值极小值问题,差值小于 1e-15 会导致计算出错\n if (dMax - dMin < 1e-15 || m === 1) {\n return {\n min: dMin,\n max: dMax,\n ticks: [dMin],\n };\n }\n\n // js 超大值问题\n if (dMax - dMin > 1e148) {\n const count = n || 5;\n const step = (dMax - dMin) / count;\n return {\n min: dMin,\n max: dMax,\n ticks: Array(count).fill(null).map((_,idx) => {\n return prettyNumber(dMin + step * idx);\n }),\n };\n }\n\n const best = {\n score: -2,\n lmin: 0,\n lmax: 0,\n lstep: 0,\n };\n\n let j = 1;\n while (j < Infinity) {\n for (let i = 0; i < Q.length; i += 1) {\n const q = Q[i];\n const sm = simplicityMax(q, Q, j);\n if (w[0] * sm + w[1] + w[2] + w[3] < best.score) {\n j = Infinity;\n break;\n }\n let k = 2;\n while (k < Infinity) {\n const dm = densityMax(k, m);\n if (w[0] * sm + w[1] + w[2] * dm + w[3] < best.score) {\n break;\n }\n\n const delta = (dMax - dMin) / (k + 1) / j / q;\n let z = Math.ceil(Math.log10(delta));\n\n while (z < Infinity) {\n const step = j * q * 10 ** z;\n const cm = coverageMax(dMin, dMax, step * (k - 1));\n\n if (w[0] * sm + w[1] * cm + w[2] * dm + w[3] < best.score) {\n break;\n }\n\n const minStart = Math.floor(dMax / step) * j - (k - 1) * j;\n const maxStart = Math.ceil(dMin / step) * j;\n\n if (minStart <= maxStart) {\n const count = maxStart - minStart;\n for (let i = 0; i <= count; i += 1) {\n const start = minStart + i;\n const lMin = start * (step / j);\n const lMax = lMin + step * (k - 1);\n const lStep = step;\n\n const s = simplicity(q, Q, j, lMin, lMax, lStep);\n const c = coverage(dMin, dMax, lMin, lMax);\n const g = density(k, m, dMin, dMax, lMin, lMax);\n const l = legibility();\n\n const score = w[0] * s + w[1] * c + w[2] * g + w[3] * l;\n if (score > best.score && (!onlyLoose || (lMin <= dMin && lMax >= dMax))) {\n best.lmin = lMin;\n best.lmax = lMax;\n best.lstep = lStep;\n best.score = score;\n }\n }\n }\n z += 1;\n }\n k += 1;\n }\n }\n j += 1;\n }\n\n // 处理精度问题,保证这三个数没有精度问题\n const lmax = prettyNumber(best.lmax);\n const lmin = prettyNumber(best.lmin);\n const lstep = prettyNumber(best.lstep);\n\n // 加 round 是为处理 extended(0.94, 1, 5)\n // 保证生成的 tickCount 没有精度问题\n const tickCount = Math.floor(round((lmax - lmin) / lstep)) + 1;\n const ticks = new Array(tickCount);\n\n // 少用乘法:防止出现 -1.2 + 1.2 * 3 = 2.3999999999999995 的情况\n ticks[0] = prettyNumber(lmin);\n for (let i = 1; i < tickCount; i++) {\n ticks[i] = prettyNumber(ticks[i - 1] + lstep);\n }\n\n return {\n min: Math.min(dMin, head(ticks)),\n max: Math.max(dMax, last(ticks)),\n ticks,\n };\n}\n","import { prettyNumber } from './pretty-number';\n\nexport default function pretty(min: number, max: number, m: number = 5) {\n if (min === max) {\n return {\n max,\n min,\n ticks: [min],\n };\n }\n\n const n = m < 0 ? 0 : Math.round(m);\n if (n === 0) return { max, min, ticks: [] };\n\n /*\n R pretty:\n https://svn.r-project.org/R/trunk/src/appl/pretty.c\n https://www.rdocumentation.org/packages/base/versions/3.5.2/topics/pretty\n */\n const h = 1.5; // high.u.bias\n const h5 = 0.5 + 1.5 * h; // u5.bias\n // 反正我也不会调参,跳过所有判断步骤\n const d = max - min;\n const c = d / n;\n // 当d非常小的时候触发,但似乎没什么用\n // const min_n = Math.floor(n / 3);\n // const shrink_sml = Math.pow(2, 5);\n // if (Math.log10(d) < -2) {\n // c = (_.max([ Math.abs(max), Math.abs(min) ]) * shrink_sml) / min_n;\n // }\n\n const base = Math.pow(10, Math.floor(Math.log10(c)));\n let unit = base;\n if (2 * base - c < h * (c - unit)) {\n unit = 2 * base;\n if (5 * base - c < h5 * (c - unit)) {\n unit = 5 * base;\n if (10 * base - c < h * (c - unit)) {\n unit = 10 * base;\n }\n }\n }\n const nu = Math.ceil(max / unit);\n const ns = Math.floor(min / unit);\n\n const hi = Math.max(nu * unit, max);\n const lo = Math.min(ns * unit, min);\n\n const size = Math.floor((hi - lo) / unit) + 1;\n const ticks = new Array(size);\n for (let i = 0; i < size; i++) {\n ticks[i] = prettyNumber(lo + i * unit);\n }\n\n return {\n min: lo,\n max: hi,\n ticks,\n };\n}\n","import { ScaleConfig } from '../types';\n/**\n * 计算几分位 https://github.com/simple-statistics/simple-statistics/blob/master/src/quantile_sorted.js\n * @param x 数组\n * @param p 百分比\n */\nfunction quantileSorted(x, p) {\n const idx = x.length * p;\n /*if (x.length === 0) { // 当前场景这些条件不可能命中\n throw new Error('quantile requires at least one value.');\n } else if (p < 0 || p > 1) {\n throw new Error('quantiles must be between 0 and 1');\n } else */\n \n if (p === 1) {\n // If p is 1, directly return the last element\n return x[x.length - 1];\n } else if (p === 0) {\n // If p is 0, directly return the first element\n return x[0];\n } else if (idx % 1 !== 0) {\n // If p is not integer, return the next element in array\n return x[Math.ceil(idx) - 1];\n } else if (x.length % 2 === 0) {\n // If the list has even-length, we'll take the average of this number\n // and the next value, if there is one\n return (x[idx - 1] + x[idx]) / 2;\n } else {\n // Finally, in the simple case of an integer value\n // with an odd-length list, return the x value at the index.\n return x[idx];\n }\n}\n\nexport default function calculateTicks(cfg: ScaleConfig) {\n const { tickCount, values } = cfg;\n if (!values || !values.length) {\n return [];\n }\n const sorted = values.slice().sort((a, b) => {\n return a - b;\n });\n const ticks = [];\n for (let i = 0; i < tickCount; i++) {\n const p = i / (tickCount - 1);\n ticks.push(quantileSorted(sorted, p));\n }\n return ticks;\n}\n","import { ScaleConfig } from '../types';\nimport { DAY, getTickInterval, HOUR, MINUTE, MONTH, SECOND, YEAR } from '../util/time';\n\nfunction getYear(date: number) {\n return new Date(date).getFullYear();\n}\n\nfunction createYear(year: number) {\n return new Date(year, 0, 1).getTime();\n}\n\nfunction getMonth(date: number) {\n return new Date(date).getMonth();\n}\n\nfunction diffMonth(min: number, max: number) {\n const minYear = getYear(min);\n const maxYear = getYear(max);\n const minMonth = getMonth(min);\n const maxMonth = getMonth(max);\n return (maxYear - minYear) * 12 + ((maxMonth - minMonth) % 12);\n}\n\nfunction creatMonth(year: number, month: number) {\n return new Date(year, month, 1).getTime();\n}\n\nfunction diffDay(min: number, max: number) {\n return Math.ceil((max - min) / DAY);\n}\n\nfunction diffHour(min: number, max: number) {\n return Math.ceil((max - min) / HOUR);\n}\n\nfunction diffMinus(min: number, max: number) {\n return Math.ceil((max - min) / (60 * 1000));\n}\n\n/**\n * 计算 time 的 ticks,对 month, year 进行 pretty 处理\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function timePretty(cfg: ScaleConfig): number[] {\n const { min, max, minTickInterval, tickCount } = cfg;\n let { tickInterval } = cfg;\n const ticks: number[] = [];\n // 指定 tickInterval 后 tickCount 不生效,需要重新计算\n if (!tickInterval) {\n tickInterval = (max - min) / tickCount;\n // 如果设置了最小间距,则使用最小间距\n if (minTickInterval && tickInterval < minTickInterval) {\n tickInterval = minTickInterval;\n }\n }\n tickInterval = Math.max(Math.floor((max - min) / (2 ** 12 - 1)), tickInterval);\n const minYear = getYear(min);\n // 如果间距大于 1 年,则将开始日期从整年开始\n if (tickInterval > YEAR) {\n const maxYear = getYear(max);\n const yearInterval = Math.ceil(tickInterval / YEAR);\n for (let i = minYear; i <= maxYear + yearInterval; i = i + yearInterval) {\n ticks.push(createYear(i));\n }\n } else if (tickInterval > MONTH) {\n // 大于月时\n const monthInterval = Math.ceil(tickInterval / MONTH);\n const mmMoth = getMonth(min);\n const dMonths = diffMonth(min, max);\n for (let i = 0; i <= dMonths + monthInterval; i = i + monthInterval) {\n ticks.push(creatMonth(minYear, i + mmMoth));\n }\n } else if (tickInterval > DAY) {\n // 大于天\n const date = new Date(min);\n const year = date.getFullYear();\n const month = date.getMonth();\n const mday = date.getDate();\n const day = Math.ceil(tickInterval / DAY);\n const ddays = diffDay(min, max);\n for (let i = 0; i < ddays + day; i = i + day) {\n ticks.push(new Date(year, month, mday + i).getTime());\n }\n } else if (tickInterval > HOUR) {\n // 大于小时\n const date = new Date(min);\n const year = date.getFullYear();\n const month = date.getMonth();\n const day = date.getDate();\n const hour = date.getHours();\n const hours = Math.ceil(tickInterval / HOUR);\n const dHours = diffHour(min, max);\n for (let i = 0; i <= dHours + hours; i = i + hours) {\n ticks.push(new Date(year, month, day, hour + i).getTime());\n }\n } else if (tickInterval > MINUTE) {\n // 大于分钟\n const dMinus = diffMinus(min, max);\n const minutes = Math.ceil(tickInterval / MINUTE);\n for (let i = 0; i <= dMinus + minutes; i = i + minutes) {\n ticks.push(min + i * MINUTE);\n }\n } else {\n // 小于分钟\n let interval = tickInterval;\n if (interval < SECOND) {\n interval = SECOND;\n }\n const minSecond = Math.floor(min / SECOND) * SECOND;\n const dSeconds = Math.ceil((max - min) / SECOND);\n const seconds = Math.ceil(interval / SECOND);\n for (let i = 0; i < dSeconds + seconds; i = i + seconds) {\n ticks.push(minSecond + i * SECOND);\n }\n }\n\n // 最好是能从算法能解决这个问题,但是如果指定了 tickInterval,计算 ticks,也只能这么算,所以\n // 打印警告提示\n if (ticks.length >= 512) {\n console.warn(`Notice: current ticks length(${ticks.length}) >= 512, may cause performance issues, even out of memory. Because of the configure \"tickInterval\"(in milliseconds, current is ${tickInterval}) is too small, increase the value to solve the problem!`);\n }\n\n return ticks;\n}\n","import cat from './cat';\nimport d3Linear from './d3-linear';\nimport linear from './linear';\nimport log from './log';\nimport pow from './pow';\nimport quantile from './quantile';\nimport rPretty from './r-prettry';\nimport { getTickMethod, registerTickMethod } from './register';\nimport time from './time';\nimport timeCat from './time-cat';\nimport timePretty from './time-pretty';\n\nregisterTickMethod('cat', cat);\nregisterTickMethod('time-cat', timeCat);\nregisterTickMethod('wilkinson-extended', linear);\nregisterTickMethod('r-pretty', rPretty);\nregisterTickMethod('time', time);\nregisterTickMethod('time-pretty', timePretty);\nregisterTickMethod('log', log);\nregisterTickMethod('pow', pow);\nregisterTickMethod('quantile', quantile);\nregisterTickMethod('d3-linear', d3Linear);\n\nexport { getTickMethod, registerTickMethod };\n","import { ScaleConfig } from '../types';\nimport catTicks from './cat';\n/**\n * 计算时间分类的 ticks, 保头,保尾\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function timeCat(cfg: ScaleConfig): any[] {\n // 默认保留最后一条\n const ticks = catTicks({ showLast: true, ...cfg });\n return ticks;\n}\n","import { head, isNil, last } from '@antv/util';\nimport { ScaleConfig } from '../types';\nimport extended from '../util/extended';\nimport interval from '../util/interval';\nimport strictLimit from '../util/strict-limit';\n\n/**\n * 计算线性的 ticks,使用 wilkinson extended 方法\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function linear(cfg: ScaleConfig): number[] {\n const { min, max, tickCount, nice, tickInterval, minLimit, maxLimit } = cfg;\n const ticks = extended(min, max, tickCount, nice).ticks;\n\n if (!isNil(minLimit) || !isNil(maxLimit)) {\n return strictLimit(cfg, head(ticks), last(ticks));\n }\n if (tickInterval) {\n return interval(min, max, tickInterval).ticks;\n }\n return ticks;\n}\n","import { head, isNil, last } from '@antv/util';\nimport { ScaleConfig } from '../types';\nimport interval from '../util/interval';\nimport pretty from '../util/pretty';\nimport strictLimit from '../util/strict-limit';\n\n/**\n * 计算线性的 ticks,使用 R's pretty 方法\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function linearPretty(cfg: ScaleConfig): number[] {\n const { min, max, tickCount, tickInterval, minLimit, maxLimit } = cfg;\n const ticks = pretty(min, max, tickCount).ticks;\n\n if (!isNil(minLimit) || !isNil(maxLimit)) {\n return strictLimit(cfg, head(ticks), last(ticks));\n }\n if (tickInterval) {\n return interval(min, max, tickInterval).ticks;\n }\n return ticks;\n}\n","import { ScaleConfig } from '../types';\nimport { getTickInterval } from '../util/time';\n\nexport default function calculateTimeTicks(cfg: ScaleConfig): number[] {\n const { min, max, minTickInterval } = cfg;\n let tickInterval = cfg.tickInterval;\n let tickCount = cfg.tickCount;\n // 指定 tickInterval 后 tickCount 不生效,需要重新计算\n if (tickInterval) {\n tickCount = Math.ceil((max - min) / tickInterval);\n } else {\n tickInterval = getTickInterval(min, max, tickCount)[1];\n const count = (max - min) / tickInterval;\n const ratio = count / tickCount;\n if (ratio > 1) {\n tickInterval = tickInterval * Math.ceil(ratio);\n }\n // 如果设置了最小间距,则使用最小间距\n if (minTickInterval && tickInterval < minTickInterval) {\n tickInterval = minTickInterval;\n }\n }\n\n tickInterval = Math.max(Math.floor((max - min) / (2 ** 12 - 1)), tickInterval);\n const ticks = [];\n for (let i = min; i < max + tickInterval; i += tickInterval) {\n ticks.push(i);\n }\n return ticks;\n}\n","import { isEmpty } from '@antv/util';\nimport { ScaleConfig } from '../types';\nimport { getLogPositiveMin, log } from '../util/math';\n\n/**\n * 计算 log 的 ticks,考虑 min = 0 的场景\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function calculateLogTicks(cfg: ScaleConfig) {\n const { base, tickCount, min, max, values } = cfg;\n let minTick;\n const maxTick = log(base, max);\n if (min > 0) {\n minTick = Math.floor(log(base, min));\n } else {\n const positiveMin = getLogPositiveMin(values, base, max);\n minTick = Math.floor(log(base, positiveMin));\n }\n const count = maxTick - minTick;\n const avg = Math.ceil(count / tickCount);\n const ticks = [];\n for (let i = minTick; i < maxTick + avg; i = i + avg) {\n ticks.push(Math.pow(base, i));\n }\n if (min <= 0) {\n // 最小值 <= 0 时显示 0\n ticks.unshift(0);\n }\n return ticks;\n}\n","import { ScaleConfig } from '../types';\nimport { calBase } from '../util/math';\nimport pretty from '../util/pretty';\n/**\n * 计算 Pow 的 ticks\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function calculatePowTicks(cfg: ScaleConfig) {\n const { exponent, tickCount } = cfg;\n const max = Math.ceil(calBase(exponent, cfg.max));\n const min = Math.floor(calBase(exponent, cfg.min));\n const ticks = pretty(min, max, tickCount).ticks;\n return ticks.map((tick) => {\n const factor = tick >= 0 ? 1 : -1;\n return Math.pow(tick, exponent) * factor;\n });\n}\n","import { head, isNil, last } from '@antv/util';\nimport { ScaleConfig } from '../types';\nimport d3Linear from '../util/d3-linear';\nimport interval from '../util/interval';\nimport strictLimit from '../util/strict-limit';\n\nexport default function d3LinearTickMethod(cfg: ScaleConfig): number[] {\n const { min, max, tickInterval, minLimit, maxLimit } = cfg;\n const ticks = d3Linear(cfg);\n\n if (!isNil(minLimit) || !isNil(maxLimit)) {\n return strictLimit(cfg, head(ticks), last(ticks));\n }\n if (tickInterval) {\n return interval(min, max, tickInterval).ticks;\n }\n return ticks;\n}\n","import Scale from './base';\nimport Category from './category/base';\nimport TimeCat from './category/time';\nimport Linear from './continuous/linear';\nimport Log from './continuous/log';\nimport Pow from './continuous/pow';\nimport Time from './continuous/time';\nimport Quantize from './continuous/quantize';\nimport Quantile from './continuous/quantile';\nimport { getScale, registerScale } from './factory';\nimport Identity from './identity/index';\nimport { getTickMethod, registerTickMethod } from './tick-method/index';\nimport { ScaleConfig, Tick } from './types';\n\nregisterScale('cat', Category);\nregisterScale('category', Category);\nregisterScale('identity', Identity);\nregisterScale('linear', Linear);\nregisterScale('log', Log);\nregisterScale('pow', Pow);\nregisterScale('time', Time);\nregisterScale('timeCat', TimeCat);\nregisterScale('quantize', Quantize);\nregisterScale('quantile', Quantile);\n\nexport {\n Category,\n Identity,\n Linear,\n Log,\n Pow,\n Time,\n TimeCat,\n Quantile,\n Quantize,\n Scale,\n getScale,\n registerScale,\n ScaleConfig,\n Tick,\n getTickMethod,\n registerTickMethod,\n};\n","var __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as pathUtil from '@antv/path-util';\nimport { Category, Linear } from '@antv/scale';\nimport { map, each, isEqual, head, isArray } from '@antv/util';\n/**\n * 点数组转 path\n * @param points\n */\nfunction pointsToPath(points) {\n return map(points, function (p, idx) {\n var command = idx === 0 ? 'M' : 'L';\n var x = p[0],\n y = p[1];\n return [command, x, y];\n });\n}\n/**\n * 将点连接成路径 path\n * @param points\n */\nexport function getLinePath(points) {\n return pointsToPath(points);\n}\n/**\n * 将点连成平滑的曲线\n * @param points\n */\nexport function getSmoothLinePath(points) {\n if (points.length <= 2) {\n // 两点以内直接绘制成路径\n return getLinePath(points);\n }\n var data = [];\n each(points, function (p) {\n // 当前点和上一个点一样的时候,忽略掉\n if (!isEqual(p, data.slice(data.length - 2))) {\n data.push(p[0], p[1]);\n }\n });\n var path = pathUtil.catmullRom2Bezier(data, false);\n var _a = head(points),\n x = _a[0],\n y = _a[1];\n path.unshift(['M', x, y]);\n return path;\n}\n/**\n * 将数据转成 path,利用 scale 的归一化能力\n * @param data\n * @param width\n * @param height\n * @param smooth\n */\nexport function dataToPath(data, width, height, smooth) {\n if (smooth === void 0) {\n smooth = true;\n }\n // 利用 scale 来获取 y 上的映射\n var y = new Linear({\n values: data\n });\n var x = new Category({\n values: map(data, function (v, idx) {\n return idx;\n })\n });\n var points = map(data, function (v, idx) {\n return [x.scale(idx) * width, height - y.scale(v) * height];\n });\n return smooth ? getSmoothLinePath(points) : getLinePath(points);\n}\nexport function dataToRectPath(data, width, height, barWidth) {\n if (barWidth === void 0) {\n barWidth = 5;\n }\n // 利用 scale 来获取 y 上的映射\n var y = new Linear({\n values: data\n });\n var x = new Category({\n values: map(data, function (v, idx) {\n return idx;\n })\n });\n var points = map(data, function (v, idx) {\n return [x.scale(idx) * width, height - y.scale(v) * height];\n });\n var rectPoints = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n var param = {\n x: point[0],\n y: point[1],\n y0: height,\n size: barWidth\n };\n var rectPoint = getRectPoints(param);\n rectPoints.push.apply(rectPoints, rectPoint);\n }\n return getRectPath(rectPoints);\n}\n/**\n * 获得 area 面积的横向连接线的 px 位置\n * @param data\n * @param width\n * @param height\n */\nexport function getAreaLineY(data, height) {\n var y = new Linear({\n values: data\n });\n var lineY = Math.max(0, y.min);\n return height - y.scale(lineY) * height;\n}\n/**\n * 线 path 转 area path\n * @param path\n * @param width\n * @param height\n */\nexport function linePathToAreaPath(path, width, height, data) {\n var areaPath = __spreadArray([], path, true);\n var lineYPx = getAreaLineY(data, height);\n areaPath.push(['L', width, lineYPx]);\n areaPath.push(['L', 0, lineYPx]);\n areaPath.push(['Z']);\n return areaPath;\n}\n/**\n * @ignore\n * 根据数据点生成矩形的四个关键点\n * @param pointInfo 数据点信息\n * @returns rect points 返回矩形四个顶点信息\n */\nexport function getRectPoints(pointInfo) {\n var x = pointInfo.x,\n y = pointInfo.y,\n y0 = pointInfo.y0,\n size = pointInfo.size;\n // 有 4 种情况,\n // 1. x, y 都不是数组\n // 2. y是数组,x不是\n // 3. x是数组,y不是\n // 4. x, y 都是数组\n var yMin;\n var yMax;\n if (isArray(y)) {\n yMin = y[0], yMax = y[1];\n } else {\n yMin = y0;\n yMax = y;\n }\n var xMin;\n var xMax;\n if (isArray(x)) {\n xMin = x[0], xMax = x[1];\n } else {\n xMin = x - size / 2;\n xMax = x + size / 2;\n }\n var points = [{\n x: xMin,\n y: yMin\n }, {\n x: xMin,\n y: yMax\n }];\n // 矩形的四个关键点,结构如下(左下角顺时针连接)\n // 1 ---- 2\n // | |\n // 0 ---- 3\n points.push({\n x: xMax,\n y: yMax\n }, {\n x: xMax,\n y: yMin\n });\n return points;\n}\n/**\n * @ignore\n * 根据矩形关键点绘制 path\n * @param points 关键点数组\n * @param isClosed path 是否需要闭合\n * @returns 返回矩形的 path\n */\nexport function getRectPath(points, isClosed) {\n if (isClosed === void 0) {\n isClosed = true;\n }\n var path = [];\n var firstPoint = points[0];\n path.push(['M', firstPoint.x, firstPoint.y]);\n for (var i = 1, len = points.length; i < len; i++) {\n path.push(['L', points[i].x, points[i].y]);\n }\n // 对于 shape=\"line\" path 不应该闭合,否则会造成 lineCap 绘图属性失效\n if (isClosed) {\n path.push(['L', firstPoint.x, firstPoint.y]); // 需要闭合\n path.push(['z']);\n }\n return path;\n}","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { dataToPath, linePathToAreaPath, dataToRectPath } from './path';\nexport var LINE_STYLE = {\n stroke: '#C5C5C5',\n strokeOpacity: 0.85\n};\nexport var AREA_STYLE = {\n fill: '#CACED4',\n opacity: 0.85\n};\n/**\n * 缩略趋势图\n */\nvar Trend = /** @class */function () {\n function Trend(cfg) {\n var _a = cfg.x,\n x = _a === void 0 ? 0 : _a,\n _b = cfg.y,\n y = _b === void 0 ? 0 : _b,\n _c = cfg.width,\n width = _c === void 0 ? 200 : _c,\n _d = cfg.height,\n height = _d === void 0 ? 26 : _d,\n _e = cfg.smooth,\n smooth = _e === void 0 ? true : _e,\n _f = cfg.isArea,\n isArea = _f === void 0 ? false : _f,\n _g = cfg.data,\n data = _g === void 0 ? [] : _g,\n lineStyle = cfg.lineStyle,\n areaStyle = cfg.areaStyle,\n group = cfg.group,\n _h = cfg.interval,\n interval = _h === void 0 ? null : _h;\n this.group = group;\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.data = data;\n this.smooth = smooth;\n this.isArea = isArea;\n this.lineStyle = Object.assign({}, LINE_STYLE, lineStyle);\n this.areaStyle = Object.assign({}, AREA_STYLE, areaStyle);\n this.intervalConfig = interval;\n this.renderLine();\n }\n /**\n * 构造\n * @private\n */\n Trend.prototype.renderLine = function () {\n var _a = this,\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height,\n barWidth = _a.barWidth,\n data = _a.data,\n smooth = _a.smooth,\n isArea = _a.isArea,\n lineStyle = _a.lineStyle,\n areaStyle = _a.areaStyle;\n var trendGroup = this.group.addGroup({\n name: 'trend-group'\n });\n if (data) {\n var path = dataToPath(data, width, height, smooth);\n // 线\n trendGroup.addShape('path', {\n attrs: __assign({\n path: path\n }, lineStyle),\n name: 'trend-line'\n });\n // 在 line 的基础上,绘制面积图\n if (isArea) {\n var areaPath = linePathToAreaPath(path, width, height, data);\n trendGroup.addShape('path', {\n attrs: __assign({\n path: areaPath\n }, areaStyle),\n name: 'trend-area'\n });\n }\n }\n // 绘制柱状图📊\n if (this.intervalConfig) {\n trendGroup.addShape('path', {\n attrs: __assign({\n path: dataToRectPath(this.intervalConfig.data, width, height, this.intervalConfig.style.barWidth)\n }, this.intervalConfig.style),\n name: 'trend-interval'\n });\n }\n // 统一移动到对应的位置\n trendGroup.move(x, y);\n };\n Trend.prototype.destory = function () {\n this.group.destroy();\n };\n return Trend;\n}();\nexport default Trend;","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { isNumber } from '@antv/util';\nvar DEFAULT_STYLE = {\n fill: '#1890ff',\n stroke: '#1890ff',\n type: 'trend',\n radius: 2,\n opacity: 1,\n cursor: 'ew-resize',\n // 高亮的颜色\n highLightFill: '#0050b3'\n};\nvar SIMPLE_DEFAULT_STYLE = {\n fill: '#fff',\n stroke: '#1890ff',\n radius: 2,\n opacity: 1,\n cursor: 'ew-resize'\n};\nvar Handler = /** @class */function () {\n function Handler(cfg) {\n var group = cfg.group,\n name = cfg.name,\n type = cfg.type,\n _a = cfg.x,\n x = _a === void 0 ? 0 : _a,\n _b = cfg.y,\n y = _b === void 0 ? 0 : _b,\n _c = cfg.width,\n width = _c === void 0 ? 2 : _c,\n _d = cfg.height,\n height = _d === void 0 ? 24 : _d,\n _e = cfg.style,\n style = _e === void 0 ? {} : _e;\n this.group = group;\n this.name = name;\n this.handleType = type;\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n if (type === 'trend') {\n this.style = __assign(__assign({}, DEFAULT_STYLE), style);\n } else if (type === 'simple') {\n this.style = __assign(__assign({}, SIMPLE_DEFAULT_STYLE), style);\n }\n this.renderHandle();\n }\n /**\n * 设置位置 x\n * @param x\n */\n Handler.prototype.setX = function (x) {\n this.setXY(x, undefined);\n };\n /**\n * 设置位置 y\n * @param y\n */\n Handler.prototype.setY = function (y) {\n this.setXY(undefined, y);\n };\n Handler.prototype.setXY = function (x, y) {\n if (isNumber(x)) {\n this.x = x;\n }\n if (isNumber(y)) {\n this.y = y;\n }\n this.updateXY();\n };\n /**\n * 初始化组件\n * @private\n */\n Handler.prototype.renderHandle = function () {\n var _a = this,\n width = _a.width,\n height = _a.height,\n style = _a.style,\n name = _a.name;\n var fill = style.fill,\n stroke = style.stroke,\n radius = style.radius,\n opacity = style.opacity,\n cursor = style.cursor;\n this.handleGroup = this.group.addGroup();\n // 趋势图时的 handle\n if (this.handleType === 'trend') {\n // 垂直线\n this.verticalLine = this.handleGroup.addShape('rect', {\n attrs: {\n x: 0,\n y: 0,\n width: width,\n height: height,\n fill: fill,\n stroke: stroke,\n radius: radius,\n opacity: opacity,\n cursor: cursor\n },\n name: \"\".concat(name, \"-handler\")\n });\n this.topCircle = this.handleGroup.addShape('circle', {\n attrs: {\n x: width / 2,\n y: 0,\n r: 2 * width,\n fill: fill,\n stroke: stroke,\n radius: radius,\n opacity: opacity,\n cursor: cursor,\n lineAppendWidth: 12\n },\n name: \"\".concat(name, \"-handler\")\n });\n this.bottomCircle = this.handleGroup.addShape('circle', {\n attrs: {\n x: width / 2,\n y: height,\n r: 2 * width,\n fill: fill,\n stroke: stroke,\n radius: radius,\n opacity: opacity,\n cursor: cursor\n },\n name: \"\".concat(name, \"-handler\")\n });\n } else if (this.handleType === 'simple') {\n this.topCircle = this.handleGroup.addShape('circle', {\n attrs: {\n x: width / 2,\n y: height / 2,\n r: 2 * width,\n fill: fill,\n stroke: stroke,\n radius: radius,\n opacity: opacity,\n cursor: cursor,\n lineWidth: 2\n },\n name: \"\".concat(name, \"-handler\")\n });\n }\n // 移动到对应的位置\n this.updateXY();\n if (this.handleType === 'trend') {\n this.bindTrendEvents();\n } else if (this.handleType === 'simple') {\n this.bindSimpleEvents();\n }\n };\n Handler.prototype.bindSimpleEvents = function () {\n var _this = this;\n var name = this.name;\n this.handleGroup.on(\"\".concat(name, \"-handler:mouseenter\"), function () {\n var highLightFill = _this.style.highLightFill;\n _this.topCircle.attr('fill', highLightFill);\n });\n this.handleGroup.on(\"\".concat(name, \"-handler:mouseleave\"), function () {\n var fill = _this.style.fill;\n _this.topCircle.attr('fill', fill);\n });\n };\n Handler.prototype.bindTrendEvents = function () {\n var _this = this;\n var name = this.name;\n this.handleGroup.on(\"\".concat(name, \"-handler:mouseenter\"), function () {\n var highLightFill = _this.style.highLightFill;\n _this.verticalLine.attr('fill', highLightFill);\n _this.topCircle.attr('fill', highLightFill);\n _this.bottomCircle.attr('fill', highLightFill);\n });\n this.handleGroup.on(\"\".concat(name, \"-handler:mouseleave\"), function () {\n var fill = _this.style.fill;\n _this.verticalLine.attr('fill', fill);\n _this.topCircle.attr('fill', fill);\n _this.bottomCircle.attr('fill', fill);\n });\n };\n Handler.prototype.show = function () {\n this.handleGroup.show();\n };\n Handler.prototype.hide = function () {\n this.handleGroup.hide();\n };\n Handler.prototype.updateXY = function () {\n this.handleGroup.setMatrix([1, 0, 0, 0, 1, 0, this.x, this.y, 1]);\n };\n return Handler;\n}();\nexport default Handler;","export var TIMELINE_START = 'timebarstartplay';\nexport var TIMELINE_END = 'timebarendplay';\nexport var VALUE_CHANGE = 'valuechange';\nexport var TIMEBAR_CONFIG_CHANGE = 'timebarConfigChanged';\nexport var PLAY_PAUSE_BTN = 'playPauseBtn';\nexport var NEXT_STEP_BTN = 'nextStepBtn';\nexport var PRE_STEP_BTN = 'preStepBtn';","/**\n * 基于 G 的按钮组件\n */\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { deepMix } from '@antv/util';\nimport { PLAY_PAUSE_BTN } from './constant';\nvar Button = /** @class */function () {\n function Button(cfg) {\n this.config = deepMix({}, cfg);\n this.init();\n }\n Button.prototype.update = function (cfg) {\n this.config = deepMix({}, this.config, cfg);\n this.updateElement();\n this.renderMarker();\n };\n Button.prototype.init = function () {\n this.initElement();\n this.renderMarker();\n };\n Button.prototype.initElement = function () {\n var _a = this.config,\n group = _a.group,\n style = _a.style;\n var _b = style.scale,\n scale = _b === void 0 ? 1 : _b,\n _c = style.offsetX,\n offsetX = _c === void 0 ? 0 : _c,\n _d = style.offsetY,\n offsetY = _d === void 0 ? 0 : _d;\n var x = this.config.x + offsetX;\n var y = this.config.y + offsetY;\n var buttonGroup = group.addGroup({\n name: PLAY_PAUSE_BTN\n });\n this.startMarkerGroup = buttonGroup.addGroup({\n name: PLAY_PAUSE_BTN\n });\n this.circle = group.addShape('circle', {\n attrs: __assign({\n x: x,\n y: y,\n r: this.config.r * scale\n }, style),\n name: PLAY_PAUSE_BTN\n });\n this.startMarker = this.startMarkerGroup.addShape('path', {\n attrs: {\n path: this.getStartMarkerPath(x, y, scale),\n fill: style.stroke || '#aaa'\n },\n name: 'start-marker'\n });\n this.pauseMarkerGroup = buttonGroup.addGroup({\n name: PLAY_PAUSE_BTN\n });\n var width = 0.25 * this.config.r * scale;\n var height = 0.5 * this.config.r * Math.sqrt(3) * scale;\n this.pauseLeftMarker = this.pauseMarkerGroup.addShape('rect', {\n attrs: {\n x: x - 0.375 * this.config.r * scale,\n y: y - height / 2,\n width: width,\n height: height,\n fill: style.stroke || '#aaa',\n lineWidth: 0\n }\n });\n this.pauseRightMarker = this.pauseMarkerGroup.addShape('rect', {\n attrs: {\n x: x + 1 / 8 * this.config.r * scale,\n y: y - height / 2,\n width: width,\n height: height,\n fill: style.stroke || '#aaa',\n lineWidth: 0\n }\n });\n };\n Button.prototype.updateElement = function () {\n var _a = this.config.style,\n _b = _a.scale,\n scale = _b === void 0 ? 1 : _b,\n _c = _a.offsetX,\n offsetX = _c === void 0 ? 0 : _c,\n _d = _a.offsetY,\n offsetY = _d === void 0 ? 0 : _d;\n var x = this.config.x + offsetX;\n var y = this.config.y + offsetY;\n this.circle.attr('x', x);\n this.circle.attr('y', y);\n this.circle.attr('r', this.config.r * scale);\n this.startMarker.attr('path', this.getStartMarkerPath(x, y, scale));\n var width = 0.25 * this.config.r * scale;\n var height = 0.5 * this.config.r * Math.sqrt(3) * scale;\n this.pauseLeftMarker.attr('x', x - (1 / 4 + 1 / 8) * this.config.r * scale);\n this.pauseLeftMarker.attr('y', y - height / 2);\n this.pauseLeftMarker.attr('width', width);\n this.pauseLeftMarker.attr('height', height);\n this.pauseRightMarker.attr('x', x + 1 / 8 * this.config.r * scale);\n this.pauseRightMarker.attr('y', y - height / 2);\n this.pauseRightMarker.attr('width', width);\n this.pauseRightMarker.attr('height', height);\n };\n Button.prototype.renderMarker = function () {\n if (this.config.isPlay) {\n this.startMarkerGroup.hide();\n this.pauseMarkerGroup.show();\n } else {\n this.startMarkerGroup.show();\n this.pauseMarkerGroup.hide();\n }\n };\n /** 获取播放键 marker path */\n Button.prototype.getStartMarkerPath = function (x, y, scale) {\n var sideLength = 0.5 * this.config.r * Math.sqrt(3) * scale;\n return [['M', x - sideLength / Math.sqrt(3) / 2, y - sideLength / 2], ['L', x + sideLength / Math.sqrt(3), y], ['L', x - sideLength / Math.sqrt(3) / 2, y + sideLength / 2]];\n };\n return Button;\n}();\nexport default Button;","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { deepMix } from '@antv/util';\nimport { ext } from '@antv/matrix-util';\nimport Button from './timeButton';\nimport { TIMEBAR_CONFIG_CHANGE, PRE_STEP_BTN, NEXT_STEP_BTN } from './constant';\nvar transform = ext.transform;\nvar DEFAULT_RECT_FILL = '#aaa';\nvar DEFAULT_RECT_STROKE = 'green';\nvar DEFAULT_PLAYBTN_STYLE = {\n fill: '#aaa',\n fillOpacity: 0.35,\n stroke: '#aaa'\n};\nvar DEFAULT_PREBTN_STYLE = {\n fill: '#fff'\n};\nvar DEFAULT_NEXTBTN_STYLE = {\n fill: 'green'\n};\nvar DEFAULT_SPEED_CONTROLLER_STYLE = {\n pointer: {\n fill: '#aaa',\n lineWidth: 0\n },\n scroller: {\n stroke: '#aaa',\n fill: '#aaa',\n lineWidth: 1,\n lineAppendWidth: 5,\n cursor: 'pointer'\n },\n text: {\n fill: '#aaa',\n textBaseline: 'top'\n }\n};\nvar DEFAULT_TIMETYPE_CONTROLLER_STYLE = {\n check: {\n stroke: 'green',\n lineWidth: 3\n },\n box: {\n fill: '#fff',\n stroke: '#aaa',\n lineWidth: 2,\n radius: 3,\n width: 12,\n height: 12\n },\n text: {\n fill: '#aaa',\n fontSize: 12,\n textBaseline: 'top'\n }\n};\nvar DEFAULT_CONTROLLER_CONFIG = {\n speed: 1,\n loop: false,\n fill: '#fff',\n stroke: '#fff',\n hideTimeTypeController: false,\n preBtnStyle: {\n fill: '#aaa',\n stroke: '#aaa'\n },\n nextBtnStyle: {\n fill: '#aaa',\n stroke: '#aaa'\n },\n playBtnStyle: {\n fill: '#aaa',\n stroke: '#aaa',\n fillOpacity: 0.05\n },\n speedControllerStyle: DEFAULT_SPEED_CONTROLLER_STYLE,\n timeTypeControllerStyle: DEFAULT_TIMETYPE_CONTROLLER_STYLE\n};\nvar SPEED_CONTROLLER_OFFSET = 110;\nvar TOGGLE_MODEL_OFFSET = 50;\nexport var TIME_TYPE = {\n SINGLE: 'single',\n RANGE: 'range'\n};\nvar ControllerBtn = /** @class */function () {\n function ControllerBtn(cfg) {\n this.controllerCfg = deepMix({}, DEFAULT_CONTROLLER_CONFIG, cfg);\n this.group = cfg.group;\n this.controllerGroup = this.group.addGroup({\n name: 'controller-group'\n });\n this.speedAxisY = [];\n this.currentSpeed = this.controllerCfg.speed;\n this.currentType = this.controllerCfg.defaultTimeType || TIME_TYPE.RANGE;\n this.fontFamily = cfg.fontFamily || 'Arial, sans-serif';\n this.init();\n }\n ControllerBtn.prototype.init = function () {\n this.renderPlayButton();\n };\n /** 获取播放键 marker path */\n ControllerBtn.prototype.getNextMarkerPath = function (x, y, len) {\n return [['M', x, y - len], ['L', x + len, y], ['L', x, y + len], ['Z', x, y - len], ['M', x, y], ['L', x - len, y - len], ['L', x - len, y + len], ['Z']];\n };\n ControllerBtn.prototype.getPreMarkerPath = function (x, y, len) {\n return [['M', x, y - len], ['L', x - len, y], ['L', x, y + len], ['L', x, y - len], ['M', x, y], ['L', x + len, y - len], ['L', x + len, y + len], ['Z']];\n };\n ControllerBtn.prototype.renderPlayButton = function () {\n var controllerCfg = this.controllerCfg;\n var width = controllerCfg.width,\n height = controllerCfg.height,\n x = controllerCfg.x,\n y = controllerCfg.y,\n hideTimeTypeController = controllerCfg.hideTimeTypeController,\n _a = controllerCfg.fill,\n fill = _a === void 0 ? DEFAULT_RECT_FILL : _a,\n _b = controllerCfg.stroke,\n stroke = _b === void 0 ? DEFAULT_RECT_STROKE : _b,\n _c = controllerCfg.containerStyle,\n containerStyle = _c === void 0 ? {} : _c;\n var playBtnStyle = __assign(__assign({}, DEFAULT_PLAYBTN_STYLE), controllerCfg.playBtnStyle || {});\n var preBtnStyle = __assign(__assign({}, DEFAULT_PREBTN_STYLE), controllerCfg.preBtnStyle || {});\n var nextBtnStyle = __assign(__assign({}, DEFAULT_NEXTBTN_STYLE), controllerCfg.nextBtnStyle || {});\n var r = height / 2 - 5;\n var realY = y + 10;\n // 绘制最外层的矩形包围框\n var container = this.controllerGroup.addShape('rect', {\n attrs: __assign({\n x: x,\n y: realY,\n width: width,\n height: height,\n stroke: stroke,\n fill: fill\n }, containerStyle),\n name: 'container-rect'\n });\n if (this.playButton) {\n this.playButton.update({\n x: width / 2,\n y: realY,\n r: r\n });\n } else {\n this.playButton = new Button({\n group: this.controllerGroup,\n x: width / 2,\n y: realY + r + 5,\n r: r,\n isPlay: this.isPlay,\n style: playBtnStyle\n });\n }\n // 后退按钮\n var prePaddingX = preBtnStyle.offsetX || 0;\n var prePaddingY = preBtnStyle.offsetY || 0;\n var preR = (preBtnStyle.scale || 1) * r;\n this.controllerGroup.addShape('path', {\n attrs: __assign({\n path: this.getPreMarkerPath(width / 2 - 5 * r + prePaddingX, realY + r + 5 + prePaddingY, preR * 0.5)\n }, preBtnStyle),\n name: PRE_STEP_BTN\n });\n // 前进按钮\n var nxtPaddingX = nextBtnStyle.offsetX || 0;\n var nxtPaddingY = nextBtnStyle.offsetY || 0;\n var nxtR = (nextBtnStyle.scale || 1) * r;\n this.controllerGroup.addShape('path', {\n attrs: __assign({\n path: this.getNextMarkerPath(width / 2 + 5 * r + nxtPaddingX, realY + r + 5 + nxtPaddingY, nxtR * 0.5)\n }, nextBtnStyle),\n name: NEXT_STEP_BTN\n });\n container.toBack();\n // 调节speed的按钮\n this.renderSpeedBtn();\n if (!hideTimeTypeController) {\n this.renderToggleTime();\n }\n this.bindEvent();\n // 根据配置的 scale、offsetX,offsetY 缩放和移动控制栏\n var _d = this.controllerCfg.scale,\n scale = _d === void 0 ? 1 : _d;\n var currentBBox = this.controllerGroup.getCanvasBBox();\n var centerX = (currentBBox.maxX + currentBBox.minX) / 2;\n var centerY = (currentBBox.maxY + currentBBox.minY) / 2;\n var matrix = transform([1, 0, 0, 0, 1, 0, 0, 0, 1], [['t', -centerX, -centerY], ['s', scale, scale], ['t', centerX, centerY]]);\n this.controllerGroup.setMatrix(matrix);\n };\n ControllerBtn.prototype.renderSpeedBtn = function () {\n var _a = this.controllerCfg,\n y = _a.y,\n width = _a.width,\n hideTimeTypeController = _a.hideTimeTypeController;\n var speedControllerStyle = __assign(__assign({}, DEFAULT_SPEED_CONTROLLER_STYLE), this.controllerCfg.speedControllerStyle || {});\n var _b = speedControllerStyle.scroller,\n scroller = _b === void 0 ? {} : _b,\n _c = speedControllerStyle.text,\n text = _c === void 0 ? {} : _c,\n _d = speedControllerStyle.pointer,\n pointer = _d === void 0 ? {} : _d,\n _e = speedControllerStyle.scale,\n scale = _e === void 0 ? 1 : _e,\n _f = speedControllerStyle.offsetX,\n offsetX = _f === void 0 ? 0 : _f,\n _g = speedControllerStyle.offsetY,\n offsetY = _g === void 0 ? 0 : _g;\n var speedGroup = this.controllerGroup.addGroup({\n name: 'speed-group'\n });\n this.speedGroup = speedGroup;\n var speedNum = [];\n var maxSpeed = 5;\n this.speedAxisY = [19, 22, 26, 32, 39];\n // 增加speed刻度\n for (var i = 0; i < 5; i++) {\n var axisY = y + this.speedAxisY[i];\n // 灰色刻度\n var startX = width - (!hideTimeTypeController ? SPEED_CONTROLLER_OFFSET : TOGGLE_MODEL_OFFSET);\n speedGroup.addShape('line', {\n attrs: __assign({\n x1: startX,\n x2: startX + 15,\n y1: axisY,\n y2: axisY\n }, scroller),\n speed: maxSpeed,\n name: 'speed-rect'\n });\n this.speedAxisY[i] = axisY;\n speedNum.push(maxSpeed);\n maxSpeed = maxSpeed - 1;\n }\n // 速度文本\n this.speedText = speedGroup.addShape('text', {\n attrs: __assign({\n x: width - (!hideTimeTypeController ? SPEED_CONTROLLER_OFFSET : TOGGLE_MODEL_OFFSET) + 20,\n y: this.speedAxisY[0] + 4,\n text: \"1.0X\",\n fontFamily: this.fontFamily || 'Arial, sans-serif'\n }, text),\n name: 'speed-text'\n });\n this.speedPoint = speedGroup.addShape('path', {\n attrs: __assign({\n path: this.getPointerPath(width - (!hideTimeTypeController ? SPEED_CONTROLLER_OFFSET : TOGGLE_MODEL_OFFSET), 0),\n matrix: [1, 0, 0, 0, 1, 0, 0, this.speedAxisY[4], 1]\n }, pointer),\n name: 'speed-pointer'\n });\n // 根据配置在 speedControllerStyle 中的 scale offsetX offsetY 缩放和移动速度控制器\n var currentBBox = this.speedGroup.getCanvasBBox();\n var centerX = (currentBBox.maxX + currentBBox.minX) / 2;\n var centerY = (currentBBox.maxY + currentBBox.minY) / 2;\n var matrix = this.speedGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n matrix = transform(matrix, [['t', -centerX, -centerY], ['s', scale, scale], ['t', centerX + offsetX * scale, centerY + offsetY * scale]]);\n this.speedGroup.setMatrix(matrix);\n };\n ControllerBtn.prototype.getPointerPath = function (x, y) {\n return [['M', x, y], ['L', x - 10, y - 4], ['L', x - 10, y + 4], ['Z']];\n };\n ControllerBtn.prototype.renderToggleTime = function () {\n var _a, _b;\n var _c = this.controllerCfg,\n width = _c.width,\n defaultTimeType = _c.defaultTimeType;\n var timeTypeControllerStyle = __assign(__assign({}, DEFAULT_TIMETYPE_CONTROLLER_STYLE), this.controllerCfg.timeTypeControllerStyle || {});\n var _d = timeTypeControllerStyle.scale,\n scale = _d === void 0 ? 1 : _d,\n _e = timeTypeControllerStyle.offsetX,\n offsetX = _e === void 0 ? 0 : _e,\n _f = timeTypeControllerStyle.offsetY,\n offsetY = _f === void 0 ? 0 : _f,\n _g = timeTypeControllerStyle.box,\n box = _g === void 0 ? {} : _g,\n _h = timeTypeControllerStyle.check,\n check = _h === void 0 ? {} : _h,\n _j = timeTypeControllerStyle.text,\n text = _j === void 0 ? {} : _j;\n this.toggleGroup = this.controllerGroup.addGroup({\n name: 'toggle-group'\n });\n var isChecked = defaultTimeType === TIME_TYPE.SINGLE;\n this.toggleGroup.addShape('rect', {\n attrs: __assign({\n x: width - TOGGLE_MODEL_OFFSET,\n y: this.speedAxisY[0] + 3.5\n }, box),\n isChecked: isChecked,\n name: 'toggle-model'\n });\n this.checkedIcon = this.toggleGroup.addShape('path', {\n attrs: __assign({\n path: [['M', width - TOGGLE_MODEL_OFFSET + 3, this.speedAxisY[1] + 6], ['L', width - TOGGLE_MODEL_OFFSET + 7, this.speedAxisY[1] + 10], ['L', width - TOGGLE_MODEL_OFFSET + 12, this.speedAxisY[1] + 4]]\n }, check),\n capture: false,\n name: 'check-icon'\n });\n if (!isChecked) this.checkedIcon.hide();\n this.checkedText = this.toggleGroup.addShape('text', {\n attrs: __assign({\n text: isChecked ? ((_a = this.controllerCfg) === null || _a === void 0 ? void 0 : _a.timeRangeControllerText) || '时间范围' : ((_b = this.controllerCfg) === null || _b === void 0 ? void 0 : _b.timePointControllerText) || '单一时间',\n x: width - TOGGLE_MODEL_OFFSET + 15,\n y: this.speedAxisY[0] + 4,\n fontFamily: typeof window !== 'undefined' ? window.getComputedStyle(document.body, null).getPropertyValue('font-family') || 'Arial, sans-serif' : 'Arial, sans-serif'\n }, text),\n name: 'checked-text'\n });\n // 根据配置在 timeTypeControllerStyle 中的 scale offsetX offsetY 缩放和移动速度控制器\n var currentBBox = this.toggleGroup.getCanvasBBox();\n var centerX = (currentBBox.maxX + currentBBox.minX) / 2;\n var centerY = (currentBBox.maxY + currentBBox.minY) / 2;\n var matrix = this.toggleGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n matrix = transform(matrix, [['t', -centerX, -centerY], ['s', scale, scale], ['t', centerX + offsetX * scale, centerY + offsetY * scale]]);\n this.toggleGroup.setMatrix(matrix);\n };\n ControllerBtn.prototype.bindEvent = function () {\n var _this = this;\n this.speedGroup.on('speed-rect:click', function (evt) {\n var currentPointerY = evt.target.attr('y1');\n var pointerMatrix = _this.speedPoint.attr('matrix');\n var currentYIdx = _this.speedAxisY.indexOf(pointerMatrix[7] || 0);\n var targetYIdx = _this.speedAxisY.indexOf(currentPointerY);\n var yDiff = _this.speedAxisY[targetYIdx] - _this.speedAxisY[currentYIdx];\n pointerMatrix = transform(pointerMatrix, [['t', 0, yDiff]]);\n _this.speedPoint.setMatrix(pointerMatrix);\n _this.currentSpeed = _this.speedAxisY.length - targetYIdx;\n _this.speedText.attr('text', \"\".concat(_this.currentSpeed, \".0X\"));\n _this.group.emit(TIMEBAR_CONFIG_CHANGE, {\n speed: _this.currentSpeed,\n type: _this.currentType\n });\n });\n this.speedGroup.on('mousewheel', function (evt) {\n evt.preventDefault();\n var pointerMatrix = _this.speedPoint.attr('matrix') || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var currentPointerY = pointerMatrix[7];\n var currentYIdx = _this.speedAxisY.indexOf(currentPointerY);\n if (currentYIdx === -1) {\n // 找到最近的一个 y\n var minDist_1 = Infinity;\n _this.speedAxisY.forEach(function (y, idx) {\n var dist = Math.abs(y - currentPointerY);\n if (minDist_1 > dist) {\n minDist_1 = dist;\n currentYIdx = idx;\n }\n });\n }\n if (evt.originalEvent.deltaY > 0) currentYIdx = Math.max(0, currentYIdx - 1);else currentYIdx = Math.min(_this.speedAxisY.length - 1, currentYIdx + 1);\n var yDiff = _this.speedAxisY[currentYIdx] - currentPointerY;\n pointerMatrix = transform(pointerMatrix, [['t', 0, yDiff]]);\n _this.speedPoint.setMatrix(pointerMatrix);\n _this.currentSpeed = _this.speedAxisY.length - currentYIdx;\n _this.speedText.attr('text', \"\".concat(_this.currentSpeed, \".0X\"));\n _this.group.emit(TIMEBAR_CONFIG_CHANGE, {\n speed: _this.currentSpeed,\n type: _this.currentType\n });\n });\n if (this.toggleGroup) {\n this.toggleGroup.on('toggle-model:click', function (evt) {\n var _a, _b;\n var isChecked = evt.target.get('isChecked');\n if (!isChecked) {\n _this.checkedIcon.show();\n _this.checkedText.attr('text', ((_a = _this.controllerCfg) === null || _a === void 0 ? void 0 : _a.timeRangeControllerText) || '时间范围');\n _this.currentType = TIME_TYPE.SINGLE;\n } else {\n _this.checkedIcon.hide();\n _this.checkedText.attr('text', ((_b = _this.controllerCfg) === null || _b === void 0 ? void 0 : _b.timePointControllerText) || '单一时间');\n _this.currentType = TIME_TYPE.RANGE;\n }\n evt.target.set('isChecked', !isChecked);\n _this.group.emit(TIMEBAR_CONFIG_CHANGE, {\n type: _this.currentType,\n speed: _this.currentSpeed\n });\n });\n }\n };\n ControllerBtn.prototype.destroy = function () {\n this.speedGroup.off('speed-rect:click');\n if (this.toggleGroup) {\n this.toggleGroup.off('toggle-model:click');\n this.toggleGroup.destroy();\n }\n this.speedGroup.destroy();\n };\n return ControllerBtn;\n}();\nexport default ControllerBtn;","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { get, size, assign, each, isNumber } from '@antv/util';\nimport { ext } from '@antv/matrix-util';\nimport Trend from './trend';\nimport Handler from './handler';\nimport { isString } from '@antv/util';\nimport ControllerBtn, { TIME_TYPE } from './controllerBtn';\nimport { VALUE_CHANGE, TIMELINE_START, TIMEBAR_CONFIG_CHANGE, PLAY_PAUSE_BTN, NEXT_STEP_BTN, PRE_STEP_BTN, TIMELINE_END } from './constant';\nvar transform = ext.transform;\n/**\n * 一些默认的样式配置\n */\nexport var BACKGROUND_STYLE = {\n fill: '#416180',\n opacity: 0.05\n};\nvar SIMPLE_BACKGROUND_STYLE = {\n fill: '#416180',\n opacity: 0.15,\n radius: 5\n};\nexport var FOREGROUND_STYLE = {\n fill: '#5B8FF9',\n opacity: 0.3,\n cursor: 'grab'\n};\nexport var DEFAULT_HANDLER_WIDTH = 2;\nexport var HANDLER_STYLE = {\n width: DEFAULT_HANDLER_WIDTH,\n height: 24\n};\nexport var TEXT_STYLE = {\n textBaseline: 'middle',\n fill: '#000',\n opacity: 0.45\n};\nexport var TICK_LABEL_STYLE = {\n textAlign: 'center',\n textBaseline: 'top',\n fill: '#607889',\n opacity: 0.35\n};\nexport var TICK_LINE_STYLE = {\n lineWidth: 1,\n stroke: '#ccc'\n};\nvar TrendTimeBar = /** @class */function () {\n function TrendTimeBar(cfg) {\n var _this = this;\n this.prevX = 0;\n this.onMouseDown = function (handler) {\n return function (e) {\n // 1. 记录点击的滑块\n _this.currentHandler = handler;\n var event = e.originalEvent;\n // 2. 存储当前点击位置\n event.stopPropagation();\n event.preventDefault();\n // 兼容移动端获取数据\n _this.prevX = get(event, 'touches.0.pageX', event.pageX);\n // 3. 开始滑动的时候,绑定 move 和 up 事件\n var containerDOM = _this.canvas.get('container');\n containerDOM.addEventListener('mousemove', _this.onMouseMove);\n containerDOM.addEventListener('mouseup', _this.onMouseUp);\n containerDOM.addEventListener('mouseleave', _this.onMouseUp);\n // 移动端事件\n containerDOM.addEventListener('touchmove', _this.onMouseMove);\n containerDOM.addEventListener('touchend', _this.onMouseUp);\n containerDOM.addEventListener('touchcancel', _this.onMouseUp);\n };\n };\n this.onMouseMove = function (e) {\n // 滑动过程中,计算偏移,更新滑块,然后 emit 数据出去\n e.stopPropagation();\n e.preventDefault();\n var x = get(e, 'touches.0.pageX', e.pageX);\n // 横向的 slider 只处理 x\n var offsetX = x - _this.prevX;\n var offsetXRange = _this.adjustOffsetRange(offsetX / _this.width);\n // 更新 start end range 范围\n _this.updateStartEnd(offsetXRange);\n // 更新 ui\n _this.updateUI();\n _this.prevX = x;\n };\n this.onMouseUp = function () {\n // 结束之后,取消绑定的事件\n if (_this.currentHandler) {\n _this.currentHandler = undefined;\n }\n var containerDOM = _this.canvas.get('container');\n if (containerDOM) {\n containerDOM.removeEventListener('mousemove', _this.onMouseMove);\n containerDOM.removeEventListener('mouseup', _this.onMouseUp);\n // 防止滑动到 canvas 外部之后,状态丢失\n containerDOM.removeEventListener('mouseleave', _this.onMouseUp);\n // 移动端事件\n containerDOM.removeEventListener('touchmove', _this.onMouseMove);\n containerDOM.removeEventListener('touchend', _this.onMouseUp);\n containerDOM.removeEventListener('touchcancel', _this.onMouseUp);\n }\n };\n var _a = cfg.x,\n x = _a === void 0 ? 0 : _a,\n _b = cfg.y,\n y = _b === void 0 ? 0 : _b,\n _c = cfg.width,\n width = _c === void 0 ? 100 : _c,\n height = cfg.height,\n _d = cfg.padding,\n padding = _d === void 0 ? 10 : _d,\n trendCfg = cfg.trendCfg,\n _e = cfg.controllerCfg,\n controllerCfg = _e === void 0 ? {\n speed: 1\n } : _e,\n _f = cfg.backgroundStyle,\n backgroundStyle = _f === void 0 ? {} : _f,\n _g = cfg.foregroundStyle,\n foregroundStyle = _g === void 0 ? {} : _g,\n _h = cfg.handlerStyle,\n handlerStyle = _h === void 0 ? {} : _h,\n _j = cfg.textStyle,\n textStyle = _j === void 0 ? {} : _j,\n // 缩略轴的初始位置\n _k = cfg.start,\n // 缩略轴的初始位置\n start = _k === void 0 ? 0 : _k,\n _l = cfg.end,\n end = _l === void 0 ? 1 : _l,\n _m = cfg.minText,\n minText = _m === void 0 ? '' : _m,\n _o = cfg.maxText,\n maxText = _o === void 0 ? '' : _o,\n group = cfg.group,\n graph = cfg.graph,\n canvas = cfg.canvas,\n _p = cfg.tick,\n tick = _p === void 0 ? {\n tickLabelStyle: {},\n tickLineStyle: {},\n tickLabelFormatter: function tickLabelFormatter(d) {\n return d;\n },\n ticks: []\n } : _p,\n type = cfg.type;\n this.graph = graph;\n this.canvas = canvas;\n this.group = group;\n this.timeBarType = type;\n // position size\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.padding = padding;\n this.ticks = tick.ticks;\n this.trendCfg = trendCfg;\n this.controllerCfg = controllerCfg;\n this.currentSpeed = controllerCfg.speed || 1;\n this.tickLabelFormatter = tick.tickLabelFormatter;\n // style\n if (type === 'trend') {\n this.backgroundStyle = __assign(__assign({}, BACKGROUND_STYLE), backgroundStyle);\n } else if (type === 'simple') {\n this.backgroundStyle = __assign(__assign({}, SIMPLE_BACKGROUND_STYLE), backgroundStyle);\n }\n this.foregroundStyle = __assign(__assign({}, FOREGROUND_STYLE), foregroundStyle);\n this.handlerStyle = __assign(__assign({}, HANDLER_STYLE), handlerStyle);\n this.textStyle = __assign(__assign({}, TEXT_STYLE), textStyle);\n this.tickLabelStyle = __assign(__assign({}, TICK_LABEL_STYLE), tick.tickLabelStyle);\n this.tickLineStyle = __assign(__assign({}, TICK_LINE_STYLE), tick.tickLineStyle);\n this.currentMode = controllerCfg.defaultTimeType || TIME_TYPE.RANGE;\n // 初始信息\n this.start = start;\n this.end = end;\n this.minText = minText;\n this.maxText = maxText;\n // 初始化 fontFamily,如果有浏览器,取 body 上的字体,防止文字更新时局部渲染造成的重影\n this.fontFamily = typeof window !== 'undefined' ? window.getComputedStyle(document.body, null).getPropertyValue('font-family') || 'Arial, sans-serif' : 'Arial, sans-serif';\n this.renderSlider();\n }\n /**\n * 更新配置\n * @param cfg\n */\n TrendTimeBar.prototype.update = function (cfg) {\n var x = cfg.x,\n y = cfg.y,\n width = cfg.width,\n height = cfg.height,\n minText = cfg.minText,\n maxText = cfg.maxText,\n start = cfg.start,\n end = cfg.end;\n // start、end 只能是 0~1 范围\n this.start = Math.min(1, Math.max(start, 0));\n this.end = Math.min(1, Math.max(end, 0));\n // 如果传了则更新,没有传则不更新\n // @ts-ignore\n assign(this, {\n x: x,\n y: y,\n width: width,\n height: height,\n minText: minText,\n maxText: maxText\n });\n // 更新 ui,不自动绘制\n this.updateUI();\n };\n TrendTimeBar.prototype.setText = function (minText, maxText) {\n this.minTextShape.attr('text', minText);\n this.maxTextShape.attr('text', maxText);\n };\n /**\n * 初始化组件结构\n * @private\n */\n TrendTimeBar.prototype.renderSlider = function () {\n var _this = this;\n var _a = this,\n width = _a.width,\n height = _a.height,\n timeBarType = _a.timeBarType;\n // 趋势图数据\n if (timeBarType === 'trend' && size(get(this.trendCfg, 'data'))) {\n var trendComponent = new Trend(__assign(__assign({\n x: this.x,\n y: this.y,\n width: width,\n height: height\n }, this.trendCfg), {\n group: this.group\n }));\n this.trendComponent = trendComponent;\n }\n var sliderGroup = this.group.addGroup({\n name: 'slider-group'\n });\n // 1. 背景\n sliderGroup.addShape('rect', {\n attrs: __assign({\n x: 0,\n y: 0,\n width: width,\n height: height\n }, this.backgroundStyle),\n name: 'background'\n });\n var textGroup = this.group.addGroup();\n // 2. 左右文字\n if (timeBarType === 'trend') {\n this.minTextShape = textGroup.addShape('text', {\n attrs: __assign({\n x: 0,\n y: height / 2 + this.y,\n textAlign: 'right',\n text: this.minText,\n silent: false,\n fontFamily: this.fontFamily || 'Arial, sans-serif',\n stroke: '#fff',\n lineWidth: 5\n }, this.textStyle),\n capture: false,\n name: 'min-text-shape'\n });\n this.maxTextShape = textGroup.addShape('text', {\n attrs: __assign({\n y: height / 2 + this.y,\n textAlign: 'left',\n text: this.maxText,\n silent: false,\n fontFamily: this.fontFamily || 'Arial, sans-serif',\n stroke: '#fff',\n lineWidth: 5\n }, this.textStyle),\n capture: false,\n name: 'max-text-shape'\n });\n } else {\n this.minTextShape = textGroup.addShape('text', {\n attrs: __assign({\n x: 0,\n y: this.y - 10,\n textAlign: 'center',\n text: this.minText,\n silent: false,\n fontFamily: this.fontFamily || 'Arial, sans-serif',\n stroke: '#fff',\n lineWidth: 5\n }, this.textStyle),\n capture: false,\n name: 'min-text-shape'\n });\n this.maxTextShape = textGroup.addShape('text', {\n attrs: __assign({\n y: this.y - 10,\n textAlign: 'center',\n text: this.maxText,\n silent: false,\n fontFamily: this.fontFamily || 'Arial, sans-serif',\n stroke: '#fff',\n lineWidth: 5\n }, this.textStyle),\n capture: false,\n name: 'max-text-shape'\n });\n }\n // 3. 前景 选中背景框\n this.foregroundShape = this.group.addGroup().addShape('rect', {\n attrs: __assign({\n x: 0,\n y: this.y,\n height: height\n }, this.foregroundStyle),\n name: 'foreground-shape'\n });\n this.foregroundShape.on('mousedown', function (e) {\n e.target.attr('cursor', 'grabbing');\n });\n this.foregroundShape.on('mouseup', function (e) {\n e.target.attr('cursor', _this.foregroundStyle.cursor || 'grab');\n });\n // 滑块相关的大小信息\n var handlerWidth = get(this.handlerStyle, 'width', 2);\n var handlerHeight = get(this.handlerStyle, 'height', 24);\n var minHandleGroup = this.group.addGroup({\n name: 'minHandlerShape'\n });\n // 4. 左右滑块\n this.minHandlerShape = new Handler({\n name: 'minHandlerShape',\n group: minHandleGroup,\n type: timeBarType,\n x: this.x,\n y: this.y,\n width: handlerWidth,\n height: handlerHeight,\n style: this.handlerStyle\n });\n var maxHandleGroup = this.group.addGroup({\n name: 'maxHandlerShape'\n });\n this.maxHandlerShape = new Handler({\n name: 'maxHandlerShape',\n group: maxHandleGroup,\n type: timeBarType,\n x: this.x,\n y: this.y,\n width: handlerWidth,\n height: handlerHeight,\n style: this.handlerStyle\n });\n // 缩略图下面的时间刻度\n var tickData = this.ticks;\n var interval = width / (tickData.length - 1);\n this.tickPosList = [];\n if (this.textList && this.textList.length) {\n this.textList.forEach(function (text) {\n text.destroy();\n });\n }\n var lastX = -Infinity;\n var rotate = this.tickLabelStyle.rotate;\n delete this.tickLabelStyle.rotate;\n this.textList = tickData.map(function (data, index) {\n _this.tickPosList.push(_this.x + index * interval);\n var label;\n if (_this.tickLabelFormatter) {\n label = _this.tickLabelFormatter(data);\n if (!isString(label) && label) {\n // return true\n label = data.date;\n }\n } else {\n label = data.date;\n }\n // 文本刻度\n var textX = _this.x + index * interval,\n textY = _this.y + height + 5;\n var text = _this.group.addShape('text', {\n attrs: __assign({\n x: textX,\n y: textY,\n text: label,\n fontFamily: _this.fontFamily || 'Arial, sans-serif'\n }, _this.tickLabelStyle),\n name: 'tick-label'\n });\n if (isNumber(rotate) && index !== tickData.length - 1) {\n var matrix = transform([1, 0, 0, 0, 1, 0, 0, 0, 1], [['t', -textX, -textY], ['r', rotate], ['t', textX - 5, textY + 2]]);\n text.attr({\n textAlign: 'left',\n matrix: matrix\n });\n }\n if (index === 0) {\n text.attr({\n textAlign: 'left'\n });\n } else if (index !== tickData.length - 1) {\n text.attr({\n textAlign: 'right'\n });\n }\n // 文本刻度上面的竖线\n var line = _this.group.addShape('line', {\n attrs: __assign({\n x1: _this.x + index * interval,\n y1: _this.y + height + 2,\n x2: _this.x + index * interval,\n y2: _this.y + height + 6\n }, _this.tickLineStyle),\n name: 'tick-line'\n });\n line.toBack();\n var bbox = text.getBBox();\n // 抽样,标签与标签间距不小于 10\n if (bbox.minX > lastX) {\n text.show();\n line.show();\n lastX = bbox.minX + bbox.width + 10;\n } else {\n text.hide();\n line.hide();\n }\n return text;\n });\n // 渲染播放、快进和后退的控制按钮\n this.controllerBtnGroup = new ControllerBtn(__assign({\n group: this.group,\n x: this.x,\n y: this.y + height + 25,\n width: width,\n height: 35\n }, this.controllerCfg));\n // 初始化 minText 和 maxText,方便计算它们的 bbox\n this.updateStartEnd(0);\n // 根据 start end 更新 ui 的位置信息\n this.updateUI();\n // 移动到对应的位置\n sliderGroup.move(this.x, this.y);\n // 绑定事件鼠标事件\n this.bindEvents();\n if (this.currentMode === TIME_TYPE.SINGLE) {\n this.minHandlerShape.hide();\n this.foregroundShape.hide();\n this.minTextShape.hide();\n }\n };\n /**\n * 绑定事件:\n * - 点击\n * - 滑动\n * - 拖拽\n * - 滚动\n * @private\n */\n TrendTimeBar.prototype.bindEvents = function () {\n var _this = this;\n // 1. 左滑块的滑动\n var minHandleShapeGroup = this.group.find(function (group) {\n return group.get('name') === 'minHandlerShape';\n });\n if (minHandleShapeGroup) {\n minHandleShapeGroup.on('minHandlerShape-handler:mousedown', this.onMouseDown(this.minHandlerShape));\n minHandleShapeGroup.on('minHandlerShape-handler:touchstart', this.onMouseDown(this.minHandlerShape));\n }\n var maxHandleShapeGroup = this.group.find(function (group) {\n return group.get('name') === 'maxHandlerShape';\n });\n // 2. 右滑块的滑动\n if (maxHandleShapeGroup) {\n maxHandleShapeGroup.on('maxHandlerShape-handler:mousedown', this.onMouseDown(this.maxHandlerShape));\n maxHandleShapeGroup.on('maxHandlerShape-handler:touchstart', this.onMouseDown(this.maxHandlerShape));\n }\n // 3. 前景选中区域\n this.foregroundShape.on('mousedown', this.onMouseDown(this.foregroundShape));\n this.foregroundShape.on('touchstart', this.onMouseDown(this.foregroundShape));\n // 播放区按钮控制\n /** 播放/暂停事件 */\n this.group.on(\"\".concat(PLAY_PAUSE_BTN, \":click\"), function () {\n _this.isPlay = !_this.isPlay;\n _this.currentHandler = _this.maxHandlerShape;\n _this.changePlayStatus();\n });\n // 处理前进一步的事件\n this.group.on(\"\".concat(NEXT_STEP_BTN, \":click\"), function () {\n _this.currentHandler = _this.maxHandlerShape;\n _this.updateStartEnd(0.01);\n _this.updateUI();\n });\n // 处理后退一步的事件\n this.group.on(\"\".concat(PRE_STEP_BTN, \":click\"), function () {\n _this.currentHandler = _this.maxHandlerShape;\n _this.updateStartEnd(-0.01);\n _this.updateUI();\n });\n this.group.on(TIMEBAR_CONFIG_CHANGE, function (_a) {\n var type = _a.type,\n speed = _a.speed;\n _this.currentSpeed = speed;\n _this.currentMode = type;\n if (type === TIME_TYPE.SINGLE) {\n _this.minHandlerShape.hide();\n _this.foregroundShape.hide();\n _this.minTextShape.hide();\n } else if (type === TIME_TYPE.RANGE) {\n _this.minHandlerShape.show();\n _this.foregroundShape.show();\n _this.minTextShape.show();\n }\n });\n };\n /** 输入当前圆点位置,输出离哪个 tick 的位置最近 */\n TrendTimeBar.prototype.adjustTickIndex = function (timeSelectX) {\n for (var i = 0; i < this.tickPosList.length - 1; i++) {\n if (this.tickPosList[i] <= timeSelectX && timeSelectX <= this.tickPosList[i + 1]) {\n return Math.abs(this.tickPosList[i] - timeSelectX) < Math.abs(timeSelectX - this.tickPosList[i + 1]) ? i : i + 1;\n }\n }\n return 0;\n };\n /**\n * 调整 offsetRange,因为一些范围的限制\n * @param offsetRange\n */\n TrendTimeBar.prototype.adjustOffsetRange = function (offsetRange) {\n // 针对不同的滑动组件,处理的方式不同\n switch (this.currentHandler) {\n case this.minHandlerShape:\n {\n var min = 0 - this.start;\n var max = 1 - this.start;\n return Math.min(max, Math.max(min, offsetRange));\n }\n case this.maxHandlerShape:\n {\n var min = 0 - this.end;\n var max = 1 - this.end;\n return Math.min(max, Math.max(min, offsetRange));\n }\n case this.foregroundShape:\n {\n var min = 0 - this.start;\n var max = 1 - this.end;\n return Math.min(max, Math.max(min, offsetRange));\n }\n default:\n return 0;\n }\n };\n /**\n * 更新起始、结束的控制块位置、文本、范围值(原始值)\n * @param offsetRange\n */\n TrendTimeBar.prototype.updateStartEnd = function (offsetRange) {\n var minData = this.ticks[this.adjustTickIndex(this.start * this.width)];\n var maxData = this.ticks[this.adjustTickIndex(this.end * this.width)];\n if (!this.currentHandler) {\n this.minText = this.tickLabelFormatter ? this.tickLabelFormatter(minData) : minData === null || minData === void 0 ? void 0 : minData.date;\n this.maxText = this.tickLabelFormatter ? this.tickLabelFormatter(maxData) : maxData === null || maxData === void 0 ? void 0 : maxData.date;\n return;\n }\n // 操作不同的组件,反馈不一样\n switch (this.currentHandler) {\n case this.minHandlerShape:\n // 拖动最小滑块时使用当前最大值设置最大值的文本,以便恢复到默认值\n this.maxText = this.maxTextShape.attr('text');\n this.start += offsetRange;\n this.minText = this.tickLabelFormatter ? this.tickLabelFormatter(minData) : minData.date;\n break;\n case this.maxHandlerShape:\n // 拖动最大滑块时使用当前最小值设置最小值的文本,以便恢复到默认值\n this.minText = this.minTextShape.attr('text');\n this.end += offsetRange;\n this.maxText = this.tickLabelFormatter ? this.tickLabelFormatter(maxData) : maxData.date;\n break;\n case this.foregroundShape:\n this.start += offsetRange;\n this.end += offsetRange;\n this.minText = this.tickLabelFormatter ? this.tickLabelFormatter(minData) : minData.date;\n this.maxText = this.tickLabelFormatter ? this.tickLabelFormatter(maxData) : maxData.date;\n break;\n default:\n break;\n }\n };\n /**\n * 根据移动的比例来更新 ui,更新范围(0-1 范围的比例值)\n * @private\n */\n TrendTimeBar.prototype.updateUI = function () {\n var _this = this;\n if (this.start < 0) {\n this.start = 0;\n }\n if (this.end > 1) {\n this.end = 1;\n }\n var min = this.x + this.start * this.width;\n var max = this.x + this.end * this.width;\n // 1. foreground\n this.foregroundShape.attr('x', min);\n this.foregroundShape.attr('width', max - min);\n // 滑块相关的大小信息\n var handlerWidth = get(this.handlerStyle, 'width', DEFAULT_HANDLER_WIDTH);\n // 设置文本\n this.setText(this.minText, this.maxText);\n var _a = this.dodgeText([min, max]),\n minAttrs = _a[0],\n maxAttrs = _a[1];\n // 2. 左侧滑块和文字位置\n this.minHandlerShape.setX(min - handlerWidth / 2);\n each(minAttrs, function (v, k) {\n return _this.minTextShape.attr(k, v);\n });\n // 3. 右侧滑块和文字位置\n this.maxHandlerShape.setX(max - handlerWidth / 2);\n each(maxAttrs, function (v, k) {\n return _this.maxTextShape.attr(k, v);\n });\n if (this.currentMode === TIME_TYPE.RANGE) {\n // 因为存储的 start、end 可能不一定是按大小存储的,所以排序一下,对外是 end >= start\n this.graph.emit(VALUE_CHANGE, {\n value: [this.start, this.end].sort()\n });\n } else if (this.currentMode === TIME_TYPE.SINGLE) {\n this.graph.emit(VALUE_CHANGE, {\n value: [this.end, this.end]\n });\n }\n };\n /**\n * 调整 text 的位置,自动躲避\n * 根据位置,调整返回新的位置\n * @param range\n */\n TrendTimeBar.prototype.dodgeText = function (range) {\n var _a, _b;\n var TEXTPADDING = 2;\n var handlerWidth = get(this.handlerStyle, 'width', DEFAULT_HANDLER_WIDTH);\n var minTextShape = this.minTextShape;\n var maxTextShape = this.maxTextShape;\n var min = range[0],\n max = range[1];\n var sorted = false;\n // 如果交换了位置,则对应的 min max 也交换\n if (min > max) {\n _a = [max, min], min = _a[0], max = _a[1];\n _b = [maxTextShape, minTextShape], minTextShape = _b[0], maxTextShape = _b[1];\n sorted = true;\n }\n // 避让规则,优先显示在两侧,只有显示不下的时候,才显示在中间\n var minBBox = minTextShape.getBBox();\n var maxBBox = maxTextShape.getBBox();\n var minAttrs = null;\n var maxAttrs = null;\n if (this.timeBarType === 'trend') {\n minAttrs = min - minBBox.width < this.x + TEXTPADDING ? {\n x: min + handlerWidth / 2 + TEXTPADDING,\n textAlign: 'left'\n } : {\n x: min - handlerWidth / 2 - TEXTPADDING,\n textAlign: 'right'\n };\n maxAttrs = max + maxBBox.width > this.x + this.width ? {\n x: max - handlerWidth / 2 - TEXTPADDING,\n textAlign: 'right'\n } : {\n x: max + handlerWidth / 2 + TEXTPADDING,\n textAlign: 'left'\n };\n } else if (this.timeBarType === 'simple') {\n minAttrs = minTextShape.attr('x') > minBBox.width // 左边滑块文本位置小于其宽度代表文字超过左边届\n ? {\n x: min,\n textAlign: 'center'\n } : {\n x: min,\n textAlign: 'left'\n };\n maxAttrs = maxTextShape.attr('x') > this.width - maxBBox.width // 有边滑块文本位置大于宽度代表文字超过右边界\n ? {\n x: max,\n textAlign: 'right'\n } : {\n x: max,\n textAlign: 'center'\n };\n }\n return !sorted ? [minAttrs, maxAttrs] : [maxAttrs, minAttrs];\n };\n TrendTimeBar.prototype.startPlay = function () {\n var _this = this;\n return typeof window !== 'undefined' ? window.requestAnimationFrame(function () {\n var _a = _this,\n ticks = _a.ticks,\n width = _a.width;\n var speed = _this.currentSpeed;\n var tickInterval = width / ticks.length;\n var offsetX = tickInterval / ((10 - speed) * 1000 / 60);\n var offsetXRange = _this.adjustOffsetRange(offsetX / _this.width);\n _this.updateStartEnd(offsetXRange);\n _this.updateUI();\n if (_this.isPlay) {\n _this.playHandler = _this.startPlay();\n }\n }) : undefined;\n };\n TrendTimeBar.prototype.changePlayStatus = function (isSync) {\n if (isSync === void 0) {\n isSync = true;\n }\n this.controllerBtnGroup.playButton.update({\n isPlay: this.isPlay\n });\n if (this.isPlay) {\n // 开始播放\n this.playHandler = this.startPlay();\n this.graph.emit(TIMELINE_START, null);\n } else {\n // 结束播放\n if (this.playHandler) {\n if (typeof window !== 'undefined') window.cancelAnimationFrame(this.playHandler);\n if (isSync) {\n this.graph.emit(TIMELINE_END, null);\n }\n }\n }\n };\n TrendTimeBar.prototype.destory = function () {\n this.graph.off(VALUE_CHANGE, function () {});\n var group = this.group;\n var minHandleShapeGroup = group.find(function (g) {\n return g.get('name') === 'minHandlerShape';\n });\n if (minHandleShapeGroup) {\n minHandleShapeGroup.off('minHandlerShape-handler:mousedown');\n minHandleShapeGroup.off('minHandlerShape-handler:touchstart');\n minHandleShapeGroup.destroy();\n }\n var maxHandleShapeGroup = group.find(function (g) {\n return g.get('name') === 'maxHandlerShape';\n });\n // 2. 右滑块的滑动\n if (maxHandleShapeGroup) {\n maxHandleShapeGroup.off('maxHandlerShape-handler:mousedown');\n maxHandleShapeGroup.off('maxHandlerShape-handler:touchstart');\n maxHandleShapeGroup.destroy();\n }\n // 3. 前景选中区域\n this.foregroundShape.off('mousedown');\n this.foregroundShape.off('touchstart');\n this.foregroundShape.destroy();\n group.off(\"\".concat(PLAY_PAUSE_BTN, \":click\"));\n group.off(\"\".concat(NEXT_STEP_BTN, \":click\"));\n group.off(\"\".concat(PRE_STEP_BTN, \":click\"));\n group.off(TIMEBAR_CONFIG_CHANGE);\n group.destroy();\n if (this.trendComponent) {\n this.trendComponent.destory();\n }\n };\n return TrendTimeBar;\n}();\nexport default TrendTimeBar;","import { isString } from '@antv/util';\nimport { createDom, modifyCSS } from '@antv/dom-util';\nexport var BACKGROUND_STYLE = {\n opacity: 0.5,\n fill: '#000'\n};\nexport var ARROW_STYLE = {\n opacity: 0.5,\n fill: '#000',\n r: 5\n};\nexport var TEXT_STYLE = {\n fill: '#fff',\n fontSize: 12\n};\n/**\n * 缩略趋势图\n */\nvar TimeBarTooltip = /** @class */function () {\n function TimeBarTooltip(cfg) {\n var _a = cfg.x,\n x = _a === void 0 ? 0 : _a,\n _b = cfg.y,\n y = _b === void 0 ? 0 : _b,\n container = cfg.container,\n text = cfg.text,\n _c = cfg.padding,\n padding = _c === void 0 ? [4, 4, 4, 4] : _c,\n _d = cfg.className,\n className = _d === void 0 ? 'g6-component-timebar-tooltip' : _d,\n _e = cfg.backgroundColor,\n backgroundColor = _e === void 0 ? '#000' : _e,\n _f = cfg.textColor,\n textColor = _f === void 0 ? '#fff' : _f,\n _g = cfg.opacity,\n opacity = _g === void 0 ? 0.8 : _g,\n _h = cfg.fontSize,\n fontSize = _h === void 0 ? 12 : _h;\n this.container = container;\n this.className = className;\n this.backgroundColor = backgroundColor;\n this.textColor = textColor;\n this.x = x;\n this.y = y;\n this.text = text;\n this.padding = padding;\n this.opacity = opacity;\n this.fontSize = fontSize;\n this.render();\n }\n /**\n * 首次渲染\n * @private\n */\n TimeBarTooltip.prototype.render = function () {\n var self = this;\n var className = self.className,\n x = self.x,\n y = self.y,\n backgroundColor = self.backgroundColor,\n textColor = self.textColor,\n text = self.text,\n padding = self.padding,\n opacity = self.opacity,\n fontSize = self.fontSize;\n var parentNode = self.container;\n var container = createDom(\"
\"));\n if (isString(parentNode)) {\n parentNode = document.getElementById(parentNode);\n }\n parentNode.appendChild(container);\n self.parentHeight = parentNode.offsetHeight;\n self.parentWidth = parentNode.offsetWidth;\n modifyCSS(container, {\n visibility: 'hidden',\n top: 0,\n left: 0\n });\n var background = createDom(\"\\n
\"));\n background.innerHTML = text;\n container.appendChild(background);\n self.backgroundDOM = background;\n var arrow = createDom(\"
\"));\n container.appendChild(arrow);\n self.arrowDOM = arrow;\n self.container = container;\n };\n TimeBarTooltip.prototype.show = function (cfg) {\n var self = this;\n var text = cfg.text,\n x = cfg.x,\n y = cfg.y,\n clientX = cfg.clientX,\n clientY = cfg.clientY;\n self.backgroundDOM.innerHTML = text;\n var backgroundWidth = self.backgroundDOM.offsetWidth;\n var backgroundHeight = self.backgroundDOM.offsetHeight;\n var arrowWidth = self.arrowDOM.offsetWidth;\n var arrowHeight = self.arrowDOM.offsetHeight;\n modifyCSS(self.container, {\n top: \"\".concat(-backgroundHeight - arrowHeight, \"px\"),\n left: \"\".concat(x, \"px\"),\n visibility: 'visible'\n });\n modifyCSS(self.backgroundDOM, {\n marginLeft: \"\".concat(-backgroundWidth / 2, \"px\")\n });\n modifyCSS(self.arrowDOM, {\n marginLeft: \"\".concat(-arrowWidth / 2, \"px\"),\n top: \"\".concat(backgroundHeight, \"px\")\n });\n var left = x - backgroundWidth / 2;\n var right = x + backgroundWidth / 2;\n if (left < 0) {\n modifyCSS(self.backgroundDOM, {\n marginLeft: \"\".concat(-backgroundWidth / 2 - left, \"px\")\n });\n } else if (right > self.parentWidth) {\n modifyCSS(self.backgroundDOM, {\n marginLeft: \"\".concat(-backgroundWidth / 2 - right + self.parentWidth + 12, \"px\")\n });\n }\n };\n TimeBarTooltip.prototype.hide = function () {\n modifyCSS(this.container, {\n top: 0,\n left: 0,\n visibility: 'hidden'\n });\n };\n return TimeBarTooltip;\n}();\nexport default TimeBarTooltip;","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n/**\n * 基于 G 的刻度时间轴组件\n */\nimport { ext } from '@antv/matrix-util';\nimport { isNumber, isString } from '@antv/util';\nimport TimeBarTooltip from './timeBarTooltip';\nimport ControllerBtn from './controllerBtn';\nimport { VALUE_CHANGE, TIMELINE_START, TIMELINE_END, PLAY_PAUSE_BTN, NEXT_STEP_BTN, PRE_STEP_BTN, TIMEBAR_CONFIG_CHANGE } from './constant';\nvar transform = ext.transform;\nvar DEFAULT_SELECTEDTICK_STYLE = {\n fill: '#5B8FF9'\n};\nvar DEFAULT_UNSELECTEDTICK_STYLE = {\n fill: '#e6e8e9'\n};\nvar TimeBarSlice = /** @class */function () {\n function TimeBarSlice(cfgs) {\n this.frameCount = 0;\n this.fontFamily = 'Arial, sans-serif';\n var graph = cfgs.graph,\n canvas = cfgs.canvas,\n group = cfgs.group,\n width = cfgs.width,\n height = cfgs.height,\n padding = cfgs.padding,\n data = cfgs.data,\n start = cfgs.start,\n end = cfgs.end,\n _a = cfgs.x,\n x = _a === void 0 ? 0 : _a,\n _b = cfgs.y,\n y = _b === void 0 ? 0 : _b,\n tickLabelFormatter = cfgs.tickLabelFormatter,\n _c = cfgs.selectedTickStyle,\n selectedTickStyle = _c === void 0 ? DEFAULT_SELECTEDTICK_STYLE : _c,\n _d = cfgs.unselectedTickStyle,\n unselectedTickStyle = _d === void 0 ? DEFAULT_UNSELECTEDTICK_STYLE : _d,\n tooltipBackgroundColor = cfgs.tooltipBackgroundColor,\n tooltipFomatter = cfgs.tooltipFomatter,\n tickLabelStyle = cfgs.tickLabelStyle,\n _e = cfgs.controllerCfg,\n controllerCfg = _e === void 0 ? {\n speed: 1\n } : _e;\n this.graph = graph;\n this.group = group;\n this.sliceGroup = group.addGroup({\n name: 'slice-group'\n });\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this.padding = padding;\n this.data = data;\n this.start = start;\n this.end = end;\n this.tickLabelFormatter = tickLabelFormatter;\n this.tickLabelStyle = tickLabelStyle || {};\n this.selectedTickStyle = selectedTickStyle;\n this.unselectedTickStyle = unselectedTickStyle;\n this.controllerCfg = controllerCfg;\n this.currentSpeed = controllerCfg.speed || 1;\n this.x = x;\n this.y = y;\n this.tooltipBackgroundColor = tooltipBackgroundColor;\n this.tooltipFomatter = tooltipFomatter;\n // 初始化 fontFamily,如果有浏览器,取 body 上的字体,防止文字更新时局部渲染造成的重影\n this.fontFamily = typeof window !== 'undefined' ? window.getComputedStyle(document.body, null).getPropertyValue('font-family') || 'Arial, sans-serif' : 'Arial, sans-serif';\n this.renderSlices();\n this.initEvent();\n }\n TimeBarSlice.prototype.renderSlices = function () {\n var _this = this;\n var _a = this,\n width = _a.width,\n height = _a.height,\n padding = _a.padding,\n data = _a.data,\n start = _a.start,\n end = _a.end,\n tickLabelFormatter = _a.tickLabelFormatter,\n selectedTickStyle = _a.selectedTickStyle,\n unselectedTickStyle = _a.unselectedTickStyle,\n tickLabelStyle = _a.tickLabelStyle;\n var realWidth = width - 2 * padding;\n var fontSize = 10;\n var labelLineHeight = 4;\n var labelAreaHeight = 3 * padding + labelLineHeight + fontSize;\n var ticksAreaHeight = height - labelAreaHeight - 2 * padding;\n var gap = 2;\n var ticksLength = data.length;\n var tickWidth = (realWidth - gap * (ticksLength - 1)) / ticksLength;\n this.tickWidth = tickWidth;\n var sliceGroup = this.sliceGroup;\n var tickRects = [];\n var labels = [];\n var startTickId = Math.round(ticksLength * start);\n var endTickId = Math.round(ticksLength * end);\n this.startTickRectId = startTickId;\n this.endTickRectId = endTickId;\n var rotate = tickLabelStyle.rotate;\n delete tickLabelStyle.rotate;\n data.forEach(function (d, i) {\n // draw the tick rects\n var selected = i >= startTickId && i <= endTickId;\n var tickStyle = selected ? selectedTickStyle : unselectedTickStyle;\n var rect = sliceGroup.addShape('rect', {\n attrs: __assign({\n x: padding + i * (tickWidth + gap),\n y: padding,\n width: tickWidth,\n height: ticksAreaHeight\n }, tickStyle),\n draggable: true,\n name: \"tick-rect-\".concat(i)\n });\n // draw the pick tick rects\n var pickRect = sliceGroup.addShape('rect', {\n attrs: {\n x: padding + i * tickWidth + gap * (2 * i - 1) / 2,\n y: padding,\n width: i === 0 || i === ticksLength - 1 ? tickWidth + gap / 2 : tickWidth + gap,\n height: ticksAreaHeight,\n fill: '#fff',\n opacity: 0\n },\n draggable: true,\n name: \"pick-rect-\".concat(i)\n });\n pickRect.toFront();\n var rectBBox = rect.getBBox();\n var centerX = (rectBBox.minX + rectBBox.maxX) / 2;\n tickRects.push({\n rect: rect,\n pickRect: pickRect,\n value: d.date,\n x: centerX,\n y: rectBBox.minY\n });\n var label;\n if (tickLabelFormatter) {\n label = tickLabelFormatter(d);\n if (!isString(label) && label) {\n // return true\n label = d.date;\n }\n } else if (i % Math.round(ticksLength / 10) === 0) {\n label = d.date;\n }\n if (label) {\n labels.push(label);\n // draw tick lines\n var lineStartY = rectBBox.maxY + padding * 2;\n sliceGroup.addShape('line', {\n attrs: {\n stroke: '#BFBFBF',\n x1: centerX,\n y1: lineStartY,\n x2: centerX,\n y2: lineStartY + labelLineHeight\n },\n name: 'tick-line'\n });\n var labelStartY = lineStartY + labelLineHeight + padding;\n var text = sliceGroup.addShape('text', {\n attrs: __assign({\n fill: '#8c8c8c',\n stroke: '#fff',\n lineWidth: 1,\n x: centerX,\n y: labelStartY,\n textAlign: 'center',\n text: label,\n textBaseline: 'top',\n fontSize: 10,\n fontFamily: _this.fontFamily || 'Arial, sans-serif'\n }, tickLabelStyle),\n capture: false,\n name: 'tick-label'\n });\n var textBBox = text.getBBox();\n if (textBBox.maxX > width) {\n text.attr('textAlign', 'right');\n } else if (textBBox.minX < 0) {\n text.attr('textAlign', 'left');\n }\n if (isNumber(rotate) && labels.length !== 10) {\n var matrix = transform([1, 0, 0, 0, 1, 0, 0, 0, 1], [['t', -centerX, -labelStartY], ['r', rotate], ['t', centerX - 5, labelStartY + 2]]);\n text.attr({\n textAlign: 'left',\n matrix: matrix\n });\n }\n if (labels.length === 1) {\n text.attr({\n textAlign: 'left'\n });\n } else if (labels.length === 10) {\n text.attr({\n textAlign: 'right'\n });\n }\n // draw tick labels\n }\n });\n\n this.tickRects = tickRects;\n // 渲染播放、快进和后退的控制按钮\n var group = this.group;\n this.currentSpeed = 1;\n this.controllerBtnGroup = new ControllerBtn(__assign({\n group: group,\n x: this.x,\n y: this.y + height + 5,\n width: width,\n height: 40,\n hideTimeTypeController: true,\n speed: this.currentSpeed,\n fontFamily: this.fontFamily || 'Arial, sans-serif'\n }, this.controllerCfg));\n };\n TimeBarSlice.prototype.initEvent = function () {\n var _this = this;\n var sliceGroup = this.sliceGroup;\n sliceGroup.on('click', function (e) {\n var targetRect = e.target;\n if (targetRect.get('type') !== 'rect' || !targetRect.get('name')) return;\n var id = parseInt(targetRect.get('name').split('-')[2], 10);\n if (!isNaN(id)) {\n var tickRects_1 = _this.tickRects;\n // cancel the selected ticks\n var unselectedTickStyle_1 = _this.unselectedTickStyle;\n tickRects_1.forEach(function (tickRect) {\n tickRect.rect.attr(unselectedTickStyle_1);\n });\n var selectedTickStyle = _this.selectedTickStyle;\n tickRects_1[id].rect.attr(selectedTickStyle);\n _this.startTickRectId = id;\n _this.endTickRectId = id;\n var ticksLength = tickRects_1.length;\n var start = id / ticksLength;\n _this.graph.emit(VALUE_CHANGE, {\n value: [start, start]\n });\n }\n });\n sliceGroup.on('dragstart', function (e) {\n var tickRects = _this.tickRects;\n // cancel the selected ticks\n var unselectedTickStyle = _this.unselectedTickStyle;\n tickRects.forEach(function (tickRect) {\n tickRect.rect.attr(unselectedTickStyle);\n });\n var targetRect = e.target;\n var id = parseInt(targetRect.get('name').split('-')[2], 10);\n var selectedTickStyle = _this.selectedTickStyle;\n tickRects[id].rect.attr(selectedTickStyle);\n _this.startTickRectId = id;\n var ticksLength = tickRects.length;\n var start = id / ticksLength;\n _this.graph.emit(VALUE_CHANGE, {\n value: [start, start]\n });\n _this.dragging = true;\n });\n sliceGroup.on('dragover', function (e) {\n if (!_this.dragging) return;\n if (e.target.get('type') !== 'rect') return;\n var id = parseInt(e.target.get('name').split('-')[2], 10);\n var startTickRectId = _this.startTickRectId;\n var tickRects = _this.tickRects;\n var selectedTickStyle = _this.selectedTickStyle;\n var unselectedTickStyle = _this.unselectedTickStyle;\n for (var i = 0; i < tickRects.length; i++) {\n var style = i >= startTickRectId && i <= id ? selectedTickStyle : unselectedTickStyle;\n tickRects[i].rect.attr(style);\n }\n var ticksLength = tickRects.length;\n _this.endTickRectId = id;\n var start = startTickRectId / ticksLength;\n var end = id / ticksLength;\n _this.graph.emit(VALUE_CHANGE, {\n value: [start, end]\n });\n });\n sliceGroup.on('drop', function (e) {\n if (!_this.dragging) return;\n _this.dragging = false;\n if (e.target.get('type') !== 'rect') return;\n var startTickRectId = _this.startTickRectId;\n var id = parseInt(e.target.get('name').split('-')[2], 10);\n if (id < startTickRectId) return;\n var selectedTickStyle = _this.selectedTickStyle;\n var tickRects = _this.tickRects;\n tickRects[id].rect.attr(selectedTickStyle);\n _this.endTickRectId = id;\n var ticksLength = tickRects.length;\n var start = startTickRectId / ticksLength;\n var end = id / ticksLength;\n _this.graph.emit(VALUE_CHANGE, {\n value: [start, end]\n });\n });\n // tooltip\n var _a = this,\n tooltipBackgroundColor = _a.tooltipBackgroundColor,\n tooltipFomatter = _a.tooltipFomatter,\n canvas = _a.canvas;\n var tooltip = new TimeBarTooltip({\n container: canvas.get('container'),\n backgroundColor: tooltipBackgroundColor\n });\n var tickRects = this.tickRects;\n tickRects.forEach(function (tickRect) {\n var pickRect = tickRect.pickRect;\n pickRect.on('mouseenter', function (e) {\n var rect = e.target;\n if (rect.get('type') !== 'rect') return;\n var id = parseInt(rect.get('name').split('-')[2], 10);\n var clientPoint = canvas.getClientByPoint(tickRects[id].x, tickRects[id].y);\n tooltip.show({\n x: tickRects[id].x,\n y: tickRects[id].y,\n clientX: clientPoint.x,\n clientY: clientPoint.y,\n text: tooltipFomatter ? tooltipFomatter(tickRects[id].value) : tickRects[id].value\n });\n });\n pickRect.on('mouseleave', function (e) {\n tooltip.hide();\n });\n });\n // play controller events\n var group = this.group;\n // 播放区按钮控制\n /** 播放/暂停事件 */\n group.on(\"\".concat(PLAY_PAUSE_BTN, \":click\"), function () {\n _this.isPlay = !_this.isPlay;\n _this.changePlayStatus();\n });\n // 处理前进一步的事件\n group.on(\"\".concat(NEXT_STEP_BTN, \":click\"), function () {\n _this.updateStartEnd(1);\n });\n // 处理后退一步的事件\n group.on(\"\".concat(PRE_STEP_BTN, \":click\"), function () {\n _this.updateStartEnd(-1);\n });\n group.on(TIMEBAR_CONFIG_CHANGE, function (_a) {\n var type = _a.type,\n speed = _a.speed;\n _this.currentSpeed = speed;\n });\n };\n TimeBarSlice.prototype.changePlayStatus = function (isSync) {\n if (isSync === void 0) {\n isSync = true;\n }\n this.controllerBtnGroup.playButton.update({\n isPlay: this.isPlay\n });\n if (this.isPlay) {\n // 开始播放\n this.playHandler = this.startPlay();\n this.graph.emit(TIMELINE_START, null);\n } else {\n // 结束播放\n if (this.playHandler) {\n if (typeof window !== 'undefined') window.cancelAnimationFrame(this.playHandler);\n if (isSync) {\n this.graph.emit(TIMELINE_END, null);\n }\n }\n }\n };\n TimeBarSlice.prototype.startPlay = function () {\n var _this = this;\n return typeof window !== 'undefined' ? window.requestAnimationFrame(function () {\n var speed = _this.currentSpeed;\n // 一分钟刷新一次\n if (_this.frameCount % (60 / speed) === 0) {\n _this.frameCount = 0;\n _this.updateStartEnd(1);\n }\n _this.frameCount++;\n if (_this.isPlay) {\n _this.playHandler = _this.startPlay();\n }\n }) : undefined;\n };\n TimeBarSlice.prototype.updateStartEnd = function (sign) {\n var self = this;\n var tickRects = this.tickRects;\n var ticksLength = tickRects.length;\n var unselectedTickStyle = this.unselectedTickStyle;\n var selectedTickStyle = this.selectedTickStyle;\n var previousEndTickRectId = self.endTickRectId;\n if (sign > 0) {\n self.endTickRectId++;\n } else {\n tickRects[self.endTickRectId].rect.attr(unselectedTickStyle);\n self.endTickRectId--;\n }\n // 若此时 start 与 end 不同,范围前进/后退/播放\n if (previousEndTickRectId !== self.startTickRectId) {\n if (self.endTickRectId < self.startTickRectId) {\n self.startTickRectId = self.endTickRectId;\n }\n } else {\n // 否则是单帧的前进/后退/播放\n for (var i = self.startTickRectId; i <= self.endTickRectId - 1; i++) {\n tickRects[i].rect.attr(unselectedTickStyle);\n }\n self.startTickRectId = self.endTickRectId;\n }\n if (tickRects[self.endTickRectId]) {\n tickRects[self.endTickRectId].rect.attr(selectedTickStyle);\n var start = self.startTickRectId / ticksLength;\n var end = self.endTickRectId / ticksLength;\n this.graph.emit(VALUE_CHANGE, {\n value: [start, end]\n });\n }\n };\n TimeBarSlice.prototype.destory = function () {\n var group = this.sliceGroup;\n group.off('click');\n group.off('dragstart');\n group.off('dragover');\n group.off('drop');\n this.tickRects.forEach(function (tickRect) {\n var pickRect = tickRect.pickRect;\n pickRect.off('mouseenter');\n pickRect.off('mouseleave');\n });\n this.tickRects.length = 0;\n group.off(\"\".concat(PLAY_PAUSE_BTN, \":click\"));\n group.off(\"\".concat(NEXT_STEP_BTN, \":click\"));\n group.off(\"\".concat(PRE_STEP_BTN, \":click\"));\n group.off(TIMEBAR_CONFIG_CHANGE);\n this.sliceGroup.destroy();\n };\n return TimeBarSlice;\n}();\nexport default TimeBarSlice;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n/**\n * 基于 G 的时间轴组件\n */\nimport { Canvas as GCanvas } from '@antv/g-canvas';\nimport { Canvas as GSVGCanvas } from '@antv/g-svg';\nimport { createDom, modifyCSS } from '@antv/dom-util';\nimport Base from '../base';\nimport TrendTimeBar from './trendTimeBar';\nimport TimeBarSlice from './timeBarSlice';\nimport { VALUE_CHANGE } from './constant';\nimport { isString, throttle } from '@antv/util';\n// simple 版本默认高度\nvar DEFAULT_SIMPLE_HEIGHT = 4;\n// trend 版本默认高度\nvar DEFAULT_TREND_HEIGHT = 26;\nvar TimeBar = /** @class */function (_super) {\n __extends(TimeBar, _super);\n function TimeBar(config) {\n var _this = _super.call(this, config) || this;\n _this.afterrenderListener = function (e) {\n return _this.filterData({});\n };\n _this.valueChangeListener = throttle(function (e) {\n return _this.filterData(e);\n },\n // 不可简写,否则 filterData 中 this 指针不对\n 200, {\n trailing: true,\n leading: true\n });\n _this.changeData = function (e) {\n var graph = _this.get('graph');\n _this.cacheGraphData = graph.get('data');\n _this.filterData({});\n };\n return _this;\n }\n TimeBar.prototype.getDefaultCfgs = function () {\n return {\n container: null,\n className: 'g6-component-timebar',\n padding: 10,\n type: 'trend',\n trend: {\n data: [],\n isArea: false,\n smooth: true\n },\n controllerCfg: {\n speed: 1,\n loop: false\n },\n slider: {\n start: 0.1,\n end: 0.9,\n minText: 'min',\n maxText: 'max'\n },\n tick: {\n start: 0.1,\n end: 0.9,\n data: []\n },\n textStyle: {},\n filterEdge: false,\n filterItemTypes: ['node'],\n containerCSS: {}\n };\n };\n /**\n * 初始化 TimeBar 的容器\n */\n TimeBar.prototype.initContainer = function () {\n var graph = this.get('graph');\n var _a = this._cfgs,\n width = _a.width,\n height = _a.height;\n var className = this.get('className') || 'g6-component-timebar';\n var container = this.get('container');\n var graphContainer = this.get('graph').get('container');\n var timeBarContainer;\n if (!container) {\n timeBarContainer = createDom(\"
\"));\n modifyCSS(timeBarContainer, {\n position: 'relative'\n });\n } else {\n if (isString(container)) {\n container = document.getElementById(container);\n }\n timeBarContainer = container;\n }\n graphContainer.appendChild(timeBarContainer);\n this.set('timeBarContainer', timeBarContainer);\n var canvas;\n var renderer = graph.get('renderer');\n if (renderer === 'SVG') {\n canvas = new GSVGCanvas({\n container: timeBarContainer,\n width: width,\n height: height\n });\n } else {\n canvas = new GCanvas({\n container: timeBarContainer,\n width: width,\n height: height\n });\n }\n // 根据传入的参数修改容器 CSS 样式\n if (this.get('containerCSS')) modifyCSS(timeBarContainer, this.get('containerCSS'));\n this.set('canvas', canvas);\n };\n TimeBar.prototype.init = function () {\n this.initContainer();\n var canvas = this.get('canvas');\n var timeBarGroup = canvas.addGroup({\n name: 'timebar-group'\n });\n this.set('timeBarGroup', timeBarGroup);\n this.renderTrend();\n this.initEvent();\n var fontFamily = typeof window !== 'undefined' ? window.getComputedStyle(document.body, null).getPropertyValue('font-family') || 'Arial, sans-serif' : 'Arial, sans-serif';\n this.set('fontFamily', fontFamily);\n };\n /**\n * 触发时间轴播放\n */\n TimeBar.prototype.play = function () {\n this.togglePlay(true);\n };\n /**\n * 触发时间轴暂停\n */\n TimeBar.prototype.pause = function () {\n this.togglePlay(false);\n };\n /**\n * 时间轴播放状态(播放/暂停)的切换\n */\n TimeBar.prototype.togglePlay = function (play) {\n var timebar = this.get('timebar');\n if (!timebar) return;\n timebar.isPlay = !!play;\n timebar.changePlayStatus();\n };\n TimeBar.prototype.renderTrend = function () {\n var _this = this;\n var _a = this._cfgs,\n width = _a.width,\n x = _a.x,\n y = _a.y,\n padding = _a.padding,\n type = _a.type,\n trend = _a.trend,\n slider = _a.slider,\n controllerCfg = _a.controllerCfg,\n textStyle = _a.textStyle,\n tick = _a.tick,\n backgroundStyle = _a.backgroundStyle,\n foregroundStyle = _a.foregroundStyle;\n var data = trend.data,\n other = __rest(trend, [\"data\"]);\n var realWidth = width - 2 * padding;\n var defaultHeight = type === 'trend' ? DEFAULT_TREND_HEIGHT : DEFAULT_SIMPLE_HEIGHT;\n var graph = this.get('graph');\n var group = this.get('timeBarGroup');\n var canvas = this.get('canvas');\n var timebar = null;\n if (type === 'trend' || type === 'simple') {\n var getValue_1 = this.get('getValue');\n timebar = new TrendTimeBar(__assign(__assign({\n graph: graph,\n canvas: canvas,\n group: group,\n type: type,\n x: x + padding,\n y: type === 'trend' ? y + padding : y + padding + 15,\n width: realWidth,\n height: defaultHeight,\n padding: padding,\n backgroundStyle: backgroundStyle,\n foregroundStyle: foregroundStyle,\n trendCfg: __assign(__assign({}, other), {\n data: data.map(function (d) {\n return (getValue_1 === null || getValue_1 === void 0 ? void 0 : getValue_1(d)) || d.value;\n })\n })\n }, slider), {\n tick: {\n ticks: data,\n tickLabelFormatter: tick.tickLabelFormatter,\n tickLabelStyle: tick.tickLabelStyle,\n tickLineStyle: tick.tickLineStyle\n },\n handlerStyle: __assign(__assign({}, slider.handlerStyle), {\n height: slider.height || defaultHeight\n }),\n controllerCfg: controllerCfg,\n textStyle: textStyle\n }));\n } else if (type === 'tick') {\n // 刻度时间轴\n timebar = new TimeBarSlice(__assign({\n graph: graph,\n canvas: canvas,\n group: group,\n x: x + padding,\n y: y + padding,\n width: width,\n height: 42,\n padding: 2,\n controllerCfg: controllerCfg\n }, tick));\n }\n // 鼠标按下左/右滑块或范围条后在任意地方释放,都触发暂停播放\n var handleMouseUp = function handleMouseUp() {\n var timebarInstance = _this.get('timebar');\n timebarInstance.draggingHandler = false;\n if (timebarInstance.isPlay) {\n timebarInstance.isPlay = false;\n timebarInstance.currentHandler = timebarInstance.maxHandlerShape;\n timebarInstance.changePlayStatus();\n }\n document.removeEventListener('mouseup', handleMouseUp);\n };\n canvas.on('mousedown', function (e) {\n if (e.target.get('name') === 'maxHandlerShape-handler' || e.target.get('name') === 'minHandlerShape-handler' || e.target === timebar.foregroundShape) {\n document.addEventListener('mouseup', handleMouseUp);\n }\n });\n this.set('timebar', timebar);\n };\n TimeBar.prototype.filterData = function (evt) {\n var _a;\n var value = evt.value;\n if (!value) {\n value = [];\n var type_1 = this._cfgs.type;\n if (!type_1 || type_1 === 'trend' || type_1 === 'simple') {\n value[0] = this._cfgs.slider.start;\n value[1] = this._cfgs.slider.end;\n } else if (type_1 === 'tick') {\n value[0] = this._cfgs.tick.start;\n value[1] = this._cfgs.tick.end;\n }\n }\n var trendData = null;\n var type = this._cfgs.type;\n if (type === 'trend' || type === 'simple') {\n trendData = this._cfgs.trend.data;\n } else if (type === 'tick') {\n trendData = this._cfgs.tick.data;\n }\n if (!trendData || trendData.length === 0) {\n console.warn('请配置 TimeBar 组件的数据');\n return;\n }\n var rangeChange = this.get('rangeChange');\n var graph = this.get('graph');\n var min = Math.round(trendData.length * value[0]);\n var max = Math.round(trendData.length * value[1]);\n max = max >= trendData.length ? trendData.length - 1 : max;\n min = min >= trendData.length ? trendData.length - 1 : min;\n var tickLabelFormatter = (_a = this._cfgs.tick) === null || _a === void 0 ? void 0 : _a.tickLabelFormatter;\n var minText = tickLabelFormatter ? tickLabelFormatter(trendData[min]) : trendData[min].date;\n var maxText = tickLabelFormatter ? tickLabelFormatter(trendData[max]) : trendData[max].date;\n if (type !== 'tick') {\n var timebar = this.get('timebar');\n timebar.setText(minText, maxText);\n }\n if (rangeChange) {\n rangeChange(graph, minText, maxText);\n } else {\n // 自动过滤数据,并渲染 graph\n if (!this.cacheGraphData || this.cacheGraphData.nodes && this.cacheGraphData.nodes.length === 0) {\n this.cacheGraphData = graph.get('data'); // graph.save() as GraphData;\n }\n\n var filterItemTypes = this.get('filterItemTypes');\n var changeData = this.get('changeData');\n // 过滤不在 min 和 max 范围内的节点\n var getDate_1 = this.get('getDate');\n var shouldIgnore_1 = this.get('shouldIgnore');\n var minDate_1 = trendData[min].date,\n maxDate_1 = trendData[max].date;\n if (changeData || changeData === undefined) {\n var originNodes = this.cacheGraphData.nodes;\n var originEdges = this.cacheGraphData.edges;\n var currentNodeExistMap_1 = {};\n var currentEdgeExistMap_1 = {};\n graph.getNodes().forEach(function (node) {\n return currentNodeExistMap_1[node.getID()] = true;\n });\n graph.getEdges().forEach(function (edge) {\n return currentEdgeExistMap_1[edge.getID()] = true;\n });\n if (filterItemTypes.includes('node')) {\n originNodes.forEach(function (node) {\n var date = +((getDate_1 === null || getDate_1 === void 0 ? void 0 : getDate_1(node)) || node.date);\n var hitRange = date >= minDate_1 && date <= maxDate_1 || (shouldIgnore_1 === null || shouldIgnore_1 === void 0 ? void 0 : shouldIgnore_1('node', node, {\n min: minDate_1,\n max: maxDate_1\n }));\n var exist = currentNodeExistMap_1[node.id];\n if (exist && !hitRange) {\n graph.removeItem(node.id);\n currentNodeExistMap_1[node.id] = false;\n } else if (!exist && hitRange) {\n graph.addItem('node', node);\n currentNodeExistMap_1[node.id] = true;\n }\n });\n // 过滤 source 或 target 不在 min 和 max 范围内的边\n originEdges === null || originEdges === void 0 ? void 0 : originEdges.forEach(function (edge) {\n var shouldShow = currentNodeExistMap_1[edge.source] && currentNodeExistMap_1[edge.target] || (shouldIgnore_1 === null || shouldIgnore_1 === void 0 ? void 0 : shouldIgnore_1('edge', edge, {\n min: minDate_1,\n max: maxDate_1\n }));\n var exist = !!graph.findById(edge.id);\n if (exist && !shouldShow) {\n graph.removeItem(edge.id);\n currentEdgeExistMap_1[edge.id] = false;\n } else if (!exist && shouldShow) {\n graph.addItem('edge', edge);\n currentEdgeExistMap_1[edge.id] = true;\n } else if (!exist) {\n currentEdgeExistMap_1[edge.id] = false;\n }\n });\n }\n if (this.get('filterEdge') || filterItemTypes.includes('edge')) {\n originEdges === null || originEdges === void 0 ? void 0 : originEdges.filter(function (edge) {\n var date = +((getDate_1 === null || getDate_1 === void 0 ? void 0 : getDate_1(edge)) || edge.date);\n var hitRange = date >= minDate_1 && date <= maxDate_1 || (shouldIgnore_1 === null || shouldIgnore_1 === void 0 ? void 0 : shouldIgnore_1('edge', edge, {\n min: minDate_1,\n max: maxDate_1\n }));\n var endsExist = currentNodeExistMap_1[edge.source] && currentNodeExistMap_1[edge.target];\n var shouldShow = hitRange && endsExist;\n var exist = currentEdgeExistMap_1[edge.id];\n if (exist && !shouldShow) {\n currentEdgeExistMap_1[edge.id] = false;\n graph.removeItem(edge.id);\n } else if (!exist && shouldShow) {\n currentEdgeExistMap_1[edge.id] = true;\n graph.addItem('edge', edge);\n }\n });\n }\n } else {\n if (filterItemTypes.includes('node')) {\n graph.getNodes().forEach(function (node) {\n var model = node.getModel();\n if (shouldIgnore_1 === null || shouldIgnore_1 === void 0 ? void 0 : shouldIgnore_1('node', model, {\n min: minDate_1,\n max: maxDate_1\n })) return;\n var date = +((getDate_1 === null || getDate_1 === void 0 ? void 0 : getDate_1(model)) || model.date);\n if (date < minDate_1 || date > maxDate_1) {\n graph.hideItem(node);\n } else {\n graph.showItem(node);\n }\n });\n }\n if (this.get('filterEdge') || filterItemTypes.includes('edge')) {\n graph.getEdges().forEach(function (edge) {\n var model = edge.getModel();\n if (shouldIgnore_1 === null || shouldIgnore_1 === void 0 ? void 0 : shouldIgnore_1('edge', model, {\n min: trendData[min].date,\n max: trendData[max].date\n })) return;\n var date = +((getDate_1 === null || getDate_1 === void 0 ? void 0 : getDate_1(model)) || model.date);\n if (date < trendData[min].date || date > trendData[max].date) {\n graph.hideItem(edge);\n } else {\n var sourceVisible = edge.getSource().isVisible();\n var targetVisible = edge.getTarget().isVisible();\n if (sourceVisible && targetVisible) graph.showItem(edge);\n }\n });\n }\n }\n }\n };\n TimeBar.prototype.initEvent = function () {\n var graph = this.get('graph');\n // 图数据变化,更新时间轴的原始数据\n graph.on('afterchangedata', this.changeData);\n // 图渲染,触发时间轴筛选\n graph.on('afterrender', this.afterrenderListener);\n // 时间轴的值发生改变的事件,触发筛选\n graph.on(VALUE_CHANGE, this.valueChangeListener);\n };\n TimeBar.prototype.destroy = function () {\n var graph = this.get('graph');\n graph.off('afterchangedata', this.changeData);\n graph.off('afterrender', this.afterrenderListener);\n graph.off(VALUE_CHANGE, this.valueChangeListener);\n var timebar = this.get('timebar');\n if (timebar && timebar.destory) {\n timebar.destory();\n }\n _super.prototype.destroy.call(this);\n var timeBarContainer = this.get('timeBarContainer');\n if (timeBarContainer) {\n var container = this.get('container');\n if (!container) {\n container = this.get('graph').get('container');\n }\n if (isString(container)) {\n container = document.getElementById(container);\n }\n container.removeChild(timeBarContainer);\n }\n };\n return TimeBar;\n}(Base);\nexport default TimeBar;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nimport Base from '../base';\nimport { isString, isNil } from '@antv/util';\nimport { modifyCSS, createDom } from '@antv/dom-util';\nimport { Util } from '@antv/g6-core';\nimport { mat3 } from '@antv/matrix-util';\nvar applyMatrix = Util.applyMatrix;\nfunction getImgNaturalDimension(img, callback) {\n var nWidth, nHeight;\n if (img.naturalWidth) {\n // 现代浏览器\n nWidth = img.naturalWidth;\n nHeight = img.naturalHeight;\n } else {\n // IE6/7/8\n var image_1 = new Image();\n image_1.src = img.src;\n image_1.onload = function () {\n if (callback) callback(image_1.width, image_1.height);\n };\n }\n return [nWidth, nHeight];\n}\nvar ImageMiniMap = /** @class */function (_super) {\n __extends(ImageMiniMap, _super);\n function ImageMiniMap(config) {\n return _super.call(this, config) || this;\n }\n ImageMiniMap.prototype.getDefaultCfgs = function () {\n return {\n container: null,\n className: 'g6-minimap',\n viewportClassName: 'g6-minimap-viewport',\n width: 200,\n delegateStyle: {\n fill: '#40a9ff',\n stroke: '#096dd9'\n },\n refresh: true\n };\n };\n ImageMiniMap.prototype.getEvents = function () {\n return {\n beforepaint: 'updateViewport',\n beforeanimate: 'disableRefresh',\n afteranimate: 'enableRefresh',\n viewportchange: 'disableOneRefresh'\n };\n };\n // 若是正在进行动画,不刷新缩略图\n ImageMiniMap.prototype.disableRefresh = function () {\n this.set('refresh', false);\n };\n ImageMiniMap.prototype.enableRefresh = function () {\n this.set('refresh', true);\n this.updateCanvas();\n };\n ImageMiniMap.prototype.disableOneRefresh = function () {\n this.set('viewportChange', true);\n };\n ImageMiniMap.prototype.initViewport = function () {\n var _this = this;\n var cfgs = this._cfgs;\n // cWidth and cHeight are the width and height of the minimap's container\n var graph = cfgs.graph;\n if (this.destroyed) return;\n var containerDOM = this.get('container');\n if (isString(containerDOM)) {\n containerDOM = document.getElementById(containerDOM);\n }\n var viewport = createDom(\"
\"));\n // 计算拖拽水平方向距离\n var x = 0;\n // 计算拖拽垂直方向距离\n var y = 0;\n // 是否在拖拽minimap的视口\n var dragging = false;\n // 缓存viewport当前对于画布的x\n var left = 0;\n // 缓存viewport当前对于画布的y\n var top = 0;\n // 缓存viewport当前宽度\n var width = 0;\n // 缓存viewport当前高度\n var height = 0;\n var ratio = 0;\n var zoom = 0;\n containerDOM.addEventListener('mousedown', function (e) {\n cfgs.refresh = false;\n if (e.target !== viewport) {\n return;\n }\n // 如果视口已经最大了,不需要拖拽\n var style = viewport.style;\n width = parseInt(style.width, 10);\n height = parseInt(style.height, 10);\n var cWidth = _this.get('width');\n var cHeight = _this.get('height');\n if (width > cWidth || height > cHeight) {\n return;\n }\n zoom = graph.getZoom();\n ratio = _this.get('ratio');\n dragging = true;\n x = e.clientX;\n y = e.clientY;\n }, false);\n containerDOM.addEventListener('mousemove', function (e) {\n if (!dragging || isNil(e.clientX) || isNil(e.clientY)) {\n return;\n }\n var cWidth = _this.get('width');\n var cHeight = _this.get('height');\n var style = viewport.style;\n left = parseInt(style.left, 10);\n top = parseInt(style.top, 10);\n width = parseInt(style.width, 10);\n height = parseInt(style.height, 10);\n var dx = x - e.clientX;\n var dy = y - e.clientY;\n // 若视口移动到最左边或最右边了,仅移动到边界\n if (left - dx < 0) {\n dx = left;\n } else if (left - dx + width >= cWidth) {\n dx = 0;\n }\n // 若视口移动到最上或最下边了,仅移动到边界\n if (top - dy < 0) {\n dy = top;\n } else if (top - dy + height >= cHeight) {\n dy = 0;\n }\n left -= dx;\n top -= dy;\n // 先移动视口,避免移动到边上以后出现视口闪烁\n modifyCSS(viewport, {\n left: \"\".concat(left, \"px\"),\n top: \"\".concat(top, \"px\")\n });\n // graph 移动需要偏移量 dx/dy * 缩放比例才会得到正确的移动距离\n graph.translate(dx * zoom / ratio, dy * zoom / ratio);\n x = e.clientX;\n y = e.clientY;\n }, false);\n containerDOM.addEventListener('mouseleave', function () {\n dragging = false;\n cfgs.refresh = true;\n }, false);\n containerDOM.addEventListener('mouseup', function () {\n dragging = false;\n cfgs.refresh = true;\n }, false);\n this.set('viewport', viewport);\n containerDOM.appendChild(viewport);\n };\n /**\n * 更新 viewport 视图\n */\n ImageMiniMap.prototype.updateViewport = function () {\n if (this.destroyed) return;\n var ratio = this.get('ratio');\n var cWidth = this.get('width');\n var cHeight = this.get('height');\n var graph = this.get('graph');\n var graphWidth = graph.get('width');\n var graphHeight = graph.get('height');\n var aspectRatio = graphWidth / graphHeight;\n var graphGroup = graph.getGroup();\n // 主图的 bbox(矩阵变换相关的 bbox)\n var graphCanvasBBox = graphGroup.getCanvasBBox();\n // 扩展 graphBBox 到和 graphWidth / graphHeight 等比\n var graphCanvasBBoxMean = [(graphCanvasBBox.minX + graphCanvasBBox.maxX) / 2, (graphCanvasBBox.minY + graphCanvasBBox.maxY) / 2];\n var graphCanvasBBoxSize = [graphCanvasBBox.maxX - graphCanvasBBox.minX, graphCanvasBBox.maxY - graphCanvasBBox.minY];\n var expandedGraphCanvasBBox = {\n centerX: graphCanvasBBoxMean[0],\n centerY: graphCanvasBBoxMean[1],\n width: 0,\n height: 0,\n minX: 0,\n minY: 0\n };\n if (graphCanvasBBox[0] / graphCanvasBBox[1] > aspectRatio) {\n expandedGraphCanvasBBox.width = graphCanvasBBoxSize[0];\n expandedGraphCanvasBBox.height = expandedGraphCanvasBBox.width / aspectRatio;\n } else {\n expandedGraphCanvasBBox.height = graphCanvasBBoxSize[1];\n expandedGraphCanvasBBox.width = expandedGraphCanvasBBox.height * aspectRatio;\n }\n expandedGraphCanvasBBox.minX = graphCanvasBBoxMean[0] - expandedGraphCanvasBBox.width / 2;\n expandedGraphCanvasBBox.minY = graphCanvasBBoxMean[1] - expandedGraphCanvasBBox.height / 2;\n var graphMatrix = graphGroup.getMatrix();\n if (!graphMatrix) graphMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var invertGraphMatrix = mat3.invert([1, 0, 0, 0, 1, 0, 0, 0, 1], graphMatrix);\n var minXY = applyMatrix({\n x: expandedGraphCanvasBBox.minX,\n y: expandedGraphCanvasBBox.minY\n }, invertGraphMatrix);\n // 扩展 graphBBox 后的 bbox 的左上角对应的 canvas container 坐标\n var topLeft = graph.getCanvasByPoint(minXY.x, minXY.y);\n var viewport = this.get('viewport');\n if (!viewport) {\n this.initViewport();\n }\n // Viewport 与 minimap container 的比例 = Graph container 与 expandedGraphBBox 比例\n var vpToMc = graphWidth / expandedGraphCanvasBBox.width;\n // viewport 宽高 = vpToMc * minimap container 宽高\n var width = vpToMc * cWidth;\n var height = vpToMc * cHeight;\n // vierport 左上角到 minimap container 的距离 / minimap container 宽高\n // = 主图 expandedBBox 左上角 canvas container 坐标距离 / expandedBBox 宽高\n var left = cWidth * -topLeft.x / expandedGraphCanvasBBox.width;\n var top = cHeight * -topLeft.y / expandedGraphCanvasBBox.height;\n var right = left + width;\n var bottom = top + height;\n if (left < 0) {\n width += left;\n left = 0;\n }\n if (right > cWidth) {\n width = width - (right - cWidth);\n }\n if (top < 0) {\n height += top;\n top = 0;\n }\n if (bottom > cHeight) {\n height = height - (bottom - cHeight);\n }\n // 缓存目前缩放比,在移动 minimap 视窗时就不用再计算大图的移动量\n this.set('ratio', ratio);\n var correctLeft = \"\".concat(left, \"px\");\n var correctTop = \"\".concat(top, \"px\");\n modifyCSS(viewport, {\n left: correctLeft,\n top: correctTop,\n width: \"\".concat(width, \"px\"),\n height: \"\".concat(height, \"px\")\n });\n };\n ImageMiniMap.prototype.init = function () {\n this.initContainer();\n };\n /**\n * 初始化 Minimap 的容器\n */\n ImageMiniMap.prototype.initContainer = function () {\n var self = this;\n var graph = self.get('graph');\n var graphWidth = graph.get('width');\n var graphHeight = graph.get('height');\n var aspectRatio = graphHeight / graphWidth;\n var className = self.get('className');\n var parentNode = self.get('container');\n // size of the minimap's container\n var cWidth = self.get('width');\n var cHeight = self.get('height');\n if (!cWidth && !cHeight) {\n cWidth = 200;\n }\n if (cWidth) {\n cHeight = aspectRatio * cWidth;\n self.set('height', cHeight);\n } else {\n cWidth = 1 / aspectRatio * cHeight;\n self.set('width', cWidth);\n }\n var container = createDom(\"
\"));\n if (isString(parentNode)) {\n parentNode = document.getElementById(parentNode);\n }\n if (parentNode) {\n parentNode.appendChild(container);\n } else {\n graph.get('container').appendChild(container);\n }\n self.set('container', container);\n var containerDOM = createDom(\"
\");\n container.appendChild(containerDOM);\n var span = createDom(\"\");\n containerDOM.appendChild(span);\n self.set('containerDOM', containerDOM);\n self.set('containerSpan', span);\n var img = createDom(\"\\\"\\\"\"));\n self.set('imgDOM', img);\n self.updateImgSize();\n span.appendChild(img);\n self.updateCanvas();\n };\n ImageMiniMap.prototype.updateImgSize = function () {\n var self = this;\n var imgDOM = self.get('imgDOM');\n var cWidth = self.get('width');\n var cHeight = self.get('height');\n imgDOM.onload = function () {\n var naturalSize = getImgNaturalDimension(imgDOM);\n if (naturalSize[0] > naturalSize[1]) {\n imgDOM.width = cWidth;\n } else {\n imgDOM.height = cHeight;\n }\n };\n };\n ImageMiniMap.prototype.updateCanvas = function () {\n // 如果是在动画,则不刷新视图\n var isRefresh = this.get('refresh');\n if (!isRefresh) {\n return;\n }\n var graph = this.get('graph');\n if (graph.get('destroyed')) {\n return;\n }\n // 如果是视口变换,也不刷新视图,但是需要重置视口大小和位置\n if (this.get('viewportChange')) {\n this.set('viewportChange', false);\n this.updateViewport();\n }\n var cWidth = this.get('width');\n var graphBBox = graph.get('canvas').getCanvasBBox();\n var width = graphBBox.width;\n var ratio = cWidth / width;\n // // 更新minimap视口\n this.set('ratio', ratio);\n this.updateViewport();\n };\n /**\n * 获取minimap的窗口\n * @return {HTMLElement} 窗口的dom实例\n */\n ImageMiniMap.prototype.getViewport = function () {\n return this.get('viewport');\n };\n /**\n * 获取minimap的容器dom\n * @return {HTMLElement} dom\n */\n ImageMiniMap.prototype.getContainer = function () {\n return this.get('container');\n };\n ImageMiniMap.prototype.updateGraphImg = function (img) {\n var self = this;\n var oriImgDOM = self.get('imgDOM');\n oriImgDOM.remove();\n self.set('graphImg', img);\n var imgDOM = createDom(\"\\\"\\\"\"));\n self.set('imgDOM', imgDOM);\n imgDOM.src = img;\n self.updateImgSize();\n var span = self.get('containerSpan');\n span.appendChild(imgDOM);\n self.updateCanvas();\n };\n ImageMiniMap.prototype.destroy = function () {\n var container = this.get('container');\n container.parentNode.removeChild(container);\n };\n return ImageMiniMap;\n}(Base);\nexport default ImageMiniMap;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { clone } from '@antv/util';\nimport { Util } from '@antv/g6-core';\nimport Base from '../base';\nvar distance = Util.distance;\nvar DELTA = 0.05;\nvar lensDelegateStyle = {\n stroke: '#000',\n strokeOpacity: 0.8,\n lineWidth: 2,\n fillOpacity: 1,\n fill: '#fff'\n};\nvar EdgeFilterLens = /** @class */function (_super) {\n __extends(EdgeFilterLens, _super);\n function EdgeFilterLens(config) {\n return _super.call(this, config) || this;\n }\n EdgeFilterLens.prototype.getDefaultCfgs = function () {\n return {\n type: 'both',\n trigger: 'mousemove',\n r: 60,\n delegateStyle: clone(lensDelegateStyle),\n showLabel: 'edge',\n scaleRBy: 'wheel'\n };\n };\n // class-methods-use-this\n EdgeFilterLens.prototype.getEvents = function () {\n var events;\n switch (this.get('trigger')) {\n case 'click':\n events = {\n click: 'filter'\n };\n break;\n case 'drag':\n events = {\n click: 'createDelegate'\n };\n break;\n default:\n events = {\n mousemove: 'filter'\n };\n break;\n }\n return events;\n };\n EdgeFilterLens.prototype.init = function () {\n var self = this;\n var showLabel = self.get('showLabel');\n var showNodeLabel = showLabel === 'node' || showLabel === 'both';\n var showEdgeLabel = showLabel === 'edge' || showLabel === 'both';\n self.set('showNodeLabel', showNodeLabel);\n self.set('showEdgeLabel', showEdgeLabel);\n var shouldShow = self.get('shouldShow');\n if (!shouldShow) self.set('shouldShow', function () {\n return true;\n });\n };\n // Create the delegate when the trigger is drag\n EdgeFilterLens.prototype.createDelegate = function (e) {\n var self = this;\n var lensDelegate = self.get('delegate');\n if (!lensDelegate || lensDelegate.destroyed) {\n self.filter(e);\n lensDelegate = self.get('delegate');\n // drag to move the lens\n lensDelegate.on('dragstart', function (evt) {});\n lensDelegate.on('drag', function (evt) {\n self.filter(evt);\n });\n // 绑定调整范围(r)\n // 由于 drag 用于改变 lens 位置,因此在此模式下,drag 不能用于调整 r\n // scaling r\n if (this.get('scaleRBy') === 'wheel') {\n lensDelegate.on('mousewheel', function (evt) {\n self.scaleRByWheel(evt);\n });\n }\n }\n };\n /**\n * Scale the range by wheel\n * @param e mouse wheel event\n */\n EdgeFilterLens.prototype.scaleRByWheel = function (e) {\n var self = this;\n if (!e || !e.originalEvent) return;\n if (e.preventDefault) e.preventDefault();\n var graph = self.get('graph');\n var ratio;\n var lensDelegate = self.get('delegate');\n var lensCenter = lensDelegate ? {\n x: lensDelegate.attr('x'),\n y: lensDelegate.attr('y')\n } : undefined;\n var mousePos = lensCenter || graph.getPointByClient(e.clientX, e.clientY);\n if (e.originalEvent.wheelDelta < 0) {\n ratio = 1 - DELTA;\n } else {\n ratio = 1 / (1 - DELTA);\n }\n var maxR = self.get('maxR');\n var minR = self.get('minR');\n var r = self.get('r');\n if (r > (maxR || graph.get('height')) && ratio > 1 || r < (minR || graph.get('height') * 0.05) && ratio < 1) {\n ratio = 1;\n }\n r *= ratio;\n self.set('r', r);\n self.filter(e);\n };\n /**\n * Response function for mousemove, click, or drag to filter out the edges\n * @param e mouse event\n */\n EdgeFilterLens.prototype.filter = function (e) {\n var self = this;\n var graph = self.get('graph');\n var nodes = graph.getNodes();\n var hitNodesMap = {};\n var r = self.get('r');\n var type = self.get('type');\n var fCenter = {\n x: e.x,\n y: e.y\n };\n self.updateDelegate(fCenter, r);\n var shouldShow = self.get('shouldShow');\n var vShapes = self.get('vShapes');\n if (vShapes) {\n vShapes.forEach(function (shape) {\n shape.remove();\n shape.destroy();\n });\n }\n vShapes = [];\n nodes.forEach(function (node) {\n var model = node.getModel();\n var x = model.x,\n y = model.y;\n if (distance({\n x: x,\n y: y\n }, fCenter) < r) {\n hitNodesMap[model.id] = node;\n }\n });\n var edges = graph.getEdges();\n var hitEdges = [];\n edges.forEach(function (edge) {\n var model = edge.getModel();\n var sourceId = model.source;\n var targetId = model.target;\n if (shouldShow(model)) {\n if (type === 'only-source' || type === 'one') {\n if (hitNodesMap[sourceId] && !hitNodesMap[targetId]) hitEdges.push(edge);\n } else if (type === 'only-target' || type === 'one') {\n if (hitNodesMap[targetId] && !hitNodesMap[sourceId]) hitEdges.push(edge);\n } else if (type === 'both' && hitNodesMap[sourceId] && hitNodesMap[targetId]) {\n hitEdges.push(edge);\n }\n }\n });\n var showNodeLabel = self.get('showNodeLabel');\n var showEdgeLabel = self.get('showEdgelabel');\n // copy the shapes in hitEdges\n var group = graph.get('group');\n hitEdges.forEach(function (edge) {\n var shapes = edge.get('group').get('children');\n shapes.forEach(function (shape) {\n var shapeType = shape.get('type');\n var vShape = group.addShape(shapeType, {\n attrs: shape.attr()\n });\n vShapes.push(vShape);\n if (showNodeLabel && shapeType === 'text') {\n vShape.set('visible', true);\n }\n });\n });\n // copy the shape sof hitNodes\n Object.keys(hitNodesMap).forEach(function (key) {\n var node = hitNodesMap[key];\n var clonedGroup = node.get('group').clone();\n group.add(clonedGroup);\n vShapes.push(clonedGroup);\n if (showEdgeLabel) {\n var shapes = clonedGroup.get('children');\n for (var j = 0; j < shapes.length; j++) {\n var shape = shapes[j];\n if (shape.get('type') === 'text') {\n shape.set('visible', true);\n }\n }\n }\n });\n self.set('vShapes', vShapes);\n };\n /**\n * Adjust part of the parameters, including trigger, type, r, maxR, minR, shouldShow, showLabel, and scaleRBy\n * @param {EdgeFilterLensConfig} cfg\n */\n EdgeFilterLens.prototype.updateParams = function (cfg) {\n var self = this;\n var r = cfg.r,\n trigger = cfg.trigger,\n minR = cfg.minR,\n maxR = cfg.maxR,\n scaleRBy = cfg.scaleRBy,\n showLabel = cfg.showLabel,\n shouldShow = cfg.shouldShow;\n if (!isNaN(cfg.r)) {\n self.set('r', r);\n }\n if (!isNaN(maxR)) {\n self.set('maxR', maxR);\n }\n if (!isNaN(minR)) {\n self.set('minR', minR);\n }\n if (trigger === 'mousemove' || trigger === 'click') {\n self.set('trigger', trigger);\n }\n if (scaleRBy === 'wheel' || scaleRBy === 'unset') {\n self.set('scaleRBy', scaleRBy);\n self.get('delegate').remove();\n self.get('delegate').destroy();\n var dPercentText = self.get('dPercentText');\n if (dPercentText) {\n dPercentText.remove();\n dPercentText.destroy();\n }\n }\n if (showLabel === 'node' || showLabel === 'both') {\n self.set('showNodeLabel', true);\n }\n if (showLabel === 'edge' || showLabel === 'both') {\n self.set('showEdgeLabel', true);\n }\n if (shouldShow) {\n self.set('shouldShow', shouldShow);\n }\n };\n /**\n * Update the delegate shape of the lens\n * @param {Point} mCenter the center of the shape\n * @param {number} r the radius of the shape\n */\n EdgeFilterLens.prototype.updateDelegate = function (mCenter, r) {\n var self = this;\n var graph = self.get('graph');\n var lensDelegate = self.get('delegate');\n if (!lensDelegate || lensDelegate.destroyed) {\n // 拖动多个\n var parent_1 = graph.get('group');\n var attrs = self.get('delegateStyle') || lensDelegateStyle;\n // model上的x, y是相对于图形中心的,delegateShape是g实例,x,y是绝对坐标\n lensDelegate = parent_1.addShape('circle', {\n attrs: __assign({\n r: r,\n x: mCenter.x,\n y: mCenter.y\n }, attrs),\n name: 'lens-shape',\n draggable: true\n });\n if (this.get('trigger') !== 'drag') {\n // 调整范围 r 的监听\n if (this.get('scaleRBy') === 'wheel') {\n // 使用滚轮调整 r\n lensDelegate.on('mousewheel', function (evt) {\n self.scaleRByWheel(evt);\n });\n }\n }\n } else {\n lensDelegate.attr({\n x: mCenter.x,\n y: mCenter.y,\n r: r\n });\n }\n self.set('delegate', lensDelegate);\n };\n /**\n * Clear the filtering\n */\n EdgeFilterLens.prototype.clear = function () {\n var self = this;\n var vShapes = self.get('vShapes');\n if (vShapes) {\n vShapes.forEach(function (shape) {\n shape.remove();\n shape.destroy();\n });\n }\n vShapes = [];\n self.set('vShapes', vShapes);\n var lensDelegate = self.get('delegate');\n if (lensDelegate && !lensDelegate.destroyed) {\n lensDelegate.remove();\n lensDelegate.destroy();\n }\n };\n /**\n * Destroy the component\n */\n EdgeFilterLens.prototype.destroy = function () {\n this.clear();\n };\n return EdgeFilterLens;\n}(Base);\nexport default EdgeFilterLens;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nimport { each, mix } from '@antv/util';\nimport { Util } from '@antv/g6-core';\nimport Base from '../base';\nvar pointLineDistance = Util.pointLineDistance;\n// 对齐线样式\nvar alignLineStyle = {\n stroke: '#FA8C16',\n lineWidth: 1\n};\nvar SnapLine = /** @class */function (_super) {\n __extends(SnapLine, _super);\n function SnapLine(props) {\n return _super.call(this, props) || this;\n }\n SnapLine.prototype.getDefaultCfgs = function () {\n return {\n line: alignLineStyle,\n /**\n * item align type\n * @type {String|True|False}\n */\n itemAlignType: 'center',\n /**\n * tolerance to item force align\n * @type {String|True|False}\n */\n tolerance: 5,\n horizontalLines: {},\n verticalLines: {},\n alignLines: []\n };\n };\n SnapLine.prototype.init = function () {};\n // class-methods-use-this\n SnapLine.prototype.getEvents = function () {\n return {\n 'node:dragstart': 'onDragStart',\n 'node:drag': 'onDrag',\n 'node:dragend': 'onDragEnd'\n };\n };\n SnapLine.prototype.onDragStart = function () {\n this.initBoxLine();\n };\n SnapLine.prototype.onDrag = function (e) {\n var item = e.item;\n // 计算辅助线位置,拖动过程中更新辅助线\n var delegateShape = item.get('delegateShape') || item;\n var bbox = delegateShape.getBBox();\n var model = item.getModel();\n var dx = model.x - bbox.x;\n var dy = model.y - bbox.y;\n this.show({\n x: bbox.minX + dx,\n y: bbox.minY + dy\n }, {\n width: bbox.width,\n height: bbox.height\n });\n };\n SnapLine.prototype.onDragEnd = function () {\n // 拖动结束时候删除辅助线\n this.destory();\n };\n /**\n * 每次开始拖动之前,计算出所有节点在水平和垂直方向上,左中右三条中线,并缓存起来\n *\n * @param {object} item Node节点\n * @memberof AlignLine\n */\n SnapLine.prototype.initBoxLine = function () {\n var _a = this._cfgs,\n horizontalLines = _a.horizontalLines,\n verticalLines = _a.verticalLines,\n itemAlignType = _a.itemAlignType;\n var graph = this.get('graph');\n var nodes = graph.getNodes();\n nodes.forEach(function (item) {\n var bbox = item.getBBox();\n var nodeId = item.get('id');\n // 设置水平方向辅助线\n if (itemAlignType === true || itemAlignType === 'horizontal') {\n // tltr: top left top right\n // lcrc: left center right center\n // blbr: bottom left bottom right\n horizontalLines[\"\".concat(nodeId, \"tltr\")] = [bbox.minX, bbox.minY, bbox.maxX, bbox.minY, item];\n horizontalLines[\"\".concat(nodeId, \"lcrc\")] = [bbox.minX, bbox.centerY, bbox.maxX, bbox.centerY, item];\n horizontalLines[\"\".concat(nodeId, \"blbr\")] = [bbox.minX, bbox.maxY, bbox.maxX, bbox.maxY, item];\n } else if (itemAlignType === 'center') {\n horizontalLines[\"\".concat(nodeId, \"lcrc\")] = [bbox.minX, bbox.centerY, bbox.maxX, bbox.centerY, item];\n }\n // 设置垂直方向辅助线\n if (itemAlignType === true || itemAlignType === 'vertical') {\n // tlbl: top left bottom left\n // tcbc: top center bottom center\n // trbr: top right bottom right\n verticalLines[\"\".concat(nodeId, \"tlbl\")] = [bbox.minX, bbox.minY, bbox.minX, bbox.maxY, item];\n verticalLines[\"\".concat(nodeId, \"tcbc\")] = [bbox.centerX, bbox.minY, bbox.centerX, bbox.maxY, item];\n verticalLines[\"\".concat(nodeId, \"trbr\")] = [bbox.maxX, bbox.minY, bbox.maxX, bbox.maxY, item];\n } else if (itemAlignType === 'center') {\n verticalLines[\"\".concat(nodeId, \"tcbc\")] = [bbox.centerX, bbox.minY, bbox.centerX, bbox.maxY, item];\n }\n });\n };\n /**\n * 显示AlignLine\n *\n * @param {object} point 起始点\n * @param {object} bbox BBox\n * @returns\n * @memberof AlignLine\n */\n SnapLine.prototype.show = function (point, bbox) {\n var originPoint = mix({}, point);\n this.itemAlign(point, bbox, originPoint);\n return point;\n };\n /**\n * 拖动拖出中添加辅助线\n *\n * @param {object} point 起始点\n * @param {object} bbox 代理形状的bbox\n * @param {object} originPoint 原始点,同point\n * @memberof AlignLine\n */\n SnapLine.prototype.itemAlign = function (point, bbox, originPoint) {\n var _this = this;\n var _a = this._cfgs,\n horizontalLines = _a.horizontalLines,\n verticalLines = _a.verticalLines,\n tolerance = _a.tolerance;\n var tc = {\n x: originPoint.x + bbox.width / 2,\n y: originPoint.y\n };\n var cc = {\n x: originPoint.x + bbox.width / 2,\n y: originPoint.y + bbox.height / 2\n };\n var bc = {\n x: originPoint.x + bbox.width / 2,\n y: originPoint.y + bbox.height\n };\n var lc = {\n x: originPoint.x,\n y: originPoint.y + bbox.height / 2\n };\n var rc = {\n x: originPoint.x + bbox.width,\n y: originPoint.y + bbox.height / 2\n };\n var horizontalDis = [];\n var verticalDis = [];\n var alignCfg = null;\n this.clearAlignLine();\n each(horizontalLines, function (line) {\n if (line[4].isVisible) {\n horizontalDis.push(_this.getLineDisObject(line, tc));\n horizontalDis.push(_this.getLineDisObject(line, cc));\n horizontalDis.push(_this.getLineDisObject(line, bc));\n }\n });\n each(verticalLines, function (line) {\n if (line[4].isVisible) {\n verticalDis.push(_this.getLineDisObject(line, lc));\n verticalDis.push(_this.getLineDisObject(line, cc));\n verticalDis.push(_this.getLineDisObject(line, rc));\n }\n });\n horizontalDis.sort(function (a, b) {\n return a.dis - b.dis;\n });\n verticalDis.sort(function (a, b) {\n return a.dis - b.dis;\n });\n if (horizontalDis.length !== 0 && horizontalDis[0].dis < tolerance) {\n point.y = horizontalDis[0].line[1] - horizontalDis[0].point.y + originPoint.y;\n alignCfg = {\n type: 'item',\n horizontals: [horizontalDis[0]]\n };\n for (var i = 1; i < 3; i++) {\n if (horizontalDis[0].dis === horizontalDis[i].dis) {\n alignCfg.horizontals.push(horizontalDis[i]);\n }\n }\n }\n if (verticalDis.length !== 0 && verticalDis[0].dis < tolerance) {\n point.x = verticalDis[0].line[0] - verticalDis[0].point.x + originPoint.x;\n if (!alignCfg) {\n alignCfg = {\n type: 'item',\n verticals: [verticalDis[0]]\n };\n } else {\n alignCfg.verticals = [verticalDis[0]];\n }\n for (var i = 1; i < 3; i++) {\n if (verticalDis[0].dis === verticalDis[i].dis) {\n alignCfg.verticals.push(verticalDis[i]);\n }\n }\n }\n if (alignCfg) {\n alignCfg.bbox = bbox;\n this.addAlignLine(alignCfg);\n }\n };\n /**\n * 根据配置项添加辅助线\n *\n * @param {object} cfg\n * @memberof AlignLine\n */\n SnapLine.prototype.addAlignLine = function (cfg) {\n var bbox = cfg.bbox,\n type = cfg.type,\n horizontals = cfg.horizontals,\n verticals = cfg.verticals;\n var _a = this._cfgs,\n lineStyle = _a.line,\n alignLines = _a.alignLines;\n var graph = this.get('graph');\n var group = graph.get('group');\n if (type === 'item') {\n if (horizontals) {\n each(horizontals, function (horizontal) {\n var refLine = horizontal.line,\n refPoint = horizontal.point;\n var lineCenterX = (refLine[0] + refLine[2]) / 2;\n var x1;\n var x2;\n if (refPoint.x < lineCenterX) {\n x1 = refPoint.x - bbox.width / 2;\n x2 = Math.max(refLine[0], refLine[2]);\n } else {\n x1 = refPoint.x + bbox.width / 2;\n x2 = Math.min(refLine[0], refLine[2]);\n }\n var lineAttrs = mix({\n x1: x1,\n y1: refLine[1],\n x2: x2,\n y2: refLine[1]\n }, lineStyle);\n var line = group.addShape('line', {\n attrs: lineAttrs,\n capture: false\n });\n alignLines.push(line);\n });\n }\n if (verticals) {\n each(verticals, function (vertical) {\n var refLine = vertical.line,\n refPoint = vertical.point;\n var lineCenterY = (refLine[1] + refLine[3]) / 2;\n var y1;\n var y2;\n if (refPoint.y < lineCenterY) {\n y1 = refPoint.y - bbox.height / 2;\n y2 = Math.max(refLine[1], refLine[3]);\n } else {\n y1 = refPoint.y + bbox.height / 2;\n y2 = Math.min(refLine[1], refLine[3]);\n }\n var lineAtts = mix({\n x1: refLine[0],\n y1: y1,\n x2: refLine[0],\n y2: y2\n }, lineStyle);\n var line = group.addShape('line', {\n attrs: lineAtts,\n capture: false\n });\n alignLines.push(line);\n });\n }\n }\n };\n /**\n * 获取点到线的距离\n *\n * @param {array} line [x1, y1, x2, y2] 线的四个点\n * @param {object} point 点的x和y坐标点 {x, y}\n * @returns\n * @memberof AlignLine\n */\n SnapLine.prototype.getLineDisObject = function (line, point) {\n return {\n line: line,\n point: point,\n dis: pointLineDistance(line, point)\n };\n };\n SnapLine.prototype.getContainer = function () {\n return this.get('container');\n };\n /**\n * 拖动过程中,清楚上次绘制的线\n *\n * @memberof AlignLine\n */\n SnapLine.prototype.clearAlignLine = function () {\n var alignLines = this._cfgs.alignLines;\n each(alignLines, function (line) {\n line.remove();\n });\n alignLines.length = 0;\n };\n /**\n * 拖动结束时候,情况缓存的节点的辅助线,同时删除绘制的线\n *\n * @memberof AlignLine\n */\n SnapLine.prototype.destory = function () {\n var _a = this._cfgs,\n horizontalLines = _a.horizontalLines,\n verticalLines = _a.verticalLines;\n var graph = this.get('graph');\n var nodes = graph.getNodes();\n nodes.forEach(function (node) {\n var itemId = node.get('id');\n delete horizontalLines[\"\".concat(itemId, \"tltr\")];\n delete horizontalLines[\"\".concat(itemId, \"lcrc\")];\n delete horizontalLines[\"\".concat(itemId, \"blbr\")];\n delete verticalLines[\"\".concat(itemId, \"tlbl\")];\n delete verticalLines[\"\".concat(itemId, \"tcbc\")];\n delete verticalLines[\"\".concat(itemId, \"trbr\")];\n });\n this.clearAlignLine();\n };\n return SnapLine;\n}(Base);\nexport default SnapLine;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { modifyCSS, createDom } from '@antv/dom-util';\nimport Base from '../base';\nimport { isArray, isNumber, uniqueId } from '@antv/util';\nimport { Util } from '@antv/g6-core';\nimport { Canvas } from '@antv/g-canvas';\nvar ALLOW_EVENTS = ['click', 'mouseenter'];\nvar Legend = /** @class */function (_super) {\n __extends(Legend, _super);\n function Legend(config) {\n return _super.call(this, config) || this;\n }\n Legend.prototype.getDefaultCfgs = function () {\n return {\n data: {},\n position: 'top',\n padding: 8,\n margin: 8,\n offsetX: 0,\n offsetY: 0,\n layout: 'horizontal',\n flipPage: false,\n containerStyle: {},\n align: undefined,\n horiSep: 8,\n vertiSep: 8,\n filter: {\n enable: false,\n trigger: 'click'\n }\n };\n };\n Legend.prototype.init = function () {\n this.formatArray('padding');\n this.formatArray('margin');\n var filter = this.get('filter') || {};\n var multiple = filter.multiple;\n if (multiple && filter.trigger === 'mouseenter') this.set('multiple', false);\n var align = this.get('align');\n if (!align) {\n var positions = this.get('position').split('-');\n if (positions.includes('left')) align = 'left';\n if (positions.includes('right')) align = 'right';else align = 'center';\n this.set('align', align);\n }\n var graph = this.get('graph');\n var graphContainer = graph.get('container');\n var container = createDom(\"
\");\n graphContainer.appendChild(container);\n this.set('container', container);\n var size = this.render();\n modifyCSS(container, this.getContainerPos(size));\n this.bindEvents();\n };\n Legend.prototype.getContainerPos = function (size) {\n if (size === void 0) {\n size = [0, 0];\n }\n var self = this;\n var graph = self.get('graph');\n var offsetX = this.get('offsetX');\n var offsetY = this.get('offsetY');\n var margin = this.get('margin');\n var positions = this.get('position').split('-');\n var posIdxMap = {\n 'top': 0,\n 'right': 1,\n 'bottom': 2,\n 'left': 3\n };\n var x = 0,\n y = 0;\n var containerCSS = {\n left: (graph.getWidth() - size[0]) / 2 + x,\n top: (graph.getHeight() - size[1]) / 2 + y\n };\n positions.forEach(function (pos) {\n var marginValue = margin[posIdxMap[pos]];\n var key = pos;\n switch (pos) {\n case 'top':\n marginValue += y;\n break;\n case 'left':\n marginValue += x;\n break;\n case 'bottom':\n marginValue = graph.getHeight() - size[1] - marginValue + y;\n key = 'top';\n break;\n default:\n marginValue = graph.getWidth() - size[0] - marginValue + x;\n key = 'left';\n break;\n }\n containerCSS[key] = marginValue;\n });\n containerCSS.top += offsetY + graph.getContainer().offsetTop;\n containerCSS.left += offsetX + graph.getContainer().offsetLeft;\n Object.keys(containerCSS).forEach(function (key) {\n containerCSS[key] = \"\".concat(containerCSS[key], \"px\");\n });\n return containerCSS;\n };\n // class-methods-use-this\n Legend.prototype.bindEvents = function () {\n var self = this;\n var filter = self.get('filter');\n if (!filter || !filter.enable) return;\n var trigger = filter.trigger || 'click';\n if (!ALLOW_EVENTS.includes(trigger)) {\n console.warn('Trigger for legend filterling must be \\'click\\' or \\'mouseenter\\', \\'click\\' will take effect by default.');\n trigger = 'click';\n }\n var lc = self.get('legendCanvas');\n if (trigger === 'mouseenter') {\n lc.on('node-container:mouseenter', function (e) {\n return self.filterData(e);\n });\n lc.on('node-container:mouseleave', function (e) {\n self.clearFilter();\n self.clearActiveLegend();\n });\n } else {\n lc.on('node-container:click', function (e) {\n return self.filterData(e);\n });\n lc.on('click', function (e) {\n if (e.target && e.target.isCanvas && e.target.isCanvas()) {\n self.clearFilter();\n self.clearActiveLegend();\n }\n });\n }\n };\n /**\n * 更新 legend 数据,开放给用户控制\n * @param param\n */\n Legend.prototype.changeData = function (data) {\n this.set('data', data);\n var size = this.render();\n modifyCSS(this.get('container'), this.getContainerPos(size));\n };\n Legend.prototype.activateLegend = function (shape) {\n var filter = this.get('filter');\n var multiple = filter === null || filter === void 0 ? void 0 : filter.multiple;\n if (!multiple) this.clearActiveLegend();\n var shapeGroup = shape.get('parent');\n // 若被高亮元素已经处于 active 状态,则取消它的 active 状态\n // 并根据目前是否有其他 active 状态的元素决定是否要设置为 inactive 状态\n if (shapeGroup.get('active')) {\n shapeGroup.set('active', false);\n if (this.findLegendItemsByState('active').length) shapeGroup.set('inactive', true);\n } else {\n shapeGroup.set('inactive', false);\n shapeGroup.set('active', true);\n }\n // 当目前有元素为 active 状态时,将非 active 的元素设置为 inactive\n if (this.findLegendItemsByState('active').length) {\n this.findLegendItemsByState('active', 'all', false).forEach(function (subGroup) {\n subGroup.set('inactive', true);\n });\n } else {\n this.clearActiveLegend();\n }\n // 设置样式\n var stateStyles = (filter === null || filter === void 0 ? void 0 : filter.legendStateStyles) || {};\n var legendInactive = (stateStyles === null || stateStyles === void 0 ? void 0 : stateStyles.inactive) || {\n opacity: 0.5,\n 'text-shape': {\n opacity: 0.5\n }\n };\n var legendTextInactive = legendInactive['text-shape'] || {};\n this.findLegendItemsByState('inactive').forEach(function (subGroup) {\n var _a = subGroup.get('children'),\n keyShape = _a[0],\n text = _a[1];\n keyShape.attr(__assign(__assign({}, keyShape.get('oriAttrs')), legendInactive));\n text.attr(__assign(__assign({}, text.get('oriAttrs')), legendTextInactive));\n });\n var legendActive = (stateStyles === null || stateStyles === void 0 ? void 0 : stateStyles.active) || {\n stroke: '#000',\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 'bold'\n }\n };\n var legendTextActive = legendActive['text-shape'] || {};\n this.findLegendItemsByState('active').forEach(function (subGroup) {\n var _a = subGroup.get('children'),\n keyShape = _a[0],\n text = _a[1];\n keyShape.attr(__assign(__assign({}, keyShape.get('oriAttrs')), legendActive));\n text.attr(__assign(__assign({}, text.get('oriAttrs')), legendTextActive));\n });\n };\n Legend.prototype.findLegendItemsByState = function (stateName, type, value) {\n if (type === void 0) {\n type = 'all';\n }\n if (value === void 0) {\n value = true;\n }\n var group = this.get('legendCanvas').find(function (e) {\n return e.get('name') === 'root';\n });\n var nodeGroup = group.find(function (e) {\n return e.get('name') === 'node-group';\n });\n var edgeGroup = group.find(function (e) {\n return e.get('name') === 'edge-group';\n });\n if (type === 'node') return nodeGroup.get('children').filter(function (g) {\n return !!g.get(stateName) === value;\n });\n if (type === 'edge') return edgeGroup.get('children').filter(function (g) {\n return !!g.get(stateName) === value;\n });\n return nodeGroup.get('children').filter(function (g) {\n return !!g.get(stateName) === value;\n }).concat(edgeGroup.get('children').filter(function (g) {\n return !!g.get(stateName) === value;\n }));\n };\n Legend.prototype.clearActiveLegend = function () {\n var lg = this.get('legendCanvas');\n var group = lg.find(function (e) {\n return e.get('name') === 'root';\n });\n var groups = [group.find(function (e) {\n return e.get('name') === 'node-group';\n }), group.find(function (e) {\n return e.get('name') === 'edge-group';\n })];\n groups.forEach(function (itemGroup) {\n itemGroup.get('children').forEach(function (subGroup) {\n subGroup.set('active', false);\n subGroup.set('inactive', false);\n var _a = subGroup.get('children'),\n keyShape = _a[0],\n text = _a[1];\n keyShape.attr(keyShape.get('oriAttrs'));\n text.attr(text.get('oriAttrs'));\n });\n });\n };\n /**\n * 高亮和置灰图例,并过滤主图元素\n * @param param\n */\n Legend.prototype.filterData = function (e) {\n var filter = this.get('filter');\n var filterFunctions = filter === null || filter === void 0 ? void 0 : filter.filterFunctions;\n if (!filter || !filterFunctions) return;\n var lc = this.get('legendCanvas');\n var graph = this.get('graph');\n var activeState = filter.graphActiveState || 'active';\n var inactiveState = filter.graphInactiveState || 'inactive';\n var multiple = filter.multiple;\n this.clearFilter();\n if (!multiple) this.clearActiveLegend();\n // 设置 legend 的高亮状态\n this.activateLegend(e.target);\n var group = lc.find(function (e) {\n return e.get('name') === 'root';\n });\n var nodeGroup = group.find(function (e) {\n return e.get('name') === 'node-group';\n });\n var edgeGroup = group.find(function (e) {\n return e.get('name') === 'edge-group';\n });\n var activeNodeLegend = nodeGroup.get('children').filter(function (e) {\n return e.get('active');\n });\n var activeEdgeLegend = edgeGroup.get('children').filter(function (e) {\n return e.get('active');\n });\n var activeCount = 0;\n var typeFuncs = ['getNodes', 'getEdges'];\n typeFuncs.forEach(function (typeFunc) {\n graph[typeFunc]().forEach(function (graphItem) {\n var active = false;\n var activeLegend = typeFunc === 'getNodes' ? activeNodeLegend : activeEdgeLegend;\n activeLegend.forEach(function (itemGroup) {\n var func = filterFunctions[itemGroup.get('id')];\n active = active || func(graphItem.getModel());\n });\n if (active) {\n graph.setItemState(graphItem, inactiveState, false);\n graph.setItemState(graphItem, activeState, true);\n activeCount++;\n } else {\n graph.setItemState(graphItem, activeState, false);\n graph.setItemState(graphItem, inactiveState, true);\n }\n });\n });\n if (!activeCount) typeFuncs.forEach(function (typeFunc) {\n graph[typeFunc]().forEach(function (graphItem) {\n graph.clearItemStates(graphItem, [inactiveState]);\n });\n });\n };\n /**\n * 清除主图相关状态\n * @param param\n */\n Legend.prototype.clearFilter = function () {\n // 清除 legend 的高亮状态\n var graph = this.get('graph');\n var filter = this.get('filter');\n if (!filter) return;\n var activeState = filter.graphActiveState || 'active';\n var inactiveState = filter.graphInactiveState || 'inactive';\n graph.getNodes().forEach(function (node) {\n graph.clearItemStates(node, [activeState, inactiveState]);\n });\n graph.getEdges().forEach(function (edge) {\n graph.clearItemStates(edge, [activeState, inactiveState]);\n });\n };\n /**\n * 渲染 legend 图\n * @param param\n */\n Legend.prototype.render = function () {\n var _this = this;\n this.processData();\n var lc = this.get('legendCanvas');\n if (!lc) {\n lc = new Canvas({\n container: this.get('container'),\n width: 200,\n height: 200\n });\n } else {\n lc.clear();\n }\n var group = lc.addGroup({\n name: 'root'\n });\n var nodeGroup = group.addGroup({\n name: 'node-group'\n });\n var edgeGroup = group.addGroup({\n name: 'edge-group'\n });\n this.set('legendCanvas', lc);\n var itemsData = this.get('itemsData');\n var itemTypes = ['nodes', 'edges'];\n var itemGroup = [nodeGroup, edgeGroup];\n itemTypes.forEach(function (itemType, i) {\n itemsData[itemType].forEach(function (data) {\n var _a;\n var subGroup = itemGroup[i].addGroup({\n id: data.id,\n name: 'node-container'\n });\n var attrs;\n var shapeType = data.type;\n var _b = _this.getShapeSize(data),\n width = _b.width,\n height = _b.height,\n r = _b.r;\n var style = _this.getStyle(itemType.substr(0, 4), data);\n switch (data.type) {\n case 'circle':\n attrs = {\n r: r,\n x: 0,\n y: 0\n };\n break;\n case 'rect':\n attrs = {\n width: width,\n height: height,\n x: -width / 2,\n y: -height / 2\n };\n break;\n case 'ellipse':\n attrs = {\n rx: width,\n ry: height,\n x: 0,\n y: 0\n };\n shapeType = 'ellipse';\n break;\n case 'line':\n attrs = {\n x1: -width / 2,\n y1: 0,\n x2: width / 2,\n y2: 0\n };\n shapeType = 'line';\n break;\n case 'quadratic':\n attrs = {\n path: [['M', -width / 2, 0], ['Q', 0, width / 2, width / 2, 0]]\n };\n shapeType = 'path';\n break;\n case 'cubic':\n attrs = {\n path: [['M', -width / 2, 0], ['C', -width / 6, width / 2, width / 6, -width / 2, width / 2, 0]]\n };\n shapeType = 'path';\n break;\n case 'diamond':\n attrs = {\n path: [['M', 0, -height], ['L', width, 0], ['L', 0, height], ['L', -width, 0], ['Z']]\n };\n shapeType = 'path';\n break;\n case 'triangle':\n attrs = {\n path: [['M', -width, height], ['L', 0, -height], ['L', width, height], ['Z']]\n };\n shapeType = 'path';\n break;\n case 'star':\n attrs = {\n path: Util.getStarPath(r * 3, r * 1.2)\n };\n shapeType = 'path';\n break;\n default:\n attrs = {\n r: r,\n x: 0,\n y: 0\n };\n break;\n }\n var keyShape = subGroup.addShape(shapeType, {\n attrs: __assign(__assign({}, attrs), style),\n name: \"\".concat(data.type, \"-node-keyShape\"),\n oriAttrs: __assign({\n opacity: 1\n }, style)\n });\n if (data.label) {\n var keyShapeBBox = keyShape.getBBox();\n var labelStyle = ((_a = data.labelCfg) === null || _a === void 0 ? void 0 : _a.style) || {};\n var attrs_1 = __assign({\n textAlign: 'begin',\n fontSize: 12,\n textBaseline: 'middle',\n fill: '#000',\n opacity: 1,\n fontWeight: 'normal'\n }, labelStyle);\n subGroup.addShape('text', {\n attrs: __assign({\n x: keyShapeBBox.maxX + 4,\n y: 0,\n text: data.label\n }, attrs_1),\n className: 'legend-label',\n name: \"\".concat(data.type, \"-node-text\"),\n oriAttrs: attrs_1\n });\n }\n });\n });\n var padding = this.get('padding');\n var titleShape;\n var titleGroup = group.find(function (e) {\n return e.get('name') === 'title-container';\n });\n var titleGroupBBox = {\n height: 0,\n maxY: 0,\n width: 0\n };\n if (this.get('title')) {\n if (!titleGroup) {\n titleGroup = group.addGroup({\n name: 'title-container'\n });\n }\n var defaultTitleStyle = {\n fontSize: 20,\n fontFamily: 'Arial',\n fontWeight: 300,\n textBaseline: 'top',\n textAlign: 'center',\n fill: \"#000\",\n x: 0,\n y: padding[0]\n };\n var titleConfig = this.get('titleConfig') || {};\n var style = Object.assign(defaultTitleStyle, titleConfig.style || {});\n titleShape = titleGroup.addShape('text', {\n attrs: __assign({\n text: this.get('title')\n }, style)\n });\n titleGroupBBox = titleGroup.getCanvasBBox();\n titleGroup.setMatrix([1, 0, 0, 0, 1, 0, titleConfig.offsetX, titleConfig.offsetY, 1]);\n }\n this.layoutItems();\n var lcBBox = group.getCanvasBBox();\n var nodeGroupBBox = nodeGroup.getCanvasBBox();\n // 若有图形超过边界的情况,平移回来\n var nodeGroupBeginX = nodeGroupBBox.minX < 0 ? Math.abs(nodeGroupBBox.minX) + padding[3] : padding[3];\n var nodeGroupBeginY = titleGroupBBox.maxY < nodeGroupBBox.minY ? Math.abs(titleGroupBBox.maxY - nodeGroupBBox.minY) + padding[0] : titleGroupBBox.maxY + padding[0];\n var nodeGroupMatrix = [1, 0, 0, 0, 1, 0, nodeGroupBeginX, nodeGroupBeginY, 1];\n nodeGroup.setMatrix(nodeGroupMatrix);\n lcBBox = group.getCanvasBBox();\n var size = [lcBBox.minX + lcBBox.width + padding[1], lcBBox.minY + lcBBox.height + padding[2]];\n // 根据 size 和 titleConfig 调整 title 位置,再调整 nodeGroup 位置\n if (titleShape) {\n var titleConfig = __assign({\n position: 'center',\n offsetX: 0,\n offsetY: 0\n }, this.get('titleConfig'));\n titleGroupBBox = titleGroup.getCanvasBBox();\n var titleGroupMatrix = titleGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n if (titleConfig.position === 'center') {\n titleGroupMatrix[6] = size[0] / 2 + titleConfig.offsetX;\n } else if (titleConfig.position === 'right') {\n titleGroupMatrix[6] = size[0] - padding[3] + titleConfig.offsetX;\n titleShape.attr({\n textAlign: 'right'\n });\n } else {\n titleGroupMatrix[6] = padding[3] + titleConfig.offsetX;\n titleShape.attr({\n textAlign: 'left'\n });\n }\n titleGroup.setMatrix(titleGroupMatrix);\n titleGroupBBox = titleGroup.getCanvasBBox();\n // 若有图形超过边界的情况,平移回来\n nodeGroupBeginX = nodeGroupBBox.minX < 0 ? Math.abs(nodeGroupBBox.minX) + padding[3] : padding[3];\n nodeGroupBeginY = nodeGroupBBox.minY < titleGroupBBox.maxY ? Math.abs(titleGroupBBox.maxY - nodeGroupBBox.minY) + padding[0] : titleGroupBBox.maxY + padding[0];\n nodeGroupMatrix = [1, 0, 0, 0, 1, 0, nodeGroupBeginX, nodeGroupBeginY, 1];\n nodeGroup.setMatrix(nodeGroupMatrix);\n var edgeGroupMatrix_1 = [1, 0, 0, 0, 1, 0, nodeGroupBeginX, nodeGroupBeginY, 1];\n if (this.get('layout') === 'vertical') edgeGroupMatrix_1[6] += nodeGroupBBox.maxX + this.get('horiSep');else edgeGroupMatrix_1[7] += nodeGroupBBox.maxY + this.get('vertiSep');\n edgeGroup.setMatrix(edgeGroupMatrix_1);\n } else {\n // 没有 title,也需要平移 edgeGroup\n nodeGroupBBox = nodeGroup.getCanvasBBox();\n var edgeGroupMatrix_2 = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n if (this.get('layout') === 'vertical') edgeGroupMatrix_2[6] += nodeGroupMatrix[6] + nodeGroupBBox.maxX + this.get('horiSep');else edgeGroupMatrix_2[7] += nodeGroupMatrix[7] + nodeGroupBBox.maxY + this.get('vertiSep');\n edgeGroup.setMatrix(edgeGroupMatrix_2);\n }\n lcBBox = group.getCanvasBBox();\n nodeGroupBBox = nodeGroup.getCanvasBBox();\n nodeGroupMatrix = nodeGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var edgeGroupMatrix = edgeGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var edgeGroupBBox = edgeGroup.getCanvasBBox();\n size = [Math.max(nodeGroupBBox.width + nodeGroupMatrix[6], edgeGroupBBox.width + edgeGroupMatrix[6]) + padding[1], Math.max(nodeGroupBBox.height + nodeGroupMatrix[7], edgeGroupBBox.height + edgeGroupMatrix[7]) + padding[2]];\n lc.changeSize(size[0], size[1]);\n // 更新容器背景样式\n var containerStyle = this.get('containerStyle');\n var viewportMatrix = group.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var beginPos = Util.invertMatrix({\n x: 0,\n y: 0\n }, viewportMatrix);\n var backRect = group.addShape('rect', {\n attrs: __assign({\n x: beginPos.x + (containerStyle.lineWidth || 1),\n y: beginPos.y + (containerStyle.lineWidth || 1),\n width: size[0] - 2 * (containerStyle.lineWidth || 1),\n height: size[1] - 2 * (containerStyle.lineWidth || 1),\n fill: \"#f00\",\n stroke: '#000',\n lineWidth: 1,\n opacity: 0.5\n }, containerStyle),\n name: 'legend-back-rect',\n capture: false\n });\n backRect.toBack();\n return size;\n };\n Legend.prototype.layoutItems = function () {\n var lc = this.get('legendCanvas');\n var horiSep = this.get('horiSep');\n var vertiSep = this.get('vertiSep');\n var layout = this.get('layout');\n var align = this.get('align');\n var begin = [0, 0];\n var group = lc.find(function (e) {\n return e.get('name') === 'root';\n });\n var nodeGroup = group.find(function (e) {\n return e.get('name') === 'node-group';\n });\n var edgeGroup = group.find(function (e) {\n return e.get('name') === 'edge-group';\n });\n var nodeLegendSize = {\n min: 0,\n max: -Infinity\n };\n var rowMaxY = -Infinity;\n nodeGroup.get('children').forEach(function (cNodeGroup, i) {\n if (i === 0) nodeLegendSize.min = begin[0];\n var keyShape = cNodeGroup.get('children')[0];\n var bbox = cNodeGroup.getCanvasBBox();\n var _a = keyShape.getBBox(),\n keyShapeWidth = _a.width,\n keyShapeHeight = _a.height;\n var curHeight = 0,\n x = 0,\n y = 0;\n if (layout === 'vertical') {\n x = begin[1];\n y = begin[0] + keyShapeWidth / 2;\n begin[0] = y + bbox.height + vertiSep;\n curHeight = bbox.maxX + x + keyShapeWidth / 2;\n } else {\n x = begin[0] + keyShapeWidth / 2;\n y = begin[1];\n begin[0] = x + bbox.width + horiSep;\n curHeight = bbox.maxY + y + keyShapeHeight / 2;\n }\n if (begin[0] > nodeLegendSize.max) nodeLegendSize.max = begin[0];\n if (curHeight > rowMaxY) rowMaxY = curHeight;\n cNodeGroup.setMatrix([1, 0, 0, 0, 1, 0, x, y, 1]);\n });\n var nw = nodeLegendSize.max - nodeLegendSize.min;\n var edgeLegendSize = {\n min: 0,\n max: -Infinity\n };\n var nodeGroupBBox = nodeGroup.getCanvasBBox();\n begin[0] = 0;\n begin[1] = layout === 'vertical' ? nodeGroupBBox.maxX + horiSep : nodeGroupBBox.maxY + vertiSep;\n edgeGroup.get('children').forEach(function (subGroup, i) {\n if (i === 0) edgeLegendSize.min = begin[0];\n var keyShape = subGroup.get('children')[0];\n var bbox = subGroup.getCanvasBBox();\n var _a = keyShape.getBBox(),\n keyShapeWidth = _a.width,\n keyShapeHeight = _a.height;\n var x = 0,\n y = 0;\n if (layout === 'vertical') {\n x = begin[1];\n y = begin[0];\n begin[0] = y + bbox.height + vertiSep;\n subGroup.setMatrix([1, 0, 0, 0, 1, 0, 0, y + keyShapeHeight / 2, 1]);\n } else {\n x = begin[0];\n y = begin[1];\n begin[0] = x + bbox.width + horiSep;\n subGroup.setMatrix([1, 0, 0, 0, 1, 0, x + keyShapeWidth / 2, 0, 1]);\n }\n if (begin[0] > edgeLegendSize.max) edgeLegendSize.max = begin[0];\n });\n var ew = edgeLegendSize.max - edgeLegendSize.min;\n if (align && align !== '' && align !== 'left') {\n var widthDiff = nw - ew;\n var movement_1 = align === 'center' ? Math.abs(widthDiff) / 2 : Math.abs(widthDiff);\n var shouldAdjustGroup = widthDiff < 0 ? nodeGroup : edgeGroup;\n shouldAdjustGroup.get('children').forEach(function (subGroup) {\n var matrix = subGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n if (layout === 'vertical') matrix[7] += movement_1;else matrix[6] += movement_1;\n subGroup.setMatrix(matrix);\n });\n }\n };\n Legend.prototype.processData = function () {\n var data = this.get('data');\n var itemsData = {\n nodes: [],\n edges: []\n };\n if (data.nodes) {\n data.nodes.sort(function (a, b) {\n return a.order - b.order;\n });\n data.nodes.forEach(function (node) {\n var _a, _b, _c, _d, _e;\n var size = node.size || [((_a = node.style) === null || _a === void 0 ? void 0 : _a.width) || ((_b = node.style) === null || _b === void 0 ? void 0 : _b.r) || 8, ((_c = node.style) === null || _c === void 0 ? void 0 : _c.height) || ((_d = node.style) === null || _d === void 0 ? void 0 : _d.r) || 8];\n var labelStyle = ((_e = node.labelCfg) === null || _e === void 0 ? void 0 : _e.style) || {};\n itemsData.nodes.push({\n id: node.id || uniqueId(),\n type: node.type || 'circle',\n style: __assign({}, node.style),\n order: node.order,\n label: node.label,\n itemType: 'node',\n size: size,\n labelCfg: {\n position: 'right',\n style: __assign({\n fontFamily: \"Arial\"\n }, labelStyle)\n }\n });\n });\n }\n if (data.edges) {\n data.edges.sort(function (a, b) {\n return a.order - b.order;\n });\n data.edges.forEach(function (edge) {\n var _a, _b;\n var type = edge.type || 'line';\n if (edge.type === 'cubic-horizontal') type = 'cubic';\n var labelStyle = ((_a = edge.labelCfg) === null || _a === void 0 ? void 0 : _a.style) || {};\n var size = edge.size || [((_b = edge.style) === null || _b === void 0 ? void 0 : _b.width) || 8, 1];\n itemsData.edges.push({\n id: edge.id || uniqueId(),\n type: type,\n size: size,\n style: __assign({\n lineWidth: isArray(size) ? size[1] : 1\n }, edge.style),\n order: edge.order,\n label: edge.label,\n itemType: 'edge',\n labelCfg: {\n position: 'right',\n style: __assign({\n fontFamily: \"Arial\"\n }, labelStyle)\n }\n });\n });\n }\n this.set('itemsData', itemsData);\n };\n Legend.prototype.getContainer = function () {\n return this.get('container');\n };\n Legend.prototype.formatArray = function (key) {\n var value = this.get(key);\n if (isNumber(value)) this.set(key, [value, value, value, value]);else if (isArray(value)) {\n switch (value.length) {\n case 0:\n this.set(key, [0, 0, 0, 0]);\n break;\n case 1:\n this.set(key, [value[0], value[0], value[0], value[0]]);\n break;\n case 2:\n this.set(key, [value[0], value[1], value[0], value[1]]);\n break;\n case 3:\n this.set(key, [value[0], value[1], value[2], value[1]]);\n break;\n default:\n break;\n }\n }\n return this.get(key);\n };\n Legend.prototype.getShapeSize = function (data) {\n var width, height, r;\n if (data.size) {\n if (isArray(data.size)) {\n width = data.size[0];\n height = data.size[1] || data.size[0];\n r = data.size[0] / 2;\n } else if (isNumber(data.size)) {\n width = data.size;\n height = data.size;\n r = data.size / 2;\n }\n }\n if (data.style) {\n if (data.style.width) width = data.style.width;\n if (data.style.height) height = data.style.height;\n if (data.style.r) r = data.style.r;\n }\n if (!r) r = 5;\n if (!width) width = r;\n if (!height) height = r;\n return {\n width: width,\n height: height,\n r: r\n };\n };\n Legend.prototype.getStyle = function (type, data) {\n var defaultStyle = type === 'node' ? {\n fill: '#ccc',\n lineWidth: 0\n } : {\n stroke: '#000',\n lineWidth: 1\n };\n return __assign(__assign({}, defaultStyle), data.style || {});\n };\n Legend.prototype.destroy = function () {\n var lc = this.get('legendCanvas');\n lc === null || lc === void 0 ? void 0 : lc.destroy();\n var graph = this.get('graph');\n var graphContainer = graph.get('container');\n var container = this.get('container');\n graphContainer.removeChild(container);\n };\n return Legend;\n}(Base);\nexport default Legend;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { isNumber, debounce } from '@antv/util';\nimport { Util } from '@antv/g6-core';\nimport { modifyCSS, createDom } from '@antv/dom-util';\nimport insertCss from 'insert-css';\nimport { Canvas } from '@antv/g-canvas';\nimport Base from '../base';\ntypeof document !== 'undefined' && insertCss(\"\\n .g6-annotation-container {\\n background-color: rgba(255, 255, 255, 0.3);\\n padding: 8px;\\n }\\n .g6-annotation-wrapper {\\n background-color: #fff;\\n box-shadow: 0 0 8px rgba(0, 0, 0, 0.85);\\n }\\n .g6-annotation-header-wapper {\\n height: fit-content;\\n width: 100%;\\n background-color: #5B8FF9;\\n display: inline-flex;\\n cursor: move;\\n }\\n .g6-annotation-title {\\n margin: 4px 40px 4px 8px;\\n cursor: text;\\n min-width: 32px;\\n }\\n .g6-annotation-collapse {\\n margin: 4px;\\n cursor: pointer;\\n }\\n .g6-annotation-expand {\\n margin: 4px;\\n cursor: pointer;\\n }\\n .g6-annotation-close {\\n margin: 4px 8px 4px 0;\\n cursor: pointer;\\n }\\n .g6-annotation-content {\\n padding: 8px;\\n width: fit-content;\\n cursor: text;\\n word-break: break-all;\\n min-width: 32px;\\n }\\n .g6-annotation-title-input-wrapper {\\n margin: 4px 40px 4px 8px;\\n }\\n .g6-annotation-content-input {\\n height: 100%;\\n word-break: break-all;\\n }\\n .g6-annotation-content-input-wrapper {\\n margin: 8px;\\n height: 100%;\\n }\\n\");\nvar CANVAS_ANNOTATION_ID = 'canvas-annotation';\nvar Annotation = /** @class */function (_super) {\n __extends(Annotation, _super);\n function Annotation(config) {\n return _super.call(this, config) || this;\n }\n Annotation.prototype.getDefaultCfgs = function () {\n return {\n trigger: 'click',\n editable: true,\n itemHighlightState: 'highlight',\n linkHighlightStyle: {\n shadowColor: '#5B8FF9',\n shadowBlur: 10\n },\n cardCfg: {\n minHeight: 60,\n width: 'fit-content',\n height: 'fit-content',\n collapseType: 'minimize',\n closeType: 'hide',\n borderRadius: 5,\n maxTitleLength: 20\n }\n };\n };\n // class-methods-use-this\n Annotation.prototype.getEvents = function () {\n var events = {\n 'viewportchange': 'updateLinks',\n 'afterlayout': 'updateLinks',\n 'aftergraphrefreshposition': 'updateLinks',\n 'afterupdateitem': 'updateLink',\n 'afterchangedata': 'onGraphDataChange',\n 'afteritemvisibilitychange': 'onGraphItemVisibilityChange'\n };\n switch (this.get('trigger')) {\n case 'click':\n events = __assign(__assign({}, events), {\n 'node:click': 'showAnnotation',\n 'edge:click': 'showAnnotation'\n });\n }\n return events;\n };\n Annotation.prototype.getDOMContent = function (cfg) {\n if (this.destroyed) return;\n var collapsed = cfg.collapsed,\n maxWidth = cfg.maxWidth,\n _a = cfg.title,\n title = _a === void 0 ? '' : _a,\n _b = cfg.content,\n content = _b === void 0 ? '' : _b,\n _c = cfg.borderRadius,\n r = _c === void 0 ? 5 : _c;\n var collapseExpandDOM = collapsed ? \"

+

\" : \"

-

\";\n var contentDOM = collapsed ? '' : \"

\".concat(content, \"

\");\n var closeDOM = \"

x

\";\n var borderRadius = collapsed ? \"\".concat(r, \"px\") : \"\".concat(r, \"px \").concat(r, \"px 0 0\");\n return \"
\\n \\n

\").concat(title, \"

\\n \").concat(collapseExpandDOM, \"\\n \").concat(closeDOM, \"\\n
\\n \").concat(contentDOM, \"\\n
\");\n };\n Annotation.prototype.init = function () {\n var self = this;\n if (self.destroyed) return;\n var graph = self.get('graph');\n var graphCantainer = graph.getContainer();\n var container = self.get('container');\n var containerCfg = this.get('containerCfg');\n if (containerCfg) {\n container = this.createContainer();\n graphCantainer.appendChild(container);\n } else {\n container = graphCantainer;\n }\n this.set('container', container);\n // 绘制连接 annotation 和元素的连线的画布\n var graphContainerBBox = graphCantainer.getBoundingClientRect();\n var linkCanvas = new Canvas({\n container: graphCantainer,\n width: graphContainerBBox.right - graphContainerBBox.left,\n height: graphContainerBBox.bottom - graphContainerBBox.top\n });\n modifyCSS(linkCanvas.get('el'), {\n position: 'absolute',\n top: 0,\n left: 0,\n pointerEvents: 'none'\n });\n // 需要传入 self,无法 removeEventListener,只能在内部判断 self 被销毁则不继续\n window.addEventListener('resize', debounce(function () {\n return self.resizeCanvas(self);\n }, 100));\n var linkGroup = linkCanvas.addGroup({\n id: 'annotation-link-group'\n });\n self.set('linkGroup', linkGroup);\n self.set('canvas', linkCanvas);\n if (!self.get('getTitle')) {\n self.set('getTitle', function (item) {\n var _a;\n var _b = ((_a = item === null || item === void 0 ? void 0 : item.getModel) === null || _a === void 0 ? void 0 : _a.call(item)) || {},\n label = _b.label,\n id = _b.id;\n return label || id || '-';\n });\n }\n if (!self.get('getContent')) {\n self.set('getContent', function (item) {\n var _a, _b;\n if (!item) return '-';\n var _c = ((_a = item.getModel) === null || _a === void 0 ? void 0 : _a.call(item)) || {},\n label = _c.label,\n id = _c.id;\n var type = (_b = item.getType) === null || _b === void 0 ? void 0 : _b.call(item);\n var suffix = type ? \"\".concat(type, \": \") : '';\n return \"\".concat(suffix).concat(label || id || '');\n });\n }\n // init with defaultData\n var defaultData = self.get('defaultData');\n if (defaultData) this.readData(defaultData);\n };\n Annotation.prototype.createContainer = function () {\n var _this = this;\n if (this.destroyed) return;\n var containerCfg = this.get('containerCfg');\n var graph = this.get('graph');\n var graphContainer = graph.getContainer();\n var _a = graphContainer.getBoundingClientRect(),\n gLeft = _a.left,\n gRight = _a.right,\n gTop = _a.top,\n gBottom = _a.bottom;\n var graphContainerHeight = gBottom - gTop;\n var graphContainerWidth = gRight - gLeft;\n var _b = containerCfg.position,\n position = _b === void 0 ? 'top' : _b,\n _c = containerCfg.offsetX,\n offsetX = _c === void 0 ? 0 : _c,\n _d = containerCfg.offsetY,\n offsetY = _d === void 0 ? 0 : _d,\n otherStyle = __rest(containerCfg, [\"position\", \"offsetX\", \"offsetY\"]);\n var _e = containerCfg.height,\n height = _e === void 0 ? 'fit-content' : _e,\n _f = containerCfg.width,\n width = _f === void 0 ? graph.getWidth() : _f;\n if (height === '100%') height = graphContainerHeight;\n if (width === '100%') width = graphContainerWidth;\n var maxHeight = 'unset',\n maxWidth = 'unset';\n var containerPosition = {};\n switch (position) {\n case 'right':\n maxHeight = \"\".concat(graphContainerHeight, \"px\");\n containerPosition = {\n top: 0,\n right: 0\n };\n containerPosition.right += gLeft + offsetX;\n containerPosition.top += gTop + offsetY;\n break;\n case 'bottom':\n maxWidth = \"\".concat(graphContainerWidth, \"px\");\n containerPosition = {\n bottom: 0,\n left: 0\n };\n containerPosition.left += gLeft + offsetX;\n containerPosition.bottom += gTop + offsetY;\n break;\n case 'top':\n maxWidth = \"\".concat(graphContainerWidth, \"px\");\n case 'left':\n maxHeight = \"\".concat(graphContainerHeight, \"px\");\n default:\n containerPosition = {\n top: 0,\n left: 0\n };\n containerPosition.left += gLeft + offsetX;\n containerPosition.top += gTop + offsetY;\n break;\n }\n Object.keys(containerPosition).forEach(function (key) {\n containerPosition[key] = \"\".concat(containerPosition[key], \"px\");\n });\n var container = createDom(\"
\"));\n modifyCSS(container, __assign(__assign({\n position: 'absolute',\n display: position === 'top' || position === 'bottom' ? 'inline-flex' : 'unset',\n width: isNumber(width) ? \"\".concat(width, \"px\") : width,\n height: isNumber(height) ? \"\".concat(height, \"px\") : height,\n maxHeight: maxHeight,\n maxWidth: maxWidth,\n overflow: 'scroll'\n }, containerPosition), otherStyle));\n graphContainer.appendChild(container);\n container.addEventListener('scroll', function (e) {\n _this.updateLinks();\n });\n return container;\n };\n Annotation.prototype.resizeCanvas = function (self) {\n // 仅在 resize 完成后进行调整\n clearTimeout(self.resizeTimer);\n self.resizeTimer = setTimeout(function () {\n if (!self || self.destroyed) return;\n var cBBox = self.get('container').getBoundingClientRect();\n var newWidth = cBBox.right - cBBox.left;\n var newHeight = cBBox.bottom - cBBox.top;\n self.get('canvas').changeSize(newWidth, newHeight);\n self.updateOutsideCards(self);\n }, 250);\n };\n /**\n * 更新超出视口范围的卡片位置\n * @param selfObj 当前 annotation 插件对象。外部调用不需要传入该参数\n */\n Annotation.prototype.updateOutsideCards = function (selfObj) {\n var self = selfObj || this;\n var cardInfoMap = self.get('cardInfoMap') || {};\n var graph = self.get('graph');\n var graphLeftTopCanvas = graph.getPointByCanvas(0, 0);\n var graphRightBottomCanvas = graph.getPointByCanvas(graph.getWidth(), graph.getHeight());\n var _a = graph.getClientByPoint(graphLeftTopCanvas.x, graphLeftTopCanvas.y),\n graphLeft = _a.x,\n graphTop = _a.y;\n var _b = graph.getClientByPoint(graphRightBottomCanvas.x, graphRightBottomCanvas.y),\n graphRight = _b.x,\n graphBottom = _b.y;\n Object.values(cardInfoMap).forEach(function (cardInfo) {\n var card = cardInfo.card;\n if (!card) return;\n var style = card.style;\n var left = px2Num(style.left);\n var top = px2Num(style.top);\n var _a = card.getBoundingClientRect(),\n width = _a.width,\n height = _a.height;\n var newLeft = left;\n var newTop = top;\n if (left + width > graphRight - graphLeft) {\n newLeft = graphRight - graphLeft - width;\n }\n if (left < 0) {\n newLeft = 0;\n }\n if (top + height > graphBottom - graphTop) {\n newTop = graphBottom - graphTop - height;\n }\n if (top < 0) {\n newTop = 0;\n }\n modifyCSS(card, {\n left: \"\".concat(newLeft, \"px\"),\n top: \"\".concat(newTop, \"px\")\n });\n });\n self.updateLinks();\n };\n Annotation.prototype.showAnnotation = function (evt) {\n if (this.destroyed) return;\n var item = evt.item;\n this.toggleAnnotation(item);\n };\n Annotation.prototype.hideCards = function () {\n var self = this;\n if (self.destroyed) return;\n var cardInfoMap = self.get('cardInfoMap') || {};\n Object.keys(cardInfoMap).forEach(function (itemId) {\n self.hideCard(itemId);\n });\n };\n Annotation.prototype.toggleAnnotation = function (item, cfg) {\n var _a, _b;\n if (cfg === void 0) {\n cfg = {};\n }\n var self = this;\n if (self.destroyed) return;\n var cardInfoMap = self.get('cardInfoMap') || {};\n var graph = self.get('graph');\n var container = self.get('container');\n var containerCfg = self.get('containerCfg');\n var _c = Object.assign({}, self.get('cardCfg') || {}, cfg),\n minHeight = _c.minHeight,\n minWidth = _c.minWidth,\n width = _c.width,\n height = _c.height,\n _d = _c.collapsed,\n collapsed = _d === void 0 ? false : _d,\n propsX = _c.x,\n propsY = _c.y,\n propsTitle = _c.title,\n propsContent = _c.content,\n maxTitleLength = _c.maxTitleLength,\n defaultBegin = _c.defaultBegin,\n otherCardCfg = __rest(_c, [\"minHeight\", \"minWidth\", \"width\", \"height\", \"collapsed\", \"x\", \"y\", \"title\", \"content\", \"maxTitleLength\", \"defaultBegin\"]);\n var linkGroup = self.get('linkGroup');\n var rows = this.get('rows') || [[]];\n var isCanvas = (_a = item.isCanvas) === null || _a === void 0 ? void 0 : _a.call(item);\n var itemId = isCanvas ? CANVAS_ANNOTATION_ID : item.getID();\n var _e = cardInfoMap[itemId] || {},\n card = _e.card,\n link = _e.link,\n x = _e.x,\n y = _e.y,\n title = _e.title,\n content = _e.content;\n var getTitle = this.get('getTitle');\n var getContent = this.get('getContent');\n var getContentPlaceholder = this.get('getContentPlaceholder') || function () {\n return '';\n };\n var getTitlePlaceHolder = this.get('getTitlePlaceHolder') || function () {\n return '';\n };\n var contentPlaceholder = getContentPlaceholder(item);\n var titlePlaceholder = getTitlePlaceHolder(item);\n var newCard = createDom(this.getDOMContent(__assign({\n itemId: itemId,\n collapsed: collapsed,\n title: ((_b = title || propsTitle || (getTitle === null || getTitle === void 0 ? void 0 : getTitle(item))) === null || _b === void 0 ? void 0 : _b.substr(0, maxTitleLength)) || titlePlaceholder,\n content: content || propsContent || (getContent === null || getContent === void 0 ? void 0 : getContent(item)) || contentPlaceholder\n }, otherCardCfg)));\n var minHeightPx = isNumber(minHeight) ? \"\".concat(minHeight, \"px\") : minHeight;\n modifyCSS(newCard, {\n minHeight: collapsed ? 'unset' : minHeightPx,\n minWidth: isNumber(minWidth) ? \"\".concat(minWidth, \"px\") : minWidth,\n height: height,\n width: width\n });\n var exist = !!card;\n if (exist) {\n // 移除相应连线\n link === null || link === void 0 ? void 0 : link.remove(true);\n // 替换原来的卡片\n container.replaceChild(newCard, card);\n } else {\n container.appendChild(newCard);\n }\n var containerBBox;\n if (!containerCfg) {\n containerBBox = container.getBoundingClientRect() || {};\n if (propsX !== undefined && propsY !== undefined) {\n // 使用配置的位置\n x = propsX;\n y = propsY;\n } else if (!exist && !isCanvas) {\n // 第一次创建,且无 conatiner,初始化位置\n var containerTop = containerBBox.top;\n var _f = defaultBegin || {},\n beginLeft = _f.left,\n _g = _f.right,\n propsBeginRight = _g === void 0 ? 16 : _g,\n _h = _f.top,\n propsBeginTop = _h === void 0 ? 8 : _h,\n beginBottom = _f.bottom;\n var beginRight = propsBeginRight;\n var beginTop = propsBeginTop;\n if (!isNaN(beginLeft)) {\n beginRight = container.scrollWidth - beginLeft;\n }\n if (!isNaN(beginBottom)) {\n beginTop = container.scrollHeight - beginBottom;\n }\n var cardWidth = isNumber(minWidth) ? minWidth : 100;\n x = container.scrollWidth - newCard.scrollWidth - (rows.length - 1) * cardWidth - beginRight;\n var currentRow = rows[rows.length - 1];\n var lastCardBBox = (currentRow[currentRow.length - 1] || {}).bbox;\n y = (lastCardBBox === null || lastCardBBox === void 0 ? void 0 : lastCardBBox.bottom) - containerTop || beginTop;\n }\n modifyCSS(newCard, {\n position: 'absolute',\n left: \"\".concat(x, \"px\"),\n top: \"\".concat(y, \"px\"),\n cusor: containerCfg ? 'unset' : 'move'\n });\n }\n this.bindListener(newCard, itemId);\n var cardBBox = newCard.getBoundingClientRect();\n if (!isCanvas) {\n // 创建相关连线\n var path = getPathItem2Card(item, cardBBox, graph, this.get('canvas'));\n var linkStyle = this.get('linkStyle');\n link = linkGroup.addShape('path', {\n attrs: __assign({\n lineWidth: 1,\n lineDash: [5, 5],\n stroke: '#ccc',\n path: path\n }, linkStyle)\n });\n }\n cardInfoMap[itemId] = __assign(__assign({}, cardInfoMap[itemId] || {}), {\n id: itemId,\n collapsed: collapsed,\n card: newCard,\n link: link,\n x: x,\n y: y,\n cardBBox: cardBBox,\n content: content || propsContent,\n title: title || propsTitle,\n contentPlaceholder: contentPlaceholder,\n titlePlaceholder: titlePlaceholder,\n isCanvas: isCanvas\n });\n self.set('cardInfoMap', cardInfoMap);\n if (containerCfg) {\n this.updateCardPositionsInConatainer();\n this.updateLinks();\n } else {\n var hasPropsPosition = !isNaN(propsX) && !isNaN(propsY);\n if (!exist && !isCanvas && !hasPropsPosition) {\n // 没有 container、新增 card 时,记录当前列中最下方位置,方便换行\n var _j = containerBBox.bottom,\n containerBottom = _j === void 0 ? 0 : _j,\n containerTop = containerBBox.top;\n rows[rows.length - 1].push({\n id: itemId,\n bbox: cardBBox\n });\n if (cardBBox.top > containerBottom - containerTop - cardBBox.height - 16) rows.push([]);\n this.set('rows', rows);\n }\n }\n this.updateCardSize(itemId);\n var onAnnotationChange = this.get('onAnnotationChange');\n onAnnotationChange === null || onAnnotationChange === void 0 ? void 0 : onAnnotationChange(cardInfoMap[itemId], exist ? 'update' : 'create');\n };\n Annotation.prototype.updateCardPositionsInConatainer = function () {\n if (this.destroyed) return;\n var cardInfoMap = this.get('cardInfoMap');\n if (!cardInfoMap) return;\n var container = this.get('container');\n var position = this.get('containerCfg').position;\n var containerWidth = container.getBoundingClientRect().width;\n var computeStyle = getComputedStyle(container);\n var sidePadding = px2Num(computeStyle['paddingLeft']) + px2Num(computeStyle['paddingRight']);\n containerWidth -= sidePadding;\n Object.values(cardInfoMap).forEach(function (_a) {\n var card = _a.card;\n var cardWidth = card.getBoundingClientRect().width;\n switch (position) {\n case 'right':\n modifyCSS(card, {\n marginLeft: containerWidth ? \"\".concat(containerWidth - cardWidth, \"px\") : '0px'\n });\n break;\n case 'top':\n case 'bottom':\n modifyCSS(card, {\n marginLeft: '8px'\n });\n default:\n break;\n }\n });\n };\n Annotation.prototype.handleExpandCollapseCard = function (id) {\n if (this.destroyed) return;\n var graph = this.get('graph');\n var cardInfoMap = this.get('cardInfoMap');\n if (!cardInfoMap) return;\n var collapsed = cardInfoMap[id].collapsed;\n var item = graph.findById(id);\n if (!item) return;\n var collapseType = this.get('cardCfg').collapseType;\n if (collapseType === 'hide' && !collapsed) {\n // collapse 行为被配置为隐藏\n this.hideCard(id);\n } else {\n this.toggleAnnotation(item, {\n collapsed: !collapsed\n });\n }\n cardInfoMap[id] = __assign(__assign({}, cardInfoMap[id]), {\n collapsed: !collapsed\n });\n };\n /**\n * 隐藏标注卡片,下次打开还保留隐藏前的配置,包括文本内容、位置等\n * @param id 卡片 id,即元素(节点/边)的 id\n * @returns\n */\n Annotation.prototype.hideCard = function (id) {\n if (this.destroyed) return;\n var cardInfoMap = this.get('cardInfoMap');\n if (!cardInfoMap || !cardInfoMap[id]) return;\n var _a = cardInfoMap[id],\n card = _a.card,\n link = _a.link;\n modifyCSS(card, {\n display: 'none'\n });\n link === null || link === void 0 ? void 0 : link.hide();\n var onAnnotationChange = this.get('onAnnotationChange');\n onAnnotationChange(cardInfoMap[id], 'hide');\n };\n /**\n * 移除标注卡片,下一次生成时将被初始化\n * @param id 卡片 id,即元素(节点/边)的 id\n * @returns\n */\n Annotation.prototype.removeCard = function (id) {\n if (this.destroyed) return;\n var cardInfoMap = this.get('cardInfoMap');\n if (!cardInfoMap) return;\n var cardInfo = cardInfoMap[id];\n var card = cardInfo.card,\n link = cardInfo.link;\n var container = this.get('container');\n container.removeChild(card);\n link === null || link === void 0 ? void 0 : link.remove(true);\n delete cardInfoMap[id];\n var onAnnotationChange = this.get('onAnnotationChange');\n onAnnotationChange(cardInfo, 'remove');\n };\n Annotation.prototype.bindListener = function (card, itemId) {\n var _this = this;\n if (this.destroyed) return;\n card.addEventListener('mousemove', function (e) {\n // icon 的鼠标进入监听,方便外部加 tooltip\n var iconType;\n if (e.target.className === 'g6-annotation-collapse') {\n iconType = 'collapse';\n } else if (e.target.className === 'g6-annotation-expand') {\n iconType = 'expand';\n } else if (e.target.className === 'g6-annotation-close') {\n iconType = 'close';\n }\n if (iconType) {\n var _a = _this.get('cardCfg').onMouseEnterIcon,\n onMouseEnterIcon = _a === void 0 ? function () {} : _a;\n onMouseEnterIcon(e, itemId, iconType);\n }\n });\n card.addEventListener('mouseout', function (e) {\n // icon 的鼠标移出监听,方便外部加 tooltip\n var iconType;\n if (e.target.className === 'g6-annotation-collapse') {\n iconType = 'collapse';\n } else if (e.target.className === 'g6-annotation-expand') {\n iconType = 'expand';\n } else if (e.target.className === 'g6-annotation-close') {\n iconType = 'close';\n }\n if (iconType) {\n var _a = _this.get('cardCfg').onMouseLeaveIcon,\n onMouseLeaveIcon = _a === void 0 ? function () {} : _a;\n onMouseLeaveIcon(e, itemId, iconType);\n }\n });\n // mouseenter and mouseleave to highlight the corresponding items\n card.addEventListener('mouseenter', function (e) {\n var cardInfoMap = _this.get('cardInfoMap');\n if (!cardInfoMap) return;\n var graph = _this.get('graph');\n var item = graph.findById(itemId);\n if (item) {\n var itemHighlightState = _this.get('itemHighlightState');\n graph.setItemState(item, itemHighlightState, true);\n }\n var link = cardInfoMap[itemId].link;\n if (link) {\n var linkHighlightStyle = _this.get('linkHighlightStyle') || {};\n link.attr(linkHighlightStyle);\n }\n });\n card.addEventListener('mouseleave', function (e) {\n var cardInfoMap = _this.get('cardInfoMap');\n if (!cardInfoMap) return;\n var graph = _this.get('graph');\n var item = graph.findById(itemId);\n if (item) {\n var itemHighlightState = _this.get('itemHighlightState');\n graph.setItemState(item, itemHighlightState, false);\n }\n var link = cardInfoMap[itemId].link;\n if (link) {\n var linkHighlightStyle = _this.get('linkHighlightStyle') || {};\n Object.keys(linkHighlightStyle).forEach(function (key) {\n link.attr(key, undefined);\n link.attr(key, undefined);\n });\n var linkStyle = _this.get('linkStyle');\n link.attr(linkStyle);\n }\n });\n card.addEventListener('click', function (e) {\n var onClickIcon = (_this.get('cardCfg') || {}).onClickIcon;\n if (e.target.className === 'g6-annotation-collapse' || e.target.className === 'g6-annotation-expand') {\n // collapse & expand\n var collapseType = _this.get('cardCfg').collapseType;\n if (collapseType === 'hide') {\n _this.hideCard(itemId);\n } else {\n _this.handleExpandCollapseCard(itemId);\n }\n onClickIcon === null || onClickIcon === void 0 ? void 0 : onClickIcon(e, itemId, e.target.className === 'g6-annotation-collapse' ? 'collapse' : 'expand');\n } else if (e.target.className === 'g6-annotation-close') {\n // close\n var closeType = _this.get('cardCfg').closeType;\n if (closeType === 'remove') {\n _this.removeCard(itemId);\n } else {\n _this.hideCard(itemId);\n }\n onClickIcon === null || onClickIcon === void 0 ? void 0 : onClickIcon(e, itemId, 'close');\n }\n });\n // dblclick to edit the title and content text\n var editable = this.get('editable');\n if (editable) {\n card.addEventListener('dblclick', function (e) {\n var cardInfoMap = _this.get('cardInfoMap');\n var _a = (_this.get('cardCfg') || {}).maxTitleLength,\n maxTitleLength = _a === void 0 ? 20 : _a;\n if (!cardInfoMap) return;\n var target = e.target;\n var targetClass = target.className;\n if (targetClass !== 'g6-annotation-title' && targetClass !== 'g6-annotation-content') return;\n var _b = targetClass === 'g6-annotation-title' ? target.getBoundingClientRect() : target.parentNode.getBoundingClientRect(),\n width = _b.width,\n height = _b.height;\n var computeStyle = getComputedStyle(target);\n var inputTag = targetClass === 'g6-annotation-title' ? 'input' : 'textarea';\n var input = createDom(\"<\".concat(inputTag, \" class=\\\"\").concat(targetClass, \"-input\\\" type=\\\"textarea\\\" style=\\\"width:\").concat(width, \"px; height: \").concat(height, \"px; min-width: 16px;\\\"/>\"));\n var inputWrapper = createDom(\"
\"));\n inputWrapper.appendChild(input);\n target.parentNode.replaceChild(inputWrapper, target);\n var cardInfo = cardInfoMap[itemId];\n var contentPlaceholder = cardInfo.contentPlaceholder,\n titlePlaceholder = cardInfo.titlePlaceholder,\n content = cardInfo.content,\n title = cardInfo.title;\n var value = content;\n if (targetClass === 'g6-annotation-title') {\n input.name = 'title';\n input.maxLength = maxTitleLength;\n value = title;\n } else {\n input.name = 'content';\n }\n if (value) {\n input.innerHTML = target.innerHTML;\n input.value = target.innerHTML;\n } else {\n input.placeholder = targetClass === 'g6-annotation-title' ? titlePlaceholder : contentPlaceholder;\n }\n input.focus();\n input.addEventListener('blur', function (blurEvt) {\n if (input.value) {\n target.innerHTML = input.value;\n cardInfo[input.name || 'title'] = input.value;\n }\n inputWrapper.parentNode.replaceChild(target, inputWrapper);\n _this.updateCardSize(itemId);\n var onAnnotationChange = _this.get('onAnnotationChange');\n onAnnotationChange === null || onAnnotationChange === void 0 ? void 0 : onAnnotationChange(cardInfo, 'update');\n });\n });\n }\n var unmovableClasses = ['g6-annotation-title', 'g6-annotation-content', 'g6-annotation-title-input', 'g6-annotation-content-input'];\n card.draggable = true;\n card.addEventListener('dragstart', function (e) {\n var targetClass = e.target.className;\n if (unmovableClasses.includes(targetClass)) return;\n var style = card.style;\n _this.set('dragging', {\n card: card,\n x: e.clientX,\n y: e.clientY,\n left: px2Num(style.left),\n top: px2Num(style.top)\n });\n });\n card.addEventListener('drag', function (e) {\n e.preventDefault();\n var cardInfoMap = _this.get('cardInfoMap');\n if (!cardInfoMap) return;\n var clientX = e.clientX,\n clientY = e.clientY;\n var dragging = _this.get('dragging');\n if (isNaN(clientX) || isNaN(clientY) || !dragging) return;\n var x = dragging.x,\n y = dragging.y,\n left = dragging.left,\n top = dragging.top,\n draggingCard = dragging.card;\n var dx = clientX - x;\n var dy = clientY - y;\n left += dx;\n top += dy;\n var graph = _this.get('graph');\n var graphLeftTopCanvas = graph.getPointByCanvas(0, 0);\n var graphRightBottomCanvas = graph.getPointByCanvas(graph.getWidth(), graph.getHeight());\n var _a = graph.getClientByPoint(graphLeftTopCanvas.x, graphLeftTopCanvas.y),\n graphLeft = _a.x,\n graphTop = _a.y;\n var _b = graph.getClientByPoint(graphRightBottomCanvas.x, graphRightBottomCanvas.y),\n graphRight = _b.x,\n graphBottom = _b.y;\n var cardBBox = draggingCard.getBoundingClientRect();\n var cardWidth = cardBBox.right - cardBBox.left;\n var cardHeight = cardBBox.bottom - cardBBox.top;\n if (left > graphRight - graphLeft - cardWidth && dx > 0 || left < 0 && dx < 0) left -= dx;\n if (top > graphBottom - graphTop - cardHeight && dy > 0 || top < 0 && dy < 0) top -= dy;\n // 更新卡片位置\n modifyCSS(draggingCard, {\n left: \"\".concat(left, \"px\"),\n top: \"\".concat(top, \"px\"),\n visibility: 'hidden'\n });\n x = clientX;\n y = clientY;\n // 更新连线位置\n var link = (cardInfoMap[itemId] || {}).link;\n if (link) {\n var item = graph.findById(itemId);\n link.attr('path', getPathItem2Card(item, cardBBox, graph, _this.get('canvas')));\n }\n _this.set('dragging', {\n x: x,\n y: y,\n left: left,\n top: top,\n card: draggingCard\n });\n });\n var dragendListener = function dragendListener(e) {\n var cardInfoMap = _this.get('cardInfoMap');\n if (!cardInfoMap) return;\n var dragging = _this.get('dragging');\n if (dragging) {\n // = dragend\n var left = dragging.left,\n top_1 = dragging.top,\n draggingCard = dragging.card;\n cardInfoMap[itemId].x = left;\n cardInfoMap[itemId].y = top_1;\n modifyCSS(draggingCard, {\n visibility: 'visible'\n });\n _this.set('dragging', false);\n // 移动过的卡片从 rows 中移除,避免影响后续卡片出生位置\n var rows = _this.get(\"rows\");\n rows === null || rows === void 0 ? void 0 : rows.forEach(function (rowItems) {\n for (var i = rowItems.length - 1; i >= 0; i--) {\n if (rowItems[i].id === itemId) rowItems.splice(i, 1);\n }\n });\n var onAnnotationChange = _this.get('onAnnotationChange');\n onAnnotationChange === null || onAnnotationChange === void 0 ? void 0 : onAnnotationChange(cardInfoMap[itemId], 'update');\n }\n };\n card.addEventListener('dragend', dragendListener);\n };\n Annotation.prototype.updateCardSize = function (id) {\n var cardInfoMap = this.get('cardInfoMap');\n if (!cardInfoMap) return;\n var card = cardInfoMap[id].card;\n var width = card.getBoundingClientRect().width;\n var title = card.getElementsByClassName('g6-annotation-title')[0];\n if (title) {\n var computeStyle = getComputedStyle(title);\n var sideMargin = px2Num(computeStyle['marginLeft']);\n var titleWidth = title.getBoundingClientRect().width;\n modifyCSS(title, {\n marginRight: \"\".concat(width - sideMargin - 24 - 16 - titleWidth, \"px\")\n });\n }\n };\n Annotation.prototype.updateLink = function (_a) {\n var item = _a.item;\n if (!item) return;\n var cardInfoMap = this.get('cardInfoMap');\n if (!cardInfoMap) return;\n var canvas = this.get('canvas');\n var graph = this.get('graph');\n var id = item.getID();\n var _b = cardInfoMap[id] || {},\n link = _b.link,\n card = _b.card;\n if (link) {\n var path = getPathItem2Card(item, card.getBoundingClientRect(), graph, canvas);\n link.attr('path', path);\n }\n };\n Annotation.prototype.updateLinks = function () {\n var _this = this;\n if (this.destroyed) return;\n var cardInfoMap = this.get('cardInfoMap');\n if (!cardInfoMap) return;\n var graph = this.get('graph');\n Object.values(cardInfoMap).forEach(function (cardInfo) {\n var id = cardInfo.id;\n var item = graph.findById(id);\n _this.updateLink({\n item: item\n });\n });\n };\n Annotation.prototype.onGraphDataChange = function () {\n var _this = this;\n var cardInfoMap = this.get('cardInfoMap');\n if (!cardInfoMap) return;\n var graph = this.get('graph');\n Object.values(cardInfoMap).forEach(function (info) {\n var id = info.id,\n card = info.card,\n isCanvas = info.isCanvas;\n if (!card || isCanvas || card.style.display === 'none') return;\n var item = graph.findById(id);\n if (item && item.isVisible()) {\n _this.toggleAnnotation(item);\n } else {\n _this.hideCard(id);\n }\n });\n };\n Annotation.prototype.onGraphItemVisibilityChange = function (_a) {\n var item = _a.item,\n visible = _a.visible;\n if (!item || item.destroyed) return;\n var cardInfoMap = this.get('cardInfoMap');\n if (!cardInfoMap) return;\n var id = item.getID();\n if (!cardInfoMap[id]) return;\n if (!visible) this.hideCard(id);\n };\n Annotation.prototype.saveData = function (saveClosed) {\n if (saveClosed === void 0) {\n saveClosed = false;\n }\n var cardInfoMap = this.get('cardInfoMap');\n if (!cardInfoMap) return;\n var graph = this.get('graph');\n var getTitle = this.get('getTitle');\n var getContent = this.get('getContent');\n var data = [];\n Object.values(cardInfoMap).forEach(function (info) {\n var title = info.title,\n content = info.content,\n x = info.x,\n y = info.y,\n id = info.id,\n collapsed = info.collapsed,\n card = info.card;\n if (card && card.style.display === 'none' && !saveClosed) return;\n var item = graph.findById(id) || graph.get('canvas');\n data.push({\n id: id,\n x: x,\n y: y,\n collapsed: collapsed,\n title: title || (getTitle === null || getTitle === void 0 ? void 0 : getTitle(item)),\n content: content || (getContent === null || getContent === void 0 ? void 0 : getContent(item)),\n visible: card && card.style.display !== 'none'\n });\n });\n return data;\n };\n Annotation.prototype.readData = function (data) {\n var _this = this;\n var graph = this.get('graph');\n data.forEach(function (info) {\n var id = info.id,\n x = info.x,\n y = info.y,\n title = info.title,\n content = info.content,\n collapsed = info.collapsed,\n visible = info.visible;\n var item = graph.findById(id);\n if (!item && id === CANVAS_ANNOTATION_ID) {\n item = graph.get('canvas');\n }\n if (!item) {\n var cardInfoMap = _this.get('cardInfoMap') || {};\n cardInfoMap[id] = info;\n _this.set('cardInfoMap', cardInfoMap);\n return;\n }\n _this.toggleAnnotation(item, {\n x: x,\n y: y,\n title: title,\n content: content,\n collapsed: collapsed\n });\n if (!visible) _this.hideCard(id);\n });\n };\n /**\n * Clear the cards and links\n */\n Annotation.prototype.clear = function () {\n var cardInfoMap = this.get('cardInfoMap');\n if (!cardInfoMap) return;\n var container = this.get('container');\n Object.values(cardInfoMap).forEach(function (cardInfo) {\n var card = cardInfo.card,\n link = cardInfo.link;\n container.removeChild(card);\n link === null || link === void 0 ? void 0 : link.remove(true);\n });\n this.set('cardInfoMap', {});\n };\n /**\n * Destroy the component\n */\n Annotation.prototype.destroy = function () {\n var _a;\n this.clear();\n (_a = this.get('canvas')) === null || _a === void 0 ? void 0 : _a.destroy();\n var graph = this.get('graph');\n if (!graph || graph.destroyed) return;\n if (this.get('containerCfg')) {\n graph.getContainer().removeChild(this.get('container'));\n }\n this.destroyed = true;\n };\n return Annotation;\n}(Base);\nexport default Annotation;\nvar getPath = function getPath(startPoints, endPoints) {\n var startPoint,\n endPoint,\n posKeys,\n distance = Infinity;\n Object.keys(startPoints).forEach(function (skey) {\n var spos = startPoints[skey];\n Object.keys(endPoints).forEach(function (ekey) {\n var epos = endPoints[ekey];\n var xdist = spos.x - epos.x;\n var ydist = spos.y - epos.y;\n var dist = xdist * xdist + ydist * ydist;\n if (distance > dist) {\n distance = dist;\n startPoint = spos;\n endPoint = epos;\n posKeys = [skey, ekey];\n }\n });\n });\n var curveOffset = 20;\n var controlPoint = Util.getControlPoint(startPoint, endPoint, 0.5, curveOffset);\n return [['M', startPoint.x, startPoint.y], ['Q', controlPoint.x, controlPoint.y, endPoint.x, endPoint.y]];\n};\nvar getPathItem2Card = function getPathItem2Card(item, cardBBox, graph, annotationCanvas) {\n var _a;\n var itemLinkPoints;\n var itemType = item.getType();\n if (itemType === 'edge') {\n itemLinkPoints = [item.getKeyShape().getPoint(0.5)];\n } else {\n var _b = (_a = item.getKeyShape) === null || _a === void 0 ? void 0 : _a.call(item).getBBox(),\n minX = _b.minX,\n minY = _b.minY,\n maxX = _b.maxX,\n maxY = _b.maxY;\n var _c = item.getModel(),\n x = _c.x,\n y = _c.y;\n minX += x;\n minY += y;\n maxX += x;\n maxY += y;\n itemLinkPoints = {\n left: {\n x: minX,\n y: (minY + maxY) / 2\n },\n right: {\n x: maxX,\n y: (minY + maxY) / 2\n },\n top: {\n x: (minX + maxX) / 2,\n y: minY\n },\n bottom: {\n x: (minX + maxX) / 2,\n y: maxY\n }\n };\n }\n // 由 graph 所在 canvas 转换为 Client 坐标系,然后再由 annotation 所在 canvas 转换为绘制坐标系\n Object.keys(itemLinkPoints).forEach(function (key) {\n var _a = itemLinkPoints[key],\n x = _a.x,\n y = _a.y;\n var clientPos = graph.getClientByPoint(x, y);\n itemLinkPoints[key] = annotationCanvas.getPointByClient(clientPos.x, clientPos.y);\n });\n var _d = cardBBox.top,\n cardTop = _d === void 0 ? 0 : _d,\n _e = cardBBox.left,\n cardLeft = _e === void 0 ? 0 : _e,\n _f = cardBBox.right,\n cardRight = _f === void 0 ? 0 : _f,\n _g = cardBBox.bottom,\n cardBottom = _g === void 0 ? 0 : _g;\n var cardLinkPoints = {\n left: annotationCanvas.getPointByClient(cardLeft, (cardTop + cardBottom) / 2),\n right: annotationCanvas.getPointByClient(cardRight, (cardTop + cardBottom) / 2),\n top: annotationCanvas.getPointByClient((cardLeft + cardRight) / 2, cardTop),\n bottom: annotationCanvas.getPointByClient((cardLeft + cardRight) / 2, cardBottom)\n };\n return getPath(itemLinkPoints, cardLinkPoints);\n};\nvar px2Num = function px2Num(px) {\n return Number(px.replace(/\\s+|px/gi, \"\")) || 0;\n};","import Grid from './grid';\nimport Menu from './menu';\nimport Minimap from './minimap';\nimport Bundling from './bundling';\nimport Fisheye from './fisheye';\nimport ToolBar from './toolBar';\nimport Tooltip from './tooltip';\nimport TimeBar from './timeBar';\nimport ImageMinimap from './imageMinimap';\nimport EdgeFilterLens from './edgeFilterLens';\nimport SnapLine from './snapline';\nimport PluginBase from './base';\nimport Legend from './legend';\nimport Annotation from './annotation';\nexport { PluginBase, Menu, Grid, Minimap, Bundling, ToolBar, Tooltip, Fisheye, TimeBar, ImageMinimap, EdgeFilterLens, SnapLine, Legend, Annotation };\nvar Plugin = {\n PluginBase: PluginBase,\n Menu: Menu,\n Grid: Grid,\n Minimap: Minimap,\n Bundling: Bundling,\n ToolBar: ToolBar,\n Tooltip: Tooltip,\n Fisheye: Fisheye,\n TimeBar: TimeBar,\n ImageMinimap: ImageMinimap,\n EdgeFilterLens: EdgeFilterLens,\n SnapLine: SnapLine,\n Legend: Legend,\n Annotation: Annotation\n};\nexport default Plugin;","import Plugin from '@antv/g6-plugin';\nexport default Plugin;\n// export default {};","import { __assign, __rest } from \"tslib\";\nimport { registerNode, BaseGlobal as Global } from '@antv/g6-core';\nimport { deepMix } from '@antv/util';\n// 带有图标的圆,可用于拓扑图中\nregisterNode('circle', {\n // 自定义节点时的配置\n options: {\n size: Global.defaultNode.size,\n style: {\n x: 0,\n y: 0,\n stroke: Global.defaultNode.style.stroke,\n fill: Global.defaultNode.style.fill,\n lineWidth: Global.defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: Global.nodeLabel.style.fill,\n fontSize: Global.nodeLabel.style.fontSize,\n fontFamily: Global.windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: Global.defaultNode.linkPoints.size,\n lineWidth: Global.defaultNode.linkPoints.lineWidth,\n fill: Global.defaultNode.linkPoints.fill,\n stroke: Global.defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: __assign({}, Global.nodeStateStyles)\n },\n shapeType: 'circle',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n defaultIcon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var icon = deepMix({}, defaultIcon, cfg.icon);\n var name = \"\".concat(this.type, \"-keyShape\");\n var keyShape = group.addShape('circle', {\n attrs: style,\n className: name,\n name: name,\n draggable: true\n });\n group['shapeMap'][name] = keyShape;\n var width = icon.width,\n height = icon.height,\n show = icon.show,\n text = icon.text;\n if (show) {\n var iconName = \"\".concat(this.type, \"-icon\");\n if (text) {\n group['shapeMap'][iconName] = group.addShape('text', {\n attrs: __assign({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: iconName,\n name: iconName,\n draggable: true\n });\n } else {\n group['shapeMap'][iconName] = group.addShape('image', {\n attrs: __assign({\n x: -width / 2,\n y: -height / 2\n }, icon),\n className: iconName,\n name: iconName,\n draggable: true\n });\n }\n }\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var linkPoints = (this.mergeStyle || this.getOptions(cfg)).linkPoints;\n if (!linkPoints) return;\n var _a = linkPoints || {},\n top = _a.top,\n left = _a.left,\n right = _a.right,\n bottom = _a.bottom,\n markSize = _a.size,\n markR = _a.r,\n markStyle = __rest(_a, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n var size = this.getSize(cfg);\n var r = size[0] / 2;\n if (left) {\n // left circle\n var name_1 = 'link-point-left';\n group['shapeMap'][name_1] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: -r,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: name_1,\n name: name_1,\n isAnchorPoint: true\n });\n }\n if (right) {\n // right circle\n var name_2 = 'link-point-right';\n group['shapeMap'][name_2] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: r,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: name_2,\n name: name_2,\n isAnchorPoint: true\n });\n }\n if (top) {\n // top circle\n var name_3 = 'link-point-top';\n group['shapeMap'][name_3] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: 0,\n y: -r,\n r: markSize / 2 || markR || 5\n }),\n className: name_3,\n name: name_3,\n isAnchorPoint: true\n });\n }\n if (bottom) {\n // bottom circle\n var name_4 = 'link-point-bottom';\n group['shapeMap'][name_4] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: 0,\n y: r,\n r: markSize / 2 || markR || 5\n }),\n className: name_4,\n name: name_4,\n isAnchorPoint: true\n });\n }\n },\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n };\n // 如果设置了color,则覆盖默认的stroke属性\n var style = deepMix({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var r = size[0] / 2;\n var styles = __assign({\n x: 0,\n y: 0,\n r: r\n }, style);\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer();\n var size = this.getSize(cfg);\n var style = __assign({}, cfg.style);\n if (cfg.style.stroke === undefined && cfg.color) {\n style.stroke = cfg.color;\n }\n if (cfg.style.r === undefined && !isNaN(size[0])) {\n style.r = size[0] / 2;\n }\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');","import { __assign, __rest } from \"tslib\";\nimport { mix } from '@antv/util';\nimport { registerNode, BaseGlobal as Global } from '@antv/g6-core';\nregisterNode('rect', {\n // 自定义节点时的配置\n options: {\n size: [100, 30],\n style: {\n radius: 0,\n stroke: Global.defaultNode.style.stroke,\n fill: Global.defaultNode.style.fill,\n lineWidth: Global.defaultNode.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: Global.nodeLabel.style.fill,\n fontSize: Global.nodeLabel.style.fontSize,\n fontFamily: Global.windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: Global.defaultNode.linkPoints.size,\n lineWidth: Global.defaultNode.linkPoints.lineWidth,\n fill: Global.defaultNode.linkPoints.fill,\n stroke: Global.defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n // 连接点,默认为左右\n // anchorPoints: [{ x: 0, y: 0.5 }, { x: 1, y: 0.5 }]\n anchorPoints: [[0, 0.5], [1, 0.5]],\n stateStyles: __assign({}, Global.nodeStateStyles)\n },\n shapeType: 'rect',\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('rect', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n group['shapeMap'][\"\".concat(this.type, \"-keyShape\")] = keyShape;\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = __rest(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n if (left) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: -width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n if (right) {\n // right circle\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n if (top) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: 0,\n y: -height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n if (bottom) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: 0,\n y: height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n },\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n };\n // 如果设置了color,则覆盖默认的stroke属性\n var style = mix({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var width = style.width || size[0];\n var height = style.height || size[1];\n var styles = __assign({\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height\n }, style);\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer();\n // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n var defaultStyle = this.getOptions({}).style;\n var size = this.getSize(cfg);\n var keyShape = item.get('keyShape');\n if (!cfg.size) {\n size[0] = keyShape.attr('width') || defaultStyle.width;\n size[1] = keyShape.attr('height') || defaultStyle.height;\n }\n // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n var strokeStyle = {\n stroke: cfg.color,\n x: -size[0] / 2,\n y: -size[1] / 2,\n width: size[0],\n height: size[1]\n };\n // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n var style = mix({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = mix(style, cfg.style);\n this.updateShape(cfg, item, style, false, updateType);\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');","import { __assign, __rest } from \"tslib\";\nimport { registerNode, BaseGlobal as Global } from '@antv/g6-core';\nimport { mix } from '@antv/util';\n/**\n * 基本的椭圆,可以添加文本,默认文本居中\n */\nregisterNode('ellipse', {\n // 自定义节点时的配置\n options: {\n size: [80, 40],\n style: {\n x: 0,\n y: 0,\n stroke: Global.defaultNode.style.stroke,\n fill: Global.defaultNode.style.fill,\n lineWidth: Global.defaultNode.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: Global.nodeLabel.style.fill,\n fontSize: Global.nodeLabel.style.fontSize,\n fontFamily: Global.windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: Global.defaultNode.linkPoints.size,\n lineWidth: Global.defaultNode.linkPoints.lineWidth,\n fill: Global.defaultNode.linkPoints.fill,\n stroke: Global.defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: __assign({}, Global.nodeStateStyles)\n },\n shapeType: 'ellipse',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n icon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('ellipse', {\n attrs: style,\n className: 'ellipse-keyShape',\n name: 'ellipse-keyShape',\n draggable: true\n });\n group['shapeMap']['ellipse-keyShape'] = keyShape;\n var width = icon.width,\n height = icon.height,\n show = icon.show,\n text = icon.text;\n if (show) {\n if (text) {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('text', {\n attrs: __assign({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n } else {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('image', {\n attrs: __assign({\n x: -width / 2,\n y: -height / 2\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n }\n }\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = __rest(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n var size = this.getSize(cfg);\n var rx = size[0] / 2;\n var ry = size[1] / 2;\n if (left) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: -rx,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n if (right) {\n // right circle\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: rx,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n if (top) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: 0,\n y: -ry,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n if (bottom) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: 0,\n y: ry,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n },\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n };\n // 如果设置了color,则覆盖默认的stroke属性\n var style = mix({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var rx = size[0] / 2;\n var ry = size[1] / 2;\n var styles = __assign({\n x: 0,\n y: 0,\n rx: rx,\n ry: ry\n }, style);\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer();\n // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n var defaultStyle = this.getOptions({}).style;\n var size = this.getSize(cfg);\n var strokeStyle = {\n stroke: cfg.color,\n rx: size[0] / 2,\n ry: size[1] / 2\n };\n // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n var keyShape = item.get('keyShape');\n var style = mix({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = mix(style, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');","import { __assign, __rest } from \"tslib\";\nimport { registerNode, BaseGlobal as Global } from '@antv/g6-core';\nimport { mix } from '@antv/util';\n// 菱形shape\nregisterNode('diamond', {\n // 自定义节点时的配置\n options: {\n size: [80, 80],\n style: {\n stroke: Global.defaultNode.style.stroke,\n fill: Global.defaultNode.style.fill,\n lineWidth: Global.defaultNode.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: Global.nodeLabel.style.fill,\n fontSize: Global.nodeLabel.style.fontSize,\n fontFamily: Global.windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: Global.defaultNode.linkPoints.size,\n lineWidth: Global.defaultNode.linkPoints.lineWidth,\n fill: Global.defaultNode.linkPoints.fill,\n stroke: Global.defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: __assign({}, Global.nodeStateStyles)\n },\n shapeType: 'diamond',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n icon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('path', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n group['shapeMap'][\"\".concat(this.type, \"-keyShape\")] = keyShape;\n var w = icon.width,\n h = icon.height,\n show = icon.show,\n text = icon.text;\n if (show) {\n if (text) {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('text', {\n attrs: __assign({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n } else {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('image', {\n attrs: __assign({\n x: -w / 2,\n y: -h / 2\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n }\n }\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = __rest(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n if (left) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: -width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n if (right) {\n // right circle\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n if (top) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: 0,\n y: -height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n if (bottom) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: 0,\n y: height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n },\n getPath: function getPath(cfg) {\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n var path = [['M', 0, -height / 2], ['L', width / 2, 0], ['L', 0, height / 2], ['L', -width / 2, 0], ['Z'] // 封闭\n ];\n\n return path;\n },\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n };\n // 如果设置了color,则覆盖默认的stroke属性\n var style = mix({}, defaultStyle, strokeStyle);\n var path = this.getPath(cfg);\n var styles = __assign({\n path: path\n }, style);\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer();\n // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n var defaultStyle = this.getOptions({}).style;\n var path = this.getPath(cfg);\n // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n var strokeStyle = {\n stroke: cfg.color,\n path: path\n };\n // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n var keyShape = item.get('keyShape');\n var style = mix({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = mix(style, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');","import { __assign, __rest } from \"tslib\";\nimport { registerNode, BaseGlobal as Global } from '@antv/g6-core';\nimport { mix } from '@antv/util';\n// 三角形\nregisterNode('triangle', {\n // 自定义节点时的配置\n options: {\n size: 40,\n direction: 'up',\n style: {\n stroke: Global.defaultNode.style.stroke,\n fill: Global.defaultNode.style.fill,\n lineWidth: Global.defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: Global.nodeLabel.style.fill,\n fontSize: Global.nodeLabel.style.fontSize\n },\n offset: 15\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: Global.defaultNode.linkPoints.size,\n lineWidth: Global.defaultNode.linkPoints.lineWidth,\n fill: Global.defaultNode.linkPoints.fill,\n stroke: Global.defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20,\n offset: 6\n },\n stateStyles: __assign({}, Global.nodeStateStyles)\n },\n shapeType: 'triangle',\n // 文本位置\n labelPosition: 'bottom',\n drawShape: function drawShape(cfg, group) {\n var _a = this.mergeStyle || this.getOptions(cfg),\n _b = _a.icon,\n icon = _b === void 0 ? {} : _b,\n defaultDirection = _a.direction;\n var style = this.getShapeStyle(cfg);\n var direction = cfg.direction || defaultDirection;\n var keyShape = group.addShape('path', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n group['shapeMap'][\"\".concat(this.type, \"-keyShape\")] = keyShape;\n var w = icon.width,\n h = icon.height,\n show = icon.show,\n offset = icon.offset,\n text = icon.text;\n if (show) {\n if (text) {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('text', {\n attrs: __assign({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n } else {\n var iconW = -w / 2;\n var iconH = -h / 2;\n if (direction === 'up' || direction === 'down') {\n iconH += offset;\n }\n if (direction === 'left' || direction === 'right') {\n iconW += offset;\n }\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('image', {\n attrs: __assign({\n x: iconW,\n y: iconH\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n }\n }\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = this.mergeStyle || this.getOptions(cfg),\n _b = _a.linkPoints,\n linkPoints = _b === void 0 ? {} : _b,\n defaultDirection = _a.direction;\n var direction = cfg.direction || defaultDirection;\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = __rest(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n var size = this.getSize(cfg);\n var len = size[0];\n if (left) {\n // up down left right 四个方向的坐标均不相同\n var leftPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n if (direction === 'up') {\n leftPos = [-r, diffY];\n } else if (direction === 'down') {\n leftPos = [-r, -diffY];\n } else if (direction === 'left') {\n leftPos = [-r, r - diffY];\n }\n if (leftPos) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: leftPos[0],\n y: leftPos[1],\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left'\n });\n }\n }\n if (right) {\n // right circle\n // up down left right 四个方向的坐标均不相同\n var rightPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n if (direction === 'up') {\n rightPos = [r, diffY];\n } else if (direction === 'down') {\n rightPos = [r, -diffY];\n } else if (direction === 'right') {\n rightPos = [r, r - diffY];\n }\n if (rightPos) {\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: rightPos[0],\n y: rightPos[1],\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right'\n });\n }\n }\n if (top) {\n // up down left right 四个方向的坐标均不相同\n var topPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n if (direction === 'up') {\n topPos = [r - diffY, -diffY];\n } else if (direction === 'left') {\n topPos = [r, -diffY];\n } else if (direction === 'right') {\n topPos = [-r, -diffY];\n }\n if (topPos) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: topPos[0],\n y: topPos[1],\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top'\n });\n }\n }\n if (bottom) {\n // up down left right 四个方向的坐标均不相同\n var bottomPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n if (direction === 'down') {\n bottomPos = [-r + diffY, diffY];\n } else if (direction === 'left') {\n bottomPos = [r, diffY];\n } else if (direction === 'right') {\n bottomPos = [-r, diffY];\n }\n if (bottomPos) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: bottomPos[0],\n y: bottomPos[1],\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom'\n });\n }\n }\n },\n getPath: function getPath(cfg) {\n var defaultDirection = (this.mergeStyle || this.getOptions(cfg)).direction;\n var direction = cfg.direction || defaultDirection;\n var size = this.getSize(cfg);\n var len = size[0];\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n var path = [['M', -r, diffY], ['L', 0, -diffY], ['L', r, diffY], ['Z'] // 封闭\n ];\n\n if (direction === 'down') {\n path = [['M', -r, -diffY], ['L', r, -diffY], ['L', 0, diffY], ['Z'] // 封闭\n ];\n } else if (direction === 'left') {\n path = [['M', -r, r - diffY], ['L', r, -r], ['L', r, r], ['Z'] // 封闭\n ];\n } else if (direction === 'right') {\n path = [['M', r, r - diffY], ['L', -r, r], ['L', -r, -r], ['Z'] // 封闭\n ];\n }\n\n return path;\n },\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n };\n // 如果设置了color,则覆盖默认的stroke属性\n var style = mix({}, defaultStyle, strokeStyle);\n var path = this.getPath(cfg);\n var styles = __assign({\n path: path\n }, style);\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer();\n // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n var defaultStyle = this.getOptions({}).style;\n var path = this.getPath(cfg);\n // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n var strokeStyle = {\n stroke: cfg.color,\n path: path\n };\n // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n var keyShape = item.get('keyShape');\n var style = mix({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = mix(style, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n },\n /**\n * 更新linkPoints\n * @param {Object} cfg 节点数据配置项\n * @param {Group} group Item所在的group\n */\n updateLinkPoints: function updateLinkPoints(cfg, group) {\n var _a = this.getOptions({}),\n defaultLinkPoints = _a.linkPoints,\n defaultDirection = _a.direction;\n var direction = cfg.direction || defaultDirection;\n var markLeft = group['shapeMap']['link-point-left'] || group.find(function (element) {\n return element.get('className') === 'link-point-left';\n });\n var markRight = group['shapeMap']['link-point-right'] || group.find(function (element) {\n return element.get('className') === 'link-point-right';\n });\n var markTop = group['shapeMap']['link-point-top'] || group.find(function (element) {\n return element.get('className') === 'link-point-top';\n });\n var markBottom = group['shapeMap']['link-point-bottom'] || group.find(function (element) {\n return element.get('className') === 'link-point-bottom';\n });\n var currentLinkPoints = defaultLinkPoints;\n var existLinkPoint = markLeft || markRight || markTop || markBottom;\n if (existLinkPoint) {\n currentLinkPoints = existLinkPoint.attr();\n }\n var linkPoints = mix({}, currentLinkPoints, cfg.linkPoints);\n var markFill = linkPoints.fill,\n markStroke = linkPoints.stroke,\n borderWidth = linkPoints.lineWidth;\n var markSize = linkPoints.size / 2;\n if (!markSize) markSize = linkPoints.r;\n var _b = cfg.linkPoints ? cfg.linkPoints : {\n left: undefined,\n right: undefined,\n top: undefined,\n bottom: undefined\n },\n left = _b.left,\n right = _b.right,\n top = _b.top,\n bottom = _b.bottom;\n var size = this.getSize(cfg);\n var len = size[0];\n var styles = {\n r: markSize,\n fill: markFill,\n stroke: markStroke,\n lineWidth: borderWidth\n };\n var leftPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n if (direction === 'up') {\n leftPos = [-r, diffY];\n } else if (direction === 'down') {\n leftPos = [-r, -diffY];\n } else if (direction === 'left') {\n leftPos = [-r, r - diffY];\n }\n if (leftPos) {\n if (markLeft) {\n if (!left && left !== undefined) {\n markLeft.remove();\n delete group['shapeMap']['link-point-left'];\n } else {\n markLeft.attr(__assign(__assign({}, styles), {\n x: leftPos[0],\n y: leftPos[1]\n }));\n }\n } else if (left) {\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: __assign(__assign({}, styles), {\n x: leftPos[0],\n y: leftPos[1]\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n }\n var rightPos = null;\n if (direction === 'up') {\n rightPos = [r, diffY];\n } else if (direction === 'down') {\n rightPos = [r, -diffY];\n } else if (direction === 'right') {\n rightPos = [r, r - diffY];\n }\n if (rightPos) {\n if (markRight) {\n if (!right && right !== undefined) {\n markRight.remove();\n delete group['shapeMap']['link-point-right'];\n } else {\n markRight.attr(__assign(__assign({}, styles), {\n x: rightPos[0],\n y: rightPos[1]\n }));\n }\n } else if (right) {\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: __assign(__assign({}, styles), {\n x: rightPos[0],\n y: rightPos[1]\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n }\n var topPos = null;\n if (direction === 'up') {\n topPos = [r - diffY, -diffY];\n } else if (direction === 'left') {\n topPos = [r, -diffY];\n } else if (direction === 'right') {\n topPos = [-r, -diffY];\n }\n if (topPos) {\n if (markTop) {\n if (!top && top !== undefined) {\n markTop.remove();\n delete group['shapeMap']['link-point-top'];\n } else {\n // top circle\n markTop.attr(__assign(__assign({}, styles), {\n x: topPos[0],\n y: topPos[1]\n }));\n }\n } else if (top) {\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: __assign(__assign({}, styles), {\n x: topPos[0],\n y: topPos[1]\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n }\n var bottomPos = null;\n if (direction === 'down') {\n bottomPos = [-r + diffY, diffY];\n } else if (direction === 'left') {\n bottomPos = [r, diffY];\n } else if (direction === 'right') {\n bottomPos = [-r, diffY];\n }\n if (bottomPos) {\n if (markBottom) {\n if (!bottom && bottom !== undefined) {\n markBottom.remove();\n delete group['shapeMap']['link-point-bottom'];\n } else {\n markBottom.attr(__assign(__assign({}, styles), {\n x: bottomPos[0],\n y: bottomPos[1]\n }));\n }\n } else if (bottom) {\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: __assign(__assign({}, styles), {\n x: bottomPos[0],\n y: bottomPos[1]\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n }\n }\n}, 'single-node');","import { __assign, __rest } from \"tslib\";\nimport { mix, isString, deepMix } from '@antv/util';\nimport { registerNode, BaseGlobal as Global } from '@antv/g6-core';\nregisterNode('modelRect', {\n // 自定义节点时的配置\n options: {\n size: [185, 70],\n style: {\n radius: 5,\n stroke: '#69c0ff',\n fill: '#ffffff',\n lineWidth: Global.defaultNode.style.lineWidth,\n fillOpacity: 1\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: '#595959',\n fontSize: 14,\n fontFamily: Global.windowFontFamily\n },\n offset: 30 // 距离左侧的 offset,没有设置 y 轴上移动的配置\n },\n\n descriptionCfg: {\n style: {\n fontSize: 12,\n fill: '#bfbfbf',\n fontFamily: Global.windowFontFamily\n },\n paddingTop: 0\n },\n preRect: {\n show: true,\n width: 4,\n fill: '#40a9ff',\n radius: 2\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: 10,\n lineWidth: 1,\n fill: '#72CC4A',\n stroke: '#72CC4A'\n },\n // 节点中icon配置\n logoIcon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: true,\n x: 0,\n y: 0,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/basement_prod/4f81893c-1806-4de4-aff3-9a6b266bc8a2.svg',\n width: 16,\n height: 16,\n // 用于调整图标的左右位置\n offset: 0\n },\n // 节点中表示状态的icon配置\n stateIcon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: true,\n x: 0,\n y: 0,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/basement_prod/300a2523-67e0-4cbf-9d4a-67c077b40395.svg',\n width: 16,\n height: 16,\n // 用于调整图标的左右位置\n offset: -5\n },\n // 连接点,默认为左右\n // anchorPoints: [{ x: 0, y: 0.5 }, { x: 1, y: 0.5 }]\n anchorPoints: [[0, 0.5], [1, 0.5]]\n },\n shapeType: 'modelRect',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).preRect,\n preRect = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n var keyShape = group.addShape('rect', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n group['shapeMap'][\"\".concat(this.type, \"-keyShape\")] = keyShape;\n var preRectShow = preRect.show,\n preRectStyle = __rest(preRect, [\"show\"]);\n if (preRectShow) {\n group['shapeMap']['pre-rect'] = group.addShape('rect', {\n attrs: __assign({\n x: -width / 2,\n y: -height / 2,\n height: height\n }, preRectStyle),\n className: 'pre-rect',\n name: 'pre-rect',\n draggable: true\n });\n }\n this.drawLogoIcon(cfg, group);\n this.drawStateIcon(cfg, group);\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n /**\n * 绘制模型矩形左边的logo图标\n * @param {Object} cfg 数据配置项\n * @param {Group} group Group实例\n */\n drawLogoIcon: function drawLogoIcon(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).logoIcon,\n logoIcon = _a === void 0 ? {} : _a;\n var size = this.getSize(cfg);\n var width = size[0];\n if (logoIcon.show) {\n var w = logoIcon.width,\n h = logoIcon.height,\n x = logoIcon.x,\n y = logoIcon.y,\n offset = logoIcon.offset,\n text = logoIcon.text,\n logoIconStyle = __rest(logoIcon, [\"width\", \"height\", \"x\", \"y\", \"offset\", \"text\"]);\n if (text) {\n group['shapeMap']['rect-logo-icon'] = group.addShape('text', {\n attrs: __assign({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, logoIconStyle),\n className: 'rect-logo-icon',\n name: 'rect-logo-icon',\n draggable: true\n });\n } else {\n group['shapeMap']['rect-logo-icon'] = group.addShape('image', {\n attrs: __assign(__assign({}, logoIconStyle), {\n x: x || -width / 2 + w + offset,\n y: y || -h / 2,\n width: w,\n height: h\n }),\n className: 'rect-logo-icon',\n name: 'rect-logo-icon',\n draggable: true\n });\n }\n }\n },\n /**\n * 绘制模型矩形右边的状态图标\n * @param {Object} cfg 数据配置项\n * @param {Group} group Group实例\n */\n drawStateIcon: function drawStateIcon(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).stateIcon,\n stateIcon = _a === void 0 ? {} : _a;\n var size = this.getSize(cfg);\n var width = size[0];\n if (stateIcon.show) {\n var w = stateIcon.width,\n h = stateIcon.height,\n x = stateIcon.x,\n y = stateIcon.y,\n offset = stateIcon.offset,\n text = stateIcon.text,\n iconStyle = __rest(stateIcon, [\"width\", \"height\", \"x\", \"y\", \"offset\", \"text\"]);\n if (text) {\n group['shapeMap']['rect-state-icon'] = group.addShape('text', {\n attrs: __assign({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, iconStyle),\n className: 'rect-state-icon',\n name: 'rect-state-icon',\n draggable: true\n });\n } else {\n group['shapeMap']['rect-state-icon'] = group.addShape('image', {\n attrs: __assign(__assign({}, iconStyle), {\n x: x || width / 2 - w + offset,\n y: y || -h / 2,\n width: w,\n height: h\n }),\n className: 'rect-state-icon',\n name: 'rect-state-icon',\n draggable: true\n });\n }\n }\n },\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = __rest(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n if (left) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: -width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n if (right) {\n // right circle\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n if (top) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: 0,\n y: -height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n if (bottom) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: 0,\n y: height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n },\n drawLabel: function drawLabel(cfg, group) {\n var _a = this.getOptions(cfg),\n _b = _a.labelCfg,\n labelCfg = _b === void 0 ? {} : _b,\n _c = _a.logoIcon,\n logoIcon = _c === void 0 ? {} : _c,\n _d = _a.descriptionCfg,\n descriptionCfg = _d === void 0 ? {} : _d;\n var size = this.getSize(cfg);\n var width = size[0];\n var label = null;\n var show = logoIcon.show,\n w = logoIcon.width;\n var offsetX = -width / 2 + labelCfg.offset;\n if (show) {\n offsetX = -width / 2 + w + labelCfg.offset;\n }\n var fontStyle = labelCfg.style;\n var descriptionStyle = descriptionCfg.style,\n descriptionPaddingTop = descriptionCfg.paddingTop;\n if (isString(cfg.description)) {\n label = group.addShape('text', {\n attrs: __assign(__assign({}, fontStyle), {\n x: offsetX,\n y: -5,\n text: cfg.label\n }),\n className: 'text-shape',\n name: 'text-shape',\n draggable: true,\n labelRelated: true\n });\n group['shapeMap']['text-shape'] = label;\n group['shapeMap']['rect-description'] = group.addShape('text', {\n attrs: __assign(__assign({}, descriptionStyle), {\n x: offsetX,\n y: 17 + (descriptionPaddingTop || 0),\n text: cfg.description\n }),\n className: 'rect-description',\n name: 'rect-description',\n draggable: true,\n labelRelated: true\n });\n } else {\n label = group.addShape('text', {\n attrs: __assign(__assign({}, fontStyle), {\n x: offsetX,\n y: 7,\n text: cfg.label\n }),\n className: 'text-shape',\n name: 'text-shape',\n draggable: true,\n labelRelated: true\n });\n group['shapeMap']['text-shape'] = label;\n }\n return label;\n },\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n };\n // 如果设置了color,则覆盖默认的stroke属性\n var style = mix({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var width = style.width || size[0];\n var height = style.height || size[1];\n var styles = __assign({\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height\n }, style);\n return styles;\n },\n update: function update(cfg, item) {\n var _a = this.mergeStyle || this.getOptions(cfg),\n _b = _a.style,\n style = _b === void 0 ? {} : _b,\n _c = _a.labelCfg,\n labelCfg = _c === void 0 ? {} : _c,\n _d = _a.descriptionCfg,\n descriptionCfg = _d === void 0 ? {} : _d;\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n var keyShape = item.get('keyShape');\n keyShape.attr(__assign(__assign({}, style), {\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height\n }));\n var group = item.getContainer();\n var logoIconShape = group['shapeMap']['rect-logo-icon'] || group.find(function (element) {\n return element.get('className') === 'rect-logo-icon';\n });\n var currentLogoIconAttr = logoIconShape ? logoIconShape.attr() : {};\n var logoIcon = mix({}, currentLogoIconAttr, cfg.logoIcon);\n var w = logoIcon.width;\n if (w === undefined) {\n w = this.options.logoIcon.width;\n }\n var show = cfg.logoIcon ? cfg.logoIcon.show : undefined;\n var offset = labelCfg.offset;\n var offsetX = -width / 2 + w + offset;\n if (!show && show !== undefined) {\n offsetX = -width / 2 + offset;\n }\n var label = group['shapeMap']['node-label'] || group.find(function (element) {\n return element.get('className') === 'node-label';\n });\n var description = group['shapeMap']['rect-description'] || group.find(function (element) {\n return element.get('className') === 'rect-description';\n });\n if (cfg.label) {\n if (!label) {\n group['shapeMap']['node-label'] = group.addShape('text', {\n attrs: __assign(__assign({}, labelCfg.style), {\n x: offsetX,\n y: cfg.description ? -5 : 7,\n text: cfg.label\n }),\n className: 'node-label',\n name: 'node-label',\n draggable: true,\n labelRelated: true\n });\n } else {\n var cfgStyle = cfg.labelCfg ? cfg.labelCfg.style : {};\n var labelStyle = mix({}, label.attr(), cfgStyle);\n if (cfg.label) labelStyle.text = cfg.label;\n labelStyle.x = offsetX;\n if (isString(cfg.description)) labelStyle.y = -5;\n if (description) {\n description.resetMatrix();\n description.attr({\n x: offsetX\n });\n }\n label.resetMatrix();\n label.attr(labelStyle);\n }\n }\n if (isString(cfg.description)) {\n var paddingTop = descriptionCfg.paddingTop;\n if (!description) {\n group['shapeMap']['rect-description'] = group.addShape('text', {\n attrs: __assign(__assign({}, descriptionCfg.style), {\n x: offsetX,\n y: 17 + (paddingTop || 0),\n text: cfg.description\n }),\n className: 'rect-description',\n name: 'rect-description',\n draggable: true,\n labelRelated: true\n });\n } else {\n var cfgStyle = cfg.descriptionCfg ? cfg.descriptionCfg.style : {};\n var descriptionStyle = mix({}, description.attr(), cfgStyle);\n if (isString(cfg.description)) descriptionStyle.text = cfg.description;\n descriptionStyle.x = offsetX;\n description.resetMatrix();\n description.attr(__assign(__assign({}, descriptionStyle), {\n y: 17 + (paddingTop || 0)\n }));\n }\n }\n var preRectShape = group['shapeMap']['pre-rect'] || group.find(function (element) {\n return element.get('className') === 'pre-rect';\n });\n if (preRectShape && !preRectShape.destroyed) {\n var preRect = mix({}, preRectShape.attr(), cfg.preRect);\n preRectShape.attr(__assign(__assign({}, preRect), {\n x: -width / 2,\n y: -height / 2,\n height: height\n }));\n }\n if (logoIconShape && !logoIconShape.destroyed) {\n if (!show && show !== undefined) {\n logoIconShape.remove();\n delete group['shapeMap']['pre-rect'];\n } else {\n var logoW = logoIcon.width,\n h = logoIcon.height,\n x = logoIcon.x,\n y = logoIcon.y,\n logoOffset = logoIcon.offset,\n logoIconStyle = __rest(logoIcon, [\"width\", \"height\", \"x\", \"y\", \"offset\"]);\n logoIconShape.attr(__assign(__assign({}, logoIconStyle), {\n x: x || -width / 2 + logoW + logoOffset,\n y: y || -h / 2,\n width: logoW,\n height: h\n }));\n }\n } else if (show) {\n this.drawLogoIcon(cfg, group);\n }\n var stateIconShape = group['shapeMap']['rect-state-icon'] || group.find(function (element) {\n return element.get('className') === 'rect-state-icon';\n });\n var currentStateIconAttr = stateIconShape ? stateIconShape.attr() : {};\n var stateIcon = mix({}, currentStateIconAttr, cfg.stateIcon);\n if (stateIconShape) {\n if (!stateIcon.show && stateIcon.show !== undefined) {\n stateIconShape.remove();\n delete group['shapeMap']['rect-state-icon'];\n }\n var stateW = stateIcon.width,\n h = stateIcon.height,\n x = stateIcon.x,\n y = stateIcon.y,\n stateOffset = stateIcon.offset,\n stateIconStyle = __rest(stateIcon, [\"width\", \"height\", \"x\", \"y\", \"offset\"]);\n stateIconShape.attr(__assign(__assign({}, stateIconStyle), {\n x: x || width / 2 - stateW + stateOffset,\n y: y || -h / 2,\n width: stateW,\n height: h\n }));\n } else if (stateIcon.show) {\n this.drawStateIcon(cfg, group);\n }\n this.updateLinkPoints(cfg, group);\n },\n getOptions: function getOptions(cfg, updateType) {\n if (updateType === 'move') return cfg;\n // different from baseShape, the config should be mixed when the updateType is not 'move'\n return deepMix({}, this.options, this.getCustomConfig(cfg) || {}, cfg);\n }\n}, 'single-node');","import { __assign, __rest } from \"tslib\";\nimport { registerNode, BaseGlobal as Global, Util } from '@antv/g6-core';\nimport { mix } from '@antv/util';\n// 五角星shape\nregisterNode('star', {\n // 自定义节点时的配置\n options: {\n size: 60,\n style: {\n stroke: Global.defaultNode.style.stroke,\n fill: Global.defaultNode.style.fill,\n lineWidth: Global.defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: Global.nodeLabel.style.fill,\n fontSize: Global.nodeLabel.style.fontSize,\n fontFamily: Global.windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: Global.defaultNode.linkPoints.size,\n lineWidth: Global.defaultNode.linkPoints.lineWidth,\n fill: Global.defaultNode.linkPoints.fill,\n stroke: Global.defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: __assign({}, Global.nodeStateStyles)\n },\n shapeType: 'star',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n icon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('path', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n group['shapeMap'][\"\".concat(this.type, \"-keyShape\")] = keyShape;\n var w = icon.width,\n h = icon.height,\n show = icon.show,\n text = icon.text;\n if (show) {\n if (text) {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('text', {\n attrs: __assign({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n } else {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('image', {\n attrs: __assign({\n x: -w / 2,\n y: -h / 2\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n }\n }\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n leftBottom = linkPoints.leftBottom,\n rightBottom = linkPoints.rightBottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = __rest(linkPoints, [\"top\", \"left\", \"right\", \"leftBottom\", \"rightBottom\", \"size\", \"r\"]);\n var size = this.getSize(cfg);\n var outerR = size[0];\n if (right) {\n // right circle\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 0) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 0) / 180 * Math.PI) * outerR;\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right'\n });\n }\n if (top) {\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 1) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 1) / 180 * Math.PI) * outerR;\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top'\n });\n }\n if (left) {\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 2) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 2) / 180 * Math.PI) * outerR;\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left'\n });\n }\n if (leftBottom) {\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 3) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 3) / 180 * Math.PI) * outerR;\n // left bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left-bottom',\n name: 'link-point-left-bottom'\n });\n }\n if (rightBottom) {\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 4) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 4) / 180 * Math.PI) * outerR;\n // left bottom circle\n group['shapeMap']['link-point-right-bottom'] = group.addShape('circle', {\n attrs: __assign(__assign({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right-bottom',\n name: 'link-point-right-bottom'\n });\n }\n },\n getPath: function getPath(cfg) {\n var size = this.getSize(cfg);\n var outerR = size[0];\n var defaultInnerR = outerR * 3 / 8;\n var innerR = cfg.innerR || defaultInnerR;\n return Util.getStarPath(outerR, innerR);\n },\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n };\n // 如果设置了color,则覆盖原来默认的 stroke 属性。但 cfg 中但 stroke 属性优先级更高\n var style = mix({}, defaultStyle, strokeStyle);\n var path = this.getPath(cfg);\n var styles = __assign({\n path: path\n }, style);\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer();\n // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n var defaultStyle = this.getOptions({}).style;\n var path = this.getPath(cfg);\n // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n var strokeStyle = {\n stroke: cfg.color,\n path: path\n };\n // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n var keyShape = item.get('keyShape');\n var style = mix({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = mix(style, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n },\n /**\n * 更新linkPoints\n * @param {Object} cfg 节点数据配置项\n * @param {Group} group Item所在的group\n */\n updateLinkPoints: function updateLinkPoints(cfg, group) {\n var defaultLinkPoints = this.getOptions({}).linkPoints;\n var markLeft = group['shapeMap']['link-point-left'] || group.find(function (element) {\n return element.get('className') === 'link-point-left';\n });\n var markRight = group['shapeMap']['link-point-right'] || group.find(function (element) {\n return element.get('className') === 'link-point-right';\n });\n var markTop = group['shapeMap']['link-point-top'] || group.find(function (element) {\n return element.get('className') === 'link-point-top';\n });\n var markLeftBottom = group['shapeMap']['link-point-left-bottom'] || group.find(function (element) {\n return element.get('className') === 'link-point-left-bottom';\n });\n var markRightBottom = group['shapeMap']['link-point-left-bottom'] || group.find(function (element) {\n return element.get('className') === 'link-point-right-bottom';\n });\n var currentLinkPoints = defaultLinkPoints;\n var existLinkPoint = markLeft || markRight || markTop || markLeftBottom || markRightBottom;\n if (existLinkPoint) {\n currentLinkPoints = existLinkPoint.attr();\n }\n var linkPoints = mix({}, currentLinkPoints, cfg.linkPoints);\n var markFill = linkPoints.fill,\n markStroke = linkPoints.stroke,\n borderWidth = linkPoints.lineWidth;\n var markSize = linkPoints.size / 2;\n if (!markSize) markSize = linkPoints.r;\n var _a = cfg.linkPoints ? cfg.linkPoints : {\n left: undefined,\n right: undefined,\n top: undefined,\n leftBottom: undefined,\n rightBottom: undefined\n },\n left = _a.left,\n right = _a.right,\n top = _a.top,\n leftBottom = _a.leftBottom,\n rightBottom = _a.rightBottom;\n var size = this.getSize(cfg);\n var outerR = size[0];\n var styles = {\n r: markSize,\n fill: markFill,\n stroke: markStroke,\n lineWidth: borderWidth\n };\n var x = Math.cos((18 + 72 * 0) / 180 * Math.PI) * outerR;\n var y = Math.sin((18 + 72 * 0) / 180 * Math.PI) * outerR;\n if (markRight) {\n if (!right && right !== undefined) {\n markRight.remove();\n delete group['shapeMap']['link-point-right'];\n } else {\n markRight.attr(__assign(__assign({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (right) {\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: __assign(__assign({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n x = Math.cos((18 + 72 * 1) / 180 * Math.PI) * outerR;\n y = Math.sin((18 + 72 * 1) / 180 * Math.PI) * outerR;\n if (markTop) {\n if (!top && top !== undefined) {\n markTop.remove();\n delete group['shapeMap']['link-point-top'];\n } else {\n markTop.attr(__assign(__assign({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (top) {\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: __assign(__assign({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n x = Math.cos((18 + 72 * 2) / 180 * Math.PI) * outerR;\n y = Math.sin((18 + 72 * 2) / 180 * Math.PI) * outerR;\n if (markLeft) {\n if (!left && left !== undefined) {\n markLeft.remove();\n delete group['shapeMap']['link-point-left'];\n } else {\n markLeft.attr(__assign(__assign({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (left) {\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: __assign(__assign({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n x = Math.cos((18 + 72 * 3) / 180 * Math.PI) * outerR;\n y = Math.sin((18 + 72 * 3) / 180 * Math.PI) * outerR;\n if (markLeftBottom) {\n if (!leftBottom && leftBottom !== undefined) {\n markLeftBottom.remove();\n delete group['shapeMap']['link-point-left-bottom'];\n } else {\n markLeftBottom.attr(__assign(__assign({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (leftBottom) {\n group['shapeMap']['link-point-left-bottom'] = group.addShape('circle', {\n attrs: __assign(__assign({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-left-bottom',\n name: 'link-point-left-bottom',\n isAnchorPoint: true\n });\n }\n x = Math.cos((18 + 72 * 4) / 180 * Math.PI) * outerR;\n y = Math.sin((18 + 72 * 4) / 180 * Math.PI) * outerR;\n if (markRightBottom) {\n if (!rightBottom && rightBottom !== undefined) {\n markRightBottom.remove();\n delete group['shapeMap']['link-point-right-bottom'];\n } else {\n markRightBottom.attr(__assign(__assign({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (rightBottom) {\n group['shapeMap']['link-point-right-bottom'] = group.addShape('circle', {\n attrs: __assign(__assign({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-right-bottom',\n name: 'link-point-right-bottom',\n isAnchorPoint: true\n });\n }\n }\n}, 'single-node');","import { __assign } from \"tslib\";\nimport { registerNode, BaseGlobal as Global, Util } from '@antv/g6-core';\nimport { deepMix } from '@antv/util';\nvar defaultSubjectColors = Util.defaultSubjectColors;\nvar FAN_NAME_PREFIX = 'fan-shape-';\n// 饼图节点\nregisterNode('donut', {\n // 自定义节点时的配置\n options: {\n size: Global.defaultNode.size,\n style: {\n x: 0,\n y: 0,\n stroke: Global.defaultNode.style.stroke,\n fill: Global.defaultNode.style.fill,\n lineWidth: Global.defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: Global.nodeLabel.style.fill,\n fontSize: Global.nodeLabel.style.fontSize,\n fontFamily: Global.windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: Global.defaultNode.linkPoints.size,\n lineWidth: Global.defaultNode.linkPoints.lineWidth,\n fill: Global.defaultNode.linkPoints.fill,\n stroke: Global.defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: __assign({}, Global.nodeStateStyles)\n },\n shapeType: 'circle',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n defaultIcon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var icon = deepMix({}, defaultIcon, cfg.icon);\n var keyShape = group.addShape('circle', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n draggable: true,\n name: \"\".concat(this.type, \"-keyShape\")\n });\n group['shapeMap'][\"\".concat(this.type, \"-keyShape\")] = keyShape;\n var width = icon.width,\n height = icon.height,\n show = icon.show,\n text = icon.text;\n if (show) {\n if (text) {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('text', {\n attrs: __assign({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n } else {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('image', {\n attrs: __assign({\n x: -width / 2,\n y: -height / 2\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n }\n }\n // draw the fan shapes\n drawFans(cfg, group, keyShape);\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n updateShape: function updateShape(cfg, item, keyShapeStyle, hasIcon, updateType) {\n // here cfg is merged configure including old model and new configs\n var keyShape = item.get('keyShape');\n keyShape.attr(__assign({}, keyShapeStyle));\n updateFans(cfg, item, keyShape);\n if (!undefined || (updateType === null || updateType === void 0 ? void 0 : updateType.includes('label'))) {\n this.updateLabel(cfg, item, updateType);\n }\n if (hasIcon) {\n this.updateIcon(cfg, item);\n }\n }\n}, 'circle');\n/**\n * draws the fan shapes\n * @param cfg\n * @param group\n * @param keyShape\n * @returns\n */\nvar drawFans = function drawFans(cfg, group, keyShape) {\n var _a = cfg.donutAttrs,\n donutAttrs = _a === void 0 ? {} : _a,\n _b = cfg.donutColorMap,\n donutColorMap = _b === void 0 ? {} : _b;\n var attrNum = Object.keys(donutAttrs).length;\n if (donutAttrs && attrNum > 1) {\n var _c = getDonutConfig(donutAttrs, donutColorMap),\n configs = _c.configs,\n totalValue = _c.totalValue;\n if (totalValue) {\n var _d = getDonutSize(keyShape),\n lineWidth = _d.lineWidth,\n arcR = _d.arcR;\n var arcBegin = [arcR, 0];\n var beginAngle = 0;\n if (attrNum === 1) {\n // draw a path represents a circle\n drawFan(group, {\n arcR: arcR,\n arcBegin: arcBegin,\n beginAngle: beginAngle,\n config: configs[0],\n fanIndex: 0,\n lineWidth: lineWidth,\n totalValue: totalValue,\n drawWhole: true\n });\n return;\n }\n for (var i = 0; i < configs.length; i++) {\n var result = drawFan(group, {\n arcR: arcR,\n arcBegin: arcBegin,\n beginAngle: beginAngle,\n config: configs[i],\n fanIndex: i,\n lineWidth: lineWidth,\n totalValue: totalValue\n });\n if (result.shouldEnd) return;\n arcBegin = result.arcBegin;\n beginAngle = result.beginAngle;\n }\n }\n }\n};\n/**\n * draws one fan shape and returns the next position and angle\n * @param group\n * @param fanConfig\n * @returns\n */\nvar drawFan = function drawFan(group, fanConfig) {\n var arcR = fanConfig.arcR,\n arcBegin = fanConfig.arcBegin,\n beginAngle = fanConfig.beginAngle,\n config = fanConfig.config,\n fanIndex = fanConfig.fanIndex,\n lineWidth = fanConfig.lineWidth,\n totalValue = fanConfig.totalValue,\n _a = fanConfig.drawWhole,\n drawWhole = _a === void 0 ? false : _a,\n _b = fanConfig.updateShape,\n updateShape = _b === void 0 ? undefined : _b;\n var percent = config.value / totalValue;\n if (percent < 0.001) {\n // too small to add a fan\n return {\n beginAngle: beginAngle,\n arcBegin: arcBegin,\n shape: undefined,\n shouldEnd: false\n };\n }\n var arcEnd, endAngle, isBig;\n // draw a path represents the whole circle, or the percentage is close to 1\n if (drawWhole || percent > 0.999) {\n arcEnd = [arcR, 0.0001]; // [arcR * cos(2 * PI), -arcR * sin(2 * PI)]\n isBig = true;\n } else {\n var angle = percent * Math.PI * 2;\n endAngle = beginAngle + angle;\n arcEnd = [arcR * Math.cos(endAngle), -arcR * Math.sin(endAngle)];\n isBig = angle > Math.PI ? 1 : 0;\n }\n var style = {\n path: [['M', arcBegin[0], arcBegin[1]], ['A', arcR, arcR, 0, isBig, 0, arcEnd[0], arcEnd[1]], ['L', arcEnd[0], arcEnd[1]]],\n stroke: config.color || (updateShape === null || updateShape === void 0 ? void 0 : updateShape.attr('stroke')) || defaultSubjectColors[fanIndex % defaultSubjectColors.length],\n lineWidth: lineWidth\n };\n if (updateShape) {\n // update\n updateShape.attr(style);\n } else {\n // draw\n group['shapeMap'][\"\".concat(FAN_NAME_PREFIX).concat(fanIndex)] = group.addShape('path', {\n attrs: style,\n name: \"\".concat(FAN_NAME_PREFIX).concat(fanIndex),\n draggable: true\n });\n }\n return {\n beginAngle: endAngle,\n arcBegin: arcEnd,\n shape: group['shapeMap'][\"\".concat(FAN_NAME_PREFIX).concat(fanIndex)],\n shouldEnd: drawWhole || percent > 0.999\n };\n};\n/**\n * utilizes the existing fan shapes, update them with new configs\n * removes the redundent fan shapes\n * or adds more fan shapes\n * @param cfg\n * @param item\n * @param keyShape\n */\nvar updateFans = function updateFans(cfg, item, keyShape) {\n var donutAttrs = cfg.donutAttrs,\n _a = cfg.donutColorMap,\n donutColorMap = _a === void 0 ? {} : _a;\n var visitMap = {};\n var group = item.getContainer();\n if (donutAttrs) {\n var _b = getDonutConfig(donutAttrs, donutColorMap),\n configs = _b.configs,\n totalValue = _b.totalValue;\n if (totalValue) {\n var _c = getDonutSize(keyShape),\n lineWidth = _c.lineWidth,\n arcR = _c.arcR;\n var arcBegin = [arcR, 0];\n var beginAngle = 0;\n for (var i = 0; i < configs.length; i++) {\n var shapeName = \"\".concat(FAN_NAME_PREFIX).concat(i);\n var result = drawFan(group, {\n arcR: arcR,\n arcBegin: arcBegin,\n beginAngle: beginAngle,\n config: configs[i],\n fanIndex: i,\n lineWidth: lineWidth,\n totalValue: totalValue,\n drawWhole: configs.length === 1,\n updateShape: group['shapeMap'][shapeName]\n });\n if (result.shape) visitMap[shapeName] = true;\n if (result.shouldEnd) break;\n arcBegin = result.arcBegin;\n beginAngle = result.beginAngle;\n }\n }\n }\n // remove the old shapes which are not visited, including the situation taht donutAttrs is empty\n var fanKeys = Object.keys(group['shapeMap']).filter(function (key) {\n return key.includes(FAN_NAME_PREFIX);\n });\n fanKeys.forEach(function (key) {\n if (!visitMap[key]) {\n group['shapeMap'][key].remove(true);\n delete group['shapeMap'][key];\n }\n });\n};\n/**\n * calculate the total value and format single value for each fan\n * @param donutAttrs\n * @param donutColorMap\n * @returns\n */\nvar getDonutConfig = function getDonutConfig(donutAttrs, donutColorMap) {\n var totalValue = 0;\n var configs = [];\n Object.keys(donutAttrs).forEach(function (name) {\n var value = +donutAttrs[name];\n if (isNaN(value)) return;\n configs.push({\n key: name,\n value: value,\n color: donutColorMap[name]\n });\n totalValue += value;\n });\n return {\n totalValue: totalValue,\n configs: configs\n };\n};\n/**\n * calculate the lineWidth and radius for fan shapes according to the keyShape's radius\n * @param keyShape\n * @returns\n */\nvar getDonutSize = function getDonutSize(keyShape) {\n var keyShapeR = keyShape.attr('r');\n var innerR = 0.6 * keyShapeR; // 甜甜圈的内环半径\n var arcR = (keyShapeR + innerR) / 2; // 内环半径与外环半径的平均值\n var lineWidth = keyShapeR - innerR;\n return {\n lineWidth: lineWidth,\n arcR: arcR\n };\n};","export var getBBoxFromPoint = function getBBoxFromPoint(point) {\n var x = point.x,\n y = point.y;\n return {\n x: x,\n y: y,\n centerX: x,\n centerY: y,\n minX: x,\n minY: y,\n maxX: x,\n maxY: y,\n height: 0,\n width: 0\n };\n};\nexport var getBBoxFromPoints = function getBBoxFromPoints(points) {\n if (points === void 0) {\n points = [];\n }\n var xs = [];\n var ys = [];\n points.forEach(function (p) {\n xs.push(p.x);\n ys.push(p.y);\n });\n var minX = Math.min.apply(Math, xs);\n var maxX = Math.max.apply(Math, xs);\n var minY = Math.min.apply(Math, ys);\n var maxY = Math.max.apply(Math, ys);\n return {\n centerX: (minX + maxX) / 2,\n centerY: (minY + maxY) / 2,\n maxX: maxX,\n maxY: maxY,\n minX: minX,\n minY: minY,\n height: maxY - minY,\n width: maxX - minX\n };\n};\nexport var isBBoxesOverlapping = function isBBoxesOverlapping(b1, b2) {\n return Math.abs(b1.centerX - b2.centerX) * 2 < b1.width + b2.width && Math.abs(b1.centerY - b2.centerY) * 2 < b1.height + b2.height;\n};\nexport var filterConnectPoints = function filterConnectPoints(points) {\n // pre-process: remove duplicated points\n var result = [];\n var map = {};\n var pointsLength = points.length;\n for (var i = pointsLength - 1; i >= 0; i--) {\n var p = points[i];\n p.id = \"\".concat(p.x, \"|||\").concat(p.y);\n if (!map[p.id]) {\n map[p.id] = p;\n result.push(p);\n }\n }\n return result;\n};\nexport var simplifyPolyline = function simplifyPolyline(points) {\n return filterConnectPoints(points);\n};\nexport var getSimplePolyline = function getSimplePolyline(sPoint, tPoint) {\n return [sPoint, {\n x: sPoint.x,\n y: tPoint.y\n }, tPoint];\n};\nexport var getExpandedBBox = function getExpandedBBox(bbox, offset) {\n if (bbox.width || bbox.height) {\n return {\n centerX: bbox.centerX,\n centerY: bbox.centerY,\n minX: bbox.minX - offset,\n minY: bbox.minY - offset,\n maxX: bbox.maxX + offset,\n maxY: bbox.maxY + offset,\n height: bbox.height + 2 * offset,\n width: bbox.width + 2 * offset\n };\n }\n // when it is a point\n return bbox;\n};\nexport var isHorizontalPort = function isHorizontalPort(port, bbox) {\n var dx = Math.abs(port.x - bbox.centerX);\n var dy = Math.abs(port.y - bbox.centerY);\n if (dx === 0 && dy === 0) return 0;\n return dx / bbox.width > dy / bbox.height;\n};\nexport var getExpandedBBoxPoint = function getExpandedBBoxPoint(bbox,\n// 将原来节点 bbox 扩展了 offset 后的 bbox,且被 gridSize 格式化\npoint,\n// 被 gridSize 格式化后的位置(anchorPoint)\nanotherPoint) {\n var isHorizontal = isHorizontalPort(point, bbox);\n if (isHorizontal === 0) {\n // 说明锚点是节点中心,linkCenter: true。需要根据两个节点的相对关系决定方向\n var x = bbox.centerX;\n var y = bbox.centerY;\n if (anotherPoint.y < point.y) {\n // 另一端在左上/右上方时,总是从上方走\n y = bbox.minY;\n } else if (anotherPoint.x > point.x) {\n // 另一端在右下方,往右边走\n x = bbox.maxX;\n } else if (anotherPoint.x < point.x) {\n // 另一端在左下方,往左边走\n x = bbox.minX;\n } else if (anotherPoint.x === point.x) {\n // 另一段在正下方,往下走\n y = bbox.maxY;\n }\n return {\n x: x,\n y: y\n };\n }\n if (isHorizontal) {\n return {\n x: point.x > bbox.centerX ? bbox.maxX : bbox.minX,\n y: point.y\n };\n }\n return {\n x: point.x,\n y: point.y > bbox.centerY ? bbox.maxY : bbox.minY\n };\n};\n/**\n *\n * @param b1\n * @param b2\n */\nexport var mergeBBox = function mergeBBox(b1, b2) {\n var minX = Math.min(b1.minX, b2.minX);\n var minY = Math.min(b1.minY, b2.minY);\n var maxX = Math.max(b1.maxX, b2.maxX);\n var maxY = Math.max(b1.maxY, b2.maxY);\n return {\n centerX: (minX + maxX) / 2,\n centerY: (minY + maxY) / 2,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n height: maxY - minY,\n width: maxX - minX\n };\n};\nexport var getPointsFromBBox = function getPointsFromBBox(bbox) {\n // anticlockwise\n return [{\n x: bbox.minX,\n y: bbox.minY\n }, {\n x: bbox.maxX,\n y: bbox.minY\n }, {\n x: bbox.maxX,\n y: bbox.maxY\n }, {\n x: bbox.minX,\n y: bbox.maxY\n }];\n};\nexport var isPointOutsideBBox = function isPointOutsideBBox(point, bbox) {\n var x = point.x,\n y = point.y;\n return x < bbox.minX || x > bbox.maxX || y < bbox.minY || y > bbox.maxY;\n};\nexport var getBBoxXCrossPoints = function getBBoxXCrossPoints(bbox, x) {\n if (x < bbox.minX || x > bbox.maxX) {\n return [];\n }\n return [{\n x: x,\n y: bbox.minY\n }, {\n x: x,\n y: bbox.maxY\n }];\n};\nexport var getBBoxYCrossPoints = function getBBoxYCrossPoints(bbox, y) {\n if (y < bbox.minY || y > bbox.maxY) {\n return [];\n }\n return [{\n x: bbox.minX,\n y: y\n }, {\n x: bbox.maxX,\n y: y\n }];\n};\nexport var getBBoxCrossPointsByPoint = function getBBoxCrossPointsByPoint(bbox, point) {\n return getBBoxXCrossPoints(bbox, point.x).concat(getBBoxYCrossPoints(bbox, point.y));\n};\n/**\n * 曼哈顿距离\n */\nexport var distance = function distance(p1, p2) {\n return Math.abs(p1.x - p2.x) + Math.abs(p1.y - p2.y);\n};\n/**\n * 如果 points 中的一个节点 x 与 p 相等,则消耗 -2。y 同\n * 即优先选择和 points 在同一水平线 / 垂直线上的点\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport var _costByPoints = function _costByPoints(p, points) {\n var offset = -2;\n var result = 0;\n points.forEach(function (point) {\n if (point) {\n if (p.x === point.x) {\n result += offset;\n }\n if (p.y === point.y) {\n result += offset;\n }\n }\n });\n return result;\n};\n/**\n * ps 经过 p 到 pt 的距离,减去其他路过节点造成的消耗\n */\nexport var heuristicCostEstimate = function heuristicCostEstimate(p, ps, pt, source, target) {\n return distance(p, ps) + distance(p, pt) + _costByPoints(p, [ps, pt, source, target]);\n};\nexport var reconstructPath = function reconstructPath(pathPoints, pointById, cameFrom, currentId, iterator) {\n if (iterator === void 0) {\n iterator = 0;\n }\n pathPoints.unshift(pointById[currentId]);\n if (cameFrom[currentId] && cameFrom[currentId] !== currentId && iterator <= 100) {\n reconstructPath(pathPoints, pointById, cameFrom, cameFrom[currentId], iterator + 1);\n }\n};\n/**\n * 从 arr 中删去 item\n */\nexport var removeFrom = function removeFrom(arr, item) {\n var index = arr.indexOf(item);\n if (index > -1) {\n arr.splice(index, 1);\n }\n};\nexport var isSegmentsIntersected = function isSegmentsIntersected(p0, p1, p2, p3) {\n var v1x = p2.x - p0.x;\n var v1y = p2.y - p0.y;\n var v2x = p3.x - p0.x;\n var v2y = p3.y - p0.y;\n var v3x = p2.x - p1.x;\n var v3y = p2.y - p1.y;\n var v4x = p3.x - p1.x;\n var v4y = p3.y - p1.y;\n var pd1 = v1x * v2y - v1y * v2x;\n var pd2 = v3x * v4y - v3y * v4x;\n var pd3 = v1x * v3y - v1y * v3x;\n var pd4 = v2x * v4y - v2y * v4x;\n return pd1 * pd2 <= 0 && pd3 * pd4 <= 0;\n};\nexport var isSegmentCrossingBBox = function isSegmentCrossingBBox(p1, p2, bbox) {\n if (bbox.width || bbox.height) {\n var _a = getPointsFromBBox(bbox),\n pa = _a[0],\n pb = _a[1],\n pc = _a[2],\n pd = _a[3];\n return isSegmentsIntersected(p1, p2, pa, pb) || isSegmentsIntersected(p1, p2, pa, pd) || isSegmentsIntersected(p1, p2, pb, pc) || isSegmentsIntersected(p1, p2, pc, pd);\n }\n return false;\n};\n/**\n * 在 points 中找到满足 x 或 y 和 point 的 x 或 y 相等,且与 point 连线不经过 bbox1 与 bbox2 的点\n */\nexport var getNeighborPoints = function getNeighborPoints(points, point, bbox1, bbox2) {\n var neighbors = [];\n points.forEach(function (p) {\n if (p === point) return;\n if (p.x === point.x || p.y === point.y) {\n if (isSegmentCrossingBBox(p, point, bbox1) || isSegmentCrossingBBox(p, point, bbox2)) return;\n neighbors.push(p);\n }\n });\n return filterConnectPoints(neighbors);\n};\nexport var pathFinder = function pathFinder(points, start, goal, sBBox, tBBox, os, ot) {\n var _a;\n // A-Star Algorithm\n var closedSet = [];\n var openSet = (_a = {}, _a[start.id] = start, _a);\n var cameFrom = {};\n var gScore = {}; // all default values are Infinity\n var fScore = {}; // all default values are Infinity\n gScore[start.id] = 0;\n fScore[start.id] = heuristicCostEstimate(start, goal, start);\n var sortedOpenSet = new SortedArray();\n sortedOpenSet.add({\n id: start.id,\n value: fScore[start.id]\n });\n var pointById = {};\n points.forEach(function (p) {\n pointById[p.id] = p;\n });\n var current;\n while (Object.keys(openSet).length) {\n var minId = sortedOpenSet.minId(false);\n if (minId) {\n current = openSet[minId];\n } else {\n break;\n }\n // 若 openSet 中 fScore 最小的点就是终点\n if (current === goal) {\n // ending condition\n var pathPoints = [];\n reconstructPath(pathPoints, pointById, cameFrom, goal.id);\n return pathPoints;\n }\n delete openSet[current.id];\n sortedOpenSet.remove(current.id);\n closedSet.push(current);\n var neighborPoints = getNeighborPoints(points, current, sBBox, tBBox);\n var iterateNeighbors = function iterateNeighbors(items) {\n items.forEach(function (neighbor) {\n if (closedSet.indexOf(neighbor) !== -1) {\n return;\n }\n var neighborId = neighbor.id;\n if (!openSet[neighborId]) {\n openSet[neighborId] = neighbor;\n }\n var tentativeGScore = fScore[current.id] + distance(current, neighbor); // + distance(neighbor, goal);\n if (gScore[neighborId] && tentativeGScore >= gScore[neighborId]) {\n sortedOpenSet.add({\n id: neighborId,\n value: fScore[neighborId]\n });\n return;\n }\n cameFrom[neighborId] = current.id;\n gScore[neighborId] = tentativeGScore;\n fScore[neighborId] = gScore[neighborId] + heuristicCostEstimate(neighbor, goal, start, os, ot);\n sortedOpenSet.add({\n id: neighborId,\n value: fScore[neighborId]\n });\n });\n };\n iterateNeighbors(neighborPoints);\n }\n // throw new Error('Cannot find path');\n return [start, goal];\n};\nexport var isBending = function isBending(p0, p1, p2) {\n return !(p0.x === p1.x && p1.x === p2.x || p0.y === p1.y && p1.y === p2.y);\n};\nexport var getBorderRadiusPoints = function getBorderRadiusPoints(p0, p1, p2, r) {\n var d0 = distance(p0, p1);\n var d1 = distance(p2, p1);\n if (d0 < r) {\n r = d0;\n }\n if (d1 < r) {\n r = d1;\n }\n var ps = {\n x: p1.x - r / d0 * (p1.x - p0.x),\n y: p1.y - r / d0 * (p1.y - p0.y)\n };\n var pt = {\n x: p1.x - r / d1 * (p1.x - p2.x),\n y: p1.y - r / d1 * (p1.y - p2.y)\n };\n return [ps, pt];\n};\nexport var getPathWithBorderRadiusByPolyline = function getPathWithBorderRadiusByPolyline(points, borderRadius) {\n var pathSegments = [];\n var startPoint = points[0];\n pathSegments.push(\"M\".concat(startPoint.x, \" \").concat(startPoint.y));\n points.forEach(function (p, i) {\n var p1 = points[i + 1];\n var p2 = points[i + 2];\n if (p1 && p2) {\n if (isBending(p, p1, p2)) {\n var _a = getBorderRadiusPoints(p, p1, p2, borderRadius),\n ps = _a[0],\n pt = _a[1];\n pathSegments.push(\"L\".concat(ps.x, \" \").concat(ps.y));\n pathSegments.push(\"Q\".concat(p1.x, \" \").concat(p1.y, \" \").concat(pt.x, \" \").concat(pt.y));\n pathSegments.push(\"L\".concat(pt.x, \" \").concat(pt.y));\n } else {\n pathSegments.push(\"L\".concat(p1.x, \" \").concat(p1.y));\n }\n } else if (p1) {\n pathSegments.push(\"L\".concat(p1.x, \" \").concat(p1.y));\n }\n });\n return pathSegments.join('');\n};\nexport var getPolylinePoints = function getPolylinePoints(start, end, sNode, tNode, offset) {\n var sBBox, tBBox;\n if (!sNode || !sNode.getType()) {\n sBBox = getBBoxFromPoint(start);\n } else if (sNode.getType() === 'combo') {\n var sKeyShapeBBox = sNode.getKeyShape().getBBox();\n if (sKeyShapeBBox) {\n var _a = sNode.getModel(),\n sx = _a.x,\n sy = _a.y;\n sBBox = {\n x: sx,\n y: sy,\n width: sKeyShapeBBox.width,\n height: sKeyShapeBBox.height,\n minX: sKeyShapeBBox.minX + sx,\n maxX: sKeyShapeBBox.maxX + sx,\n minY: sKeyShapeBBox.minY + sy,\n maxY: sKeyShapeBBox.maxY + sy\n };\n sBBox.centerX = (sBBox.minX + sBBox.maxX) / 2;\n sBBox.centerY = (sBBox.minY + sBBox.maxY) / 2;\n } else {\n sBBox = getBBoxFromPoint(start);\n }\n } else {\n sBBox = sNode && sNode.getBBox();\n }\n if (!tNode || !tNode.getType()) {\n tBBox = getBBoxFromPoint(end);\n } else if (tNode.getType() === 'combo') {\n var tKeyShapeBBox = tNode.getKeyShape().getBBox();\n if (tKeyShapeBBox) {\n var _b = tNode.getModel(),\n tx = _b.x,\n ty = _b.y;\n tBBox = {\n x: tx,\n y: ty,\n width: tKeyShapeBBox.width,\n height: tKeyShapeBBox.height,\n minX: tKeyShapeBBox.minX + tx,\n maxX: tKeyShapeBBox.maxX + tx,\n minY: tKeyShapeBBox.minY + ty,\n maxY: tKeyShapeBBox.maxY + ty\n };\n tBBox.centerX = (tBBox.minX + tBBox.maxX) / 2;\n tBBox.centerY = (tBBox.minY + tBBox.maxY) / 2;\n } else {\n tBBox = getBBoxFromPoint(end);\n }\n } else {\n tBBox = tNode && tNode.getBBox();\n }\n // if (isBBoxesOverlapping(sBBox, tBBox)) {\n // // source and target nodes are overlapping\n // return simplifyPolyline(getSimplePolyline(start, end));\n // }\n var sxBBox = getExpandedBBox(sBBox, offset);\n var txBBox = getExpandedBBox(tBBox, offset);\n // if (isBBoxesOverlapping(sxBBox, txBBox)) {\n // // the expanded bounding boxes of source and target nodes are overlapping\n // return simplifyPolyline(getSimplePolyline(start, end));\n // }\n var sPoint = getExpandedBBoxPoint(sxBBox, start, end);\n var tPoint = getExpandedBBoxPoint(txBBox, end, start);\n var lineBBox = getBBoxFromPoints([sPoint, tPoint]);\n var sMixBBox = mergeBBox(sxBBox, lineBBox);\n var tMixBBox = mergeBBox(txBBox, lineBBox);\n var connectPoints = [];\n connectPoints = connectPoints.concat(getPointsFromBBox(sMixBBox)).concat(getPointsFromBBox(tMixBBox));\n var centerPoint = {\n x: (start.x + end.x) / 2,\n y: (start.y + end.y) / 2\n };\n [lineBBox, sMixBBox, tMixBBox].forEach(function (bbox) {\n connectPoints = connectPoints.concat(getBBoxCrossPointsByPoint(bbox, centerPoint).filter(function (p) {\n return isPointOutsideBBox(p, sxBBox) && isPointOutsideBBox(p, txBBox);\n }));\n });\n [{\n x: sPoint.x,\n y: tPoint.y\n }, {\n x: tPoint.x,\n y: sPoint.y\n }].forEach(function (p) {\n // impossible!!\n if (isPointOutsideBBox(p, sxBBox) && isPointOutsideBBox(p, txBBox) // &&\n // isPointInsideBBox(p, sMixBBox) && isPointInsideBBox(p, tMixBBox)\n ) {\n connectPoints.push(p);\n }\n });\n connectPoints.unshift(sPoint);\n connectPoints.push(tPoint);\n // filter out dulplicated points in connectPoints\n connectPoints = filterConnectPoints(connectPoints); // , sxBBox, txBBox, outerBBox\n var pathPoints = pathFinder(connectPoints, sPoint, tPoint, sBBox, tBBox, start, end);\n pathPoints.unshift(start);\n pathPoints.push(end);\n return simplifyPolyline(pathPoints);\n};\n/**\n * 去除连续同 x 不同 y 的中间点;去除连续同 y 不同 x 的中间点\n * @param points 坐标集合 { x: number, y: number, id: string }[]\n * @returns\n */\nexport var removeRedundantPoint = function removeRedundantPoint(points) {\n if (!(points === null || points === void 0 ? void 0 : points.length)) return points;\n var beginPoint = points[points.length - 1];\n var current = {\n x: beginPoint.x,\n y: beginPoint.y\n };\n var continueSameX = [beginPoint];\n var continueSameY = [beginPoint];\n for (var i = points.length - 2; i >= 0; i--) {\n var point = points[i];\n if (point.x === current.x) {\n continueSameX.push(point);\n } else {\n continueSameX = [point];\n current.x = point.x;\n }\n if (point.y === current.y) {\n continueSameY.push(point);\n } else {\n continueSameY = [point];\n current.y = point.y;\n }\n if (continueSameX.length > 2) {\n var removeIdx = points.indexOf(continueSameX[1]);\n if (removeIdx > -1) points.splice(removeIdx, 1);\n continue;\n }\n if (continueSameY.length > 2) {\n var removeIdx = points.indexOf(continueSameY[1]);\n if (removeIdx > -1) points.splice(removeIdx, 1);\n }\n }\n return points;\n};\n/**\n * sorted array ascendly\n * add new item to proper index when calling add\n */\nvar SortedArray = /** @class */function () {\n function SortedArray() {\n this.arr = [];\n this.map = {};\n this.arr = [];\n this.map = {};\n }\n SortedArray.prototype._innerAdd = function (item, length) {\n var idxRange = [0, length - 1];\n while (idxRange[1] - idxRange[0] > 1) {\n var midIdx = Math.floor((idxRange[0] + idxRange[1]) / 2);\n if (this.arr[midIdx].value > item.value) {\n idxRange[1] = midIdx;\n } else if (this.arr[midIdx].value < item.value) {\n idxRange[0] = midIdx;\n } else {\n this.arr.splice(midIdx, 0, item);\n this.map[item.id] = true;\n return;\n }\n }\n this.arr.splice(idxRange[1], 0, item);\n this.map[item.id] = true;\n };\n SortedArray.prototype.add = function (item) {\n // 已经存在,先移除\n delete this.map[item.id];\n var length = this.arr.length;\n if (!length) {\n this.arr.push(item);\n this.map[item.id] = true;\n return;\n }\n // 比最后一个大,加入尾部\n if (this.arr[length - 1].value < item.value) {\n this.arr.push(item);\n this.map[item.id] = true;\n return;\n }\n this._innerAdd(item, length);\n };\n // only remove from the map to avoid cost\n // clear the invalid (not in the map) item when calling minId(true)\n SortedArray.prototype.remove = function (id) {\n if (!this.map[id]) return;\n delete this.map[id];\n };\n SortedArray.prototype._clearAndGetMinId = function () {\n var res;\n for (var i = this.arr.length - 1; i >= 0; i--) {\n if (this.map[this.arr[i].id]) res = this.arr[i].id;else this.arr.splice(i, 1);\n }\n return res;\n };\n SortedArray.prototype._findFirstId = function () {\n while (this.arr.length) {\n var first = this.arr.shift();\n if (this.map[first.id]) return first.id;\n }\n };\n SortedArray.prototype.minId = function (clear) {\n if (clear) {\n return this._clearAndGetMinId();\n } else {\n return this._findFirstId();\n }\n };\n return SortedArray;\n}();\nexport { SortedArray };","/**\n * 通过配置不同的 costFunc, distFunc, constraints 可以得到不同效果的 router\n * generalRouter: 不限制搜索时的移动方向,避开障碍即可\n * orthogonal: 线必须沿着竖直或水平方向(4个方向)\n * octolinearRouter: 线沿着竖直、水平、对角线方向(8个方向)\n */\nimport { Util } from '@antv/g6-core';\nimport { deepMix } from '@antv/util';\nimport { getExpandedBBox, getExpandedBBoxPoint, getPolylinePoints, simplifyPolyline, isSegmentCrossingBBox, SortedArray } from './polyline-util';\nvar manhattanDist = function manhattanDist(p1, p2) {\n return Math.abs(p1.x - p2.x) + Math.abs(p1.y - p2.y);\n};\nvar eucliDist = function eucliDist(p1, p2) {\n return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n};\nvar straightPath = function straightPath(start, end) {\n // console.warn('fallbackRoute: straight path');\n return [start, end];\n};\nvar simplePolyline = function simplePolyline(start, end, startNode, endNode, cfg) {\n return simplifyPolyline(getPolylinePoints(start, end, startNode, endNode, cfg.offset));\n};\n// getPolylinePoints\nvar defaultCfg = {\n offset: 20,\n maxAllowedDirectionChange: Math.PI / 2,\n maximumLoops: 2000,\n gridSize: 10,\n directions: [{\n stepX: 1,\n stepY: 0\n }, {\n stepX: -1,\n stepY: 0\n }, {\n stepX: 0,\n stepY: 1\n }, {\n stepX: 0,\n stepY: -1\n } // top\n ],\n\n get penalties() {\n return {\n 0: 0,\n 45: this.gridSize / 2,\n 90: this.gridSize / 2\n };\n },\n distFunc: manhattanDist,\n fallbackRoute: simplePolyline\n};\nexport var octolinearCfg = {\n maxAllowedDirectionChange: Math.PI / 4,\n // 8 个方向: 上下左右 + 45度斜线方向\n directions: [{\n stepX: 1,\n stepY: 0\n }, {\n stepX: 1,\n stepY: 1\n }, {\n stepX: 0,\n stepY: 1\n }, {\n stepX: -1,\n stepY: 1\n }, {\n stepX: -1,\n stepY: 0\n }, {\n stepX: -1,\n stepY: -1\n }, {\n stepX: 0,\n stepY: -1\n }, {\n stepX: 1,\n stepY: -1\n }],\n distFunc: eucliDist,\n fallbackRoute: straightPath\n};\nvar pos2GridIx = function pos2GridIx(pos, gridSize) {\n var gridIx = Math.round(Math.abs(pos / gridSize));\n var sign = pos < 0 ? -1 : 1;\n return gridIx < 0 ? 0 : sign * gridIx;\n};\nvar getObstacleMap = function getObstacleMap(items, gridSize, offset) {\n var map = {};\n items.forEach(function (item) {\n // create-edge 时,当边类型为 polyline 时 endNode 为 null\n if (!item) return;\n var bbox = getExpandedBBox(item.getBBox(), offset);\n for (var x = pos2GridIx(bbox.minX, gridSize); x <= pos2GridIx(bbox.maxX, gridSize); x += 1) {\n for (var y = pos2GridIx(bbox.minY, gridSize); y <= pos2GridIx(bbox.maxY, gridSize); y += 1) {\n map[\"\".concat(x, \"|||\").concat(y)] = true;\n }\n }\n });\n return map;\n};\n/**\n * 方向角:计算从 p1 到 p2 的射线与水平线形成的夹角度数(顺时针从右侧0°转到该射线的角度)\n * @param p1 PolyPoint\n * @param p2 PolyPoint\n */\nvar getDirectionAngle = function getDirectionAngle(p1, p2) {\n var deltaX = p2.x - p1.x;\n var deltaY = p2.y - p1.y;\n if (deltaX || deltaY) {\n return Math.atan2(deltaY, deltaX);\n }\n return 0;\n};\n/**\n * 方向角的改变,取小于180度角\n * @param angle1\n * @param angle2\n */\nvar getAngleDiff = function getAngleDiff(angle1, angle2) {\n var directionChange = Math.abs(angle1 - angle2);\n return directionChange > Math.PI ? 2 * Math.PI - directionChange : directionChange;\n // return directionChange > 180 ? 360 - directionChange : directionChange;\n};\n// Path finder //\nvar estimateCost = function estimateCost(from, endPoints, distFunc) {\n var min = Infinity;\n for (var i = 0, len = endPoints.length; i < len; i++) {\n var cost = distFunc(from, endPoints[i]);\n if (cost < min) {\n min = cost;\n }\n }\n return min;\n};\n// 计算考虑 offset 后的 BBox 上的连接点\nvar getBoxPoints = function getBoxPoints(point,\n// 被 gridSize 格式化后的位置(anchorPoint)\noriPoint,\n// 未被 gridSize 格式化的位置(anchorPoint)\nnode,\n// 原始节点,用于获取 bbox\nanotherPoint,\n// 另一端被 gridSize 格式化后的位置\ncfg) {\n var points = [];\n // create-edge 生成边的过程中,endNode 为 null\n if (!node) {\n return [point];\n }\n var directions = cfg.directions,\n offset = cfg.offset;\n var bbox = node.getBBox();\n var isInside = oriPoint.x > bbox.minX && oriPoint.x < bbox.maxX && oriPoint.y > bbox.minY && oriPoint.y < bbox.maxY;\n var expandBBox = getExpandedBBox(bbox, offset);\n for (var i in expandBBox) {\n expandBBox[i] = pos2GridIx(expandBBox[i], cfg.gridSize);\n }\n if (isInside) {\n // 如果 anchorPoint 在节点内部,允许第一段线穿过节点\n for (var _i = 0, directions_1 = directions; _i < directions_1.length; _i++) {\n var dir = directions_1[_i];\n var bounds = [[{\n x: expandBBox.minX,\n y: expandBBox.minY\n }, {\n x: expandBBox.maxX,\n y: expandBBox.minY\n }], [{\n x: expandBBox.minX,\n y: expandBBox.minY\n }, {\n x: expandBBox.minX,\n y: expandBBox.maxY\n }], [{\n x: expandBBox.maxX,\n y: expandBBox.minY\n }, {\n x: expandBBox.maxX,\n y: expandBBox.maxY\n }], [{\n x: expandBBox.minX,\n y: expandBBox.maxY\n }, {\n x: expandBBox.maxX,\n y: expandBBox.maxY\n }]];\n for (var i = 0; i < 4; i++) {\n var boundLine = bounds[i];\n var insterctP_1 = Util.getLineIntersect(point, {\n x: point.x + dir.stepX * expandBBox.width,\n y: point.y + dir.stepY * expandBBox.height\n }, boundLine[0], boundLine[1]);\n if (insterctP_1 && !isSegmentCrossingBBox(point, insterctP_1, bbox)) {\n insterctP_1.id = \"\".concat(insterctP_1.x, \"|||\").concat(insterctP_1.y);\n points.push(insterctP_1);\n }\n }\n }\n return points;\n }\n // 如果 anchorPoint 在节点上,只有一个可选方向\n var insterctP = getExpandedBBoxPoint(expandBBox, point, anotherPoint);\n insterctP.id = \"\".concat(insterctP.x, \"|||\").concat(insterctP.y);\n return [insterctP];\n};\nvar getDirectionChange = function getDirectionChange(current, neighbor, cameFrom, scaleStartPoint) {\n var directionAngle = getDirectionAngle(current, neighbor);\n var currentCameFrom = cameFrom[current.id];\n if (!currentCameFrom) {\n var startAngle = getDirectionAngle(scaleStartPoint, current);\n return getAngleDiff(startAngle, directionAngle);\n }\n var prevDirectionAngle = getDirectionAngle({\n x: currentCameFrom.x,\n y: currentCameFrom.y\n }, current);\n return getAngleDiff(prevDirectionAngle, directionAngle);\n};\nvar getControlPoints = function getControlPoints(current, cameFrom, scaleStartPoint, endPoint, startPoint, scaleEndPoint, gridSize) {\n var controlPoints = [endPoint];\n var pointZero = endPoint;\n var currentId = current.id;\n var currentX = current.x;\n var currentY = current.y;\n var lastPoint = {\n x: currentX,\n y: currentY,\n id: currentId\n };\n if (getDirectionChange(lastPoint, scaleEndPoint, cameFrom, scaleStartPoint)) {\n pointZero = {\n x: scaleEndPoint.x === endPoint.x ? endPoint.x : lastPoint.x * gridSize,\n y: scaleEndPoint.y === endPoint.y ? endPoint.y : lastPoint.y * gridSize\n };\n controlPoints.unshift(pointZero);\n }\n var currentCameFrom = cameFrom[currentId];\n while (currentCameFrom && currentCameFrom.id !== currentId) {\n var point = {\n x: currentX,\n y: currentY,\n id: currentId\n };\n var prePoint = {\n x: currentCameFrom.x,\n y: currentCameFrom.y,\n id: currentCameFrom.id\n };\n var directionChange = getDirectionChange(prePoint, point, cameFrom, scaleStartPoint);\n if (directionChange) {\n pointZero = {\n x: prePoint.x === point.x ? pointZero.x : prePoint.x * gridSize,\n y: prePoint.y === point.y ? pointZero.y : prePoint.y * gridSize\n };\n controlPoints.unshift(pointZero);\n }\n currentId = prePoint.id;\n currentX = prePoint.x;\n currentY = prePoint.y;\n currentCameFrom = cameFrom[currentId];\n }\n // 和startNode对齐\n controlPoints[0].x = currentX === scaleStartPoint.x ? startPoint.x : pointZero.x;\n controlPoints[0].y = currentY === scaleStartPoint.y ? startPoint.y : pointZero.y;\n controlPoints.unshift(startPoint);\n return controlPoints;\n};\nexport var pathFinder = function pathFinder(startPoint, endPoint, startNode, endNode, routerCfg) {\n if (isNaN(startPoint.x) || isNaN(endPoint.x)) return [];\n var cfg = deepMix(defaultCfg, routerCfg);\n cfg.obstacles = cfg.obstacles || [];\n var penalties = cfg.penalties,\n gridSize = cfg.gridSize;\n var map = getObstacleMap(cfg.obstacles.concat([startNode, endNode]), gridSize, cfg.offset);\n var scaleStartPoint = {\n x: pos2GridIx(startPoint.x, gridSize),\n y: pos2GridIx(startPoint.y, gridSize)\n };\n var scaleEndPoint = {\n x: pos2GridIx(endPoint.x, gridSize),\n y: pos2GridIx(endPoint.y, gridSize)\n };\n startPoint.id = \"\".concat(scaleStartPoint.x, \"|||\").concat(scaleStartPoint.y);\n endPoint.id = \"\".concat(scaleEndPoint.x, \"|||\").concat(scaleEndPoint.y);\n var startPoints = getBoxPoints(scaleStartPoint, startPoint, startNode, scaleEndPoint, cfg);\n var endPoints = getBoxPoints(scaleEndPoint, endPoint, endNode, scaleStartPoint, cfg);\n startPoints.forEach(function (point) {\n delete map[point.id];\n });\n endPoints.forEach(function (point) {\n delete map[point.id];\n });\n var openSet = {};\n var closedSet = {};\n var cameFrom = {};\n // 从起点到当前点已产生的 cost, default: Infinity\n var gScore = {};\n // 起点经过当前点到达终点预估的 cost, default: Infinity\n var fScore = {};\n var sortedOpenSet = new SortedArray();\n // initialize\n for (var i = 0; i < startPoints.length; i++) {\n var firstStep = startPoints[i];\n openSet[firstStep.id] = firstStep;\n gScore[firstStep.id] = 0;\n fScore[firstStep.id] = estimateCost(firstStep, endPoints, cfg.distFunc);\n sortedOpenSet.add({\n id: firstStep.id,\n value: fScore[firstStep.id]\n });\n }\n var remainLoops = cfg.maximumLoops;\n var current, direction, neighbor, neighborCost, costFromStart, directionChange;\n var curCost = Infinity;\n var endPointMap = {};\n endPoints.forEach(function (point) {\n endPointMap[\"\".concat(point.x, \"|||\").concat(point.y)] = true;\n });\n Object.keys(openSet).forEach(function (key) {\n var id = openSet[key].id;\n if (fScore[id] <= curCost) {\n curCost = fScore[id];\n current = openSet[id];\n }\n });\n while (Object.keys(openSet).length > 0 && remainLoops > 0) {\n var minId = sortedOpenSet.minId((remainLoops + 1) % 30 === 0);\n if (minId) {\n current = openSet[minId];\n } else {\n break;\n }\n // 如果 fScore 最小的点就是终点\n if (endPointMap[\"\".concat(current.x, \"|||\").concat(current.y)]) {\n return getControlPoints(current, cameFrom, scaleStartPoint, endPoint, startPoint, scaleEndPoint, gridSize);\n }\n delete openSet[current.id];\n sortedOpenSet.remove(current.id);\n closedSet[current.id] = true;\n // 获取符合条件的下一步的候选连接点\n // 沿候选方向走一步\n for (var i = 0; i < cfg.directions.length; i++) {\n direction = cfg.directions[i];\n var neighborId = \"\".concat(Math.round(current.x) + direction.stepX, \"|||\").concat(Math.round(current.y) + direction.stepY);\n neighbor = {\n x: current.x + direction.stepX,\n y: current.y + direction.stepY,\n id: neighborId\n };\n if (closedSet[neighborId]) continue;\n directionChange = getDirectionChange(current, neighbor, cameFrom, scaleStartPoint);\n if (directionChange > cfg.maxAllowedDirectionChange) continue;\n if (map[neighborId]) continue; // 如果交叉则跳过\n // 将候选点加入 openSet, 并计算每个候选点的 cost\n if (!openSet[neighborId]) {\n openSet[neighborId] = neighbor;\n }\n var directionPenalties = penalties[directionChange];\n neighborCost = cfg.distFunc(current, neighbor) + (isNaN(directionPenalties) ? gridSize : directionPenalties);\n costFromStart = gScore[current.id] + neighborCost;\n var neighborGScore = gScore[neighborId];\n if (neighborGScore && costFromStart >= neighborGScore) {\n continue;\n }\n cameFrom[neighborId] = current;\n gScore[neighborId] = costFromStart;\n fScore[neighborId] = costFromStart + estimateCost(neighbor, endPoints, cfg.distFunc);\n sortedOpenSet.add({\n id: neighborId,\n value: fScore[neighborId]\n });\n }\n remainLoops -= 1;\n }\n return cfg.fallbackRoute(startPoint, endPoint, startNode, endNode, cfg);\n};","import { __assign } from \"tslib\";\nimport { mix, each, isArray, isString } from '@antv/util';\nimport { registerEdge, Util, BaseGlobal as Global } from '@antv/g6-core';\nimport { getPathWithBorderRadiusByPolyline, getPolylinePoints, removeRedundantPoint } from './polyline-util';\nimport { pathFinder } from './router';\n// 折线\nregisterEdge('polyline', {\n options: {\n color: Global.defaultEdge.color,\n size: Global.defaultEdge.size,\n style: {\n radius: 0,\n offset: 15,\n x: 0,\n y: 0,\n stroke: Global.defaultEdge.style.stroke,\n lineAppendWidth: Global.defaultEdge.style.lineAppendWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: Global.edgeLabel.style.fill,\n fontSize: Global.edgeLabel.style.fontSize,\n fontFamily: Global.windowFontFamily\n }\n },\n routeCfg: {\n obstacles: [],\n maxAllowedDirectionChange: Math.PI,\n maximumLoops: 500,\n gridSize: 10 // 指定精度\n },\n\n stateStyles: __assign({}, Global.edgeStateStyles)\n },\n shapeType: 'polyline',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var shapeStyle = this.getShapeStyle(cfg);\n if (shapeStyle.radius === 0) delete shapeStyle.radius;\n var keyShape = group.addShape('path', {\n className: 'edge-shape',\n name: 'edge-shape',\n attrs: shapeStyle\n });\n group['shapeMap']['edge-shape'] = keyShape;\n return keyShape;\n },\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = this.options.style;\n var strokeStyle = {\n stroke: cfg.color\n };\n var style = mix({}, defaultStyle, strokeStyle, cfg.style);\n cfg = this.getPathPoints(cfg);\n this.radius = style.radius;\n this.offset = style.offset;\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var controlPoints = this.getControlPoints(cfg);\n var points = [startPoint]; // 添加起始点\n // 添加控制点\n if (controlPoints) {\n points = points.concat(controlPoints);\n }\n // 添加结束点\n points.push(endPoint);\n var source = cfg.sourceNode;\n var target = cfg.targetNode;\n var radius = style.radius;\n var defaultRouteCfg = this.options.routeCfg;\n var routeCfg = mix({}, defaultRouteCfg, cfg.routeCfg);\n routeCfg.offset = style.offset;\n var path = this.getPath(points, source, target, radius, routeCfg);\n if (isArray(path) && path.length <= 1 || isString(path) && path.indexOf('L') === -1) {\n path = 'M0 0, L0 0';\n }\n if (isNaN(startPoint.x) || isNaN(startPoint.y) || isNaN(endPoint.x) || isNaN(endPoint.y)) {\n path = 'M0 0, L0 0';\n }\n var attrs = mix({}, Global.defaultEdge.style, style, {\n lineWidth: cfg.size,\n path: path\n });\n return attrs;\n },\n updateShapeStyle: function updateShapeStyle(cfg, item) {\n var group = item.getContainer();\n if (!item.isVisible()) return;\n var strokeStyle = {\n stroke: cfg.color\n };\n var shape = group['shapeMap']['edge-shape'] || group.find(function (element) {\n return element.get('className') === 'edge-shape';\n }) || item.getKeyShape();\n var size = cfg.size;\n cfg = this.getPathPoints(cfg);\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var controlPoints = this.getControlPoints(cfg); // || cfg.controlPoints;\n var points = [startPoint]; // 添加起始点\n // 添加控制点\n if (controlPoints) {\n points = points.concat(controlPoints);\n }\n // 添加结束点\n points.push(endPoint);\n var currentAttr = shape.attr();\n var previousStyle = mix({}, strokeStyle, currentAttr, cfg.style);\n var source = cfg.sourceNode;\n var target = cfg.targetNode;\n var radius = previousStyle.radius;\n var defaultRouteCfg = this.options.routeCfg;\n var routeCfg = mix({}, defaultRouteCfg, cfg.routeCfg);\n routeCfg.offset = previousStyle.offset;\n var path = this.getPath(points, source, target, radius, routeCfg);\n if (isArray(path) && path.length <= 1 || isString(path) && path.indexOf('L') === -1) {\n path = 'M0 0, L0 0';\n }\n if (isNaN(startPoint.x) || isNaN(startPoint.y) || isNaN(endPoint.x) || isNaN(endPoint.y)) {\n path = 'M0 0, L0 0';\n }\n if (currentAttr.endArrow && previousStyle.endArrow === false) {\n cfg.style.endArrow = {\n path: ''\n };\n }\n if (currentAttr.startArrow && previousStyle.startArrow === false) {\n cfg.style.startArrow = {\n path: ''\n };\n }\n var style = mix(strokeStyle, shape.attr(), {\n lineWidth: size,\n path: path\n }, cfg.style);\n if (shape) {\n shape.attr(style);\n }\n },\n getPath: function getPath(points, source, target, radius, routeCfg) {\n var offset = routeCfg.offset,\n obstacles = routeCfg.obstacles;\n var simple = routeCfg.simple;\n // 指定了控制点\n if (!offset || points.length > 2) {\n if (radius) {\n return getPathWithBorderRadiusByPolyline(points, radius);\n }\n var pathArray_1 = [];\n each(points, function (point, index) {\n if (index === 0) {\n pathArray_1.push(['M', point.x, point.y]);\n } else {\n pathArray_1.push(['L', point.x, point.y]);\n }\n });\n return pathArray_1;\n }\n // 未指定控制点\n if (simple !== false && !(obstacles === null || obstacles === void 0 ? void 0 : obstacles.length)) simple = true;\n var polylinePoints = simple ? getPolylinePoints(points[points.length - 1], points[0], target, source, offset) : pathFinder(points[0], points[points.length - 1], source, target, routeCfg);\n if (!polylinePoints || !polylinePoints.length) return 'M0 0, L0 0';\n if (radius) {\n var res_1 = getPathWithBorderRadiusByPolyline(polylinePoints, radius);\n return res_1;\n }\n // 去除连续同 x 不同 y 的中间点;去除连续同 y 不同 x 的中间点\n polylinePoints = removeRedundantPoint(polylinePoints);\n var res = Util.pointsToPolygon(polylinePoints);\n return res;\n }\n}, 'single-edge');","import Util from '../util';\nvar cloneEvent = Util.cloneEvent,\n isNaN = Util.isNaN;\nvar abs = Math.abs;\nvar DRAG_OFFSET = 10;\nvar ALLOW_EVENTS = ['shift', 'ctrl', 'alt', 'control'];\nexport default {\n getDefaultCfg: function getDefaultCfg() {\n return {\n direction: 'both',\n enableOptimize: false,\n // drag-canvas 可拖动的扩展范围,默认为 0,即最多可以拖动一屏的位置\n // 当设置的值大于 0 时,即拖动可以超过一屏\n // 当设置的值小于 0 时,相当于缩小了可拖动范围\n // 具体实例可参考:https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*IFfoS67_HssAAAAAAAAAAAAAARQnAQ\n scalableRange: 0,\n allowDragOnItem: false\n };\n },\n getEvents: function getEvents() {\n return {\n 'mousedown': 'onMouseDown',\n 'drag': 'onDragMove',\n 'dragend': 'onMouseUp',\n 'canvas:click': 'onMouseUp',\n 'keyup': 'onKeyUp',\n 'focus': 'onKeyUp',\n 'keydown': 'onKeyDown',\n 'touchstart': 'onTouchStart',\n 'touchmove': 'onTouchMove',\n 'touchend': 'onMouseUp'\n };\n },\n updateViewport: function updateViewport(e) {\n var origin = this.origin;\n var clientX = +e.clientX;\n var clientY = +e.clientY;\n if (isNaN(clientX) || isNaN(clientY)) {\n return;\n }\n var dx = clientX - origin.x;\n var dy = clientY - origin.y;\n if (this.get('direction') === 'x') {\n dy = 0;\n } else if (this.get('direction') === 'y') {\n dx = 0;\n }\n this.origin = {\n x: clientX,\n y: clientY\n };\n var width = this.graph.get('width');\n var height = this.graph.get('height');\n var graphCanvasBBox = this.graph.get('canvas').getCanvasBBox();\n var expandWidth = this.scalableRange;\n var expandHeight = this.scalableRange;\n // 若 scalableRange 是 0~1 的小数,则作为比例考虑\n if (expandWidth < 1 && expandWidth > -1) {\n expandWidth = width * expandWidth;\n expandHeight = height * expandHeight;\n }\n if (graphCanvasBBox.minX <= width + expandWidth && graphCanvasBBox.minX + dx > width + expandWidth || graphCanvasBBox.maxX + expandWidth >= 0 && graphCanvasBBox.maxX + expandWidth + dx < 0) {\n dx = 0;\n }\n if (graphCanvasBBox.minY <= height + expandHeight && graphCanvasBBox.minY + dy > height + expandHeight || graphCanvasBBox.maxY + expandHeight >= 0 && graphCanvasBBox.maxY + expandHeight + dy < 0) {\n dy = 0;\n }\n this.graph.translate(dx, dy);\n },\n onTouchStart: function onTouchStart(e) {\n var self = this;\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n // 如果是双指操作,不允许拖拽画布\n if (event1 && event2) {\n return;\n }\n e.preventDefault();\n this.mousedown = true;\n self.onDragStart(e);\n },\n onMouseDown: function onMouseDown(e) {\n this.mousedown = true;\n },\n onDragMove: function onDragMove(evt) {\n if (!this.mousedown) return;\n if (!this.dragstart) {\n // dragstart\n this.dragstart = true;\n this.onDragStart(evt);\n } else {\n // drag\n this.onDrag(evt);\n }\n },\n onDragStart: function onDragStart(e) {\n var self = this;\n var event = e.originalEvent;\n // TODO: 'name' doesn't exist on `IG6GraphEvent`, we should consider typing it so users get autocomplete and other benefits\n if (event && e.name !== 'touchstart' && event.button !== 0) {\n return;\n }\n if (e.name !== 'touchstart' && typeof window !== 'undefined' && window.event && !window.event.buttons && !window.event.button) {\n return;\n }\n if (!this.shouldBegin(e, this)) {\n return;\n }\n if (self.keydown) return;\n var target = e.target;\n var targetIsCanvas = target && target.isCanvas && target.isCanvas();\n if (!this.allowDragOnItem && !targetIsCanvas) return;\n self.origin = {\n x: e.clientX,\n y: e.clientY\n };\n self.dragging = false;\n if (this.enableOptimize) {\n // 拖动 canvas 过程中隐藏所有的边及label\n var graph = this.graph;\n var edges = graph.getEdges();\n for (var i = 0, len = edges.length; i < len; i++) {\n var shapes = edges[i].get('group').get('children');\n if (!shapes) continue;\n shapes.forEach(function (shape) {\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n });\n }\n var nodes = graph.getNodes();\n for (var j = 0, nodeLen = nodes.length; j < nodeLen; j++) {\n var container = nodes[j].getContainer();\n var children = container.get('children');\n for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {\n var child = children_1[_i];\n var isKeyShape = child.get('isKeyShape');\n if (!isKeyShape) {\n child.set('ori-visibility', child.get('ori-visibility') || child.get('visible'));\n child.hide();\n }\n }\n }\n }\n // 绑定浏览器右键监听,触发拖拽结束,结束拖拽时移除\n if (typeof window !== 'undefined') {\n var self_1 = this;\n this.handleDOMContextMenu = function (e) {\n return self_1.onMouseUp(e);\n };\n document.body.addEventListener('contextmenu', this.handleDOMContextMenu);\n }\n },\n onTouchMove: function onTouchMove(e) {\n var self = this;\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n // 如果是双指操作,不允许拖拽画布,结束拖拽\n if (event1 && event2) {\n this.onMouseUp(e);\n return;\n }\n e.preventDefault();\n self.onDrag(e);\n },\n onDrag: function onDrag(e) {\n if (!this.mousedown) return;\n var graph = this.graph;\n if (this.keydown) return;\n var target = e.target;\n var targetIsCanvas = target && target.isCanvas && target.isCanvas();\n if (!this.allowDragOnItem && !targetIsCanvas) return;\n e = cloneEvent(e);\n if (!this.origin) {\n return;\n }\n if (!this.dragging) {\n if (abs(this.origin.x - e.clientX) + abs(this.origin.y - e.clientY) < DRAG_OFFSET) {\n return;\n }\n if (this.shouldBegin(e, this)) {\n e.type = 'dragstart';\n graph.emit('canvas:dragstart', e);\n this.originPosition = {\n x: e.clientX,\n y: e.clientY\n };\n this.dragging = true;\n }\n } else {\n e.type = 'drag';\n graph.emit('canvas:drag', e);\n }\n if (this.shouldUpdate(e, this)) {\n this.updateViewport(e);\n }\n },\n onMouseUp: function onMouseUp(e) {\n var _a, _b;\n this.mousedown = false;\n this.dragstart = false;\n var graph = this.graph;\n if (this.keydown) return;\n var currentZoom = graph.getZoom();\n var modeController = graph.get('modeController');\n var zoomCanvas = (_b = (_a = modeController === null || modeController === void 0 ? void 0 : modeController.modes[modeController.mode]) === null || _a === void 0 ? void 0 : _a.filter(function (behavior) {\n return behavior.type === 'zoom-canvas';\n })) === null || _b === void 0 ? void 0 : _b[0];\n var optimizeZoom = zoomCanvas ? zoomCanvas.optimizeZoom || 0.1 : 0;\n if (this.enableOptimize) {\n // 拖动结束后显示所有的边\n var edges = graph.getEdges();\n for (var i = 0, len = edges.length; i < len; i++) {\n var shapes = edges[i].get('group').get('children');\n if (!shapes) continue;\n shapes.forEach(function (shape) {\n var oriVis = shape.get('ori-visibility');\n shape.set('ori-visibility', undefined);\n if (oriVis) shape.show();\n });\n }\n if (currentZoom > optimizeZoom) {\n var nodes = graph.getNodes();\n for (var j = 0, nodeLen = nodes.length; j < nodeLen; j++) {\n var container = nodes[j].getContainer();\n var children = container.get('children');\n for (var _i = 0, children_2 = children; _i < children_2.length; _i++) {\n var child = children_2[_i];\n var isKeyShape = child.get('isKeyShape');\n if (!isKeyShape) {\n var oriVis = child.get('ori-visibility');\n child.set('ori-visibility', undefined);\n if (oriVis) child.show();\n }\n }\n }\n }\n }\n if (!this.dragging) {\n this.origin = null;\n return;\n }\n e = cloneEvent(e);\n if (this.shouldEnd(e, this)) {\n this.updateViewport(e);\n }\n e.type = 'dragend';\n e.dx = e.clientX - this.originPosition.x;\n e.dy = e.clientY - this.originPosition.y;\n graph.emit('canvas:dragend', e);\n this.endDrag();\n // 结束拖拽时移除浏览器右键监听\n if (typeof window !== 'undefined') {\n document.body.removeEventListener('contextmenu', this.handleDOMContextMenu);\n }\n },\n endDrag: function endDrag() {\n this.origin = null;\n this.dragging = false;\n this.dragbegin = false;\n this.mousedown = false;\n this.dragstart = false;\n },\n onKeyDown: function onKeyDown(e) {\n var self = this;\n var code = e.key;\n if (!code) {\n return;\n }\n if (ALLOW_EVENTS.indexOf(code.toLowerCase()) > -1) {\n self.keydown = true;\n } else {\n self.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n this.keydown = false;\n this.origin = null;\n this.dragging = false;\n this.dragbegin = false;\n }\n};","import { __assign } from \"tslib\";\nimport { deepMix, clone, debounce } from '@antv/util';\nimport Global from '../global';\nexport default {\n getDefaultCfg: function getDefaultCfg() {\n return {\n updateEdge: true,\n delegateStyle: {},\n // 是否开启delegate\n enableDelegate: false,\n // 拖动节点过程中是否只改变 Combo 的大小,而不改变其结构\n onlyChangeComboSize: false,\n // 拖动过程中目标 combo 状态样式\n comboActiveState: '',\n selectedState: 'selected',\n enableOptimize: false,\n enableDebounce: false,\n enableStack: true\n };\n },\n getEvents: function getEvents() {\n return {\n 'node:mousedown': 'onMouseDown',\n 'drag': 'onDragMove',\n 'dragend': 'onDragEnd',\n 'combo:dragenter': 'onDragEnter',\n 'combo:dragleave': 'onDragLeave',\n 'combo:drop': 'onDropCombo',\n 'node:drop': 'onDropNode',\n 'canvas:drop': 'onDropCanvas',\n 'touchstart': 'onTouchStart',\n 'touchmove': 'onTouchMove',\n 'touchend': 'onDragEnd'\n };\n },\n validationCombo: function validationCombo(item) {\n if (!this.origin || !item || item.destroyed) {\n return false;\n }\n var type = item.getType();\n if (type !== 'combo') {\n return false;\n }\n return true;\n },\n onTouchStart: function onTouchStart(evt) {\n if (!evt.item) return;\n var self = this;\n try {\n var touches = evt.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n if (event1 && event2) {\n return;\n }\n evt.preventDefault();\n } catch (e) {\n console.warn('Touch original event not exist!');\n }\n this.mousedown = {\n item: evt.item,\n target: evt.target\n };\n this.dragstart = true;\n self.onDragStart(evt);\n },\n onTouchMove: function onTouchMove(e) {\n var self = this;\n try {\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n if (event1 && event2) {\n self.onDragEnd(e);\n return;\n }\n e.preventDefault();\n } catch (e) {\n console.warn('Touch original event not exist!');\n }\n self.onDrag(e);\n },\n /**\n * cache the manipulated item and target, since drag and dragend are global events but not node:*\n * @param evt event param\n */\n onMouseDown: function onMouseDown(evt) {\n this.mousedown = {\n item: evt.item,\n target: evt.target\n };\n },\n /**\n * trigger dragstart/drag by mousedown and drag events\n * @param evt event param\n */\n onDragMove: function onDragMove(evt) {\n var _a, _b;\n if (((_b = (_a = evt.item) === null || _a === void 0 ? void 0 : _a.getType) === null || _b === void 0 ? void 0 : _b.call(_a)) !== 'node') {\n this.onDragEnd();\n return;\n }\n if (!this.mousedown) return;\n if (!this.dragstart) {\n // dragstart\n this.dragstart = true;\n this.onDragStart(evt);\n } else {\n // drag\n this.onDrag(__assign(__assign({}, evt), this.mousedown));\n }\n },\n /**\n * 开始拖动节点\n * @param evt\n */\n onDragStart: function onDragStart(evt) {\n var _this = this;\n this.currentShouldEnd = true;\n if (!this.shouldBegin(__assign(__assign({}, evt), this.mousedown), this)) {\n return;\n }\n var _a = this.mousedown,\n item = _a.item,\n target = _a.target;\n if (!item || item.destroyed || item.hasLocked()) {\n return;\n }\n // 拖动时,设置拖动元素的 capture 为false,则不拾取拖动的元素\n var group = item.getContainer();\n group.set('capture', false);\n if (!this.cachedCaptureItems) this.cachedCaptureItems = [];\n this.cachedCaptureItems.push(item);\n // 如果拖动的target 是linkPoints / anchorPoints 则不允许拖动\n if (target) {\n var isAnchorPoint = target.get('isAnchorPoint');\n if (isAnchorPoint) {\n return;\n }\n }\n var graph = this.graph;\n this.targets = [];\n // 将节点拖入到指定的 Combo\n this.targetCombo = null;\n // 获取所有选中的元素\n var nodes = graph.findAllByState('node', this.selectedState);\n var currentNodeId = item.get('id');\n // 当前拖动的节点是否是选中的节点\n var dragNodes = nodes.filter(function (node) {\n var nodeId = node.get('id');\n return currentNodeId === nodeId;\n });\n // 只拖动当前节点\n if (dragNodes.length === 0) {\n this.targets.push(item);\n } else if (nodes.length > 1) {\n // 拖动多个节点\n nodes.forEach(function (node) {\n var locked = node.hasLocked();\n if (!locked) {\n _this.targets.push(node);\n }\n });\n } else {\n this.targets.push(item);\n }\n if (this.graph.get('enabledStack') && this.enableStack) {\n var beforeDragNodes_1 = [];\n this.targets.forEach(function (t) {\n var _a = t.getModel(),\n x = _a.x,\n y = _a.y,\n id = _a.id;\n beforeDragNodes_1.push({\n x: x,\n y: y,\n id: id\n });\n });\n this.set('beforeDragNodes', beforeDragNodes_1);\n }\n this.hidenEdge = {};\n if (this.get('updateEdge') && this.enableOptimize && !this.enableDelegate) {\n this.targets.forEach(function (node) {\n var edges = node.getEdges();\n edges.forEach(function (edge) {\n if (!edge.isVisible()) return;\n _this.hidenEdge[edge.getID()] = true;\n edge.hide();\n });\n });\n }\n this.origin = {\n x: evt.x,\n y: evt.y\n };\n this.point = {};\n this.originPoint = {};\n // 绑定浏览器右键监听,触发拖拽结束,结束拖拽时移除\n if (typeof window !== 'undefined') {\n var self_1 = this;\n this.handleDOMContextMenu = function () {\n return self_1.onDragEnd();\n };\n document.body.addEventListener('contextmenu', this.handleDOMContextMenu);\n }\n },\n /**\n * 持续拖动节点\n * @param evt\n */\n onDrag: function onDrag(evt) {\n var _this = this;\n if (!this.mousedown || !this.origin) return;\n if (!this.shouldUpdate(evt, this)) return;\n if (this.get('enableDelegate')) {\n this.updateDelegate(evt);\n } else {\n if (this.enableDebounce) this.debounceUpdate({\n targets: this.targets,\n graph: this.graph,\n point: this.point,\n origin: this.origin,\n evt: evt,\n updateEdge: this.get('updateEdge')\n });else this.targets.map(function (target) {\n _this.update(target, evt);\n });\n }\n },\n /**\n * 拖动结束,设置拖动元素capture为true,更新元素位置,如果是拖动涉及到 combo,则更新 combo 结构\n * @param evt\n */\n onDragEnd: function onDragEnd(evt) {\n var _this = this;\n var _a;\n this.mousedown = false;\n this.dragstart = false;\n if (!this.origin) {\n return;\n }\n // 拖动结束后,设置拖动元素 group 的 capture 为 true,允许拾取拖动元素\n (_a = this.cachedCaptureItems) === null || _a === void 0 ? void 0 : _a.forEach(function (item) {\n var group = item.getContainer();\n group.set('capture', true);\n });\n this.cachedCaptureItems = [];\n if (this.delegateRect) {\n this.delegateRect.remove();\n this.delegateRect = null;\n }\n if (this.get('updateEdge') && this.enableOptimize && !this.enableDelegate) {\n this.targets.forEach(function (node) {\n var edges = node.getEdges();\n edges.forEach(function (edge) {\n if (_this.hidenEdge[edge.getID()]) edge.show();\n edge.refresh();\n });\n });\n }\n this.hidenEdge = {};\n var graph = this.graph;\n // 拖动结束后,入栈\n if (graph.get('enabledStack') && this.enableStack) {\n var stackData_1 = {\n before: {\n nodes: [],\n edges: [],\n combos: []\n },\n after: {\n nodes: [],\n edges: [],\n combos: []\n }\n };\n this.get('beforeDragNodes').forEach(function (model) {\n stackData_1.before.nodes.push(model);\n });\n this.targets.forEach(function (target) {\n var _a = target.getModel(),\n x = _a.x,\n y = _a.y,\n id = _a.id;\n stackData_1.after.nodes.push({\n x: x,\n y: y,\n id: id\n });\n });\n graph.pushStack('update', clone(stackData_1));\n }\n // 拖动结束后emit事件,将当前操作的节点抛出去,目标节点为null\n graph.emit('dragnodeend', {\n items: this.targets,\n targetItem: null\n });\n this.point = {};\n this.origin = null;\n this.originPoint = {};\n this.targets.length = 0;\n this.targetCombo = null;\n // 结束拖拽时移除浏览器右键监听\n if (typeof window !== 'undefined') {\n document.body.removeEventListener('contextmenu', this.handleDOMContextMenu);\n }\n },\n /**\n * 拖动过程中将节点放置到 combo 上\n * @param evt\n */\n onDropCombo: function onDropCombo(evt) {\n var item = evt.item;\n this.currentShouldEnd = this.shouldEnd(evt, item, this);\n // 若不允许结束,则将节点位置设置回初识位置。后面的逻辑仍需要执行\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.currentShouldEnd || !this.validationCombo(item)) return;\n var graph = this.graph;\n if (this.comboActiveState) {\n graph.setItemState(item, this.comboActiveState, false);\n }\n this.targetCombo = item;\n // 拖动结束后是动态改变 Combo 大小还是将节点从 Combo 中删除\n if (this.onlyChangeComboSize) {\n // 拖动节点结束后,动态改变 Combo 的大小\n graph.updateCombos();\n } else {\n var targetComboModel_1 = item.getModel();\n this.targets.map(function (node) {\n var nodeModel = node.getModel();\n if (nodeModel.comboId !== targetComboModel_1.id) {\n graph.updateComboTree(node, targetComboModel_1.id);\n }\n });\n graph.updateCombo(item);\n }\n // 将节点拖动到 combo 上面,emit事件抛出当前操作的节点及目标 combo\n graph.emit('dragnodeend', {\n items: this.targets,\n targetItem: this.targetCombo\n });\n },\n onDropCanvas: function onDropCanvas(evt) {\n var graph = this.graph;\n this.currentShouldEnd = this.shouldEnd(evt, undefined, this);\n // 若不允许结束,则将节点位置设置回初识位置。后面的逻辑仍需要执行\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.targets || this.targets.length === 0 || !this.currentShouldEnd) return;\n if (this.onlyChangeComboSize) {\n // 拖动节点结束后,动态改变 Combo 的大小\n graph.updateCombos();\n } else {\n this.targets.map(function (node) {\n // 拖动的节点有 comboId,即是从其他 combo 中拖出时才处理\n var model = node.getModel();\n if (model.comboId) {\n graph.updateComboTree(node);\n }\n });\n }\n },\n /**\n * 拖动放置到某个 combo 中的子 node 上\n * @param evt\n */\n onDropNode: function onDropNode(evt) {\n if (!this.targets || this.targets.length === 0) return;\n var self = this;\n var item = evt.item;\n var graph = self.graph;\n var comboId = item.getModel().comboId;\n var newParentCombo = comboId ? graph.findById(comboId) : undefined;\n this.currentShouldEnd = this.shouldEnd(evt, newParentCombo, this);\n // 若不允许结束,则将节点位置设置回初识位置。后面的逻辑仍需要执行\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.currentShouldEnd) return;\n if (this.onlyChangeComboSize) {\n graph.updateCombos();\n } else if (comboId) {\n var combo = graph.findById(comboId);\n if (self.comboActiveState) {\n graph.setItemState(combo, self.comboActiveState, false);\n }\n this.targets.map(function (node) {\n var nodeModel = node.getModel();\n if (comboId !== nodeModel.comboId) {\n graph.updateComboTree(node, comboId);\n }\n });\n graph.updateCombo(combo);\n } else {\n this.targets.map(function (node) {\n var model = node.getModel();\n if (model.comboId) {\n graph.updateComboTree(node);\n }\n });\n }\n // 将节点拖动到另外个节点上面,emit 事件抛出当前操作的节点及目标节点\n graph.emit('dragnodeend', {\n items: this.targets,\n targetItem: item\n });\n },\n /**\n * 将节点拖入到 Combo 中\n * @param evt\n */\n onDragEnter: function onDragEnter(evt) {\n var item = evt.item;\n if (!this.validationCombo(item)) return;\n var graph = this.graph;\n if (this.comboActiveState) {\n graph.setItemState(item, this.comboActiveState, true);\n }\n },\n /**\n * 将节点从 Combo 中拖出\n * @param evt\n */\n onDragLeave: function onDragLeave(evt) {\n var item = evt.item;\n if (!this.validationCombo(item)) return;\n var graph = this.graph;\n if (this.comboActiveState) {\n graph.setItemState(item, this.comboActiveState, false);\n }\n },\n updatePositions: function updatePositions(evt, restore) {\n var _this = this;\n if (!this.targets || this.targets.length === 0) return;\n // 当开启 delegate 时,拖动结束后需要更新所有已选中节点的位置\n if (this.get('enableDelegate')) {\n if (this.enableDebounce) this.debounceUpdate({\n targets: this.targets,\n graph: this.graph,\n point: this.point,\n origin: this.origin,\n evt: evt,\n updateEdge: this.get('updateEdge'),\n updateFunc: this.update\n });else if (!restore) this.targets.map(function (node) {\n return _this.update(node, evt);\n });\n } else this.targets.map(function (node) {\n return _this.update(node, evt, restore);\n });\n },\n /**\n * 更新节点\n * @param item 拖动的节点实例\n * @param evt\n */\n update: function update(item, evt, restore) {\n var origin = this.origin;\n var model = item.get('model');\n var nodeId = item.get('id');\n if (!this.point[nodeId]) {\n this.point[nodeId] = {\n x: model.x || 0,\n y: model.y || 0\n };\n }\n var x = evt.x - origin.x + this.point[nodeId].x;\n var y = evt.y - origin.y + this.point[nodeId].y;\n if (restore) {\n x += origin.x - evt.x;\n y += origin.y - evt.y;\n }\n var pos = {\n x: x,\n y: y\n };\n if (this.get('updateEdge')) {\n this.graph.updateItem(item, pos, false);\n } else {\n item.updatePosition(pos);\n }\n },\n /**\n * 限流更新节点\n * @param item 拖动的节点实例\n * @param evt\n */\n debounceUpdate: debounce(function (event) {\n var targets = event.targets,\n graph = event.graph,\n point = event.point,\n origin = event.origin,\n evt = event.evt,\n updateEdge = event.updateEdge,\n updateFunc = event.updateFunc;\n targets.map(function (item) {\n var model = item.get('model');\n var nodeId = item.get('id');\n if (!point[nodeId]) {\n point[nodeId] = {\n x: model.x || 0,\n y: model.y || 0\n };\n }\n var x = evt.x - origin.x + point[nodeId].x;\n var y = evt.y - origin.y + point[nodeId].y;\n var pos = {\n x: x,\n y: y\n };\n if (updateEdge) {\n graph.updateItem(item, pos, false);\n } else {\n item.updatePosition(pos);\n }\n });\n }, 50, true),\n /**\n * 更新拖动元素时的delegate\n * @param {Event} evt 事件句柄\n * @param {number} x 拖动单个元素时候的x坐标\n * @param {number} y 拖动单个元素时候的y坐标\n */\n updateDelegate: function updateDelegate(evt) {\n var graph = this.graph;\n if (!this.delegateRect) {\n // 拖动多个\n var parent_1 = graph.get('group');\n var attrs = deepMix({}, Global.delegateStyle, this.delegateStyle);\n var _a = this.calculationGroupPosition(evt),\n cx = _a.x,\n cy = _a.y,\n width = _a.width,\n height = _a.height,\n minX = _a.minX,\n minY = _a.minY;\n this.originPoint = {\n x: cx,\n y: cy,\n width: width,\n height: height,\n minX: minX,\n minY: minY\n };\n // model上的x, y是相对于图形中心的,delegateShape是g实例,x,y是绝对坐标\n this.delegateRect = parent_1.addShape('rect', {\n attrs: __assign({\n width: width,\n height: height,\n x: cx,\n y: cy\n }, attrs),\n name: 'rect-delegate-shape'\n });\n this.delegate = this.delegateRect;\n this.delegateRect.set('capture', false);\n } else {\n var clientX = evt.x - this.origin.x + this.originPoint.minX;\n var clientY = evt.y - this.origin.y + this.originPoint.minY;\n this.delegateRect.attr({\n x: clientX,\n y: clientY\n });\n }\n },\n /**\n * 计算delegate位置,包括左上角左边及宽度和高度\n * @memberof ItemGroup\n * @return {object} 计算出来的delegate坐标信息及宽高\n */\n calculationGroupPosition: function calculationGroupPosition(evt) {\n var nodes = this.targets;\n if (nodes.length === 0) {\n nodes.push(evt.item);\n }\n var minx = Infinity;\n var maxx = -Infinity;\n var miny = Infinity;\n var maxy = -Infinity;\n // 获取已节点的所有最大最小x y值\n for (var i = 0; i < nodes.length; i++) {\n var element = nodes[i];\n var bbox = element.getBBox();\n var minX = bbox.minX,\n minY = bbox.minY,\n maxX = bbox.maxX,\n maxY = bbox.maxY;\n if (minX < minx) {\n minx = minX;\n }\n if (minY < miny) {\n miny = minY;\n }\n if (maxX > maxx) {\n maxx = maxX;\n }\n if (maxY > maxy) {\n maxy = maxY;\n }\n }\n var x = Math.floor(minx);\n var y = Math.floor(miny);\n var width = Math.ceil(maxx) - Math.floor(minx);\n var height = Math.ceil(maxy) - Math.floor(miny);\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n minX: minx,\n minY: miny\n };\n }\n};","import { throttle } from '@antv/util';\nexport default {\n getDefaultCfg: function getDefaultCfg() {\n return {\n // 可选 mouseenter || click\n // 选择 click 会监听 touch,mouseenter 不会监听\n trigger: 'mouseenter',\n activeState: 'active',\n inactiveState: 'inactive',\n resetSelected: false,\n shouldUpdate: function shouldUpdate() {\n return true;\n }\n };\n },\n getEvents: function getEvents() {\n if (this.get('trigger') === 'mouseenter') {\n return {\n 'node:mouseenter': 'setAllItemStates',\n 'combo:mouseenter': 'setAllItemStates',\n 'node:mouseleave': 'clearActiveState',\n 'combo:mouseleave': 'clearActiveState'\n };\n }\n return {\n 'node:click': 'setAllItemStates',\n 'combo:click': 'setAllItemStates',\n 'canvas:click': 'clearActiveState',\n 'node:touchstart': 'setOnTouchStart',\n 'combo:touchstart': 'setOnTouchStart',\n 'canvas:touchstart': 'clearOnTouchStart'\n };\n },\n setOnTouchStart: function setOnTouchStart(e) {\n var self = this;\n try {\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n if (event1 && event2) {\n return;\n }\n e.preventDefault();\n } catch (e) {\n console.warn('Touch original event not exist!');\n }\n self.setAllItemStates(e);\n },\n clearOnTouchStart: function clearOnTouchStart(e) {\n var self = this;\n try {\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n if (event1 && event2) {\n return;\n }\n e.preventDefault();\n } catch (e) {\n console.warn('Touch original event not exist!');\n }\n self.clearActiveState(e);\n },\n setAllItemStates: function setAllItemStates(e) {\n clearTimeout(this.timer);\n this.throttleSetAllItemStates(e, this);\n },\n clearActiveState: function clearActiveState(e) {\n var _this = this;\n // avoid clear state frequently, it costs a lot since all the items' states on the graph need to be cleared\n this.timer = setTimeout(function () {\n _this.throttleClearActiveState(e, _this);\n }, 50);\n },\n throttleSetAllItemStates: throttle(function (e, self) {\n var item = e.item;\n var graph = self.graph;\n if (!graph || graph.destroyed) return;\n self.item = item;\n if (!self.shouldUpdate(e.item, {\n event: e,\n action: 'activate'\n }, self)) {\n return;\n }\n var activeState = self.activeState;\n var inactiveState = self.inactiveState;\n var nodes = graph.getNodes();\n var combos = graph.getCombos();\n var edges = graph.getEdges();\n var vEdges = graph.get('vedges');\n var nodeLength = nodes.length;\n var comboLength = combos.length;\n var edgeLength = edges.length;\n var vEdgeLength = vEdges.length;\n var inactiveItems = self.inactiveItems || {};\n var activeItems = self.activeItems || {};\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n var nodeId = node.getID();\n var hasSelected = node.hasState('selected');\n if (self.resetSelected) {\n if (hasSelected) {\n graph.setItemState(node, 'selected', false);\n }\n }\n if (activeItems[nodeId]) {\n graph.setItemState(node, activeState, false);\n delete activeItems[nodeId];\n }\n if (inactiveState && !inactiveItems[nodeId]) {\n graph.setItemState(node, inactiveState, true);\n inactiveItems[nodeId] = node;\n }\n }\n for (var i = 0; i < comboLength; i++) {\n var combo = combos[i];\n var comboId = combo.getID();\n var hasSelected = combo.hasState('selected');\n if (self.resetSelected) {\n if (hasSelected) {\n graph.setItemState(combo, 'selected', false);\n }\n }\n if (activeItems[comboId]) {\n graph.setItemState(combo, activeState, false);\n delete activeItems[comboId];\n }\n if (inactiveState && !inactiveItems[comboId]) {\n graph.setItemState(combo, inactiveState, true);\n inactiveItems[comboId] = combo;\n }\n }\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var edgeId = edge.getID();\n if (activeItems[edgeId]) {\n graph.setItemState(edge, activeState, false);\n delete activeItems[edgeId];\n }\n if (inactiveState && !inactiveItems[edgeId]) {\n graph.setItemState(edge, inactiveState, true);\n inactiveItems[edgeId] = edge;\n }\n }\n for (var i = 0; i < vEdgeLength; i++) {\n var vEdge = vEdges[i];\n var vEdgeId = vEdge.getID();\n if (activeItems[vEdgeId]) {\n graph.setItemState(vEdge, activeState, false);\n delete activeItems[vEdgeId];\n }\n if (inactiveState && !inactiveItems[vEdgeId]) {\n graph.setItemState(vEdge, inactiveState, true);\n inactiveItems[vEdgeId] = vEdge;\n }\n }\n if (inactiveState) {\n graph.setItemState(item, inactiveState, false);\n delete inactiveItems[item.getID()];\n }\n if (!activeItems[item.getID()]) {\n graph.setItemState(item, activeState, true);\n activeItems[item.getID()] = item;\n }\n var rEdges = item.getEdges();\n var rEdgeLegnth = rEdges.length;\n for (var i = 0; i < rEdgeLegnth; i++) {\n var edge = rEdges[i];\n var edgeId = edge.getID();\n var otherEnd = void 0;\n if (edge.getSource() === item) {\n otherEnd = edge.getTarget();\n } else {\n otherEnd = edge.getSource();\n }\n var otherEndId = otherEnd.getID();\n if (inactiveState && inactiveItems[otherEndId]) {\n graph.setItemState(otherEnd, inactiveState, false);\n delete inactiveItems[otherEndId];\n }\n if (!activeItems[otherEndId]) {\n graph.setItemState(otherEnd, activeState, true);\n activeItems[otherEndId] = otherEnd;\n }\n if (inactiveItems[edgeId]) {\n graph.setItemState(edge, inactiveState, false);\n delete inactiveItems[edgeId];\n }\n if (!activeItems[edgeId]) {\n graph.setItemState(edge, activeState, true);\n activeItems[edgeId] = edge;\n }\n edge.toFront();\n }\n self.activeItems = activeItems;\n self.inactiveItems = inactiveItems;\n graph.emit('afteractivaterelations', {\n item: e.item,\n action: 'activate'\n });\n }, 50, {\n trailing: true,\n leading: true\n }),\n throttleClearActiveState: throttle(function (e, self) {\n var graph = self.get('graph');\n if (!graph || graph.destroyed) return;\n if (!self.shouldUpdate(e.item, {\n event: e,\n action: 'deactivate'\n }, self)) return;\n var activeState = self.activeState;\n var inactiveState = self.inactiveState;\n var activeItems = self.activeItems || {};\n var inactiveItems = self.inactiveItems || {};\n Object.values(activeItems).forEach(function (item) {\n graph.clearItemStates(item, activeState);\n });\n Object.values(inactiveItems).forEach(function (item) {\n graph.clearItemStates(item, inactiveState);\n });\n self.activeItems = {};\n self.inactiveItems = {};\n graph.emit('afteractivaterelations', {\n item: e.item || self.get('item'),\n action: 'deactivate'\n });\n }, 50, {\n trailing: true,\n leading: true\n })\n};","var min = Math.min,\n max = Math.max,\n abs = Math.abs;\nvar DEFAULT_TRIGGER = 'shift';\nvar ALLOW_EVENTS = ['drag', 'shift', 'ctrl', 'alt', 'control'];\nexport default {\n getDefaultCfg: function getDefaultCfg() {\n return {\n brushStyle: {\n fill: '#EEF6FF',\n fillOpacity: 0.4,\n stroke: '#DDEEFE',\n lineWidth: 1\n },\n onSelect: function onSelect() {},\n onDeselect: function onDeselect() {},\n selectedState: 'selected',\n trigger: DEFAULT_TRIGGER,\n includeEdges: true,\n includeCombos: false,\n selectedEdges: [],\n selectedNodes: [],\n selectedCombos: []\n };\n },\n getEvents: function getEvents() {\n // 检测输入是否合法\n if (!(ALLOW_EVENTS.indexOf(this.trigger.toLowerCase()) > -1)) {\n this.trigger = DEFAULT_TRIGGER;\n console.warn(\"Behavior brush-select 的 trigger 参数不合法,请输入 'drag'、'shift'、'ctrl' 或 'alt'\");\n }\n if (this.trigger === 'drag') {\n return {\n 'dragstart': 'onMouseDown',\n 'drag': 'onMouseMove',\n 'dragend': 'onMouseUp',\n 'canvas:click': 'clearStates'\n };\n }\n return {\n 'dragstart': 'onMouseDown',\n 'drag': 'onMouseMove',\n 'dragend': 'onMouseUp',\n 'canvas:click': 'clearStates',\n 'keyup': 'onKeyUp',\n 'keydown': 'onKeyDown'\n };\n },\n onMouseDown: function onMouseDown(e) {\n // 按在node上面拖动时候不应该是框选\n var item = e.item;\n var brush = this.brush;\n if (item) {\n return;\n }\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n if (this.selectedNodes && this.selectedNodes.length !== 0) {\n this.clearStates();\n }\n if (!brush) {\n brush = this.createBrush();\n }\n this.originPoint = {\n x: e.canvasX,\n y: e.canvasY\n };\n brush.attr({\n width: 0,\n height: 0\n });\n brush.show();\n this.dragging = true;\n },\n onMouseMove: function onMouseMove(e) {\n if (!this.dragging) {\n return;\n }\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n this.updateBrush(e);\n },\n onMouseUp: function onMouseUp(e) {\n var graph = this.graph;\n // TODO: 触发了 canvas:click 导致 clearStates\n if (!this.brush && !this.dragging) {\n return;\n }\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n this.brush.remove(true); // remove and destroy\n this.brush = null;\n this.getSelectedNodes(e);\n this.dragging = false;\n },\n clearStates: function clearStates() {\n var _a = this,\n graph = _a.graph,\n selectedState = _a.selectedState;\n var nodes = graph.findAllByState('node', selectedState);\n var edges = graph.findAllByState('edge', selectedState);\n var combos = graph.findAllByState('combo', selectedState);\n nodes.forEach(function (node) {\n return graph.setItemState(node, selectedState, false);\n });\n edges.forEach(function (edge) {\n return graph.setItemState(edge, selectedState, false);\n });\n combos.forEach(function (combo) {\n return graph.setItemState(combo, selectedState, false);\n });\n this.selectedNodes = [];\n this.selectedEdges = [];\n this.selectedCombos = [];\n if (this.onDeselect) {\n this.onDeselect(this.selectedNodes, this.selectedEdges, this.selectedCombos);\n }\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: [],\n edges: [],\n combos: []\n },\n select: false\n });\n },\n isBBoxCenterInRect: function isBBoxCenterInRect(item, left, right, top, bottom) {\n var bbox = item.getBBox();\n return bbox.centerX >= left && bbox.centerX <= right && bbox.centerY >= top && bbox.centerY <= bottom;\n },\n getSelectedNodes: function getSelectedNodes(e) {\n var _this = this;\n var _a = this,\n graph = _a.graph,\n originPoint = _a.originPoint,\n shouldUpdate = _a.shouldUpdate,\n isBBoxCenterInRect = _a.isBBoxCenterInRect;\n var state = this.selectedState;\n var p1 = {\n x: e.x,\n y: e.y\n };\n var p2 = graph.getPointByCanvas(originPoint.x, originPoint.y);\n var left = min(p1.x, p2.x);\n var right = max(p1.x, p2.x);\n var top = min(p1.y, p2.y);\n var bottom = max(p1.y, p2.y);\n var selectedNodes = [];\n var selectedIds = [];\n graph.getNodes().forEach(function (node) {\n if (node.isVisible() &&\n // 隐藏节点不能被选中\n isBBoxCenterInRect(node, left, right, top, bottom) && shouldUpdate(node, 'select', _this)) {\n selectedNodes.push(node);\n var model = node.getModel();\n selectedIds.push(model.id);\n graph.setItemState(node, state, true);\n }\n });\n var selectedEdges = [];\n if (this.includeEdges) {\n // 选中边,边的source和target都在选中的节点中时才选中\n selectedNodes.forEach(function (node) {\n var edges = node.getOutEdges();\n edges.forEach(function (edge) {\n if (!edge.isVisible()) return; // 隐藏边不能够被选中\n var model = edge.getModel();\n var source = model.source,\n target = model.target;\n if (selectedIds.includes(source) && selectedIds.includes(target) && shouldUpdate(edge, 'select', _this)) {\n selectedEdges.push(edge);\n graph.setItemState(edge, _this.selectedState, true);\n }\n });\n });\n }\n var selectedCombos = [];\n if (this.includeCombos) {\n graph.getCombos().forEach(function (combo) {\n if (combo.isVisible() &&\n // 隐藏节点不能被选中\n isBBoxCenterInRect(combo, left, right, top, bottom) && shouldUpdate(combo, 'select', _this)) {\n selectedCombos.push(combo);\n var model = combo.getModel();\n selectedIds.push(model.id);\n graph.setItemState(combo, state, true);\n }\n });\n }\n this.selectedEdges = selectedEdges;\n this.selectedNodes = selectedNodes;\n this.selectedCombos = selectedCombos;\n if (this.onSelect) {\n this.onSelect(selectedNodes, selectedEdges, selectedCombos);\n }\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: selectedNodes,\n edges: selectedEdges,\n combos: selectedCombos\n },\n select: true\n });\n },\n createBrush: function createBrush() {\n var self = this;\n var brush = self.graph.get('canvas').addShape('rect', {\n attrs: self.brushStyle,\n capture: false,\n name: 'brush-shape'\n });\n this.brush = brush;\n this.delegate = brush;\n return brush;\n },\n updateBrush: function updateBrush(e) {\n var originPoint = this.originPoint;\n this.brush.attr({\n width: abs(e.canvasX - originPoint.x),\n height: abs(e.canvasY - originPoint.y),\n x: min(e.canvasX, originPoint.x),\n y: min(e.canvasY, originPoint.y)\n });\n },\n onKeyDown: function onKeyDown(e) {\n var code = e.key;\n if (!code) {\n return;\n }\n var triggerLowerCase = this.trigger.toLowerCase();\n var codeLowerCase = code.toLowerCase();\n // 按住 control 键时,允许用户设置 trigger 为 ctrl\n if (codeLowerCase === triggerLowerCase || codeLowerCase === 'control' && triggerLowerCase === 'ctrl' || codeLowerCase === 'ctrl' && triggerLowerCase === 'control') {\n this.keydown = true;\n } else {\n this.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n if (this.brush) {\n // 清除所有选中状态后,设置拖得动状态为false,并清除框选的brush\n this.brush.remove(true);\n this.brush = null;\n this.dragging = false;\n }\n this.keydown = false;\n }\n};","import { each } from '@antv/util';\nvar DEFAULT_TRIGGER = 'shift';\nvar ALLOW_EVENTS = ['shift', 'ctrl', 'alt', 'control'];\nexport default {\n getDefaultCfg: function getDefaultCfg() {\n return {\n multiple: true,\n trigger: DEFAULT_TRIGGER,\n selectedState: 'selected',\n selectNode: true,\n selectEdge: false,\n selectCombo: true\n };\n },\n getEvents: function getEvents() {\n var self = this;\n // 检测输入是否合法\n if (!(ALLOW_EVENTS.indexOf(self.trigger.toLowerCase()) > -1)) {\n self.trigger = DEFAULT_TRIGGER;\n // eslint-disable-next-line no-console\n console.warn(\"Behavior click-select 的 trigger 参数不合法,请输入 'drag'、'shift'、'ctrl' 或 'alt'\");\n }\n if (!self.multiple) {\n return {\n 'node:click': 'onClick',\n 'combo:click': 'onClick',\n 'edge:click': 'onClick',\n 'canvas:click': 'onCanvasClick'\n };\n }\n return {\n 'node:click': 'onClick',\n 'combo:click': 'onClick',\n 'edge:click': 'onClick',\n 'canvas:click': 'onCanvasClick',\n keyup: 'onKeyUp',\n keydown: 'onKeyDown'\n };\n },\n onClick: function onClick(evt) {\n var self = this;\n var item = evt.item;\n if (!item || item.destroyed) {\n return;\n }\n var type = item.getType();\n var graph = self.graph,\n keydown = self.keydown,\n multiple = self.multiple,\n shouldUpdate = self.shouldUpdate,\n shouldBegin = self.shouldBegin;\n if (!shouldBegin(evt, self)) {\n return;\n }\n // allow to select multiple nodes but did not press a key || do not allow the select multiple nodes\n if (!keydown || !multiple) {\n var selected = graph.findAllByState('node', self.selectedState).concat(graph.findAllByState('edge', self.selectedState)).concat(graph.findAllByState('combo', self.selectedState));\n each(selected, function (selectedItem) {\n if (selectedItem !== item) {\n graph.setItemState(selectedItem, self.selectedState, false);\n }\n });\n }\n // check if the item could be selected, given the current cfg\n var itemSelectable = function () {\n switch (type) {\n case 'node':\n return self.selectNode;\n case 'edge':\n return self.selectEdge;\n case 'combo':\n return self.selectCombo;\n default:\n return false;\n }\n }();\n if (!itemSelectable) {\n var selectedNodes = graph.findAllByState('node', self.selectedState);\n var selectedEdges = graph.findAllByState('edge', self.selectedState);\n var selectedCombos = graph.findAllByState('combo', self.selectedState);\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: selectedNodes,\n edges: selectedEdges,\n combos: selectedCombos\n },\n select: false\n });\n return;\n }\n if (item.hasState(self.selectedState)) {\n if (shouldUpdate(evt, self)) {\n graph.setItemState(item, self.selectedState, false);\n }\n var selectedNodes = graph.findAllByState('node', self.selectedState);\n var selectedEdges = graph.findAllByState('edge', self.selectedState);\n var selectedCombos = graph.findAllByState('combo', self.selectedState);\n graph.emit('nodeselectchange', {\n target: item,\n selectedItems: {\n nodes: selectedNodes,\n edges: selectedEdges,\n combos: selectedCombos\n },\n select: false\n });\n } else {\n if (shouldUpdate(evt, self)) {\n graph.setItemState(item, self.selectedState, true);\n }\n var selectedNodes = graph.findAllByState('node', self.selectedState);\n var selectedEdges = graph.findAllByState('edge', self.selectedState);\n var selectedCombos = graph.findAllByState('combo', self.selectedState);\n graph.emit('nodeselectchange', {\n target: item,\n selectedItems: {\n nodes: selectedNodes,\n edges: selectedEdges,\n combos: selectedCombos\n },\n select: true\n });\n }\n },\n onCanvasClick: function onCanvasClick(evt) {\n var _this = this;\n var _a = this,\n graph = _a.graph,\n shouldBegin = _a.shouldBegin;\n if (!shouldBegin(evt, this)) {\n return;\n }\n var selected = graph.findAllByState('node', this.selectedState);\n each(selected, function (node) {\n graph.setItemState(node, _this.selectedState, false);\n });\n var selectedEdges = graph.findAllByState('edge', this.selectedState);\n each(selectedEdges, function (edge) {\n graph.setItemState(edge, _this.selectedState, false);\n });\n var selectedCombos = graph.findAllByState('combo', this.selectedState);\n each(selectedCombos, function (combo) {\n graph.setItemState(combo, _this.selectedState, false);\n });\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: [],\n edges: [],\n combos: []\n },\n select: false\n });\n },\n onKeyDown: function onKeyDown(e) {\n var self = this;\n var code = e.key;\n if (!code) {\n return;\n }\n if (code.toLowerCase() === this.trigger.toLowerCase() || code.toLowerCase() === 'control') {\n self.keydown = true;\n } else {\n self.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n var self = this;\n self.keydown = false;\n }\n};","import { ext } from '@antv/matrix-util';\nimport { clone } from '@antv/util';\nvar transform = ext.transform;\nvar DELTA = 0.05;\nexport default {\n getDefaultCfg: function getDefaultCfg() {\n return {\n sensitivity: 2,\n minZoom: undefined,\n maxZoom: undefined,\n enableOptimize: false,\n optimizeZoom: 0.1,\n fixSelectedItems: {\n fixAll: false,\n fixLineWidth: false,\n fixLabel: false,\n fixState: 'selected'\n },\n animate: false,\n animateCfg: {\n duration: 500\n }\n };\n },\n getEvents: function getEvents() {\n var fixSelectedItems = this.fixSelectedItems;\n if (!fixSelectedItems.fixState) fixSelectedItems.fixState = 'selected';\n if (fixSelectedItems.fixAll) {\n fixSelectedItems.fixLineWidth = true;\n fixSelectedItems.fixLabel = true;\n }\n return {\n wheel: 'onWheel',\n touchstart: 'onTouchStart',\n touchmove: 'onTouchMove',\n touchend: 'onTouchEnd'\n };\n },\n onTouchStart: function onTouchStart(evt) {\n var touches = evt.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n evt.preventDefault();\n // 如果不是缩放事件则禁止继续执行\n if (!event2) {\n return;\n }\n if (this.shouldBegin && !this.shouldBegin(evt, this)) {\n return;\n }\n // 第一个触摸点位置\n this.startPoint = {\n pageX: event1.pageX,\n pageY: event1.pageY\n };\n this.moveable = true;\n if (event2) {\n this.endPoint = {\n pageX: event2.pageX,\n pageY: event2.pageY\n };\n }\n this.originScale = this.graph.getZoom() || this.currentScale || 1;\n },\n onTouchMove: function onTouchMove(evt) {\n if (!this.moveable) {\n return;\n }\n evt.preventDefault();\n var touches = evt.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n if (!event2) {\n return;\n }\n if (!this.endPoint) {\n this.endPoint = {\n pageX: event2.pageX,\n pageY: event2.pageY\n };\n }\n // 获取坐标之间的距离\n var getDistance = function getDistance(start, end) {\n return Math.hypot(end.x - start.x, end.y - start.y);\n };\n // 双指缩放比例\n var scale = getDistance({\n x: event1.pageX,\n y: event1.pageY\n }, {\n x: event2.pageX,\n y: event2.pageY\n }) / getDistance({\n x: this.startPoint.pageX,\n y: this.startPoint.pageY\n }, {\n x: this.endPoint.pageX,\n y: this.endPoint.pageY\n });\n // 应用到画布上的缩放比例\n var zoom = this.originScale * scale;\n // 缓存当前的缩放比例\n this.currentScale = zoom;\n var minZoom = this.get('minZoom') || this.graph.get('minZoom');\n var maxZoom = this.get('maxZoom') || this.graph.get('maxZoom');\n if (zoom > maxZoom || zoom < minZoom) {\n return;\n }\n var animate = this.get('animate');\n var animateCfg = this.get('animateCfg');\n var canvas = this.graph.get('canvas');\n var point = canvas.getPointByClient(evt.clientX, evt.clientY);\n this.graph.zoomTo(zoom, {\n x: point.x,\n y: point.y\n }, animate, animateCfg);\n this.graph.emit('wheelzoom', evt);\n },\n onTouchEnd: function onTouchEnd() {\n this.moveable = false;\n this.endPoint = null;\n },\n onWheel: function onWheel(e) {\n var _this = this;\n var _a = this,\n graph = _a.graph,\n fixSelectedItems = _a.fixSelectedItems;\n if (this.shouldBegin && !this.shouldBegin(e, this)) {\n return;\n }\n if (!this.shouldUpdate(e, this)) {\n return;\n }\n e.preventDefault();\n var canvas = graph.get('canvas');\n var point = canvas.getPointByClient(e.clientX, e.clientY);\n var sensitivity = this.get('sensitivity');\n var graphZoom = graph.getZoom();\n var ratio = graphZoom;\n var zoom = graphZoom;\n // 兼容IE、Firefox及Chrome\n if (e.wheelDelta < 0) {\n ratio = 1 - DELTA * sensitivity;\n } else {\n ratio = 1 / (1 - DELTA * sensitivity);\n }\n zoom = graphZoom * ratio;\n var minZoom = this.get('minZoom') || graph.get('minZoom');\n var maxZoom = this.get('maxZoom') || graph.get('maxZoom');\n if (zoom > maxZoom) {\n zoom = maxZoom;\n } else if (zoom < minZoom) {\n zoom = minZoom;\n }\n // hide the shapes when the zoom ratio is smaller than optimizeZoom\n // hide the shapes when zoomming\n var enableOptimize = this.get('enableOptimize');\n if (enableOptimize) {\n var optimizeZoom_1 = this.get('optimizeZoom');\n var optimized = this.get('optimized');\n var nodes_1 = graph.getNodes();\n var edges_1 = graph.getEdges();\n var nodesLength_1 = nodes_1.length;\n var edgesLength_1 = edges_1.length;\n // hiding\n if (!optimized) {\n for (var n = 0; n < nodesLength_1; n++) {\n var node = nodes_1[n];\n if (!node.destroyed) {\n var children = node.get('group').get('children');\n var childrenLength = children.length;\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n if (!shape.destoryed && !shape.get('isKeyShape')) {\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n }\n }\n }\n }\n for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) {\n var edge = edges_1[edgeIndex];\n var children = edge.get('group').get('children');\n var childrenLength = children.length;\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n }\n }\n this.set('optimized', true);\n }\n // showing after 100ms\n clearTimeout(this.get('timeout'));\n var timeout = setTimeout(function () {\n var currentZoom = graph.getZoom();\n var curOptimized = _this.get('optimized');\n if (curOptimized) {\n _this.set('optimized', false);\n for (var n = 0; n < nodesLength_1; n++) {\n var node = nodes_1[n];\n var children = node.get('group').get('children');\n var childrenLength = children.length;\n if (currentZoom < optimizeZoom_1) {\n var keyShape = node.getKeyShape();\n var oriVis = keyShape.get('ori-visibility');\n keyShape.set('ori-visibility', undefined);\n if (oriVis) keyShape.show();\n } else {\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n var oriVis = shape.get('ori-visibility');\n shape.set('ori-visibility', undefined);\n if (!shape.get('visible') && oriVis) {\n if (oriVis) shape.show();\n }\n }\n }\n }\n for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) {\n var edge = edges_1[edgeIndex];\n var children = edge.get('group').get('children');\n var childrenLength = children.length;\n if (currentZoom < optimizeZoom_1) {\n var keyShape = edge.getKeyShape();\n var oriVis = keyShape.get('ori-visibility');\n keyShape.set('ori-visibility', undefined);\n if (oriVis) keyShape.show();\n } else {\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n if (!shape.get('visible')) {\n var oriVis = shape.get('ori-visibility');\n shape.set('ori-visibility', undefined);\n if (oriVis) shape.show();\n }\n }\n }\n }\n }\n }, 100);\n this.set('timeout', timeout);\n }\n // fix the items when zooming\n if (graphZoom <= 1) {\n var fixNodes = void 0,\n fixEdges = void 0;\n if (fixSelectedItems.fixAll || fixSelectedItems.fixLineWidth || fixSelectedItems.fixLabel) {\n fixNodes = graph.findAllByState('node', fixSelectedItems.fixState);\n fixEdges = graph.findAllByState('edge', fixSelectedItems.fixState);\n var scale = graphZoom / zoom;\n var fixNodesLength = fixNodes.length;\n for (var fn = 0; fn < fixNodesLength; fn++) {\n var node = fixNodes[fn];\n var group = node.getContainer();\n var nodeModel = node.getModel();\n var originStyle = node.getOriginStyle();\n var itemStateStyle = node.getStateStyle(fixSelectedItems.fixState);\n var shapeStateStyle = node.get('shapeFactory').getShape(nodeModel.type).getStateStyle(fixSelectedItems.fixState, node)[fixSelectedItems.fixState];\n if (fixSelectedItems.fixAll) {\n if (zoom <= 1) {\n var groupMatrix = clone(group.getMatrix());\n if (!groupMatrix) groupMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var _b = node.getModel(),\n x = _b.x,\n y = _b.y;\n groupMatrix = transform(groupMatrix, [['t', -x, -y], ['s', scale, scale], ['t', x, y]]);\n group.setMatrix(groupMatrix);\n }\n } else {\n var children = group.get('children');\n var childrenLength = children.length;\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n var fontSize = void 0,\n lineWidth = void 0;\n if (fixSelectedItems.fixLabel) {\n var shapeType = shape.get('type');\n if (shapeType === 'text') {\n fontSize = shape.attr('fontSize') || 12;\n var itemStyle = itemStateStyle[shape.get('name')];\n var shapeStyle = shapeStateStyle[shape.get('name')];\n var itemFontSize = itemStyle ? itemStyle.fontSize : 12;\n var shapeFontSize = shapeStyle ? shapeStyle.fontSize : 12;\n var oriFontSize = itemFontSize || shapeFontSize || 12;\n if (zoom <= 1) shape.attr('fontSize', oriFontSize / zoom); // * graphZoom / zoom\n if (lineWidth) break;\n }\n }\n if (fixSelectedItems.fixLineWidth) {\n if (shape.get('isKeyShape')) {\n lineWidth = shape.attr('lineWidth') || 0;\n var oriLineWidth = itemStateStyle.lineWidth || shapeStateStyle.lineWidth || originStyle.lineWidth || 0;\n if (zoom <= 1) shape.attr('lineWidth', oriLineWidth / zoom); // * graphZoom / zoom\n if (fontSize) break;\n }\n }\n }\n }\n }\n var fixEdgesLength = fixEdges.length;\n for (var fe = 0; fe < fixEdgesLength; fe++) {\n var edge = fixEdges[fe];\n var group = edge.getContainer();\n var children = group.get('children');\n var nodeModel = edge.getModel();\n var itemStateStyle = edge.getStateStyle(fixSelectedItems.fixState);\n var shapeStateStyle = edge.get('shapeFactory').getShape(nodeModel.type).getStateStyle(fixSelectedItems.fixState, edge)[fixSelectedItems.fixState];\n var childrenLength = children.length;\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n var fontSize = void 0,\n lineWidth = void 0;\n if (fixSelectedItems.fixLabel || fixSelectedItems.fixAll) {\n var shapeType = shape.get('type');\n if (shapeType === 'text') {\n fontSize = shape.attr('fontSize') || 12;\n var itemStyle = itemStateStyle[shape.get('name')];\n var shapeStyle = shapeStateStyle[shape.get('name')];\n var itemFontSize = itemStyle ? itemStyle.fontSize : 12;\n var shapeFontSize = shapeStyle ? shapeStyle.fontSize : 12;\n var oriFontSize = itemFontSize || shapeFontSize || 12;\n if (zoom <= 1) shape.attr('fontSize', oriFontSize / zoom);\n if (lineWidth) break;\n }\n }\n if (fixSelectedItems.fixLineWidth || fixSelectedItems.fixAll) {\n if (shape.get('isKeyShape')) {\n lineWidth = shape.attr('lineWidth') || 0;\n var oriLineWidth = itemStateStyle.lineWidth || shapeStateStyle.lineWidth || 1;\n if (zoom <= 1) shape.attr('lineWidth', oriLineWidth / zoom);\n if (fontSize) break;\n }\n }\n }\n }\n }\n }\n var animate = this.get('animate');\n var animateCfg = this.get('animateCfg');\n graph.zoomTo(zoom, {\n x: point.x,\n y: point.y\n }, animate, animateCfg);\n graph.emit('wheelzoom', e);\n }\n};","import { modifyCSS, createDom } from '@antv/dom-util';\nexport default {\n onMouseEnter: function onMouseEnter(e) {\n var item = e.item;\n this.currentTarget = item;\n this.showTooltip(e);\n this.graph.emit('tooltipchange', {\n item: e.item,\n action: 'show'\n });\n },\n onMouseMove: function onMouseMove(e) {\n if (!this.shouldUpdate(e, this)) {\n this.hideTooltip();\n return;\n }\n if (!this.currentTarget || e.item !== this.currentTarget) {\n return;\n }\n this.updatePosition(e);\n },\n onMouseLeave: function onMouseLeave(e) {\n if (!this.shouldEnd(e, this)) {\n return;\n }\n this.hideTooltip();\n this.graph.emit('tooltipchange', {\n item: this.currentTarget,\n action: 'hide'\n });\n this.currentTarget = null;\n },\n showTooltip: function showTooltip(e) {\n var container = this.container;\n if (!e.item || e.item.destroyed) {\n return;\n }\n if (!container) {\n container = this.createTooltip(this.graph.get('canvas'));\n this.container = container;\n }\n var text = this.formatText(e.item.get('model'), e);\n container.innerHTML = text;\n modifyCSS(this.container, {\n visibility: 'visible'\n });\n this.updatePosition(e);\n },\n hideTooltip: function hideTooltip() {\n modifyCSS(this.container, {\n visibility: 'hidden'\n });\n },\n updatePosition: function updatePosition(e) {\n var shouldBegin = this.get('shouldBegin');\n var _a = this,\n width = _a.width,\n height = _a.height,\n container = _a.container,\n graph = _a.graph;\n if (!shouldBegin(e, this)) {\n modifyCSS(container, {\n visibility: 'hidden'\n });\n return;\n }\n var point = graph.getPointByClient(e.clientX, e.clientY);\n var _b = graph.getCanvasByPoint(point.x, point.y),\n x = _b.x,\n y = _b.y;\n var bbox = container.getBoundingClientRect();\n if (x > width / 2) {\n x -= bbox.width;\n } else {\n x += this.offset;\n }\n if (y > height / 2) {\n y -= bbox.height;\n } else {\n y += this.offset;\n }\n var left = \"\".concat(x, \"px\");\n var top = \"\".concat(y, \"px\");\n modifyCSS(this.container, {\n left: left,\n top: top,\n visibility: 'visible'\n });\n },\n createTooltip: function createTooltip(canvas) {\n var el = canvas.get('el');\n el.style.position = 'relative';\n var container = createDom(\"
\"));\n el.parentNode.appendChild(container);\n modifyCSS(container, {\n position: 'absolute',\n visibility: 'visible'\n });\n this.width = canvas.get('width');\n this.height = canvas.get('height');\n this.container = container;\n this.graph.get('tooltips').push(container);\n return container;\n }\n};","import { __assign } from \"tslib\";\nimport base from './tooltip-base';\nexport default __assign({\n getDefaultCfg: function getDefaultCfg() {\n return {\n item: 'node',\n offset: 12,\n formatText: function formatText(model) {\n return model.label;\n }\n };\n },\n getEvents: function getEvents() {\n return {\n 'node:mouseenter': 'onMouseEnter',\n 'node:mouseleave': 'onMouseLeave',\n 'node:mousemove': 'onMouseMove',\n afterremoveitem: 'onMouseLeave'\n };\n }\n}, base);","import { __assign } from \"tslib\";\nimport base from './tooltip-base';\nexport default __assign({\n getDefaultCfg: function getDefaultCfg() {\n return {\n item: 'edge',\n offset: 12,\n formatText: function formatText(model) {\n return \"source: \".concat(model.source, \" target: \").concat(model.target);\n }\n };\n },\n getEvents: function getEvents() {\n return {\n 'edge:mouseenter': 'onMouseEnter',\n 'edge:mouseleave': 'onMouseLeave',\n 'edge:mousemove': 'onMouseMove',\n afterremoveitem: 'onMouseLeave'\n };\n }\n}, base);","var DEFAULT_TRIGGER = 'click';\nvar ALLOW_EVENTS = ['click', 'dblclick'];\nexport default {\n getDefaultCfg: function getDefaultCfg() {\n return {\n /**\n * 发生收缩/扩展变化时的回调\n */\n trigger: DEFAULT_TRIGGER,\n onChange: function onChange() {}\n };\n },\n getEvents: function getEvents() {\n var _a;\n var trigger;\n // 检测输入是否合法\n if (ALLOW_EVENTS.includes(this.trigger)) {\n trigger = this.trigger;\n } else {\n trigger = DEFAULT_TRIGGER;\n // eslint-disable-next-line no-console\n console.warn(\"Behavior collapse-expand 的 trigger 参数不合法,请输入 'click' 或 'dblclick'\");\n }\n return _a = {}, _a[\"node:\".concat(trigger)] = 'onNodeClick',\n // 支持移动端事件\n _a.touchstart = 'onNodeClick', _a;\n },\n onNodeClick: function onNodeClick(e) {\n var item = e.item;\n if (!item) return;\n // 如果节点进行过更新,model 会进行 merge,直接改 model 就不能改布局,所以需要去改源数据\n var sourceData = this.graph.findDataById(item.get('id'));\n if (!sourceData) {\n return;\n }\n var children = sourceData.children;\n // 叶子节点的收缩和展开没有意义\n if (!children || children.length === 0) {\n return;\n }\n var collapsed = !sourceData.collapsed;\n if (!this.shouldBegin(e, collapsed, this)) {\n return;\n }\n sourceData.collapsed = collapsed;\n item.getModel().collapsed = collapsed;\n this.graph.emit('itemcollapsed', {\n item: e.item,\n collapsed: collapsed\n });\n if (!this.shouldUpdate(e, collapsed, this)) {\n return;\n }\n this.onChange(item, collapsed, this);\n this.graph.layout();\n }\n};","import { __assign } from \"tslib\";\n/*\n * @Author: moyee\n * @LastEditors: moyee\n * @Description: 拖动 Combo\n */\nimport { each } from '@antv/util';\nimport Util from '../util';\nimport Global from '../global';\nvar calculationItemsBBox = Util.calculationItemsBBox;\n/**\n * 遍历拖动的 Combo 下的所有 Combo\n * @param data 拖动的 Combo\n * @param fn\n */\nvar traverseCombo = function traverseCombo(data, fn) {\n if (fn(data) === false) {\n return;\n }\n if (data) {\n var combos = data.get('combos');\n if (combos.length === 0) {\n return false;\n }\n each(combos, function (child) {\n traverseCombo(child, fn);\n });\n }\n};\nexport default {\n getDefaultCfg: function getDefaultCfg() {\n return {\n enableDelegate: false,\n delegateStyle: {},\n // 拖动节点过程中是否只改变 Combo 的大小,而不改变其结构\n onlyChangeComboSize: false,\n // 拖动过程中目标 combo 状态样式\n activeState: '',\n selectedState: 'selected',\n enableStack: true\n };\n },\n getEvents: function getEvents() {\n return {\n 'combo:dragstart': 'onDragStart',\n 'combo:drag': 'onDrag',\n 'combo:dragend': 'onDragEnd',\n 'combo:drop': 'onDrop',\n 'node:drop': 'onNodeDrop',\n 'combo:dragenter': 'onDragEnter',\n 'combo:dragleave': 'onDragLeave'\n };\n },\n validationCombo: function validationCombo(evt) {\n var item = evt.item;\n if (!item || item.destroyed) {\n return false;\n }\n if (!this.shouldUpdate(evt, this)) {\n return false;\n }\n var type = item.getType();\n if (type !== 'combo') {\n return false;\n }\n return true;\n },\n onDragStart: function onDragStart(evt) {\n var _this = this;\n var graph = this.graph;\n var item = evt.item;\n this.currentShouldEnd = true;\n if (!this.validationCombo(evt)) return;\n this.targets = [];\n // 获取所有选中的 Combo\n var combos = graph.findAllByState('combo', this.selectedState);\n var currentCombo = item.get('id');\n var dragCombos = combos.filter(function (combo) {\n var comboId = combo.get('id');\n return currentCombo === comboId;\n });\n if (dragCombos.length === 0) {\n this.targets.push(item);\n } else {\n this.targets = combos;\n }\n var beforeDragItems = [];\n this.targets.forEach(function (t) {\n var _a = t.getModel(),\n x = _a.x,\n y = _a.y,\n id = _a.id;\n beforeDragItems.push({\n x: x,\n y: y,\n id: id\n });\n });\n this.set('beforeDragItems', beforeDragItems);\n if (this.activeState) {\n this.targets.map(function (combo) {\n var model = combo.getModel();\n if (model.parentId) {\n var parentCombo = graph.findById(model.parentId);\n if (parentCombo) {\n graph.setItemState(parentCombo, _this.activeState, true);\n }\n }\n });\n }\n this.point = {};\n this.originPoint = {};\n this.origin = {\n x: evt.x,\n y: evt.y\n };\n this.currentItemChildCombos = [];\n traverseCombo(item, function (param) {\n if (param.destroyed) {\n return false;\n }\n var model = param.getModel();\n _this.currentItemChildCombos.push(model.id);\n return true;\n });\n },\n onDrag: function onDrag(evt) {\n var _this = this;\n if (!this.origin) {\n return;\n }\n if (!this.validationCombo(evt)) return;\n if (this.enableDelegate) {\n this.updateDelegate(evt);\n } else {\n if (this.activeState) {\n var graph_1 = this.graph;\n var item = evt.item;\n var model_1 = item.getModel();\n // 拖动过程中实时计算距离\n var combos = graph_1.getCombos();\n var sourceBBox = item.getBBox();\n var centerX_1 = sourceBBox.centerX,\n centerY_1 = sourceBBox.centerY,\n width_1 = sourceBBox.width;\n // 参与计算的 Combo,需要排除掉:\n // 1、拖动 combo 自己\n // 2、拖动 combo 的 parent\n // 3、拖动 Combo 的 children\n var calcCombos = combos.filter(function (combo) {\n var cmodel = combo.getModel();\n // 被拖动的是最外层的 Combo,无 parent,排除自身和子元素\n if (!model_1.parentId) {\n return cmodel.id !== model_1.id && !_this.currentItemChildCombos.includes(cmodel.id);\n }\n return cmodel.id !== model_1.id && !_this.currentItemChildCombos.includes(cmodel.id);\n });\n calcCombos.map(function (combo) {\n var _a = combo.getBBox(),\n cx = _a.centerX,\n cy = _a.centerY,\n w = _a.width;\n // 拖动的 combo 和要进入的 combo 之间的距离\n var disX = centerX_1 - cx;\n var disY = centerY_1 - cy;\n // 圆心距离\n var distance = 2 * Math.sqrt(disX * disX + disY * disY);\n if (width_1 + w - distance > 0.8 * width_1) {\n graph_1.setItemState(combo, _this.activeState, true);\n } else {\n graph_1.setItemState(combo, _this.activeState, false);\n }\n });\n }\n each(this.targets, function (item) {\n _this.updateCombo(item, evt);\n });\n }\n },\n updatePositions: function updatePositions(evt, restore) {\n var _this = this;\n // 当启用 delegate 时,拖动结束时需要更新 combo\n if (this.enableDelegate || restore) {\n each(this.targets, function (item) {\n _this.updateCombo(item, evt, restore);\n });\n }\n },\n onDrop: function onDrop(evt) {\n var _this = this;\n // 被放下的目标 combo\n var item = evt.item;\n this.currentShouldEnd = this.shouldEnd(evt, item, this);\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.currentShouldEnd || !item || !this.targets || item.destroyed) return;\n var graph = this.graph;\n var targetModel = item.getModel();\n this.targets.map(function (combo) {\n var model = combo.getModel();\n if (model.parentId !== targetModel.id) {\n if (_this.activeState) {\n graph.setItemState(item, _this.activeState, false);\n }\n // 将 Combo 放置到某个 Combo 上面时,只有当 onlyChangeComboSize 为 false 时候才更新 Combo 结构\n if (!_this.onlyChangeComboSize) {\n graph.updateComboTree(combo, targetModel.id, false);\n } else {\n graph.updateCombo(combo);\n }\n } else {\n graph.updateCombo(item);\n }\n });\n this.end(item, evt);\n // 如果已经拖放下了,则不需要再通过距离判断了\n this.endComparison = true;\n },\n onNodeDrop: function onNodeDrop(evt) {\n var _this = this;\n if (!this.targets || this.targets.length === 0) return;\n var graph = this.graph;\n var item = evt.item;\n var comboId = item.getModel().comboId;\n var newParentCombo = comboId ? graph.findById(comboId) : undefined;\n this.currentShouldEnd = this.shouldEnd(evt, newParentCombo, this);\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.currentShouldEnd) return;\n var droppedCombo;\n // 如果被放置的的节点有 comboId,且这个 comboId 与正在被拖拽的 combo 的父 id 不相同,则更新父亲为 comboId\n if (comboId) {\n if (this.activeState) {\n var combo = graph.findById(comboId);\n graph.setItemState(combo, this.activeState, false);\n }\n this.targets.map(function (combo) {\n if (!_this.onlyChangeComboSize) {\n if (comboId !== combo.getID()) {\n droppedCombo = graph.findById(comboId);\n if (comboId !== combo.getModel().parentId) graph.updateComboTree(combo, comboId, false);\n }\n } else {\n graph.updateCombo(combo);\n }\n });\n } else {\n // 如果被放置的节点没有 comboId,且正在被拖拽的 combo 有父 id,则更新父亲为 undefined\n this.targets.map(function (combo) {\n if (!_this.onlyChangeComboSize) {\n var model = combo.getModel();\n if (model.comboId) {\n graph.updateComboTree(combo, undefined, false);\n }\n } else {\n graph.updateCombo(combo);\n }\n });\n }\n // 如果已经拖放下了,则不需要再通过距离判断了\n this.endComparison = true;\n this.end(droppedCombo, evt);\n },\n onDragEnter: function onDragEnter(evt) {\n if (!this.origin) {\n return;\n }\n if (!this.validationCombo(evt)) return;\n var item = evt.item;\n var graph = this.graph;\n if (this.activeState) {\n graph.setItemState(item, this.activeState, true);\n }\n },\n onDragLeave: function onDragLeave(evt) {\n if (!this.origin) {\n return;\n }\n if (!this.validationCombo(evt)) return;\n var item = evt.item;\n var graph = this.graph;\n if (this.activeState) {\n graph.setItemState(item, this.activeState, false);\n }\n },\n onDragEnd: function onDragEnd(evt) {\n if (!this.targets || this.targets.length === 0) return;\n var item = evt.item;\n if (this.currentShouldEnd) {\n this.updatePositions(evt);\n }\n var parentCombo = this.getParentCombo(item.getModel().parentId);\n var graph = this.graph;\n if (parentCombo && this.activeState) {\n graph.setItemState(parentCombo, this.activeState, false);\n }\n this.end(undefined, evt);\n },\n end: function end(comboDropedOn, evt) {\n var _this = this;\n if (!this.origin) return;\n var graph = this.graph;\n // 删除delegate shape\n if (this.delegateShape) {\n var delegateGroup = graph.get('delegateGroup');\n delegateGroup.clear();\n this.delegateShape = null;\n }\n if (comboDropedOn && this.activeState) {\n graph.setItemState(comboDropedOn, this.activeState, false);\n }\n // 若没有被放置的 combo,则是被放置在画布上\n if (!comboDropedOn) {\n var stack_1 = graph.get('enabledStack') && this.enableStack;\n var stackData_1 = {\n before: {\n nodes: [],\n edges: [],\n combos: [].concat(this.get('beforeDragItems'))\n },\n after: {\n nodes: [],\n edges: [],\n combos: []\n }\n };\n this.targets.map(function (combo) {\n // 将 Combo 放置到某个 Combo 上面时,只有当 onlyChangeComboSize 为 false 时候才更新 Combo 结构\n if (!_this.onlyChangeComboSize) {\n graph.updateComboTree(combo, undefined, stack_1);\n } else {\n graph.updateCombo(combo);\n var _a = combo.getModel(),\n x = _a.x,\n y = _a.y,\n id = _a.id;\n stackData_1.after.combos.push({\n x: x,\n y: y,\n id: id\n });\n graph.pushStack('update', stackData_1);\n }\n });\n }\n this.point = [];\n this.origin = null;\n this.originPoint = null;\n this.targets.length = 0;\n },\n /**\n * 遍历 comboTree,分别更新 node 和 combo\n * @param data\n * @param fn\n */\n traverse: function traverse(data, fn, edgesToBeUpdate) {\n var _this = this;\n if (edgesToBeUpdate === void 0) {\n edgesToBeUpdate = {};\n }\n if (fn(data, edgesToBeUpdate) === false) {\n return;\n }\n if (data) {\n var combos = data.get('combos');\n each(combos, function (child) {\n _this.traverse(child, fn, edgesToBeUpdate);\n });\n var nodes = data.get('nodes');\n each(nodes, function (child) {\n _this.traverse(child, fn, edgesToBeUpdate);\n });\n }\n },\n updateCombo: function updateCombo(item, evt, restore) {\n this.updateSingleItem(item, evt, restore);\n var edgesToBeUpdate = {};\n this.traverse(item, function (paramItem, paramEdgesMap) {\n if (paramItem.destroyed) {\n return false;\n }\n paramItem.getEdges().forEach(function (edge) {\n return paramEdgesMap[edge.getID()] = edge;\n });\n return true;\n }, edgesToBeUpdate);\n Object.values(edgesToBeUpdate).forEach(function (edge) {\n return edge.refresh();\n });\n },\n /**\n *\n * @param item 当前正在拖动的元素\n * @param evt\n */\n updateSingleItem: function updateSingleItem(item, evt, restore) {\n var origin = this.origin;\n var graph = this.graph;\n var model = item.getModel();\n var itemId = item.get('id');\n if (!this.point[itemId]) {\n this.point[itemId] = {\n x: model.x,\n y: model.y\n };\n }\n var x = evt.x - origin.x + this.point[itemId].x;\n var y = evt.y - origin.y + this.point[itemId].y;\n if (restore) {\n x += origin.x - evt.x;\n y += origin.y - evt.y;\n }\n graph.updateItem(item, {\n x: x,\n y: y\n }, false);\n // item.getEdges()?.forEach(edge => edge.refresh());\n },\n\n /**\n * 根据 ID 获取父 Combo\n * @param parentId 父 Combo ID\n */\n getParentCombo: function getParentCombo(parentId) {\n var graph = this.graph;\n if (!parentId) {\n return undefined;\n }\n var parentCombo = graph.findById(parentId);\n if (!parentCombo) {\n return undefined;\n }\n return parentCombo;\n },\n updateDelegate: function updateDelegate(evt) {\n var graph = this.graph;\n // 当没有 delegate shape 时创建\n if (!this.delegateShape) {\n var delegateGroup = graph.get('delegateGroup');\n var bbox = null;\n if (this.targets.length > 1) {\n bbox = calculationItemsBBox(this.targets);\n } else {\n bbox = this.targets[0].getBBox();\n }\n var x = bbox.x,\n y = bbox.y,\n width = bbox.width,\n height = bbox.height,\n minX = bbox.minX,\n minY = bbox.minY;\n this.originPoint = {\n x: x,\n y: y,\n width: width,\n height: height,\n minX: minX,\n minY: minY\n };\n var attrs = __assign(__assign({}, Global.delegateStyle), this.delegateStyle);\n this.delegateShape = delegateGroup.addShape('rect', {\n attrs: __assign({\n width: bbox.width,\n height: bbox.height,\n x: bbox.x,\n y: bbox.y\n }, attrs),\n name: 'combo-delegate-shape'\n });\n this.delegateShape.set('capture', false);\n this.delegate = this.delegateShape;\n } else {\n var clientX = evt.x - this.origin.x + this.originPoint.minX;\n var clientY = evt.y - this.origin.y + this.originPoint.minY;\n this.delegateShape.attr({\n x: clientX,\n y: clientY\n });\n }\n }\n};","/*\n * @Author: Shiwu\n * @Description: 收起和展开 Combo\n */\nvar DEFAULT_TRIGGER = 'dblclick';\nvar ALLOW_EVENTS = ['click', 'dblclick'];\nexport default {\n getDefaultCfg: function getDefaultCfg() {\n return {\n trigger: DEFAULT_TRIGGER,\n relayout: true\n };\n },\n getEvents: function getEvents() {\n var _a;\n var trigger;\n // 检测输入是否合法\n if (ALLOW_EVENTS.includes(this.trigger)) {\n trigger = this.trigger;\n } else {\n trigger = DEFAULT_TRIGGER;\n // eslint-disable-next-line no-console\n console.warn(\"Behavior collapse-expand-group 的 trigger 参数不合法,请输入 'click' 或 'dblclick'\");\n }\n return _a = {}, _a[\"combo:\".concat(trigger)] = 'onComboClick', _a;\n },\n onComboClick: function onComboClick(evt) {\n var item = evt.item;\n var _a = this,\n graph = _a.graph,\n relayout = _a.relayout;\n if (!item || item.destroyed || item.getType() !== 'combo') return;\n var model = item.getModel();\n var comboId = model.id;\n if (!comboId) {\n return;\n }\n graph.collapseExpandCombo(comboId);\n if (relayout && graph.get('layout')) graph.layout();else graph.refreshPositions();\n }\n};","import { __assign } from \"tslib\";\nimport Util from '../util';\nvar isPolygonsIntersect = Util.isPolygonsIntersect,\n pathToPoints = Util.pathToPoints;\nvar DEFAULT_TRIGGER = 'shift';\nvar ALLOW_EVENTS = ['drag', 'shift', 'ctrl', 'alt', 'control'];\nvar isItemIntersecPolygon = function isItemIntersecPolygon(item, polyPoints) {\n var shapePoints;\n var shape = item.getKeyShape();\n if (item.get('type') === 'path') {\n shapePoints = pathToPoints(shape.attr('path'));\n } else {\n var shapeBBox = shape.getCanvasBBox();\n shapePoints = [[shapeBBox.minX, shapeBBox.minY], [shapeBBox.maxX, shapeBBox.minY], [shapeBBox.maxX, shapeBBox.maxY], [shapeBBox.minX, shapeBBox.maxY]];\n }\n return isPolygonsIntersect(polyPoints, shapePoints);\n};\nexport default {\n getDefaultCfg: function getDefaultCfg() {\n return {\n delegateStyle: {\n fill: '#EEF6FF',\n fillOpacity: 0.4,\n stroke: '#DDEEFE',\n lineWidth: 1\n },\n onSelect: function onSelect() {},\n onDeselect: function onDeselect() {},\n shouldDeselect: undefined,\n selectedState: 'selected',\n trigger: DEFAULT_TRIGGER,\n includeEdges: true,\n selectedEdges: [],\n selectedNodes: []\n // multiple: false,\n };\n },\n\n getEvents: function getEvents() {\n // 检测输入是否合法\n if (!(ALLOW_EVENTS.indexOf(this.trigger.toLowerCase()) > -1)) {\n this.trigger = DEFAULT_TRIGGER;\n console.warn(\"Behavior lasso-select 的 trigger 参数不合法,请输入 'drag'、'shift'、'ctrl' 或 'alt'\");\n }\n if (this.trigger === 'drag') {\n return {\n dragstart: 'onDragStart',\n drag: 'onDragMove',\n dragend: 'onDragEnd',\n 'canvas:click': 'clearStates'\n };\n }\n return {\n dragstart: 'onDragStart',\n drag: 'onDragMove',\n dragend: 'onDragEnd',\n keyup: 'onKeyUp',\n keydown: 'onKeyDown',\n 'canvas:click': 'clearStates'\n };\n },\n onDragStart: function onDragStart(e) {\n var lasso = this.lasso;\n var item = e.item;\n // 排除在节点上拖动\n if (item) {\n return;\n }\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n if (this.selectedNodes && this.selectedNodes.length !== 0) {\n this.clearStates('dragstart');\n }\n if (!lasso) {\n lasso = this.createLasso();\n }\n this.dragging = true;\n this.originPoint = {\n x: e.x,\n y: e.y\n };\n this.points.push(this.originPoint);\n lasso.show();\n },\n onDragMove: function onDragMove(e) {\n if (!this.dragging) {\n return;\n }\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n this.points.push({\n x: e.x,\n y: e.y\n });\n this.updateLasso(e);\n },\n onDragEnd: function onDragEnd(e) {\n if (!this.lasso && !this.dragging) {\n return;\n }\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n this.points.push(this.originPoint);\n this.getSelectedItems();\n this.lasso.remove(true);\n this.lasso = null;\n this.points = [];\n this.dragging = false;\n },\n getLassoPath: function getLassoPath() {\n var points = this.points;\n var path = [];\n if (points.length) {\n points.forEach(function (point, index) {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n path.push(['L', points[0].x, points[0].y]);\n }\n return path;\n },\n clearStates: function clearStates(action) {\n if (action === void 0) {\n action = 'canvas:click';\n }\n var _a = this,\n graph = _a.graph,\n selectedState = _a.selectedState,\n shouldDeselect = _a.shouldDeselect;\n var nodes = graph.findAllByState('node', selectedState);\n var edges = graph.findAllByState('edge', selectedState);\n if (!shouldDeselect || shouldDeselect({\n action: action,\n nodes: nodes,\n edges: edges\n })) {\n nodes.forEach(function (node) {\n return graph.setItemState(node, selectedState, false);\n });\n edges.forEach(function (edge) {\n return graph.setItemState(edge, selectedState, false);\n });\n }\n if (this.onDeselect) {\n this.onDeselect(this.selectedNodes, this.selectedEdges);\n }\n this.selectedNodes = [];\n this.selectedEdges = [];\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: [],\n edges: []\n },\n select: false\n });\n },\n getSelectedItems: function getSelectedItems() {\n var _this = this;\n var _a = this,\n graph = _a.graph,\n shouldUpdate = _a.shouldUpdate;\n var lassoContour = this.points.map(function (point) {\n return [graph.getCanvasByPoint(point.x, point.y).x, graph.getCanvasByPoint(point.x, point.y).y];\n });\n var state = this.selectedState;\n var selectedNodes = [];\n var selectedIds = [];\n graph.getNodes().forEach(function (node) {\n if (!node.isVisible()) return; // 隐藏节点不能被选中\n if (isItemIntersecPolygon(node, lassoContour)) {\n if (shouldUpdate(node, 'select', _this)) {\n selectedNodes.push(node);\n var model = node.getModel();\n selectedIds.push(model.id);\n graph.setItemState(node, state, true);\n }\n }\n });\n var selectedEdges = [];\n if (this.includeEdges) {\n // 选中边,边的source和target都在选中的节点中时才选中\n selectedNodes.forEach(function (node) {\n var edges = node.getOutEdges();\n edges.forEach(function (edge) {\n if (!edge.isVisible()) return; // 隐藏边不能够被选中\n var model = edge.getModel();\n var source = model.source,\n target = model.target;\n if (selectedIds.includes(source) && selectedIds.includes(target) && shouldUpdate(edge, 'select', _this)) {\n selectedEdges.push(edge);\n graph.setItemState(edge, _this.selectedState, true);\n }\n });\n });\n }\n this.selectedEdges = selectedEdges;\n this.selectedNodes = selectedNodes;\n if (this.onSelect) {\n this.onSelect(selectedNodes, selectedEdges);\n }\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: selectedNodes,\n edges: selectedEdges\n },\n select: true\n });\n },\n createLasso: function createLasso() {\n var self = this;\n var lasso = self.graph.get('delegateGroup').addShape('path', {\n attrs: __assign({\n path: []\n }, self.delegateStyle),\n capture: false,\n name: 'lasso-shape'\n });\n this.lasso = lasso;\n this.delegate = lasso;\n this.points = [];\n return lasso;\n },\n updateLasso: function updateLasso(e) {\n var self = this;\n this.lasso.attr({\n path: self.getLassoPath()\n });\n },\n onKeyDown: function onKeyDown(e) {\n var code = e.key;\n if (!code) {\n return;\n }\n // if (this.selectedNodes && this.selectedNodes.length !== 0) {\n // this.clearStates();\n // }\n if (code.toLowerCase() === this.trigger.toLowerCase()) {\n this.keydown = true;\n } else {\n this.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n if (this.lasso) {\n // 清除所有选中状态后,设置拖得动状态为false,并清除框选的lasso\n this.lasso.remove(true);\n this.lasso = null;\n this.points = [];\n this.dragging = false;\n }\n this.keydown = false;\n }\n};","import { __assign } from \"tslib\";\nimport { isFunction } from '@antv/util';\nvar DEFAULT_TRIGGER = 'click';\nvar ALLOW_EVENTS = ['click', 'drag'];\nvar DEFAULT_KEY = undefined;\nvar ALLOW_KEYS = ['shift', 'ctrl', 'control', 'alt', 'meta', undefined];\nexport default {\n getDefaultCfg: function getDefaultCfg() {\n return {\n trigger: DEFAULT_TRIGGER,\n key: DEFAULT_KEY,\n edgeConfig: {},\n getEdgeConfig: undefined\n };\n },\n getEvents: function getEvents() {\n var self = this;\n // 检测输入是否合法\n if (!(ALLOW_EVENTS.indexOf(self.trigger.toLowerCase()) > -1)) {\n self.trigger = DEFAULT_TRIGGER;\n // eslint-disable-next-line no-console\n console.warn(\"Behavior create-edge 的 trigger 参数不合法,请输入 'click','drag'\");\n }\n if (self.key && ALLOW_KEYS.indexOf(self.key.toLowerCase()) === -1) {\n self.trigger = DEFAULT_KEY;\n // eslint-disable-next-line no-console\n console.warn(\"Behavior create-edge 的 key 参数不合法,请输入 'shift','ctrl','alt','control',或 undefined\");\n }\n var events;\n if (self.trigger === 'drag') {\n events = {\n 'node:dragstart': 'onClick',\n 'combo:dragstart': 'onClick',\n drag: 'updateEndPoint',\n 'node:drop': 'onClick',\n 'combo:drop': 'onClick',\n dragend: 'onDragEnd'\n };\n } else if (self.trigger === 'click') {\n events = {\n 'node:click': 'onClick',\n mousemove: 'updateEndPoint',\n 'edge:click': 'cancelCreating',\n 'canvas:click': 'cancelCreating',\n 'combo:click': 'onClick'\n };\n }\n if (self.key) {\n events.keydown = 'onKeyDown';\n events.keyup = 'onKeyUp';\n }\n return events;\n },\n onDragEnd: function onDragEnd(ev) {\n var self = this;\n if (self.key && !self.keydown) return;\n var item = ev.item;\n if (!item || item.getID() === self.source || item.getType() !== 'node') self.cancelCreating({\n item: self.edge,\n x: ev.x,\n y: ev.y\n });\n },\n // 如果边的起点没有指定,则根据起点创建新边;如果起点已经指定而终点未指定,则指定终点\n onClick: function onClick(ev) {\n var self = this;\n if (self.key && !self.keydown) return;\n var node = ev.item;\n var graph = self.graph;\n var model = node.getModel();\n var getEdgeConfig = self.getEdgeConfig;\n // 如果起点已经指定而终点未指定,则指定终点\n if (self.addingEdge && self.edge) {\n if (!self.shouldEnd(ev, self)) return;\n var edgeConfig = void 0;\n if (getEdgeConfig && isFunction(getEdgeConfig)) {\n edgeConfig = getEdgeConfig({\n source: self.source,\n target: model.id\n }, self);\n } else {\n edgeConfig = self.edgeConfig;\n }\n var updateCfg = __assign({\n target: model.id\n }, edgeConfig);\n if (self.source === model.id) {\n updateCfg.type = 'loop';\n }\n graph.emit('beforecreateedge', {});\n graph.updateItem(self.edge, updateCfg, false);\n if (graph.get('enabledStack')) {\n var addedModel = __assign(__assign({}, self.edge.getModel()), {\n itemType: 'edge'\n });\n var after = {};\n after.edges = [addedModel];\n graph.pushStack('add', {\n before: {},\n after: after\n });\n }\n graph.emit('aftercreateedge', {\n edge: self.edge\n });\n // 暂时将该边的 capture 恢复为 true\n self.edge.getKeyShape().set('capture', true);\n self.edge = null;\n self.addingEdge = false;\n } else {\n // 如果边的起点没有指定,则根据起点创建新边\n if (!self.shouldBegin(ev, self)) return;\n // 获取自定义 edge 配置\n var edgeConfig = void 0;\n if (getEdgeConfig && isFunction(getEdgeConfig)) {\n edgeConfig = getEdgeConfig({\n source: model.id,\n target: model.id\n }, self);\n } else {\n edgeConfig = self.edgeConfig;\n }\n self.edge = graph.addItem('edge', __assign({\n source: model.id,\n target: model.id\n }, edgeConfig), false);\n self.source = model.id;\n self.addingEdge = true;\n // 暂时将该边的 capture 设置为 false,这样可以拾取到后面的元素\n self.edge.getKeyShape().set('capture', false);\n }\n },\n // 边的起点已经确定,边的末端跟随鼠标移动\n updateEndPoint: function updateEndPoint(ev) {\n var self = this;\n if (self.key && !self.keydown) return;\n if (self.edge && self.edge.destroyed) self.cancelCreating({\n item: self.edge\n });\n var point = {\n x: ev.x,\n y: ev.y\n };\n // 若此时 source 节点已经被移除,结束添加边\n if (!self.graph.findById(self.source)) {\n self.addingEdge = false;\n return;\n }\n if (self.addingEdge && self.edge) {\n // 更新边的终点为鼠标位置\n self.graph.updateItem(self.edge, {\n target: point\n }, false);\n }\n },\n // 取消增加边,删除该边;或指定终点\n cancelCreating: function cancelCreating(ev) {\n var _a, _b;\n var self = this;\n if (self.key && !self.keydown) return;\n var graph = self.graph;\n var currentEdge = ev.item;\n if (self.addingEdge && (self.edge === currentEdge || ((_b = (_a = ev.target) === null || _a === void 0 ? void 0 : _a.isCanvas) === null || _b === void 0 ? void 0 : _b.call(_a)))) {\n if (self.edge && !self.edge.destroyed) graph.removeItem(self.edge, false);\n self.edge = null;\n self.addingEdge = false;\n return;\n }\n },\n onKeyDown: function onKeyDown(e) {\n var self = this;\n var code = e.key;\n if (!code) {\n return;\n }\n if (code.toLowerCase() === self.key.toLowerCase()) {\n self.keydown = true;\n } else {\n self.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n var self = this;\n if (self.addingEdge && self.edge) {\n // 清除正在增加的边\n self.graph.removeItem(self.edge, false);\n self.addingEdge = false;\n self.edge = null;\n }\n this.keydown = false;\n }\n};","var DEFAULT_TRIGGER = 'ctrl';\nvar ALLOW_EVENTS = ['shift', 'ctrl', 'alt', 'control'];\nvar DEFAULT_COMBINED_KEY = '1';\nexport default {\n getDefaultCfg: function getDefaultCfg() {\n return {\n trigger: DEFAULT_TRIGGER,\n combinedKey: DEFAULT_COMBINED_KEY,\n functionName: 'fitView',\n functionParams: []\n };\n },\n getEvents: function getEvents() {\n // 检测输入是否合法\n if (!(ALLOW_EVENTS.indexOf(this.trigger.toLowerCase()) > -1)) {\n this.trigger = DEFAULT_TRIGGER;\n console.warn(\"Behavior shortcuts-fit-view \\u7684 trigger \\u53C2\\u6570 '\".concat(this.trigger, \"' \\u4E0D\\u5408\\u6CD5\\uFF0C\\u8BF7\\u8F93\\u5165 'drag'\\u3001'shift'\\u3001'ctrl' \\u6216 'alt'\"));\n }\n if (this.combinedKey === this.trigger) {\n this.combinedKey = undefined;\n }\n return {\n keyup: 'onKeyUp',\n keydown: 'onKeyDown'\n };\n },\n onKeyDown: function onKeyDown(e) {\n var code = e.key;\n if (!code) {\n return;\n }\n var triggerLowerCase = this.trigger.toLowerCase();\n var codeLowerCase = code.toLowerCase();\n // 按住 control 键时,允许用户设置 trigger 为 ctrl\n if (!this.triggerKeydown) {\n if (codeLowerCase === triggerLowerCase || codeLowerCase === 'control' && triggerLowerCase === 'ctrl' || codeLowerCase === 'ctrl' && triggerLowerCase === 'control') {\n this.triggerKeydown = true;\n } else {\n this.triggerKeydown = false;\n }\n }\n var graph = this.graph;\n if (!graph[this.functionName]) {\n console.warn(\"Behavior shortcuts-fit-view \\u7684 functionName \\u53C2\\u6570 '\".concat(this.functionName, \"' \\u4E0D\\u5408\\u6CD5\\uFF0C\\u5B83\\u4E0D\\u662F Graph \\u7684\\u4E00\\u4E2A\\u51FD\\u6570\\u540D\"));\n return {};\n }\n // 未配置 combinedKey,直接 fitView\n if (this.triggerKeydown && !this.combinedKey) {\n if (this.functionParams && this.functionParams.length) graph[this.functionName].apply(graph, this.functionParams);else graph[this.functionName]();\n return;\n }\n var combinedKeyLowerCase = this.combinedKey.toLowerCase();\n if (this.triggerKeydown) {\n if (codeLowerCase === combinedKeyLowerCase || codeLowerCase === 'control' && combinedKeyLowerCase === 'ctrl' || codeLowerCase === 'ctrl' && combinedKeyLowerCase === 'control') {\n if (this.functionParams && this.functionParams.length) graph[this.functionName].apply(graph, this.functionParams);else graph[this.functionName]();\n }\n }\n },\n onKeyUp: function onKeyUp() {\n if (this.brush) {\n // 清除所有选中状态后,设置拖得动状态为false,并清除框选的brush\n this.brush.remove(true);\n this.brush = null;\n this.dragging = false;\n }\n this.triggerKeydown = false;\n }\n};","var ALLOW_EVENTS = ['shift', 'ctrl', 'alt', 'control', 'meta'];\nexport default {\n getDefaultCfg: function getDefaultCfg() {\n return {\n direction: 'both',\n enableOptimize: false,\n zoomKey: 'ctrl',\n // scroll-canvas 可滚动的扩展范围,默认为 0,即最多可以滚动一屏的位置\n // 当设置的值大于 0 时,即滚动可以超过一屏\n // 当设置的值小于 0 时,相当于缩小了可滚动范围\n // 具体实例可参考:https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*IFfoS67_HssAAAAAAAAAAAAAARQnAQ\n scalableRange: 0,\n allowDragOnItem: true\n };\n },\n getEvents: function getEvents() {\n if (!this.zoomKey || ALLOW_EVENTS.indexOf(this.zoomKey) === -1) this.zoomKey = 'ctrl';\n return {\n wheel: 'onWheel'\n };\n },\n onWheel: function onWheel(ev) {\n var _this = this;\n var target = ev.target;\n var targetIsCanvas = target && target.isCanvas && target.isCanvas();\n if (!this.allowDragOnItem && !targetIsCanvas) return;\n var graph = this.graph;\n var zoomKeys = Array.isArray(this.zoomKey) ? [].concat(this.zoomKey) : [this.zoomKey];\n if (zoomKeys.includes('control')) zoomKeys.push('ctrl');\n var keyDown = zoomKeys.some(function (ele) {\n return ev[\"\".concat(ele, \"Key\")];\n });\n if (keyDown) {\n var canvas = graph.get('canvas');\n var point = canvas.getPointByClient(ev.clientX, ev.clientY);\n var ratio = graph.getZoom();\n if (ev.wheelDelta > 0) {\n ratio = ratio + ratio * 0.05;\n } else {\n ratio = ratio - ratio * 0.05;\n }\n graph.zoomTo(ratio, {\n x: point.x,\n y: point.y\n });\n } else {\n var dx = ev.deltaX || ev.movementX;\n var dy = ev.deltaY || ev.movementY;\n if (!dy && navigator.userAgent.indexOf('Firefox') > -1) dy = -ev.wheelDelta * 125 / 3;\n var width = this.graph.get('width');\n var height = this.graph.get('height');\n var graphCanvasBBox = this.graph.get('canvas').getCanvasBBox();\n var expandWidth = this.scalableRange;\n var expandHeight = this.scalableRange;\n // 若 scalableRange 是 0~1 的小数,则作为比例考虑\n if (expandWidth < 1 && expandWidth > -1) {\n expandWidth = width * expandWidth;\n expandHeight = height * expandHeight;\n }\n var minX = graphCanvasBBox.minX,\n maxX = graphCanvasBBox.maxX,\n minY = graphCanvasBBox.minY,\n maxY = graphCanvasBBox.maxY;\n if (dx > 0) {\n if (maxX < -expandWidth) {\n dx = 0;\n } else if (maxX - dx < -expandWidth) {\n dx = maxX + expandWidth;\n }\n } else if (dx < 0) {\n if (minX > width + expandWidth) {\n dx = 0;\n } else if (minX - dx > width + expandWidth) {\n dx = minX - (width + expandWidth);\n }\n }\n if (dy > 0) {\n if (maxY < -expandHeight) {\n dy = 0;\n } else if (maxY - dy < -expandHeight) {\n dy = maxY + expandHeight;\n }\n } else if (dy < 0) {\n if (minY > height + expandHeight) {\n dy = 0;\n } else if (minY - dy > height + expandHeight) {\n dy = minY - (height + expandHeight);\n }\n }\n if (this.get('direction') === 'x') {\n dy = 0;\n } else if (this.get('direction') === 'y') {\n dx = 0;\n }\n graph.translate(-dx, -dy);\n }\n ev.preventDefault();\n // hide the shapes when the zoom ratio is smaller than optimizeZoom\n // hide the shapes when zoomming\n var enableOptimize = this.get('enableOptimize');\n if (enableOptimize) {\n var optimizeZoom_1 = this.get('optimizeZoom');\n var optimized = this.get('optimized');\n var nodes_1 = graph.getNodes();\n var edges_1 = graph.getEdges();\n var nodesLength_1 = nodes_1.length;\n var edgesLength_1 = edges_1.length;\n // hiding\n if (!optimized) {\n for (var n = 0; n < nodesLength_1; n++) {\n var node = nodes_1[n];\n if (!node.destroyed) {\n var children = node.get('group').get('children');\n var childrenLength = children.length;\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n if (!shape.destoryed && !shape.get('isKeyShape')) {\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n }\n }\n }\n }\n for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) {\n var edge = edges_1[edgeIndex];\n var children = edge.get('group').get('children');\n var childrenLength = children.length;\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n }\n }\n this.set('optimized', true);\n }\n // showing after 100ms\n clearTimeout(this.get('timeout'));\n var timeout = setTimeout(function () {\n var currentZoom = graph.getZoom();\n var curOptimized = _this.get('optimized');\n if (curOptimized) {\n _this.set('optimized', false);\n for (var n = 0; n < nodesLength_1; n++) {\n var node = nodes_1[n];\n var children = node.get('group').get('children');\n var childrenLength = children.length;\n if (currentZoom < optimizeZoom_1) {\n var keyShape = node.getKeyShape();\n var oriVis = keyShape.get('ori-visibility');\n if (oriVis) keyShape.show();\n } else {\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n var oriVis = shape.get('ori-visibility');\n if (!shape.get('visible') && oriVis) {\n if (oriVis) shape.show();\n }\n }\n }\n }\n for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) {\n var edge = edges_1[edgeIndex];\n var children = edge.get('group').get('children');\n var childrenLength = children.length;\n if (currentZoom < optimizeZoom_1) {\n var keyShape = edge.getKeyShape();\n var oriVis = keyShape.get('ori-visibility');\n if (oriVis) keyShape.show();\n } else {\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n if (!shape.get('visible')) {\n var oriVis = shape.get('ori-visibility');\n if (oriVis) shape.show();\n }\n }\n }\n }\n }\n }, 100);\n this.set('timeout', timeout);\n }\n }\n};","import { each } from '@antv/util';\nimport { registerBehavior } from '@antv/g6-core';\n// import Behavior from './behavior';\nimport DragCanvas from './drag-canvas';\nimport DragNode from './drag-node';\nimport ActivateRelations from './activate-relations';\nimport BrushSelect from './brush-select';\nimport ClickSelect from './click-select';\nimport ZoomCanvas from './zoom-canvas';\nimport Tooltip from './tooltip';\nimport EdgeTooltip from './edge-tooltip';\nimport CollapseExpand from './collapse-expand';\nimport DragCombo from './drag-combo';\nimport CollapseExpandCombo from './collapse-expand-combo';\nimport LassoSelect from './lasso-select';\nimport CreateEdge from './create-edge';\nimport ShortcutsCall from './shortcuts-call';\nimport ScrollCanvas from './scroll-canvas';\nvar behaviors = {\n 'drag-canvas': DragCanvas,\n 'zoom-canvas': ZoomCanvas,\n 'drag-node': DragNode,\n 'activate-relations': ActivateRelations,\n 'brush-select': BrushSelect,\n 'click-select': ClickSelect,\n 'lasso-select': LassoSelect,\n tooltip: Tooltip,\n 'edge-tooltip': EdgeTooltip,\n 'collapse-expand': CollapseExpand,\n 'drag-combo': DragCombo,\n 'collapse-expand-combo': CollapseExpandCombo,\n 'create-edge': CreateEdge,\n 'shortcuts-call': ShortcutsCall,\n 'scroll-canvas': ScrollCanvas\n};\neach(behaviors, function (behavior, type) {\n registerBehavior(type, behavior);\n});\n// export default Behavior;","import { __assign } from \"tslib\";\nimport { registerBehavior, registerCombo, registerEdge, registerNode, Arrow, Marker, Shape } from '@antv/g6-core';\nimport * as AlgorithmSync from '@antv/algorithm';\nimport * as AlgorithmAsync from '@antv/algorithm/lib/asyncIndex';\nimport Graph from './graph/graph';\nimport TreeGraph from './graph/tree-graph';\nimport { TreeLayout, Layout, registerLayout } from './layout';\nimport Global from './global';\nimport Util from './util';\nimport Plugin from './plugin';\nimport './element';\nimport './behavior';\nvar Algorithm = __assign(__assign({}, AlgorithmSync), AlgorithmAsync);\nvar Grid = Plugin.Grid;\nvar Minimap = Plugin.Minimap;\nvar Bundling = Plugin.Bundling;\nvar Menu = Plugin.Menu;\nvar Fisheye = Plugin.Fisheye;\nvar ToolBar = Plugin.ToolBar;\nvar Tooltip = Plugin.Tooltip;\nvar TimeBar = Plugin.TimeBar;\nvar ImageMinimap = Plugin.ImageMinimap;\nvar EdgeFilterLens = Plugin.EdgeFilterLens;\nvar SnapLine = Plugin.SnapLine;\nvar Legend = Plugin.Legend;\nvar Annotation = Plugin.Annotation;\nexport * from '@antv/g6-core';\nexport * from './types';\nexport * from './interface/graph';\nexport { Graph, TreeGraph, Util, Layout, TreeLayout, registerLayout, Global, Minimap, Grid, Bundling, Menu, Fisheye, Algorithm, ToolBar, Tooltip, TimeBar, ImageMinimap, EdgeFilterLens, SnapLine, Legend, Annotation, Arrow, Marker, Shape };\nexport default {\n version: Global.version,\n Graph: Graph,\n TreeGraph: TreeGraph,\n Util: Util,\n Layout: Layout,\n TreeLayout: TreeLayout,\n registerLayout: registerLayout,\n Global: Global,\n registerBehavior: registerBehavior,\n registerCombo: registerCombo,\n registerEdge: registerEdge,\n registerNode: registerNode,\n Minimap: Plugin.Minimap,\n Grid: Plugin.Grid,\n Bundling: Plugin.Bundling,\n Menu: Plugin.Menu,\n ToolBar: Plugin.ToolBar,\n Tooltip: Plugin.Tooltip,\n Legend: Plugin.Legend,\n TimeBar: TimeBar,\n SnapLine: SnapLine,\n Fisheye: Fisheye,\n ImageMinimap: ImageMinimap,\n EdgeFilterLens: EdgeFilterLens,\n Annotation: Annotation,\n Algorithm: Algorithm,\n Arrow: Arrow,\n Marker: Marker,\n Shape: Shape\n};","import G6 from '@antv/g6-pc';\nG6.version = '4.8.3';\nexport * from '@antv/g6-pc';\nexport default G6;\nexport var version = '4.8.3';","import { IGraphData } from \"../../components/graph/GraphHooks\";\n\n\nconst getShadowColor = (followerGrowth: number) => {\n if (followerGrowth >= 1 && followerGrowth < 5) {\n return { shadowColor: 'blue', stroke: 'blue' }\n }\n if (followerGrowth >= 5) {\n return { shadowColor: 'green', stroke: 'green', lineWidth: 3 }\n }\n return { stroke: null } as any\n}\n\nexport const transformAntVData = (data: IGraphData): any => {\n var sUsrAg = navigator.userAgent;\n const nodes: any = []\n const edges: any = []\n for (let i = 0; i < data.nodes.length; i++) {\n nodes.push({\n 'id': data.nodes[i].id,\n 'label': data.nodes[i].id,\n 'size': data.nodes[i].size > 1000 ? data.nodes[i].size / 60 : data.nodes[i].size / 20,\n 'style': {\n opacity: data.nodes[i].opacity,\n fill: data.nodes[i].color,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n shadowBlur: 30,\n ...getShadowColor(data.nodes[i].followerGrowth)\n\n },\n\n labelCfg: {\n position: 'top',\n style: {\n fill: data.nodes[i].fontColor,\n }\n }\n })\n }\n for (let i = 0; i < data.links.length; i++) {\n edges.push({\n 'id': i,\n 'source': data.links[i].source,\n 'target': data.links[i].target\n })\n }\n return {\n edges: edges,\n nodes: nodes\n }\n}","import { useState } from 'react';\nimport minimize from '../../assets/minimize.png';\nimport minimizeDark from '../../assets/minimizeDark.png';\nimport expand from '../../assets/expand.png';\nimport expandDark from '../../assets/expandDark.png';\n\ninterface ExpandGraphProps {\n expandGraph: boolean;\n setExpandGraph: React.Dispatch>;\n}\n\nconst ExpandGraph: React.FC = ({ expandGraph, setExpandGraph }) => {\n const [isHovered, setIsHovered] = useState(false);\n\n return (\n
\n \n
\n );\n};\nexport default ExpandGraph;\n","import React from 'react';\nimport { ILegendPoint } from './GraphHooks';\n\ninterface GraphLegendProps {\n legend: ILegendPoint[];\n}\n\nconst GraphLegend: React.FC = ({ legend }) => {\n return (\n
\n {legend.map(point => (\n \n ))}\n
\n );\n};\n\ninterface GraphLegendPointProps {\n point: ILegendPoint;\n}\n\nconst GraphLegendPoint: React.FC = ({ point }) => {\n return (\n
\n
\n

\n
\n

{point.description}

\n
\n );\n};\n\nexport default GraphLegend;\n","import React, { useEffect, useState, useRef } from 'react';\nimport G6 from '@antv/g6';\nimport { IGraphData, IGraphNode, ILegendPoint } from './GraphHooks';\nimport { transformAntVData } from '../../helpers/functions/graphDataTransform';\nimport ExpandGraph from './ExpandGraph';\nimport GraphLegend from './GraphLegend';\nimport Loading from '../Loading';\n\ninterface Props {\n filteredData: Map;\n data: IGraphData;\n legend: ILegendPoint[];\n handleClick: (nodeId: string) => void;\n expandGraph: boolean;\n setExpandGraph: React.Dispatch>;\n gpuEnabled?: boolean;\n}\n\nexport const Graph: React.FC = ({\n data,\n filteredData,\n expandGraph,\n legend,\n gpuEnabled = false,\n setExpandGraph,\n handleClick\n}) => {\n const ref = useRef(null);\n\n // let graph: any = null;\n const [graph, setGraph] = useState(null);\n\n // tool tip\n const [ticking, setTicking] = useState(true);\n\n const clearNodes = () => {\n graph.getEdges()?.forEach(function(edge: any) {\n graph.clearItemStates(edge);\n });\n graph.getNodes()?.forEach(function(node: any) {\n if (node) {\n graph.setItemState(node, 'active', false);\n graph.setItemState(node, 'inactive', false);\n }\n });\n };\n\n const filterEvents = (filteredData: any) => {\n clearNodes();\n graph.getNodes()?.forEach(function(node: any) {\n if (filteredData.has(node._cfg.id)) {\n graph.setItemState(node, 'filtered', true);\n } else {\n graph.setItemState(node, 'filtered', false);\n }\n });\n };\n\n const bindEvents = () => {\n if (!graph || !graph.destroyed) {\n if (ref || ref.current.offsetWidth || ref.current.offsetHeight) {\n const resizeObserver = new ResizeObserver(entries => {\n if (ref.current && !graph.destroyed) {\n graph.changeSize(ref.current.offsetWidth, ref.current.offsetHeight);\n }\n });\n resizeObserver.observe(ref.current);\n }\n }\n\n const highlightNeighbourNodes = (item: any) => {\n clearNodes();\n graph.getNodes().forEach(function(node: any) {\n graph.setItemState(node, 'inactive', true);\n });\n graph.setItemState(item, 'active', true); //activate current node\n graph.getNeighbors(item).forEach(function(node: any) {\n node._cfg.edges.forEach(function(edge: any) {\n if (edge._cfg.model.source === item._cfg.model.id) {\n graph.setItemState(edge, 'active', true);\n graph.setItemState(node, 'active', true);\n }\n });\n });\n };\n\n // Gets rid of all events on edges so that they don't interfere with the canvas drag\n graph.getEdges().forEach((edge: any) => {\n const group = edge.getContainer();\n group.set('capture', false);\n });\n\n graph.on('afterlayout', (e: any) => {\n setTicking(false);\n });\n\n graph.on('node:click', (evt: any) => {\n const { item } = evt;\n const model = item.getModel();\n const { id } = model;\n handleClick(id);\n });\n\n graph.on('node:mouseenter', (evt: any) => {\n const { item, target } = evt;\n if (target.cfg.type === 'text') {\n return;\n }\n highlightNeighbourNodes(item);\n });\n\n graph.on('node:touchstart', (evt: any) => {\n // clearNodes();\n const { item } = evt;\n graph.setItemState(item, 'selected', true); // set node style\n highlightNeighbourNodes(item);\n });\n\n graph.on('canvas:touchstart', (evt: any) => {\n clearNodes();\n });\n\n graph.on('node:mouseout', (evt: any) => {\n clearNodes();\n });\n };\n\n useEffect(() => {\n if (graph) {\n graph.destroy();\n }\n if (data) {\n const temp = new G6.Graph({\n container: ref.current,\n width: ref.current.offsetWidth,\n height: ref.current.offsetHeight,\n fitView: true,\n modes: {\n default: [\n 'drag-node',\n {\n type: 'drag-canvas',\n enableOptimize: false\n // allowDragOnItem: true,\n },\n {\n type: 'zoom-canvas',\n sensitivity: 1,\n enableOptimize: false\n }\n ]\n },\n defaultNode: {\n shape: 'node',\n\n labelPosition: 'right',\n // 节点文本样式\n labelCfg: {\n position: 'right',\n style: {\n fill: '#000',\n fontFamily: 'sans-serif',\n fontSize: 10\n }\n },\n // 节点默认样式\n style: {\n stroke: '#72CC4A',\n width: 150\n }\n },\n defaultEdge: {\n shape: 'polyline',\n style: {\n endArrow: true\n }\n },\n // 节点交互状态配置\n nodeStateStyles: {\n inactive: {\n opacity: 0.2\n },\n active: {\n opacity: 1\n },\n filtered: {\n opacity: 0.2\n }\n },\n edgeStateStyles: {\n hover: {\n stroke: 'blue',\n lineWidth: 3\n }\n },\n layout: {\n type: 'gForce',\n preventOverlap: true,\n maxIteration: gpuEnabled ? 1000 : 100,\n edgeStrength: 500,\n gpuEnabled: gpuEnabled // Whether to enable the GPU parallel computing, supported by G6 4.0\n }\n });\n setGraph(temp);\n }\n }, [data]);\n\n useEffect(() => {\n if (graph && !graph.destroyed) {\n graph.data(transformAntVData(data));\n graph.render();\n bindEvents();\n }\n }, [graph]);\n\n useEffect(() => {\n if (graph) {\n filterEvents(filteredData);\n }\n }, [filteredData]);\n\n return (\n
\n
\n \n
\n
\n \n \n
\n
\n\n ) \n}\n","import React, { useEffect, useState } from 'react';\nimport { ArtistGraphHeader } from '../header/ArtistGraphHeader';\nimport Loading from '../Loading';\nimport SettingsContainer from '../settings/SettingsContainer';\nimport SummaryContainer from '../summary/SummaryContainer';\nimport { useGraph } from './GraphHooks';\nimport { TopArtistsListView } from '../summary/TopArtists';\nimport { Graph } from './Graph';\n\ninterface ArtistGraphContainerProps {\n path: string;\n params: any;\n graphType: string;\n}\n\nexport const ArtistGraphContainer: React.FC = ({\n path,\n params,\n graphType\n}) => {\n const {\n data,\n filters,\n followersScale,\n artistDetail,\n graphSummary,\n graphDataIsLoading,\n search,\n filteredNodes,\n setArtistDetail,\n onChangeFilterFollowerScale,\n onChangeFilter,\n resetFilters,\n selectAll,\n setSearch\n } = useGraph(path, params);\n\n const [expandGraph, setExpandGraph] = useState(false);\n const [antvData, setAntvData] = useState(data);\n\n useEffect(() => {\n if (data) {\n if (filteredNodes.size === 0) {\n setAntvData(data);\n }\n }\n }, [data, filteredNodes]);\n\n // useEffect(()=>{\n // const fetchData = async (): Promise => {\n // const user = await Auth.currentAuthenticatedUser()\n // Analytics.record({\n // name:\"graphVisit\",\n // attributes:{\n // graphType: graphType,\n // userEmail:user.attributes.email\n // }\n // })\n // }\n // fetchData()\n // },[])\n\n useEffect(() => {\n setListView(false);\n }, [graphDataIsLoading]);\n\n const [listView, setListView] = useState(false);\n\n const onClickNodeArtist = function(nodeId: string) {\n for (const item in data.nodes) {\n if (data.nodes[item]['id'] === nodeId) {\n setArtistDetail({\n name: nodeId,\n followers: data.nodes[item].followers,\n url: data.nodes[item].uri,\n img: data.nodes[item].imgUrl,\n popularity: data.nodes[item].popularity,\n genres: data.nodes[item].genres,\n label: data.nodes[item].label,\n releases: data.nodes[item].lastReleases,\n color: data.nodes[item].color,\n followerGrowth: data.nodes[item].followerGrowth,\n nonNettwerkAffinity: data.nodes[item].nonNettwerkAffinity\n });\n }\n }\n };\n\n return (\n
\n \n \n \n
\n {graphDataIsLoading ? (\n
\n \n
\n ) : (\n
\n \n
\n {data ? (\n \n ) : (\n <>\n )}\n
\n {data && listView ? (\n
\n \n
\n ) : (\n <>\n )}\n\n {!expandGraph && data ? (\n \n ) : (\n <>\n )}\n
\n \n )}\n \n {!graphDataIsLoading && !expandGraph ? (\n \n ) : (\n <>\n )}\n \n );\n};\n","const APP_NAME = \"Nettwerk Communities\";\n\nexport {APP_NAME}","import { Analytics, Auth } from 'aws-amplify';\nimport React, { useEffect, useContext, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { ArtistGraphContainer } from '../../../components/graph/ArtistGraphContainer';\nimport { APP_NAME } from '../../../constants/global';\n\nexport const CommunityContainer: React.FC = () => {\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n const [source, setSource] = useState(\n searchParams.get('artist')\n ? searchParams.get('artist')\n : 'https://open.spotify.com/artist/6AyATGg7mDgBlZ4N5uNog0?si=qjG8FnqwTsG4xXFx6Qx6GQ&dl_branch=1'\n );\n useEffect(() => {\n document.title = `${APP_NAME} - Community`;\n }, []);\n\n // useEffect(()=>{\n // const fetchData = async (): Promise => {\n // const user = await Auth.currentAuthenticatedUser()\n // Analytics.record({\n // name:\"pageVisit\",\n // attributes:{\n // userEmail:user.attributes.email\n // }\n\n // })\n // }\n // fetchData()\n // },[])\n\n return (\n \n );\n};\n","import React, { useEffect } from 'react';\nimport { ArtistGraphContainer } from '../../../components/graph/ArtistGraphContainer';\nimport { APP_NAME } from '../../../constants/global';\n\nexport const GenreContainer: React.FC = () => {\n useEffect(() => {\n document.title = `${APP_NAME} - Genre`;\n }, []);\n return (\n \n );\n};\n","import React, { useEffect } from 'react';\nimport { ArtistGraphContainer } from '../../../components/graph/ArtistGraphContainer';\nimport { APP_NAME } from '../../../constants/global';\n\nexport const ConnectionContainer: React.FC = () => {\n useEffect(() => {\n document.title = `${APP_NAME} - Connection`;\n }, []);\n return (\n \n );\n};\n","import React, { useEffect } from 'react';\nimport { ArtistGraphContainer } from '../../../components/graph/ArtistGraphContainer';\nimport { APP_NAME } from '../../../constants/global';\n\nexport const NettwerkContainer: React.FC = () => {\n useEffect(() => {\n document.title = `${APP_NAME} - Nettwerk`;\n }, []);\n return (\n \n );\n};\n","/**\n * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { ConsoleLogger as Logger } from '../Logger';\nimport { browserOrNode } from '../JS';\nimport { Amplify } from '../Amplify';\n/**\n * Provides a means to registering a service worker in the browser\n * and communicating with it via postMessage events.\n * https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/\n *\n * postMessage events are currently not supported in all browsers. See:\n * https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API\n *\n * At the minmum this class will register the service worker and listen\n * and attempt to dispatch messages on state change and record analytics\n * events based on the service worker lifecycle.\n */\nexport class ServiceWorkerClass {\n\t// The active service worker will be set once it is registered\n\tprivate _serviceWorker: ServiceWorker;\n\n\t// The service worker registration object\n\tprivate _registration: ServiceWorkerRegistration;\n\n\t// The application server public key for Push\n\t// https://web-push-codelab.glitch.me/\n\tprivate _publicKey: string;\n\n\t// push subscription\n\tprivate _subscription: PushSubscription;\n\n\t// The AWS Amplify logger\n\tprivate _logger: Logger = new Logger('ServiceWorker');\n\n\tconstructor() { }\n\n\t/**\n\t * Get the currently active service worker\n\t */\n\tget serviceWorker(): ServiceWorker {\n\t\treturn this._serviceWorker;\n\t}\n\n\t/**\n\t * Register the service-worker.js file in the browser\n\t * Make sure the service-worker.js is part of the build\n\t * for example with Angular, modify the angular-cli.json file\n\t * and add to \"assets\" array \"service-worker.js\"\n\t * @param {string} - (optional) Service worker file. Defaults to \"/service-worker.js\"\n\t * @param {string} - (optional) The service worker scope. Defaults to \"/\"\n\t * - API Doc: https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/register\n\t * @returns {Promise}\n\t *\t- resolve(ServiceWorkerRegistration)\n\t *\t- reject(Error)\n\t **/\n\tregister(filePath: string = '/service-worker.js', scope: string = '/') {\n\t\tthis._logger.debug(`registering ${filePath}`);\n\t\tthis._logger.debug(`registering service worker with scope ${scope}`);\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (navigator && 'serviceWorker' in navigator) {\n\t\t\t\tnavigator.serviceWorker\n\t\t\t\t\t.register(filePath, {\n\t\t\t\t\t\tscope,\n\t\t\t\t\t})\n\t\t\t\t\t.then(registration => {\n\t\t\t\t\t\tif (registration.installing) {\n\t\t\t\t\t\t\tthis._serviceWorker = registration.installing;\n\t\t\t\t\t\t} else if (registration.waiting) {\n\t\t\t\t\t\t\tthis._serviceWorker = registration.waiting;\n\t\t\t\t\t\t} else if (registration.active) {\n\t\t\t\t\t\t\tthis._serviceWorker = registration.active;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._registration = registration;\n\t\t\t\t\t\tthis._setupListeners();\n\t\t\t\t\t\tthis._logger.debug(\n\t\t\t\t\t\t\t`Service Worker Registration Success: ${registration}`\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn resolve(registration);\n\t\t\t\t\t})\n\t\t\t\t\t.catch(error => {\n\t\t\t\t\t\tthis._logger.debug(`Service Worker Registration Failed ${error}`);\n\t\t\t\t\t\treturn reject(error);\n\t\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn reject(new Error('Service Worker not available'));\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Enable web push notifications. If not subscribed, a new subscription will\n\t * be created and registered.\n\t * \tTest Push Server: https://web-push-codelab.glitch.me/\n\t * \tPush Server Libraries: https://github.com/web-push-libs/\n\t * \tAPI Doc: https://developers.google.com/web/fundamentals/codelabs/push-notifications/\n\t * @param publicKey\n\t * @returns {Promise}\n\t * \t- resolve(PushSubscription)\n\t * - reject(Error)\n\t */\n\tenablePush(publicKey: string) {\n\t\tif (!this._registration) throw new Error('Service Worker not registered');\n\t\tthis._publicKey = publicKey;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (browserOrNode().isBrowser) {\n\t\t\t\tthis._registration.pushManager.getSubscription().then(subscription => {\n\t\t\t\t\tif (subscription) {\n\t\t\t\t\t\tthis._subscription = subscription;\n\t\t\t\t\t\tthis._logger.debug(\n\t\t\t\t\t\t\t`User is subscribed to push: ${JSON.stringify(subscription)}`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresolve(subscription);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._logger.debug(`User is NOT subscribed to push`);\n\t\t\t\t\t\treturn this._registration.pushManager\n\t\t\t\t\t\t\t.subscribe({\n\t\t\t\t\t\t\t\tuserVisibleOnly: true,\n\t\t\t\t\t\t\t\tapplicationServerKey: this._urlB64ToUint8Array(publicKey),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.then(subscription => {\n\t\t\t\t\t\t\t\tthis._subscription = subscription;\n\t\t\t\t\t\t\t\tthis._logger.debug(\n\t\t\t\t\t\t\t\t\t`User subscribed: ${JSON.stringify(subscription)}`\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tresolve(subscription);\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.catch(error => {\n\t\t\t\t\t\t\t\tthis._logger.error(error);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn reject(new Error('Service Worker not available'));\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Convert a base64 encoded string to a Uint8 array for the push server key\n\t * @param base64String\n\t */\n\tprivate _urlB64ToUint8Array(base64String: string) {\n\t\tconst padding = '='.repeat((4 - (base64String.length % 4)) % 4);\n\t\tconst base64 = (base64String + padding)\n\t\t\t.replace(/\\-/g, '+')\n\t\t\t.replace(/_/g, '/');\n\n\t\tconst rawData = window.atob(base64);\n\t\tconst outputArray = new Uint8Array(rawData.length);\n\n\t\tfor (let i = 0; i < rawData.length; ++i) {\n\t\t\toutputArray[i] = rawData.charCodeAt(i);\n\t\t}\n\t\treturn outputArray;\n\t}\n\n\t/**\n\t * Send a message to the service worker. The service worker needs\n\t * to implement `self.addEventListener('message') to handle the\n\t * message. This ***currently*** does not work in Safari or IE.\n\t * @param {object | string} - An arbitrary JSON object or string message to send to the service worker\n\t *\t- see: https://developer.mozilla.org/en-US/docs/Web/API/Transferable\n\t * @returns {Promise}\n\t **/\n\tsend(message: object | string) {\n\t\tif (this._serviceWorker) {\n\t\t\tthis._serviceWorker.postMessage(\n\t\t\t\ttypeof message === 'object' ? JSON.stringify(message) : message\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Listen for service worker state change and message events\n\t * https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/state\n\t **/\n\t_setupListeners() {\n\t\tthis._serviceWorker.addEventListener('statechange', event => {\n\t\t\tconst currentState = this._serviceWorker.state;\n\t\t\tthis._logger.debug(`ServiceWorker statechange: ${currentState}`);\n\t\t\tif (Amplify.Analytics && typeof Amplify.Analytics.record === 'function') {\n\t\t\t\tAmplify.Analytics.record({\n\t\t\t\t\tname: 'ServiceWorker',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tstate: currentState,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tthis._serviceWorker.addEventListener('message', event => {\n\t\t\tthis._logger.debug(`ServiceWorker message event: ${event}`);\n\t\t});\n\t}\n}\n\n/**\n * @deprecated use named import\n */\nexport default ServiceWorkerClass;\n","import { SENSITIVE_STRING, SmithyException as __SmithyException } from \"@aws-sdk/smithy-client\";\nimport { MetadataBearer as $MetadataBearer } from \"@aws-sdk/types\";\nimport { Readable } from \"stream\";\n\n/**\n *

Specifies the days since the initiation of an incomplete multipart upload that Amazon S3 will\n * wait before permanently removing all parts of the upload. For more information, see \n * Aborting Incomplete Multipart Uploads Using a Bucket Lifecycle Policy in the\n * Amazon Simple Storage Service Developer Guide.

\n */\nexport interface AbortIncompleteMultipartUpload {\n /**\n *

Specifies the number of days after which Amazon S3 aborts an incomplete multipart\n * upload.

\n */\n DaysAfterInitiation?: number;\n}\n\nexport namespace AbortIncompleteMultipartUpload {\n export const filterSensitiveLog = (obj: AbortIncompleteMultipartUpload): any => ({\n ...obj,\n });\n}\n\nexport type RequestCharged = \"requester\";\n\nexport interface AbortMultipartUploadOutput {\n /**\n *

If present, indicates that the requester was successfully charged for the\n * request.

\n */\n RequestCharged?: RequestCharged | string;\n}\n\nexport namespace AbortMultipartUploadOutput {\n export const filterSensitiveLog = (obj: AbortMultipartUploadOutput): any => ({\n ...obj,\n });\n}\n\nexport type RequestPayer = \"requester\";\n\nexport interface AbortMultipartUploadRequest {\n /**\n *

The bucket name to which the upload was taking place.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

Key of the object for which the multipart upload was initiated.

\n */\n Key: string | undefined;\n\n /**\n *

Upload ID that identifies the multipart upload.

\n */\n UploadId: string | undefined;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace AbortMultipartUploadRequest {\n export const filterSensitiveLog = (obj: AbortMultipartUploadRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

The specified multipart upload does not exist.

\n */\nexport interface NoSuchUpload extends __SmithyException, $MetadataBearer {\n name: \"NoSuchUpload\";\n $fault: \"client\";\n}\n\nexport namespace NoSuchUpload {\n export const filterSensitiveLog = (obj: NoSuchUpload): any => ({\n ...obj,\n });\n}\n\nexport type BucketAccelerateStatus = \"Enabled\" | \"Suspended\";\n\n/**\n *

Configures the transfer acceleration state for an Amazon S3 bucket. For more information, see\n * Amazon S3\n * Transfer Acceleration in the Amazon Simple Storage Service Developer\n * Guide.

\n */\nexport interface AccelerateConfiguration {\n /**\n *

Specifies the transfer acceleration status of the bucket.

\n */\n Status?: BucketAccelerateStatus | string;\n}\n\nexport namespace AccelerateConfiguration {\n export const filterSensitiveLog = (obj: AccelerateConfiguration): any => ({\n ...obj,\n });\n}\n\nexport type Type = \"AmazonCustomerByEmail\" | \"CanonicalUser\" | \"Group\";\n\n/**\n *

Container for the person being granted permissions.

\n */\nexport interface Grantee {\n /**\n *

Screen name of the grantee.

\n */\n DisplayName?: string;\n\n /**\n *

Email address of the grantee.

\n * \n *

Using email addresses to specify a grantee is only supported in the following AWS Regions:

\n *
    \n *
  • \n *

    US East (N. Virginia)

    \n *
  • \n *
  • \n *

    US West (N. California)

    \n *
  • \n *
  • \n *

    US West (Oregon)

    \n *
  • \n *
  • \n *

    Asia Pacific (Singapore)

    \n *
  • \n *
  • \n *

    Asia Pacific (Sydney)

    \n *
  • \n *
  • \n *

    Asia Pacific (Tokyo)

    \n *
  • \n *
  • \n *

    Europe (Ireland)

    \n *
  • \n *
  • \n *

    South America (São Paulo)

    \n *
  • \n *
\n *

For a list of all the Amazon S3 supported Regions and endpoints, see Regions and Endpoints in the AWS General Reference.

\n *
\n */\n EmailAddress?: string;\n\n /**\n *

The canonical user ID of the grantee.

\n */\n ID?: string;\n\n /**\n *

URI of the grantee group.

\n */\n URI?: string;\n\n /**\n *

Type of grantee

\n */\n Type: Type | string | undefined;\n}\n\nexport namespace Grantee {\n export const filterSensitiveLog = (obj: Grantee): any => ({\n ...obj,\n });\n}\n\nexport type Permission = \"FULL_CONTROL\" | \"READ\" | \"READ_ACP\" | \"WRITE\" | \"WRITE_ACP\";\n\n/**\n *

Container for grant information.

\n */\nexport interface Grant {\n /**\n *

The person being granted permissions.

\n */\n Grantee?: Grantee;\n\n /**\n *

Specifies the permission given to the grantee.

\n */\n Permission?: Permission | string;\n}\n\nexport namespace Grant {\n export const filterSensitiveLog = (obj: Grant): any => ({\n ...obj,\n });\n}\n\n/**\n *

Container for the owner's display name and ID.

\n */\nexport interface Owner {\n /**\n *

Container for the display name of the owner.

\n */\n DisplayName?: string;\n\n /**\n *

Container for the ID of the owner.

\n */\n ID?: string;\n}\n\nexport namespace Owner {\n export const filterSensitiveLog = (obj: Owner): any => ({\n ...obj,\n });\n}\n\n/**\n *

Contains the elements that set the ACL permissions for an object per grantee.

\n */\nexport interface AccessControlPolicy {\n /**\n *

A list of grants.

\n */\n Grants?: Grant[];\n\n /**\n *

Container for the bucket owner's display name and ID.

\n */\n Owner?: Owner;\n}\n\nexport namespace AccessControlPolicy {\n export const filterSensitiveLog = (obj: AccessControlPolicy): any => ({\n ...obj,\n });\n}\n\nexport type OwnerOverride = \"Destination\";\n\n/**\n *

A container for information about access control for replicas.

\n */\nexport interface AccessControlTranslation {\n /**\n *

Specifies the replica ownership. For default and valid values, see PUT bucket\n * replication in the Amazon Simple Storage Service API Reference.

\n */\n Owner: OwnerOverride | string | undefined;\n}\n\nexport namespace AccessControlTranslation {\n export const filterSensitiveLog = (obj: AccessControlTranslation): any => ({\n ...obj,\n });\n}\n\nexport type ServerSideEncryption = \"AES256\" | \"aws:kms\";\n\nexport interface CompleteMultipartUploadOutput {\n /**\n *

The URI that identifies the newly created object.

\n */\n Location?: string;\n\n /**\n *

The name of the bucket that contains the newly created object.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket?: string;\n\n /**\n *

The object key of the newly created object.

\n */\n Key?: string;\n\n /**\n *

If the object expiration is configured, this will contain the expiration date\n * (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded.

\n */\n Expiration?: string;\n\n /**\n *

Entity tag that identifies the newly created object's data. Objects with different\n * object data will have different entity tags. The entity tag is an opaque string. The entity\n * tag may or may not be an MD5 digest of the object data. If the entity tag is not an MD5\n * digest of the object data, it will contain one or more nonhexadecimal characters and/or\n * will consist of less than 32 or more than 32 hexadecimal digits.

\n */\n ETag?: string;\n\n /**\n *

If you specified server-side encryption either with an Amazon S3-managed encryption key or an\n * AWS KMS customer master key (CMK) in your initiate multipart upload request, the response\n * includes this header. It confirms the encryption algorithm that Amazon S3 used to encrypt the\n * object.

\n */\n ServerSideEncryption?: ServerSideEncryption | string;\n\n /**\n *

Version ID of the newly created object, in case the bucket has versioning turned\n * on.

\n */\n VersionId?: string;\n\n /**\n *

If present, specifies the ID of the AWS Key Management Service (AWS KMS) symmetric\n * customer managed customer master key (CMK) that was used for the object.

\n */\n SSEKMSKeyId?: string;\n\n /**\n *

Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with AWS KMS (SSE-KMS).

\n */\n BucketKeyEnabled?: boolean;\n\n /**\n *

If present, indicates that the requester was successfully charged for the\n * request.

\n */\n RequestCharged?: RequestCharged | string;\n}\n\nexport namespace CompleteMultipartUploadOutput {\n export const filterSensitiveLog = (obj: CompleteMultipartUploadOutput): any => ({\n ...obj,\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n });\n}\n\n/**\n *

Details of the parts that were uploaded.

\n */\nexport interface CompletedPart {\n /**\n *

Entity tag returned when the part was uploaded.

\n */\n ETag?: string;\n\n /**\n *

Part number that identifies the part. This is a positive integer between 1 and\n * 10,000.

\n */\n PartNumber?: number;\n}\n\nexport namespace CompletedPart {\n export const filterSensitiveLog = (obj: CompletedPart): any => ({\n ...obj,\n });\n}\n\n/**\n *

The container for the completed multipart upload details.

\n */\nexport interface CompletedMultipartUpload {\n /**\n *

Array of CompletedPart data types.

\n */\n Parts?: CompletedPart[];\n}\n\nexport namespace CompletedMultipartUpload {\n export const filterSensitiveLog = (obj: CompletedMultipartUpload): any => ({\n ...obj,\n });\n}\n\nexport interface CompleteMultipartUploadRequest {\n /**\n *

Name of the bucket to which the multipart upload was initiated.

\n */\n Bucket: string | undefined;\n\n /**\n *

Object key for which the multipart upload was initiated.

\n */\n Key: string | undefined;\n\n /**\n *

The container for the multipart upload request information.

\n */\n MultipartUpload?: CompletedMultipartUpload;\n\n /**\n *

ID for the initiated multipart upload.

\n */\n UploadId: string | undefined;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace CompleteMultipartUploadRequest {\n export const filterSensitiveLog = (obj: CompleteMultipartUploadRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Container for all response elements.

\n */\nexport interface CopyObjectResult {\n /**\n *

Returns the ETag of the new object. The ETag reflects only changes to the contents of an\n * object, not its metadata. The source and destination ETag is identical for a successfully\n * copied object.

\n */\n ETag?: string;\n\n /**\n *

Returns the date that the object was last modified.

\n */\n LastModified?: Date;\n}\n\nexport namespace CopyObjectResult {\n export const filterSensitiveLog = (obj: CopyObjectResult): any => ({\n ...obj,\n });\n}\n\nexport interface CopyObjectOutput {\n /**\n *

Container for all response elements.

\n */\n CopyObjectResult?: CopyObjectResult;\n\n /**\n *

If the object expiration is configured, the response includes this header.

\n */\n Expiration?: string;\n\n /**\n *

Version of the copied object in the destination bucket.

\n */\n CopySourceVersionId?: string;\n\n /**\n *

Version ID of the newly created copy.

\n */\n VersionId?: string;\n\n /**\n *

The server-side encryption algorithm used when storing this object in Amazon S3 (for example,\n * AES256, aws:kms).

\n */\n ServerSideEncryption?: ServerSideEncryption | string;\n\n /**\n *

If server-side encryption with a customer-provided encryption key was requested, the\n * response will include this header confirming the encryption algorithm used.

\n */\n SSECustomerAlgorithm?: string;\n\n /**\n *

If server-side encryption with a customer-provided encryption key was requested, the\n * response will include this header to provide round-trip message integrity verification of\n * the customer-provided encryption key.

\n */\n SSECustomerKeyMD5?: string;\n\n /**\n *

If present, specifies the ID of the AWS Key Management Service (AWS KMS) symmetric\n * customer managed customer master key (CMK) that was used for the object.

\n */\n SSEKMSKeyId?: string;\n\n /**\n *

If present, specifies the AWS KMS Encryption Context to use for object encryption. The\n * value of this header is a base64-encoded UTF-8 string holding JSON with the encryption\n * context key-value pairs.

\n */\n SSEKMSEncryptionContext?: string;\n\n /**\n *

Indicates whether the copied object uses an S3 Bucket Key for server-side encryption with AWS KMS (SSE-KMS).

\n */\n BucketKeyEnabled?: boolean;\n\n /**\n *

If present, indicates that the requester was successfully charged for the\n * request.

\n */\n RequestCharged?: RequestCharged | string;\n}\n\nexport namespace CopyObjectOutput {\n export const filterSensitiveLog = (obj: CopyObjectOutput): any => ({\n ...obj,\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n ...(obj.SSEKMSEncryptionContext && { SSEKMSEncryptionContext: SENSITIVE_STRING }),\n });\n}\n\nexport type ObjectCannedACL =\n | \"authenticated-read\"\n | \"aws-exec-read\"\n | \"bucket-owner-full-control\"\n | \"bucket-owner-read\"\n | \"private\"\n | \"public-read\"\n | \"public-read-write\";\n\nexport type MetadataDirective = \"COPY\" | \"REPLACE\";\n\nexport type ObjectLockLegalHoldStatus = \"OFF\" | \"ON\";\n\nexport type ObjectLockMode = \"COMPLIANCE\" | \"GOVERNANCE\";\n\nexport type StorageClass =\n | \"DEEP_ARCHIVE\"\n | \"GLACIER\"\n | \"INTELLIGENT_TIERING\"\n | \"ONEZONE_IA\"\n | \"OUTPOSTS\"\n | \"REDUCED_REDUNDANCY\"\n | \"STANDARD\"\n | \"STANDARD_IA\";\n\nexport type TaggingDirective = \"COPY\" | \"REPLACE\";\n\nexport interface CopyObjectRequest {\n /**\n *

The canned ACL to apply to the object.

\n *

This action is not supported by Amazon S3 on Outposts.

\n */\n ACL?: ObjectCannedACL | string;\n\n /**\n *

The name of the destination bucket.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

Specifies caching behavior along the request/reply chain.

\n */\n CacheControl?: string;\n\n /**\n *

Specifies presentational information for the object.

\n */\n ContentDisposition?: string;\n\n /**\n *

Specifies what content encodings have been applied to the object and thus what decoding\n * mechanisms must be applied to obtain the media-type referenced by the Content-Type header\n * field.

\n */\n ContentEncoding?: string;\n\n /**\n *

The language the content is in.

\n */\n ContentLanguage?: string;\n\n /**\n *

A standard MIME type describing the format of the object data.

\n */\n ContentType?: string;\n\n /**\n *

Specifies the source object for the copy operation. You specify the value in one of two\n * formats, depending on whether you want to access the source object through an access\n * point:

\n *
    \n *
  • \n *

    For objects not accessed through an access point, specify the name of the source\n * bucket and the key of the source object, separated by a slash (/). For example, to\n * copy the object reports/january.pdf from the bucket\n * awsexamplebucket, use\n * awsexamplebucket/reports/january.pdf. The value must be URL\n * encoded.

    \n *
  • \n *
  • \n *

    For objects accessed through access points, specify the Amazon Resource Name (ARN) of the object as accessed through the access point, in the format arn:aws:s3:::accesspoint//object/. For example, to copy the object reports/january.pdf through access point my-access-point owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf. The value must be URL encoded.

    \n * \n *

    Amazon S3 supports copy operations using access points only when the source and destination buckets are in the same AWS Region.

    \n *
    \n *

    Alternatively, for objects accessed through Amazon S3 on Outposts, specify the ARN of the object as accessed in the format arn:aws:s3-outposts:::outpost//object/. For example, to copy the object reports/january.pdf through outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf. The value must be URL encoded.

    \n *
  • \n *
\n *

To copy a specific version of an object, append ?versionId=\n * to the value (for example,\n * awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893).\n * If you don't specify a version ID, Amazon S3 copies the latest version of the source\n * object.

\n */\n CopySource: string | undefined;\n\n /**\n *

Copies the object if its entity tag (ETag) matches the specified tag.

\n */\n CopySourceIfMatch?: string;\n\n /**\n *

Copies the object if it has been modified since the specified time.

\n */\n CopySourceIfModifiedSince?: Date;\n\n /**\n *

Copies the object if its entity tag (ETag) is different than the specified ETag.

\n */\n CopySourceIfNoneMatch?: string;\n\n /**\n *

Copies the object if it hasn't been modified since the specified time.

\n */\n CopySourceIfUnmodifiedSince?: Date;\n\n /**\n *

The date and time at which the object is no longer cacheable.

\n */\n Expires?: Date;\n\n /**\n *

Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the\n * object.

\n *

This action is not supported by Amazon S3 on Outposts.

\n */\n GrantFullControl?: string;\n\n /**\n *

Allows grantee to read the object data and its\n * metadata.

\n *

This action is not supported by Amazon S3 on Outposts.

\n */\n GrantRead?: string;\n\n /**\n *

Allows grantee to read the object ACL.

\n *

This action is not supported by Amazon S3 on Outposts.

\n */\n GrantReadACP?: string;\n\n /**\n *

Allows grantee to write the ACL for the applicable\n * object.

\n *

This action is not supported by Amazon S3 on Outposts.

\n */\n GrantWriteACP?: string;\n\n /**\n *

The key of the destination object.

\n */\n Key: string | undefined;\n\n /**\n *

A map of metadata to store with the object in S3.

\n */\n Metadata?: { [key: string]: string };\n\n /**\n *

Specifies whether the metadata is copied from the source object or replaced with\n * metadata provided in the request.

\n */\n MetadataDirective?: MetadataDirective | string;\n\n /**\n *

Specifies whether the object tag-set are copied from the source object or replaced with\n * tag-set provided in the request.

\n */\n TaggingDirective?: TaggingDirective | string;\n\n /**\n *

The server-side encryption algorithm used when storing this object in Amazon S3 (for example,\n * AES256, aws:kms).

\n */\n ServerSideEncryption?: ServerSideEncryption | string;\n\n /**\n *

By default, Amazon S3 uses the STANDARD Storage Class to store newly created objects. The\n * STANDARD storage class provides high durability and high availability. Depending on\n * performance needs, you can specify a different Storage Class. Amazon S3 on Outposts only uses\n * the OUTPOSTS Storage Class. For more information, see Storage Classes in the Amazon S3\n * Service Developer Guide.

\n */\n StorageClass?: StorageClass | string;\n\n /**\n *

If the bucket is configured as a website, redirects requests for this object to another\n * object in the same bucket or to an external URL. Amazon S3 stores the value of this header in\n * the object metadata.

\n */\n WebsiteRedirectLocation?: string;\n\n /**\n *

Specifies the algorithm to use to when encrypting the object (for example,\n * AES256).

\n */\n SSECustomerAlgorithm?: string;\n\n /**\n *

Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This\n * value is used to store the object and then it is discarded; Amazon S3 does not store the\n * encryption key. The key must be appropriate for use with the algorithm specified in the\n * x-amz-server-side-encryption-customer-algorithm header.

\n */\n SSECustomerKey?: string;\n\n /**\n *

Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses\n * this header for a message integrity check to ensure that the encryption key was transmitted\n * without error.

\n */\n SSECustomerKeyMD5?: string;\n\n /**\n *

Specifies the AWS KMS key ID to use for object encryption. All GET and PUT requests for\n * an object protected by AWS KMS will fail if not made via SSL or using SigV4. For\n * information about configuring using any of the officially supported AWS SDKs and AWS CLI,\n * see Specifying the\n * Signature Version in Request Authentication in the Amazon S3 Developer\n * Guide.

\n */\n SSEKMSKeyId?: string;\n\n /**\n *

Specifies the AWS KMS Encryption Context to use for object encryption. The value of this\n * header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value\n * pairs.

\n */\n SSEKMSEncryptionContext?: string;\n\n /**\n *

Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using AWS KMS (SSE-KMS). Setting this header to true causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.

\n *

Specifying this header with a COPY operation doesn’t affect bucket-level settings for S3 Bucket Key.

\n */\n BucketKeyEnabled?: boolean;\n\n /**\n *

Specifies the algorithm to use when decrypting the source object (for example,\n * AES256).

\n */\n CopySourceSSECustomerAlgorithm?: string;\n\n /**\n *

Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source\n * object. The encryption key provided in this header must be one that was used when the\n * source object was created.

\n */\n CopySourceSSECustomerKey?: string;\n\n /**\n *

Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses\n * this header for a message integrity check to ensure that the encryption key was transmitted\n * without error.

\n */\n CopySourceSSECustomerKeyMD5?: string;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

The tag-set for the object destination object this value must be used in conjunction\n * with the TaggingDirective. The tag-set must be encoded as URL Query\n * parameters.

\n */\n Tagging?: string;\n\n /**\n *

The Object Lock mode that you want to apply to the copied object.

\n */\n ObjectLockMode?: ObjectLockMode | string;\n\n /**\n *

The date and time when you want the copied object's Object Lock to expire.

\n */\n ObjectLockRetainUntilDate?: Date;\n\n /**\n *

Specifies whether you want to apply a Legal Hold to the copied object.

\n */\n ObjectLockLegalHoldStatus?: ObjectLockLegalHoldStatus | string;\n\n /**\n *

The account id of the expected destination bucket owner. If the destination bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n\n /**\n *

The account id of the expected source bucket owner. If the source bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedSourceBucketOwner?: string;\n}\n\nexport namespace CopyObjectRequest {\n export const filterSensitiveLog = (obj: CopyObjectRequest): any => ({\n ...obj,\n ...(obj.SSECustomerKey && { SSECustomerKey: SENSITIVE_STRING }),\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n ...(obj.SSEKMSEncryptionContext && { SSEKMSEncryptionContext: SENSITIVE_STRING }),\n ...(obj.CopySourceSSECustomerKey && { CopySourceSSECustomerKey: SENSITIVE_STRING }),\n });\n}\n\n/**\n *

The source object of the COPY operation is not in the active tier and is only stored in\n * Amazon S3 Glacier.

\n */\nexport interface ObjectNotInActiveTierError extends __SmithyException, $MetadataBearer {\n name: \"ObjectNotInActiveTierError\";\n $fault: \"client\";\n}\n\nexport namespace ObjectNotInActiveTierError {\n export const filterSensitiveLog = (obj: ObjectNotInActiveTierError): any => ({\n ...obj,\n });\n}\n\n/**\n *

The requested bucket name is not available. The bucket namespace is shared by all users\n * of the system. Select a different name and try again.

\n */\nexport interface BucketAlreadyExists extends __SmithyException, $MetadataBearer {\n name: \"BucketAlreadyExists\";\n $fault: \"client\";\n}\n\nexport namespace BucketAlreadyExists {\n export const filterSensitiveLog = (obj: BucketAlreadyExists): any => ({\n ...obj,\n });\n}\n\n/**\n *

The bucket you tried to create already exists, and you own it. Amazon S3 returns this error\n * in all AWS Regions except in the North Virginia Region. For legacy compatibility, if you\n * re-create an existing bucket that you already own in the North Virginia Region, Amazon S3\n * returns 200 OK and resets the bucket access control lists (ACLs).

\n */\nexport interface BucketAlreadyOwnedByYou extends __SmithyException, $MetadataBearer {\n name: \"BucketAlreadyOwnedByYou\";\n $fault: \"client\";\n}\n\nexport namespace BucketAlreadyOwnedByYou {\n export const filterSensitiveLog = (obj: BucketAlreadyOwnedByYou): any => ({\n ...obj,\n });\n}\n\nexport interface CreateBucketOutput {\n /**\n *

Specifies the Region where the bucket will be created. If you are creating a bucket on\n * the US East (N. Virginia) Region (us-east-1), you do not need to specify the\n * location.

\n */\n Location?: string;\n}\n\nexport namespace CreateBucketOutput {\n export const filterSensitiveLog = (obj: CreateBucketOutput): any => ({\n ...obj,\n });\n}\n\nexport type BucketCannedACL = \"authenticated-read\" | \"private\" | \"public-read\" | \"public-read-write\";\n\nexport type BucketLocationConstraint =\n | \"EU\"\n | \"af-south-1\"\n | \"ap-east-1\"\n | \"ap-northeast-1\"\n | \"ap-northeast-2\"\n | \"ap-northeast-3\"\n | \"ap-south-1\"\n | \"ap-southeast-1\"\n | \"ap-southeast-2\"\n | \"ca-central-1\"\n | \"cn-north-1\"\n | \"cn-northwest-1\"\n | \"eu-central-1\"\n | \"eu-north-1\"\n | \"eu-south-1\"\n | \"eu-west-1\"\n | \"eu-west-2\"\n | \"eu-west-3\"\n | \"me-south-1\"\n | \"sa-east-1\"\n | \"us-east-2\"\n | \"us-gov-east-1\"\n | \"us-gov-west-1\"\n | \"us-west-1\"\n | \"us-west-2\";\n\n/**\n *

The configuration information for the bucket.

\n */\nexport interface CreateBucketConfiguration {\n /**\n *

Specifies the Region where the bucket will be created. If you don't specify a Region,\n * the bucket is created in the US East (N. Virginia) Region (us-east-1).

\n */\n LocationConstraint?: BucketLocationConstraint | string;\n}\n\nexport namespace CreateBucketConfiguration {\n export const filterSensitiveLog = (obj: CreateBucketConfiguration): any => ({\n ...obj,\n });\n}\n\nexport interface CreateBucketRequest {\n /**\n *

The canned ACL to apply to the bucket.

\n */\n ACL?: BucketCannedACL | string;\n\n /**\n *

The name of the bucket to create.

\n */\n Bucket: string | undefined;\n\n /**\n *

The configuration information for the bucket.

\n */\n CreateBucketConfiguration?: CreateBucketConfiguration;\n\n /**\n *

Allows grantee the read, write, read ACP, and write ACP permissions on the\n * bucket.

\n */\n GrantFullControl?: string;\n\n /**\n *

Allows grantee to list the objects in the bucket.

\n */\n GrantRead?: string;\n\n /**\n *

Allows grantee to read the bucket ACL.

\n */\n GrantReadACP?: string;\n\n /**\n *

Allows grantee to create, overwrite, and delete any object in the bucket.

\n */\n GrantWrite?: string;\n\n /**\n *

Allows grantee to write the ACL for the applicable bucket.

\n */\n GrantWriteACP?: string;\n\n /**\n *

Specifies whether you want S3 Object Lock to be enabled for the new bucket.

\n */\n ObjectLockEnabledForBucket?: boolean;\n}\n\nexport namespace CreateBucketRequest {\n export const filterSensitiveLog = (obj: CreateBucketRequest): any => ({\n ...obj,\n });\n}\n\nexport interface CreateMultipartUploadOutput {\n /**\n *

If the bucket has a lifecycle rule configured with an action to abort incomplete\n * multipart uploads and the prefix in the lifecycle rule matches the object name in the\n * request, the response includes this header. The header indicates when the initiated\n * multipart upload becomes eligible for an abort operation. For more information, see \n * Aborting Incomplete Multipart Uploads Using a Bucket Lifecycle Policy.

\n *\n *

The response also includes the x-amz-abort-rule-id header that provides the\n * ID of the lifecycle configuration rule that defines this action.

\n */\n AbortDate?: Date;\n\n /**\n *

This header is returned along with the x-amz-abort-date header. It\n * identifies the applicable lifecycle configuration rule that defines the action to abort\n * incomplete multipart uploads.

\n */\n AbortRuleId?: string;\n\n /**\n *

The name of the bucket to which the multipart upload was initiated.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket?: string;\n\n /**\n *

Object key for which the multipart upload was initiated.

\n */\n Key?: string;\n\n /**\n *

ID for the initiated multipart upload.

\n */\n UploadId?: string;\n\n /**\n *

The server-side encryption algorithm used when storing this object in Amazon S3 (for example,\n * AES256, aws:kms).

\n */\n ServerSideEncryption?: ServerSideEncryption | string;\n\n /**\n *

If server-side encryption with a customer-provided encryption key was requested, the\n * response will include this header confirming the encryption algorithm used.

\n */\n SSECustomerAlgorithm?: string;\n\n /**\n *

If server-side encryption with a customer-provided encryption key was requested, the\n * response will include this header to provide round-trip message integrity verification of\n * the customer-provided encryption key.

\n */\n SSECustomerKeyMD5?: string;\n\n /**\n *

If present, specifies the ID of the AWS Key Management Service (AWS KMS) symmetric\n * customer managed customer master key (CMK) that was used for the object.

\n */\n SSEKMSKeyId?: string;\n\n /**\n *

If present, specifies the AWS KMS Encryption Context to use for object encryption. The\n * value of this header is a base64-encoded UTF-8 string holding JSON with the encryption\n * context key-value pairs.

\n */\n SSEKMSEncryptionContext?: string;\n\n /**\n *

Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with AWS KMS (SSE-KMS).

\n */\n BucketKeyEnabled?: boolean;\n\n /**\n *

If present, indicates that the requester was successfully charged for the\n * request.

\n */\n RequestCharged?: RequestCharged | string;\n}\n\nexport namespace CreateMultipartUploadOutput {\n export const filterSensitiveLog = (obj: CreateMultipartUploadOutput): any => ({\n ...obj,\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n ...(obj.SSEKMSEncryptionContext && { SSEKMSEncryptionContext: SENSITIVE_STRING }),\n });\n}\n\nexport interface CreateMultipartUploadRequest {\n /**\n *

The canned ACL to apply to the object.

\n *

This action is not supported by Amazon S3 on Outposts.

\n */\n ACL?: ObjectCannedACL | string;\n\n /**\n *

The name of the bucket to which to initiate the upload

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

Specifies caching behavior along the request/reply chain.

\n */\n CacheControl?: string;\n\n /**\n *

Specifies presentational information for the object.

\n */\n ContentDisposition?: string;\n\n /**\n *

Specifies what content encodings have been applied to the object and thus what decoding\n * mechanisms must be applied to obtain the media-type referenced by the Content-Type header\n * field.

\n */\n ContentEncoding?: string;\n\n /**\n *

The language the content is in.

\n */\n ContentLanguage?: string;\n\n /**\n *

A standard MIME type describing the format of the object data.

\n */\n ContentType?: string;\n\n /**\n *

The date and time at which the object is no longer cacheable.

\n */\n Expires?: Date;\n\n /**\n *

Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the\n * object.

\n *

This action is not supported by Amazon S3 on Outposts.

\n */\n GrantFullControl?: string;\n\n /**\n *

Allows grantee to read the object data and its\n * metadata.

\n *

This action is not supported by Amazon S3 on Outposts.

\n */\n GrantRead?: string;\n\n /**\n *

Allows grantee to read the object ACL.

\n *

This action is not supported by Amazon S3 on Outposts.

\n */\n GrantReadACP?: string;\n\n /**\n *

Allows grantee to write the ACL for the applicable\n * object.

\n *

This action is not supported by Amazon S3 on Outposts.

\n */\n GrantWriteACP?: string;\n\n /**\n *

Object key for which the multipart upload is to be initiated.

\n */\n Key: string | undefined;\n\n /**\n *

A map of metadata to store with the object in S3.

\n */\n Metadata?: { [key: string]: string };\n\n /**\n *

The server-side encryption algorithm used when storing this object in Amazon S3 (for example,\n * AES256, aws:kms).

\n */\n ServerSideEncryption?: ServerSideEncryption | string;\n\n /**\n *

By default, Amazon S3 uses the STANDARD Storage Class to store newly created objects. The\n * STANDARD storage class provides high durability and high availability. Depending on\n * performance needs, you can specify a different Storage Class. Amazon S3 on Outposts only uses\n * the OUTPOSTS Storage Class. For more information, see Storage Classes in the Amazon S3\n * Service Developer Guide.

\n */\n StorageClass?: StorageClass | string;\n\n /**\n *

If the bucket is configured as a website, redirects requests for this object to another\n * object in the same bucket or to an external URL. Amazon S3 stores the value of this header in\n * the object metadata.

\n */\n WebsiteRedirectLocation?: string;\n\n /**\n *

Specifies the algorithm to use to when encrypting the object (for example,\n * AES256).

\n */\n SSECustomerAlgorithm?: string;\n\n /**\n *

Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This\n * value is used to store the object and then it is discarded; Amazon S3 does not store the\n * encryption key. The key must be appropriate for use with the algorithm specified in the\n * x-amz-server-side-encryption-customer-algorithm header.

\n */\n SSECustomerKey?: string;\n\n /**\n *

Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses\n * this header for a message integrity check to ensure that the encryption key was transmitted\n * without error.

\n */\n SSECustomerKeyMD5?: string;\n\n /**\n *

Specifies the ID of the symmetric customer managed AWS KMS CMK to use for object\n * encryption. All GET and PUT requests for an object protected by AWS KMS will fail if not\n * made via SSL or using SigV4. For information about configuring using any of the officially\n * supported AWS SDKs and AWS CLI, see Specifying the Signature Version in Request Authentication\n * in the Amazon S3 Developer Guide.

\n */\n SSEKMSKeyId?: string;\n\n /**\n *

Specifies the AWS KMS Encryption Context to use for object encryption. The value of this\n * header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value\n * pairs.

\n */\n SSEKMSEncryptionContext?: string;\n\n /**\n *

Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using AWS KMS (SSE-KMS). Setting this header to true causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.

\n *

Specifying this header with an object operation doesn’t affect bucket-level settings for S3 Bucket Key.

\n */\n BucketKeyEnabled?: boolean;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

The tag-set for the object. The tag-set must be encoded as URL Query parameters.

\n */\n Tagging?: string;\n\n /**\n *

Specifies the Object Lock mode that you want to apply to the uploaded object.

\n */\n ObjectLockMode?: ObjectLockMode | string;\n\n /**\n *

Specifies the date and time when you want the Object Lock to expire.

\n */\n ObjectLockRetainUntilDate?: Date;\n\n /**\n *

Specifies whether you want to apply a Legal Hold to the uploaded object.

\n */\n ObjectLockLegalHoldStatus?: ObjectLockLegalHoldStatus | string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace CreateMultipartUploadRequest {\n export const filterSensitiveLog = (obj: CreateMultipartUploadRequest): any => ({\n ...obj,\n ...(obj.SSECustomerKey && { SSECustomerKey: SENSITIVE_STRING }),\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n ...(obj.SSEKMSEncryptionContext && { SSEKMSEncryptionContext: SENSITIVE_STRING }),\n });\n}\n\nexport interface DeleteBucketRequest {\n /**\n *

Specifies the bucket being deleted.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace DeleteBucketRequest {\n export const filterSensitiveLog = (obj: DeleteBucketRequest): any => ({\n ...obj,\n });\n}\n\nexport interface DeleteBucketAnalyticsConfigurationRequest {\n /**\n *

The name of the bucket from which an analytics configuration is deleted.

\n */\n Bucket: string | undefined;\n\n /**\n *

The ID that identifies the analytics configuration.

\n */\n Id: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace DeleteBucketAnalyticsConfigurationRequest {\n export const filterSensitiveLog = (obj: DeleteBucketAnalyticsConfigurationRequest): any => ({\n ...obj,\n });\n}\n\nexport interface DeleteBucketCorsRequest {\n /**\n *

Specifies the bucket whose cors configuration is being deleted.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace DeleteBucketCorsRequest {\n export const filterSensitiveLog = (obj: DeleteBucketCorsRequest): any => ({\n ...obj,\n });\n}\n\nexport interface DeleteBucketEncryptionRequest {\n /**\n *

The name of the bucket containing the server-side encryption configuration to\n * delete.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace DeleteBucketEncryptionRequest {\n export const filterSensitiveLog = (obj: DeleteBucketEncryptionRequest): any => ({\n ...obj,\n });\n}\n\nexport interface DeleteBucketIntelligentTieringConfigurationRequest {\n /**\n *

The name of the Amazon S3 bucket whose configuration you want to modify or retrieve.

\n */\n Bucket: string | undefined;\n\n /**\n *

The ID used to identify the S3 Intelligent-Tiering configuration.

\n */\n Id: string | undefined;\n}\n\nexport namespace DeleteBucketIntelligentTieringConfigurationRequest {\n export const filterSensitiveLog = (obj: DeleteBucketIntelligentTieringConfigurationRequest): any => ({\n ...obj,\n });\n}\n\nexport interface DeleteBucketInventoryConfigurationRequest {\n /**\n *

The name of the bucket containing the inventory configuration to delete.

\n */\n Bucket: string | undefined;\n\n /**\n *

The ID used to identify the inventory configuration.

\n */\n Id: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace DeleteBucketInventoryConfigurationRequest {\n export const filterSensitiveLog = (obj: DeleteBucketInventoryConfigurationRequest): any => ({\n ...obj,\n });\n}\n\nexport interface DeleteBucketLifecycleRequest {\n /**\n *

The bucket name of the lifecycle to delete.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace DeleteBucketLifecycleRequest {\n export const filterSensitiveLog = (obj: DeleteBucketLifecycleRequest): any => ({\n ...obj,\n });\n}\n\nexport interface DeleteBucketMetricsConfigurationRequest {\n /**\n *

The name of the bucket containing the metrics configuration to delete.

\n */\n Bucket: string | undefined;\n\n /**\n *

The ID used to identify the metrics configuration.

\n */\n Id: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace DeleteBucketMetricsConfigurationRequest {\n export const filterSensitiveLog = (obj: DeleteBucketMetricsConfigurationRequest): any => ({\n ...obj,\n });\n}\n\nexport interface DeleteBucketOwnershipControlsRequest {\n /**\n *

The Amazon S3 bucket whose OwnershipControls you want to delete.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace DeleteBucketOwnershipControlsRequest {\n export const filterSensitiveLog = (obj: DeleteBucketOwnershipControlsRequest): any => ({\n ...obj,\n });\n}\n\nexport interface DeleteBucketPolicyRequest {\n /**\n *

The bucket name.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace DeleteBucketPolicyRequest {\n export const filterSensitiveLog = (obj: DeleteBucketPolicyRequest): any => ({\n ...obj,\n });\n}\n\nexport interface DeleteBucketReplicationRequest {\n /**\n *

The bucket name.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace DeleteBucketReplicationRequest {\n export const filterSensitiveLog = (obj: DeleteBucketReplicationRequest): any => ({\n ...obj,\n });\n}\n\nexport interface DeleteBucketTaggingRequest {\n /**\n *

The bucket that has the tag set to be removed.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace DeleteBucketTaggingRequest {\n export const filterSensitiveLog = (obj: DeleteBucketTaggingRequest): any => ({\n ...obj,\n });\n}\n\nexport interface DeleteBucketWebsiteRequest {\n /**\n *

The bucket name for which you want to remove the website configuration.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace DeleteBucketWebsiteRequest {\n export const filterSensitiveLog = (obj: DeleteBucketWebsiteRequest): any => ({\n ...obj,\n });\n}\n\nexport interface DeleteObjectOutput {\n /**\n *

Specifies whether the versioned object that was permanently deleted was (true) or was\n * not (false) a delete marker.

\n */\n DeleteMarker?: boolean;\n\n /**\n *

Returns the version ID of the delete marker created as a result of the DELETE\n * operation.

\n */\n VersionId?: string;\n\n /**\n *

If present, indicates that the requester was successfully charged for the\n * request.

\n */\n RequestCharged?: RequestCharged | string;\n}\n\nexport namespace DeleteObjectOutput {\n export const filterSensitiveLog = (obj: DeleteObjectOutput): any => ({\n ...obj,\n });\n}\n\nexport interface DeleteObjectRequest {\n /**\n *

The bucket name of the bucket containing the object.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

Key name of the object to delete.

\n */\n Key: string | undefined;\n\n /**\n *

The concatenation of the authentication device's serial number, a space, and the value\n * that is displayed on your authentication device. Required to permanently delete a versioned\n * object if versioning is configured with MFA delete enabled.

\n */\n MFA?: string;\n\n /**\n *

VersionId used to reference a specific version of the object.

\n */\n VersionId?: string;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

Indicates whether S3 Object Lock should bypass Governance-mode restrictions to process\n * this operation.

\n */\n BypassGovernanceRetention?: boolean;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace DeleteObjectRequest {\n export const filterSensitiveLog = (obj: DeleteObjectRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Information about the deleted object.

\n */\nexport interface DeletedObject {\n /**\n *

The name of the deleted object.

\n */\n Key?: string;\n\n /**\n *

The version ID of the deleted object.

\n */\n VersionId?: string;\n\n /**\n *

Specifies whether the versioned object that was permanently deleted was (true) or was\n * not (false) a delete marker. In a simple DELETE, this header indicates whether (true) or\n * not (false) a delete marker was created.

\n */\n DeleteMarker?: boolean;\n\n /**\n *

The version ID of the delete marker created as a result of the DELETE operation. If you\n * delete a specific object version, the value returned by this header is the version ID of\n * the object version deleted.

\n */\n DeleteMarkerVersionId?: string;\n}\n\nexport namespace DeletedObject {\n export const filterSensitiveLog = (obj: DeletedObject): any => ({\n ...obj,\n });\n}\n\n/**\n *

Container for all error elements.

\n */\nexport interface _Error {\n /**\n *

The error key.

\n */\n Key?: string;\n\n /**\n *

The version ID of the error.

\n */\n VersionId?: string;\n\n /**\n *

The error code is a string that uniquely identifies an error condition. It is meant to\n * be read and understood by programs that detect and handle errors by type.

\n *

\n * Amazon S3 error codes\n *

\n *
    \n *
  • \n *
      \n *
    • \n *

      \n * Code: AccessDenied

      \n *
    • \n *
    • \n *

      \n * Description: Access Denied

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 403 Forbidden

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: AccountProblem

      \n *
    • \n *
    • \n *

      \n * Description: There is a problem with your AWS account\n * that prevents the operation from completing successfully. Contact AWS Support\n * for further assistance.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 403 Forbidden

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: AllAccessDisabled

      \n *
    • \n *
    • \n *

      \n * Description: All access to this Amazon S3 resource has been\n * disabled. Contact AWS Support for further assistance.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 403 Forbidden

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: AmbiguousGrantByEmailAddress

      \n *
    • \n *
    • \n *

      \n * Description: The email address you provided is\n * associated with more than one account.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: AuthorizationHeaderMalformed

      \n *
    • \n *
    • \n *

      \n * Description: The authorization header you provided is\n * invalid.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: N/A

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: BadDigest

      \n *
    • \n *
    • \n *

      \n * Description: The Content-MD5 you specified did not\n * match what we received.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: BucketAlreadyExists

      \n *
    • \n *
    • \n *

      \n * Description: The requested bucket name is not\n * available. The bucket namespace is shared by all users of the system. Please\n * select a different name and try again.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 409 Conflict

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: BucketAlreadyOwnedByYou

      \n *
    • \n *
    • \n *

      \n * Description: The bucket you tried to create already\n * exists, and you own it. Amazon S3 returns this error in all AWS Regions except in\n * the North Virginia Region. For legacy compatibility, if you re-create an\n * existing bucket that you already own in the North Virginia Region, Amazon S3 returns\n * 200 OK and resets the bucket access control lists (ACLs).

      \n *
    • \n *
    • \n *

      \n * Code: 409 Conflict (in all Regions except the North\n * Virginia Region)

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: BucketNotEmpty

      \n *
    • \n *
    • \n *

      \n * Description: The bucket you tried to delete is not\n * empty.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 409 Conflict

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: CredentialsNotSupported

      \n *
    • \n *
    • \n *

      \n * Description: This request does not support\n * credentials.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: CrossLocationLoggingProhibited

      \n *
    • \n *
    • \n *

      \n * Description: Cross-location logging not allowed.\n * Buckets in one geographic location cannot log information to a bucket in\n * another location.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 403 Forbidden

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: EntityTooSmall

      \n *
    • \n *
    • \n *

      \n * Description: Your proposed upload is smaller than the\n * minimum allowed object size.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: EntityTooLarge

      \n *
    • \n *
    • \n *

      \n * Description: Your proposed upload exceeds the maximum\n * allowed object size.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: ExpiredToken

      \n *
    • \n *
    • \n *

      \n * Description: The provided token has expired.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: IllegalVersioningConfigurationException

      \n *
    • \n *
    • \n *

      \n * Description: Indicates that the versioning\n * configuration specified in the request is invalid.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: IncompleteBody

      \n *
    • \n *
    • \n *

      \n * Description: You did not provide the number of bytes\n * specified by the Content-Length HTTP header

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: IncorrectNumberOfFilesInPostRequest

      \n *
    • \n *
    • \n *

      \n * Description: POST requires exactly one file upload per\n * request.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InlineDataTooLarge

      \n *
    • \n *
    • \n *

      \n * Description: Inline data exceeds the maximum allowed\n * size.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InternalError

      \n *
    • \n *
    • \n *

      \n * Description: We encountered an internal error. Please\n * try again.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 500 Internal Server Error

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Server

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidAccessKeyId

      \n *
    • \n *
    • \n *

      \n * Description: The AWS access key ID you provided does\n * not exist in our records.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 403 Forbidden

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidAddressingHeader

      \n *
    • \n *
    • \n *

      \n * Description: You must specify the Anonymous\n * role.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: N/A

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidArgument

      \n *
    • \n *
    • \n *

      \n * Description: Invalid Argument

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidBucketName

      \n *
    • \n *
    • \n *

      \n * Description: The specified bucket is not valid.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidBucketState

      \n *
    • \n *
    • \n *

      \n * Description: The request is not valid with the current\n * state of the bucket.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 409 Conflict

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidDigest

      \n *
    • \n *
    • \n *

      \n * Description: The Content-MD5 you specified is not\n * valid.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidEncryptionAlgorithmError

      \n *
    • \n *
    • \n *

      \n * Description: The encryption request you specified is\n * not valid. The valid value is AES256.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidLocationConstraint

      \n *
    • \n *
    • \n *

      \n * Description: The specified location constraint is not\n * valid. For more information about Regions, see How to Select a\n * Region for Your Buckets.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidObjectState

      \n *
    • \n *
    • \n *

      \n * Description: The operation is not valid for the current\n * state of the object.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 403 Forbidden

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidPart

      \n *
    • \n *
    • \n *

      \n * Description: One or more of the specified parts could\n * not be found. The part might not have been uploaded, or the specified entity\n * tag might not have matched the part's entity tag.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidPartOrder

      \n *
    • \n *
    • \n *

      \n * Description: The list of parts was not in ascending\n * order. Parts list must be specified in order by part number.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidPayer

      \n *
    • \n *
    • \n *

      \n * Description: All access to this object has been\n * disabled. Please contact AWS Support for further assistance.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 403 Forbidden

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidPolicyDocument

      \n *
    • \n *
    • \n *

      \n * Description: The content of the form does not meet the\n * conditions specified in the policy document.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidRange

      \n *
    • \n *
    • \n *

      \n * Description: The requested range cannot be\n * satisfied.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 416 Requested Range Not\n * Satisfiable

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidRequest

      \n *
    • \n *
    • \n *

      \n * Description: Please use AWS4-HMAC-SHA256.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * Code: N/A

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidRequest

      \n *
    • \n *
    • \n *

      \n * Description: SOAP requests must be made over an HTTPS\n * connection.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidRequest

      \n *
    • \n *
    • \n *

      \n * Description: Amazon S3 Transfer Acceleration is not\n * supported for buckets with non-DNS compliant names.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * Code: N/A

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidRequest

      \n *
    • \n *
    • \n *

      \n * Description: Amazon S3 Transfer Acceleration is not\n * supported for buckets with periods (.) in their names.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * Code: N/A

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidRequest

      \n *
    • \n *
    • \n *

      \n * Description: Amazon S3 Transfer Accelerate endpoint only\n * supports virtual style requests.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * Code: N/A

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidRequest

      \n *
    • \n *
    • \n *

      \n * Description: Amazon S3 Transfer Accelerate is not configured\n * on this bucket.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * Code: N/A

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidRequest

      \n *
    • \n *
    • \n *

      \n * Description: Amazon S3 Transfer Accelerate is disabled on\n * this bucket.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * Code: N/A

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidRequest

      \n *
    • \n *
    • \n *

      \n * Description: Amazon S3 Transfer Acceleration is not\n * supported on this bucket. Contact AWS Support for more information.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * Code: N/A

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidRequest

      \n *
    • \n *
    • \n *

      \n * Description: Amazon S3 Transfer Acceleration cannot be\n * enabled on this bucket. Contact AWS Support for more information.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * Code: N/A

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidSecurity

      \n *
    • \n *
    • \n *

      \n * Description: The provided security credentials are not\n * valid.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 403 Forbidden

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidSOAPRequest

      \n *
    • \n *
    • \n *

      \n * Description: The SOAP request body is invalid.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidStorageClass

      \n *
    • \n *
    • \n *

      \n * Description: The storage class you specified is not\n * valid.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidTargetBucketForLogging

      \n *
    • \n *
    • \n *

      \n * Description: The target bucket for logging does not\n * exist, is not owned by you, or does not have the appropriate grants for the\n * log-delivery group.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidToken

      \n *
    • \n *
    • \n *

      \n * Description: The provided token is malformed or\n * otherwise invalid.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: InvalidURI

      \n *
    • \n *
    • \n *

      \n * Description: Couldn't parse the specified URI.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: KeyTooLongError

      \n *
    • \n *
    • \n *

      \n * Description: Your key is too long.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: MalformedACLError

      \n *
    • \n *
    • \n *

      \n * Description: The XML you provided was not well-formed\n * or did not validate against our published schema.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: MalformedPOSTRequest

      \n *
    • \n *
    • \n *

      \n * Description: The body of your POST request is not\n * well-formed multipart/form-data.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: MalformedXML

      \n *
    • \n *
    • \n *

      \n * Description: This happens when the user sends malformed\n * XML (XML that doesn't conform to the published XSD) for the configuration. The\n * error message is, \"The XML you provided was not well-formed or did not validate\n * against our published schema.\"

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: MaxMessageLengthExceeded

      \n *
    • \n *
    • \n *

      \n * Description: Your request was too big.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: MaxPostPreDataLengthExceededError

      \n *
    • \n *
    • \n *

      \n * Description: Your POST request fields preceding the\n * upload file were too large.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: MetadataTooLarge

      \n *
    • \n *
    • \n *

      \n * Description: Your metadata headers exceed the maximum\n * allowed metadata size.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: MethodNotAllowed

      \n *
    • \n *
    • \n *

      \n * Description: The specified method is not allowed\n * against this resource.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 405 Method Not Allowed

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: MissingAttachment

      \n *
    • \n *
    • \n *

      \n * Description: A SOAP attachment was expected, but none\n * were found.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: N/A

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: MissingContentLength

      \n *
    • \n *
    • \n *

      \n * Description: You must provide the Content-Length HTTP\n * header.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 411 Length Required

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: MissingRequestBodyError

      \n *
    • \n *
    • \n *

      \n * Description: This happens when the user sends an empty\n * XML document as a request. The error message is, \"Request body is empty.\"\n *

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: MissingSecurityElement

      \n *
    • \n *
    • \n *

      \n * Description: The SOAP 1.1 request is missing a security\n * element.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: MissingSecurityHeader

      \n *
    • \n *
    • \n *

      \n * Description: Your request is missing a required\n * header.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: NoLoggingStatusForKey

      \n *
    • \n *
    • \n *

      \n * Description: There is no such thing as a logging status\n * subresource for a key.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: NoSuchBucket

      \n *
    • \n *
    • \n *

      \n * Description: The specified bucket does not\n * exist.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 404 Not Found

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: NoSuchBucketPolicy

      \n *
    • \n *
    • \n *

      \n * Description: The specified bucket does not have a\n * bucket policy.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 404 Not Found

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: NoSuchKey

      \n *
    • \n *
    • \n *

      \n * Description: The specified key does not exist.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 404 Not Found

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: NoSuchLifecycleConfiguration

      \n *
    • \n *
    • \n *

      \n * Description: The lifecycle configuration does not\n * exist.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 404 Not Found

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: NoSuchUpload

      \n *
    • \n *
    • \n *

      \n * Description: The specified multipart upload does not\n * exist. The upload ID might be invalid, or the multipart upload might have been\n * aborted or completed.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 404 Not Found

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: NoSuchVersion

      \n *
    • \n *
    • \n *

      \n * Description: Indicates that the version ID specified in\n * the request does not match an existing version.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 404 Not Found

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: NotImplemented

      \n *
    • \n *
    • \n *

      \n * Description: A header you provided implies\n * functionality that is not implemented.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 501 Not Implemented

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Server

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: NotSignedUp

      \n *
    • \n *
    • \n *

      \n * Description: Your account is not signed up for the Amazon S3\n * service. You must sign up before you can use Amazon S3. You can sign up at the\n * following URL: https://aws.amazon.com/s3

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 403 Forbidden

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: OperationAborted

      \n *
    • \n *
    • \n *

      \n * Description: A conflicting conditional operation is\n * currently in progress against this resource. Try again.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 409 Conflict

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: PermanentRedirect

      \n *
    • \n *
    • \n *

      \n * Description: The bucket you are attempting to access\n * must be addressed using the specified endpoint. Send all future requests to\n * this endpoint.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 301 Moved Permanently

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: PreconditionFailed

      \n *
    • \n *
    • \n *

      \n * Description: At least one of the preconditions you\n * specified did not hold.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 412 Precondition Failed

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: Redirect

      \n *
    • \n *
    • \n *

      \n * Description: Temporary redirect.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 307 Moved Temporarily

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: RestoreAlreadyInProgress

      \n *
    • \n *
    • \n *

      \n * Description: Object restore is already in\n * progress.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 409 Conflict

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: RequestIsNotMultiPartContent

      \n *
    • \n *
    • \n *

      \n * Description: Bucket POST must be of the enclosure-type\n * multipart/form-data.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: RequestTimeout

      \n *
    • \n *
    • \n *

      \n * Description: Your socket connection to the server was\n * not read from or written to within the timeout period.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: RequestTimeTooSkewed

      \n *
    • \n *
    • \n *

      \n * Description: The difference between the request time\n * and the server's time is too large.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 403 Forbidden

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: RequestTorrentOfBucketError

      \n *
    • \n *
    • \n *

      \n * Description: Requesting the torrent file of a bucket is\n * not permitted.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: SignatureDoesNotMatch

      \n *
    • \n *
    • \n *

      \n * Description: The request signature we calculated does\n * not match the signature you provided. Check your AWS secret access key and\n * signing method. For more information, see REST Authentication and\n * SOAP Authentication\n * for details.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 403 Forbidden

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: ServiceUnavailable

      \n *
    • \n *
    • \n *

      \n * Description: Reduce your request rate.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 503 Service Unavailable

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Server

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: SlowDown

      \n *
    • \n *
    • \n *

      \n * Description: Reduce your request rate.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 503 Slow Down

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Server

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: TemporaryRedirect

      \n *
    • \n *
    • \n *

      \n * Description: You are being redirected to the bucket\n * while DNS updates.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 307 Moved Temporarily

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: TokenRefreshRequired

      \n *
    • \n *
    • \n *

      \n * Description: The provided token must be\n * refreshed.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: TooManyBuckets

      \n *
    • \n *
    • \n *

      \n * Description: You have attempted to create more buckets\n * than allowed.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: UnexpectedContent

      \n *
    • \n *
    • \n *

      \n * Description: This request does not support\n * content.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: UnresolvableGrantByEmailAddress

      \n *
    • \n *
    • \n *

      \n * Description: The email address you provided does not\n * match any account on record.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
  • \n *
      \n *
    • \n *

      \n * Code: UserKeyMustBeSpecified

      \n *
    • \n *
    • \n *

      \n * Description: The bucket POST must contain the specified\n * field name. If it is specified, check the order of the fields.

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 400 Bad Request

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client

      \n *
    • \n *
    \n *
  • \n *
\n *

\n */\n Code?: string;\n\n /**\n *

The error message contains a generic description of the error condition in English. It\n * is intended for a human audience. Simple programs display the message directly to the end\n * user if they encounter an error condition they don't know how or don't care to handle.\n * Sophisticated programs with more exhaustive error handling and proper internationalization\n * are more likely to ignore the error message.

\n */\n Message?: string;\n}\n\nexport namespace _Error {\n export const filterSensitiveLog = (obj: _Error): any => ({\n ...obj,\n });\n}\n\nexport interface DeleteObjectsOutput {\n /**\n *

Container element for a successful delete. It identifies the object that was\n * successfully deleted.

\n */\n Deleted?: DeletedObject[];\n\n /**\n *

If present, indicates that the requester was successfully charged for the\n * request.

\n */\n RequestCharged?: RequestCharged | string;\n\n /**\n *

Container for a failed delete operation that describes the object that Amazon S3 attempted to\n * delete and the error it encountered.

\n */\n Errors?: _Error[];\n}\n\nexport namespace DeleteObjectsOutput {\n export const filterSensitiveLog = (obj: DeleteObjectsOutput): any => ({\n ...obj,\n });\n}\n\n/**\n *

Object Identifier is unique value to identify objects.

\n */\nexport interface ObjectIdentifier {\n /**\n *

Key name of the object to delete.

\n */\n Key: string | undefined;\n\n /**\n *

VersionId for the specific version of the object to delete.

\n */\n VersionId?: string;\n}\n\nexport namespace ObjectIdentifier {\n export const filterSensitiveLog = (obj: ObjectIdentifier): any => ({\n ...obj,\n });\n}\n\n/**\n *

Container for the objects to delete.

\n */\nexport interface Delete {\n /**\n *

The objects to delete.

\n */\n Objects: ObjectIdentifier[] | undefined;\n\n /**\n *

Element to enable quiet mode for the request. When you add this element, you must set\n * its value to true.

\n */\n Quiet?: boolean;\n}\n\nexport namespace Delete {\n export const filterSensitiveLog = (obj: Delete): any => ({\n ...obj,\n });\n}\n\nexport interface DeleteObjectsRequest {\n /**\n *

The bucket name containing the objects to delete.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

Container for the request.

\n */\n Delete: Delete | undefined;\n\n /**\n *

The concatenation of the authentication device's serial number, a space, and the value\n * that is displayed on your authentication device. Required to permanently delete a versioned\n * object if versioning is configured with MFA delete enabled.

\n */\n MFA?: string;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

Specifies whether you want to delete this object even if it has a Governance-type Object\n * Lock in place. You must have sufficient permissions to perform this operation.

\n */\n BypassGovernanceRetention?: boolean;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace DeleteObjectsRequest {\n export const filterSensitiveLog = (obj: DeleteObjectsRequest): any => ({\n ...obj,\n });\n}\n\nexport interface DeleteObjectTaggingOutput {\n /**\n *

The versionId of the object the tag-set was removed from.

\n */\n VersionId?: string;\n}\n\nexport namespace DeleteObjectTaggingOutput {\n export const filterSensitiveLog = (obj: DeleteObjectTaggingOutput): any => ({\n ...obj,\n });\n}\n\nexport interface DeleteObjectTaggingRequest {\n /**\n *

The bucket name containing the objects from which to remove the tags.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

Name of the object key.

\n */\n Key: string | undefined;\n\n /**\n *

The versionId of the object that the tag-set will be removed from.

\n */\n VersionId?: string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace DeleteObjectTaggingRequest {\n export const filterSensitiveLog = (obj: DeleteObjectTaggingRequest): any => ({\n ...obj,\n });\n}\n\nexport interface DeletePublicAccessBlockRequest {\n /**\n *

The Amazon S3 bucket whose PublicAccessBlock configuration you want to delete.\n *

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace DeletePublicAccessBlockRequest {\n export const filterSensitiveLog = (obj: DeletePublicAccessBlockRequest): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketAccelerateConfigurationOutput {\n /**\n *

The accelerate configuration of the bucket.

\n */\n Status?: BucketAccelerateStatus | string;\n}\n\nexport namespace GetBucketAccelerateConfigurationOutput {\n export const filterSensitiveLog = (obj: GetBucketAccelerateConfigurationOutput): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketAccelerateConfigurationRequest {\n /**\n *

The name of the bucket for which the accelerate configuration is retrieved.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetBucketAccelerateConfigurationRequest {\n export const filterSensitiveLog = (obj: GetBucketAccelerateConfigurationRequest): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketAclOutput {\n /**\n *

Container for the bucket owner's display name and ID.

\n */\n Owner?: Owner;\n\n /**\n *

A list of grants.

\n */\n Grants?: Grant[];\n}\n\nexport namespace GetBucketAclOutput {\n export const filterSensitiveLog = (obj: GetBucketAclOutput): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketAclRequest {\n /**\n *

Specifies the S3 bucket whose ACL is being requested.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetBucketAclRequest {\n export const filterSensitiveLog = (obj: GetBucketAclRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

A container of a key value name pair.

\n */\nexport interface Tag {\n /**\n *

Name of the object key.

\n */\n Key: string | undefined;\n\n /**\n *

Value of the tag.

\n */\n Value: string | undefined;\n}\n\nexport namespace Tag {\n export const filterSensitiveLog = (obj: Tag): any => ({\n ...obj,\n });\n}\n\n/**\n *

A conjunction (logical AND) of predicates, which is used in evaluating a metrics filter.\n * The operator must have at least two predicates in any combination, and an object must match\n * all of the predicates for the filter to apply.

\n */\nexport interface AnalyticsAndOperator {\n /**\n *

The prefix to use when evaluating an AND predicate: The prefix that an object must have\n * to be included in the metrics results.

\n */\n Prefix?: string;\n\n /**\n *

The list of tags to use when evaluating an AND predicate.

\n */\n Tags?: Tag[];\n}\n\nexport namespace AnalyticsAndOperator {\n export const filterSensitiveLog = (obj: AnalyticsAndOperator): any => ({\n ...obj,\n });\n}\n\n/**\n *

The filter used to describe a set of objects for analyses. A filter must have exactly\n * one prefix, one tag, or one conjunction (AnalyticsAndOperator). If no filter is provided,\n * all objects will be considered in any analysis.

\n */\nexport type AnalyticsFilter =\n | AnalyticsFilter.AndMember\n | AnalyticsFilter.PrefixMember\n | AnalyticsFilter.TagMember\n | AnalyticsFilter.$UnknownMember;\n\nexport namespace AnalyticsFilter {\n /**\n *

The prefix to use when evaluating an analytics filter.

\n */\n export interface PrefixMember {\n Prefix: string;\n Tag?: never;\n And?: never;\n $unknown?: never;\n }\n\n /**\n *

The tag to use when evaluating an analytics filter.

\n */\n export interface TagMember {\n Prefix?: never;\n Tag: Tag;\n And?: never;\n $unknown?: never;\n }\n\n /**\n *

A conjunction (logical AND) of predicates, which is used in evaluating an analytics\n * filter. The operator must have at least two predicates.

\n */\n export interface AndMember {\n Prefix?: never;\n Tag?: never;\n And: AnalyticsAndOperator;\n $unknown?: never;\n }\n\n export interface $UnknownMember {\n Prefix?: never;\n Tag?: never;\n And?: never;\n $unknown: [string, any];\n }\n\n export interface Visitor {\n Prefix: (value: string) => T;\n Tag: (value: Tag) => T;\n And: (value: AnalyticsAndOperator) => T;\n _: (name: string, value: any) => T;\n }\n\n export const visit = (value: AnalyticsFilter, visitor: Visitor): T => {\n if (value.Prefix !== undefined) return visitor.Prefix(value.Prefix);\n if (value.Tag !== undefined) return visitor.Tag(value.Tag);\n if (value.And !== undefined) return visitor.And(value.And);\n return visitor._(value.$unknown[0], value.$unknown[1]);\n };\n\n export const filterSensitiveLog = (obj: AnalyticsFilter): any => {\n if (obj.Prefix !== undefined) return { Prefix: obj.Prefix };\n if (obj.Tag !== undefined) return { Tag: Tag.filterSensitiveLog(obj.Tag) };\n if (obj.And !== undefined) return { And: AnalyticsAndOperator.filterSensitiveLog(obj.And) };\n if (obj.$unknown !== undefined) return { [obj.$unknown[0]]: \"UNKNOWN\" };\n };\n}\n\nexport type AnalyticsS3ExportFileFormat = \"CSV\";\n\n/**\n *

Contains information about where to publish the analytics results.

\n */\nexport interface AnalyticsS3BucketDestination {\n /**\n *

Specifies the file format used when exporting data to Amazon S3.

\n */\n Format: AnalyticsS3ExportFileFormat | string | undefined;\n\n /**\n *

The account ID that owns the destination S3 bucket. If no account ID is provided, the\n * owner is not validated before exporting data.

\n * \n *

Although this value is optional, we strongly recommend that you set it to help\n * prevent problems if the destination bucket ownership changes.

\n *
\n */\n BucketAccountId?: string;\n\n /**\n *

The Amazon Resource Name (ARN) of the bucket to which data is exported.

\n */\n Bucket: string | undefined;\n\n /**\n *

The prefix to use when exporting data. The prefix is prepended to all results.

\n */\n Prefix?: string;\n}\n\nexport namespace AnalyticsS3BucketDestination {\n export const filterSensitiveLog = (obj: AnalyticsS3BucketDestination): any => ({\n ...obj,\n });\n}\n\n/**\n *

Where to publish the analytics results.

\n */\nexport interface AnalyticsExportDestination {\n /**\n *

A destination signifying output to an S3 bucket.

\n */\n S3BucketDestination: AnalyticsS3BucketDestination | undefined;\n}\n\nexport namespace AnalyticsExportDestination {\n export const filterSensitiveLog = (obj: AnalyticsExportDestination): any => ({\n ...obj,\n });\n}\n\nexport type StorageClassAnalysisSchemaVersion = \"V_1\";\n\n/**\n *

Container for data related to the storage class analysis for an Amazon S3 bucket for\n * export.

\n */\nexport interface StorageClassAnalysisDataExport {\n /**\n *

The version of the output schema to use when exporting data. Must be\n * V_1.

\n */\n OutputSchemaVersion: StorageClassAnalysisSchemaVersion | string | undefined;\n\n /**\n *

The place to store the data for an analysis.

\n */\n Destination: AnalyticsExportDestination | undefined;\n}\n\nexport namespace StorageClassAnalysisDataExport {\n export const filterSensitiveLog = (obj: StorageClassAnalysisDataExport): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies data related to access patterns to be collected and made available to analyze\n * the tradeoffs between different storage classes for an Amazon S3 bucket.

\n */\nexport interface StorageClassAnalysis {\n /**\n *

Specifies how data related to the storage class analysis for an Amazon S3 bucket should be\n * exported.

\n */\n DataExport?: StorageClassAnalysisDataExport;\n}\n\nexport namespace StorageClassAnalysis {\n export const filterSensitiveLog = (obj: StorageClassAnalysis): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies the configuration and any analyses for the analytics filter of an Amazon S3\n * bucket.

\n */\nexport interface AnalyticsConfiguration {\n /**\n *

The ID that identifies the analytics configuration.

\n */\n Id: string | undefined;\n\n /**\n *

The filter used to describe a set of objects for analyses. A filter must have exactly\n * one prefix, one tag, or one conjunction (AnalyticsAndOperator). If no filter is provided,\n * all objects will be considered in any analysis.

\n */\n Filter?: AnalyticsFilter;\n\n /**\n *

Contains data related to access patterns to be collected and made available to analyze\n * the tradeoffs between different storage classes.

\n */\n StorageClassAnalysis: StorageClassAnalysis | undefined;\n}\n\nexport namespace AnalyticsConfiguration {\n export const filterSensitiveLog = (obj: AnalyticsConfiguration): any => ({\n ...obj,\n ...(obj.Filter && { Filter: AnalyticsFilter.filterSensitiveLog(obj.Filter) }),\n });\n}\n\nexport interface GetBucketAnalyticsConfigurationOutput {\n /**\n *

The configuration and any analyses for the analytics filter.

\n */\n AnalyticsConfiguration?: AnalyticsConfiguration;\n}\n\nexport namespace GetBucketAnalyticsConfigurationOutput {\n export const filterSensitiveLog = (obj: GetBucketAnalyticsConfigurationOutput): any => ({\n ...obj,\n ...(obj.AnalyticsConfiguration && {\n AnalyticsConfiguration: AnalyticsConfiguration.filterSensitiveLog(obj.AnalyticsConfiguration),\n }),\n });\n}\n\nexport interface GetBucketAnalyticsConfigurationRequest {\n /**\n *

The name of the bucket from which an analytics configuration is retrieved.

\n */\n Bucket: string | undefined;\n\n /**\n *

The ID that identifies the analytics configuration.

\n */\n Id: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetBucketAnalyticsConfigurationRequest {\n export const filterSensitiveLog = (obj: GetBucketAnalyticsConfigurationRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies a cross-origin access rule for an Amazon S3 bucket.

\n */\nexport interface CORSRule {\n /**\n *

Headers that are specified in the Access-Control-Request-Headers header.\n * These headers are allowed in a preflight OPTIONS request. In response to any preflight\n * OPTIONS request, Amazon S3 returns any requested headers that are allowed.

\n */\n AllowedHeaders?: string[];\n\n /**\n *

An HTTP method that you allow the origin to execute. Valid values are GET,\n * PUT, HEAD, POST, and DELETE.

\n */\n AllowedMethods: string[] | undefined;\n\n /**\n *

One or more origins you want customers to be able to access the bucket from.

\n */\n AllowedOrigins: string[] | undefined;\n\n /**\n *

One or more headers in the response that you want customers to be able to access from\n * their applications (for example, from a JavaScript XMLHttpRequest\n * object).

\n */\n ExposeHeaders?: string[];\n\n /**\n *

The time in seconds that your browser is to cache the preflight response for the\n * specified resource.

\n */\n MaxAgeSeconds?: number;\n}\n\nexport namespace CORSRule {\n export const filterSensitiveLog = (obj: CORSRule): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketCorsOutput {\n /**\n *

A set of origins and methods (cross-origin access that you want to allow). You can add\n * up to 100 rules to the configuration.

\n */\n CORSRules?: CORSRule[];\n}\n\nexport namespace GetBucketCorsOutput {\n export const filterSensitiveLog = (obj: GetBucketCorsOutput): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketCorsRequest {\n /**\n *

The bucket name for which to get the cors configuration.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetBucketCorsRequest {\n export const filterSensitiveLog = (obj: GetBucketCorsRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Describes the default server-side encryption to apply to new objects in the bucket. If a\n * PUT Object request doesn't specify any server-side encryption, this default encryption will\n * be applied. For more information, see PUT Bucket encryption in\n * the Amazon Simple Storage Service API Reference.

\n */\nexport interface ServerSideEncryptionByDefault {\n /**\n *

Server-side encryption algorithm to use for the default encryption.

\n */\n SSEAlgorithm: ServerSideEncryption | string | undefined;\n\n /**\n *

AWS Key Management Service (KMS) customer master key ID to use for the default\n * encryption. This parameter is allowed if and only if SSEAlgorithm is set to\n * aws:kms.

\n *

You can specify the key ID or the Amazon Resource Name (ARN) of the CMK. However, if you\n * are using encryption with cross-account operations, you must use a fully qualified CMK ARN.\n * For more information, see Using encryption for cross-account operations.

\n *

\n * For example:\n *

\n *
    \n *
  • \n *

    Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab\n *

    \n *
  • \n *
  • \n *

    Key ARN:\n * arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab\n *

    \n *
  • \n *
\n * \n *

Amazon S3 only supports symmetric CMKs and not asymmetric CMKs. For more information, see\n * Using Symmetric and\n * Asymmetric Keys in the AWS Key Management Service Developer\n * Guide.

\n *
\n */\n KMSMasterKeyID?: string;\n}\n\nexport namespace ServerSideEncryptionByDefault {\n export const filterSensitiveLog = (obj: ServerSideEncryptionByDefault): any => ({\n ...obj,\n ...(obj.KMSMasterKeyID && { KMSMasterKeyID: SENSITIVE_STRING }),\n });\n}\n\n/**\n *

Specifies the default server-side encryption configuration.

\n */\nexport interface ServerSideEncryptionRule {\n /**\n *

Specifies the default server-side encryption to apply to new objects in the bucket. If a\n * PUT Object request doesn't specify any server-side encryption, this default encryption will\n * be applied.

\n */\n ApplyServerSideEncryptionByDefault?: ServerSideEncryptionByDefault;\n\n /**\n *

Specifies whether Amazon S3 should use an S3 Bucket Key with server-side encryption using KMS (SSE-KMS) for new objects in the bucket. Existing objects are not affected. Setting the BucketKeyEnabled element to true causes Amazon S3 to use an S3 Bucket Key. By default, S3 Bucket Key is not enabled.

\n *

For more information, see Amazon S3 Bucket Keys in the Amazon Simple Storage Service Developer Guide.

\n */\n BucketKeyEnabled?: boolean;\n}\n\nexport namespace ServerSideEncryptionRule {\n export const filterSensitiveLog = (obj: ServerSideEncryptionRule): any => ({\n ...obj,\n ...(obj.ApplyServerSideEncryptionByDefault && {\n ApplyServerSideEncryptionByDefault: ServerSideEncryptionByDefault.filterSensitiveLog(\n obj.ApplyServerSideEncryptionByDefault\n ),\n }),\n });\n}\n\n/**\n *

Specifies the default server-side-encryption configuration.

\n */\nexport interface ServerSideEncryptionConfiguration {\n /**\n *

Container for information about a particular server-side encryption configuration\n * rule.

\n */\n Rules: ServerSideEncryptionRule[] | undefined;\n}\n\nexport namespace ServerSideEncryptionConfiguration {\n export const filterSensitiveLog = (obj: ServerSideEncryptionConfiguration): any => ({\n ...obj,\n ...(obj.Rules && { Rules: obj.Rules.map((item) => ServerSideEncryptionRule.filterSensitiveLog(item)) }),\n });\n}\n\nexport interface GetBucketEncryptionOutput {\n /**\n *

Specifies the default server-side-encryption configuration.

\n */\n ServerSideEncryptionConfiguration?: ServerSideEncryptionConfiguration;\n}\n\nexport namespace GetBucketEncryptionOutput {\n export const filterSensitiveLog = (obj: GetBucketEncryptionOutput): any => ({\n ...obj,\n ...(obj.ServerSideEncryptionConfiguration && {\n ServerSideEncryptionConfiguration: ServerSideEncryptionConfiguration.filterSensitiveLog(\n obj.ServerSideEncryptionConfiguration\n ),\n }),\n });\n}\n\nexport interface GetBucketEncryptionRequest {\n /**\n *

The name of the bucket from which the server-side encryption configuration is\n * retrieved.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetBucketEncryptionRequest {\n export const filterSensitiveLog = (obj: GetBucketEncryptionRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

A container for specifying S3 Intelligent-Tiering filters. The filters determine the\n * subset of objects to which the rule applies.

\n */\nexport interface IntelligentTieringAndOperator {\n /**\n *

An object key name prefix that identifies the subset of objects to which the\n * configuration applies.

\n */\n Prefix?: string;\n\n /**\n *

All of these tags must exist in the object's tag set in order for the configuration to\n * apply.

\n */\n Tags?: Tag[];\n}\n\nexport namespace IntelligentTieringAndOperator {\n export const filterSensitiveLog = (obj: IntelligentTieringAndOperator): any => ({\n ...obj,\n });\n}\n\n/**\n *

The Filter is used to identify objects that the S3 Intelligent-Tiering\n * configuration applies to.

\n */\nexport interface IntelligentTieringFilter {\n /**\n *

An object key name prefix that identifies the subset of objects to which the rule\n * applies.

\n */\n Prefix?: string;\n\n /**\n *

A container of a key value name pair.

\n */\n Tag?: Tag;\n\n /**\n *

A conjunction (logical AND) of predicates, which is used in evaluating a metrics filter.\n * The operator must have at least two predicates, and an object must match all of the\n * predicates in order for the filter to apply.

\n */\n And?: IntelligentTieringAndOperator;\n}\n\nexport namespace IntelligentTieringFilter {\n export const filterSensitiveLog = (obj: IntelligentTieringFilter): any => ({\n ...obj,\n });\n}\n\nexport type IntelligentTieringStatus = \"Disabled\" | \"Enabled\";\n\nexport type IntelligentTieringAccessTier = \"ARCHIVE_ACCESS\" | \"DEEP_ARCHIVE_ACCESS\";\n\n/**\n *

The S3 Intelligent-Tiering storage class is designed to optimize storage costs by\n * automatically moving data to the most cost-effective storage access tier, without\n * additional operational overhead.

\n */\nexport interface Tiering {\n /**\n *

The number of consecutive days of no access after which an object will be eligible to be\n * transitioned to the corresponding tier. The minimum number of days specified for\n * Archive Access tier must be at least 90 days and Deep Archive Access tier must be at least\n * 180 days. The maximum can be up to 2 years (730 days).

\n */\n Days: number | undefined;\n\n /**\n *

S3 Intelligent-Tiering access tier. See Storage class for\n * automatically optimizing frequently and infrequently accessed objects for a list\n * of access tiers in the S3 Intelligent-Tiering storage class.

\n */\n AccessTier: IntelligentTieringAccessTier | string | undefined;\n}\n\nexport namespace Tiering {\n export const filterSensitiveLog = (obj: Tiering): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies the S3 Intelligent-Tiering configuration for an Amazon S3 bucket.

\n *

For information about the S3 Intelligent-Tiering storage class, see Storage class for\n * automatically optimizing frequently and infrequently accessed objects.

\n */\nexport interface IntelligentTieringConfiguration {\n /**\n *

The ID used to identify the S3 Intelligent-Tiering configuration.

\n */\n Id: string | undefined;\n\n /**\n *

Specifies a bucket filter. The configuration only includes objects that meet the\n * filter's criteria.

\n */\n Filter?: IntelligentTieringFilter;\n\n /**\n *

Specifies the status of the configuration.

\n */\n Status: IntelligentTieringStatus | string | undefined;\n\n /**\n *

Specifies the S3 Intelligent-Tiering storage class tier of the configuration.

\n */\n Tierings: Tiering[] | undefined;\n}\n\nexport namespace IntelligentTieringConfiguration {\n export const filterSensitiveLog = (obj: IntelligentTieringConfiguration): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketIntelligentTieringConfigurationOutput {\n /**\n *

Container for S3 Intelligent-Tiering configuration.

\n */\n IntelligentTieringConfiguration?: IntelligentTieringConfiguration;\n}\n\nexport namespace GetBucketIntelligentTieringConfigurationOutput {\n export const filterSensitiveLog = (obj: GetBucketIntelligentTieringConfigurationOutput): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketIntelligentTieringConfigurationRequest {\n /**\n *

The name of the Amazon S3 bucket whose configuration you want to modify or retrieve.

\n */\n Bucket: string | undefined;\n\n /**\n *

The ID used to identify the S3 Intelligent-Tiering configuration.

\n */\n Id: string | undefined;\n}\n\nexport namespace GetBucketIntelligentTieringConfigurationRequest {\n export const filterSensitiveLog = (obj: GetBucketIntelligentTieringConfigurationRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies the use of SSE-KMS to encrypt delivered inventory reports.

\n */\nexport interface SSEKMS {\n /**\n *

Specifies the ID of the AWS Key Management Service (AWS KMS) symmetric customer managed\n * customer master key (CMK) to use for encrypting inventory reports.

\n */\n KeyId: string | undefined;\n}\n\nexport namespace SSEKMS {\n export const filterSensitiveLog = (obj: SSEKMS): any => ({\n ...obj,\n ...(obj.KeyId && { KeyId: SENSITIVE_STRING }),\n });\n}\n\n/**\n *

Specifies the use of SSE-S3 to encrypt delivered inventory reports.

\n */\nexport interface SSES3 {}\n\nexport namespace SSES3 {\n export const filterSensitiveLog = (obj: SSES3): any => ({\n ...obj,\n });\n}\n\n/**\n *

Contains the type of server-side encryption used to encrypt the inventory\n * results.

\n */\nexport interface InventoryEncryption {\n /**\n *

Specifies the use of SSE-S3 to encrypt delivered inventory reports.

\n */\n SSES3?: SSES3;\n\n /**\n *

Specifies the use of SSE-KMS to encrypt delivered inventory reports.

\n */\n SSEKMS?: SSEKMS;\n}\n\nexport namespace InventoryEncryption {\n export const filterSensitiveLog = (obj: InventoryEncryption): any => ({\n ...obj,\n ...(obj.SSEKMS && { SSEKMS: SSEKMS.filterSensitiveLog(obj.SSEKMS) }),\n });\n}\n\nexport type InventoryFormat = \"CSV\" | \"ORC\" | \"Parquet\";\n\n/**\n *

Contains the bucket name, file format, bucket owner (optional), and prefix (optional)\n * where inventory results are published.

\n */\nexport interface InventoryS3BucketDestination {\n /**\n *

The account ID that owns the destination S3 bucket. If no account ID is provided, the\n * owner is not validated before exporting data.

\n * \n *

Although this value is optional, we strongly recommend that you set it to help\n * prevent problems if the destination bucket ownership changes.

\n *
\n */\n AccountId?: string;\n\n /**\n *

The Amazon Resource Name (ARN) of the bucket where inventory results will be\n * published.

\n */\n Bucket: string | undefined;\n\n /**\n *

Specifies the output format of the inventory results.

\n */\n Format: InventoryFormat | string | undefined;\n\n /**\n *

The prefix that is prepended to all inventory results.

\n */\n Prefix?: string;\n\n /**\n *

Contains the type of server-side encryption used to encrypt the inventory\n * results.

\n */\n Encryption?: InventoryEncryption;\n}\n\nexport namespace InventoryS3BucketDestination {\n export const filterSensitiveLog = (obj: InventoryS3BucketDestination): any => ({\n ...obj,\n ...(obj.Encryption && { Encryption: InventoryEncryption.filterSensitiveLog(obj.Encryption) }),\n });\n}\n\n/**\n *

Specifies the inventory configuration for an Amazon S3 bucket.

\n */\nexport interface InventoryDestination {\n /**\n *

Contains the bucket name, file format, bucket owner (optional), and prefix (optional)\n * where inventory results are published.

\n */\n S3BucketDestination: InventoryS3BucketDestination | undefined;\n}\n\nexport namespace InventoryDestination {\n export const filterSensitiveLog = (obj: InventoryDestination): any => ({\n ...obj,\n ...(obj.S3BucketDestination && {\n S3BucketDestination: InventoryS3BucketDestination.filterSensitiveLog(obj.S3BucketDestination),\n }),\n });\n}\n\n/**\n *

Specifies an inventory filter. The inventory only includes objects that meet the\n * filter's criteria.

\n */\nexport interface InventoryFilter {\n /**\n *

The prefix that an object must have to be included in the inventory results.

\n */\n Prefix: string | undefined;\n}\n\nexport namespace InventoryFilter {\n export const filterSensitiveLog = (obj: InventoryFilter): any => ({\n ...obj,\n });\n}\n\nexport type InventoryIncludedObjectVersions = \"All\" | \"Current\";\n\nexport type InventoryOptionalField =\n | \"ETag\"\n | \"EncryptionStatus\"\n | \"IntelligentTieringAccessTier\"\n | \"IsMultipartUploaded\"\n | \"LastModifiedDate\"\n | \"ObjectLockLegalHoldStatus\"\n | \"ObjectLockMode\"\n | \"ObjectLockRetainUntilDate\"\n | \"ReplicationStatus\"\n | \"Size\"\n | \"StorageClass\";\n\nexport type InventoryFrequency = \"Daily\" | \"Weekly\";\n\n/**\n *

Specifies the schedule for generating inventory results.

\n */\nexport interface InventorySchedule {\n /**\n *

Specifies how frequently inventory results are produced.

\n */\n Frequency: InventoryFrequency | string | undefined;\n}\n\nexport namespace InventorySchedule {\n export const filterSensitiveLog = (obj: InventorySchedule): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies the inventory configuration for an Amazon S3 bucket. For more information, see\n * GET Bucket inventory in the Amazon Simple Storage Service API Reference.\n *

\n */\nexport interface InventoryConfiguration {\n /**\n *

Contains information about where to publish the inventory results.

\n */\n Destination: InventoryDestination | undefined;\n\n /**\n *

Specifies whether the inventory is enabled or disabled. If set to True, an\n * inventory list is generated. If set to False, no inventory list is\n * generated.

\n */\n IsEnabled: boolean | undefined;\n\n /**\n *

Specifies an inventory filter. The inventory only includes objects that meet the\n * filter's criteria.

\n */\n Filter?: InventoryFilter;\n\n /**\n *

The ID used to identify the inventory configuration.

\n */\n Id: string | undefined;\n\n /**\n *

Object versions to include in the inventory list. If set to All, the list\n * includes all the object versions, which adds the version-related fields\n * VersionId, IsLatest, and DeleteMarker to the\n * list. If set to Current, the list does not contain these version-related\n * fields.

\n */\n IncludedObjectVersions: InventoryIncludedObjectVersions | string | undefined;\n\n /**\n *

Contains the optional fields that are included in the inventory results.

\n */\n OptionalFields?: (InventoryOptionalField | string)[];\n\n /**\n *

Specifies the schedule for generating inventory results.

\n */\n Schedule: InventorySchedule | undefined;\n}\n\nexport namespace InventoryConfiguration {\n export const filterSensitiveLog = (obj: InventoryConfiguration): any => ({\n ...obj,\n ...(obj.Destination && { Destination: InventoryDestination.filterSensitiveLog(obj.Destination) }),\n });\n}\n\nexport interface GetBucketInventoryConfigurationOutput {\n /**\n *

Specifies the inventory configuration.

\n */\n InventoryConfiguration?: InventoryConfiguration;\n}\n\nexport namespace GetBucketInventoryConfigurationOutput {\n export const filterSensitiveLog = (obj: GetBucketInventoryConfigurationOutput): any => ({\n ...obj,\n ...(obj.InventoryConfiguration && {\n InventoryConfiguration: InventoryConfiguration.filterSensitiveLog(obj.InventoryConfiguration),\n }),\n });\n}\n\nexport interface GetBucketInventoryConfigurationRequest {\n /**\n *

The name of the bucket containing the inventory configuration to retrieve.

\n */\n Bucket: string | undefined;\n\n /**\n *

The ID used to identify the inventory configuration.

\n */\n Id: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetBucketInventoryConfigurationRequest {\n export const filterSensitiveLog = (obj: GetBucketInventoryConfigurationRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Container for the expiration for the lifecycle of the object.

\n */\nexport interface LifecycleExpiration {\n /**\n *

Indicates at what date the object is to be moved or deleted. Should be in GMT ISO 8601\n * Format.

\n */\n Date?: Date;\n\n /**\n *

Indicates the lifetime, in days, of the objects that are subject to the rule. The value\n * must be a non-zero positive integer.

\n */\n Days?: number;\n\n /**\n *

Indicates whether Amazon S3 will remove a delete marker with no noncurrent versions. If set\n * to true, the delete marker will be expired; if set to false the policy takes no action.\n * This cannot be specified with Days or Date in a Lifecycle Expiration Policy.

\n */\n ExpiredObjectDeleteMarker?: boolean;\n}\n\nexport namespace LifecycleExpiration {\n export const filterSensitiveLog = (obj: LifecycleExpiration): any => ({\n ...obj,\n });\n}\n\n/**\n *

This is used in a Lifecycle Rule Filter to apply a logical AND to two or more\n * predicates. The Lifecycle Rule will apply to any object matching all of the predicates\n * configured inside the And operator.

\n */\nexport interface LifecycleRuleAndOperator {\n /**\n *

Prefix identifying one or more objects to which the rule applies.

\n */\n Prefix?: string;\n\n /**\n *

All of these tags must exist in the object's tag set in order for the rule to\n * apply.

\n */\n Tags?: Tag[];\n}\n\nexport namespace LifecycleRuleAndOperator {\n export const filterSensitiveLog = (obj: LifecycleRuleAndOperator): any => ({\n ...obj,\n });\n}\n\n/**\n *

The Filter is used to identify objects that a Lifecycle Rule applies to. A\n * Filter must have exactly one of Prefix, Tag, or\n * And specified.

\n */\nexport type LifecycleRuleFilter =\n | LifecycleRuleFilter.AndMember\n | LifecycleRuleFilter.PrefixMember\n | LifecycleRuleFilter.TagMember\n | LifecycleRuleFilter.$UnknownMember;\n\nexport namespace LifecycleRuleFilter {\n /**\n *

Prefix identifying one or more objects to which the rule applies.

\n */\n export interface PrefixMember {\n Prefix: string;\n Tag?: never;\n And?: never;\n $unknown?: never;\n }\n\n /**\n *

This tag must exist in the object's tag set in order for the rule to apply.

\n */\n export interface TagMember {\n Prefix?: never;\n Tag: Tag;\n And?: never;\n $unknown?: never;\n }\n\n /**\n *

This is used in a Lifecycle Rule Filter to apply a logical AND to two or more\n * predicates. The Lifecycle Rule will apply to any object matching all of the predicates\n * configured inside the And operator.

\n */\n export interface AndMember {\n Prefix?: never;\n Tag?: never;\n And: LifecycleRuleAndOperator;\n $unknown?: never;\n }\n\n export interface $UnknownMember {\n Prefix?: never;\n Tag?: never;\n And?: never;\n $unknown: [string, any];\n }\n\n export interface Visitor {\n Prefix: (value: string) => T;\n Tag: (value: Tag) => T;\n And: (value: LifecycleRuleAndOperator) => T;\n _: (name: string, value: any) => T;\n }\n\n export const visit = (value: LifecycleRuleFilter, visitor: Visitor): T => {\n if (value.Prefix !== undefined) return visitor.Prefix(value.Prefix);\n if (value.Tag !== undefined) return visitor.Tag(value.Tag);\n if (value.And !== undefined) return visitor.And(value.And);\n return visitor._(value.$unknown[0], value.$unknown[1]);\n };\n\n export const filterSensitiveLog = (obj: LifecycleRuleFilter): any => {\n if (obj.Prefix !== undefined) return { Prefix: obj.Prefix };\n if (obj.Tag !== undefined) return { Tag: Tag.filterSensitiveLog(obj.Tag) };\n if (obj.And !== undefined) return { And: LifecycleRuleAndOperator.filterSensitiveLog(obj.And) };\n if (obj.$unknown !== undefined) return { [obj.$unknown[0]]: \"UNKNOWN\" };\n };\n}\n\n/**\n *

Specifies when noncurrent object versions expire. Upon expiration, Amazon S3 permanently\n * deletes the noncurrent object versions. You set this lifecycle configuration action on a\n * bucket that has versioning enabled (or suspended) to request that Amazon S3 delete noncurrent\n * object versions at a specific period in the object's lifetime.

\n */\nexport interface NoncurrentVersionExpiration {\n /**\n *

Specifies the number of days an object is noncurrent before Amazon S3 can perform the\n * associated action. For information about the noncurrent days calculations, see How\n * Amazon S3 Calculates When an Object Became Noncurrent in the Amazon Simple\n * Storage Service Developer Guide.

\n */\n NoncurrentDays?: number;\n}\n\nexport namespace NoncurrentVersionExpiration {\n export const filterSensitiveLog = (obj: NoncurrentVersionExpiration): any => ({\n ...obj,\n });\n}\n\nexport type TransitionStorageClass = \"DEEP_ARCHIVE\" | \"GLACIER\" | \"INTELLIGENT_TIERING\" | \"ONEZONE_IA\" | \"STANDARD_IA\";\n\n/**\n *

Container for the transition rule that describes when noncurrent objects transition to\n * the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING,\n * GLACIER, or DEEP_ARCHIVE storage class. If your bucket is\n * versioning-enabled (or versioning is suspended), you can set this action to request that\n * Amazon S3 transition noncurrent object versions to the STANDARD_IA,\n * ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, or\n * DEEP_ARCHIVE storage class at a specific period in the object's\n * lifetime.

\n */\nexport interface NoncurrentVersionTransition {\n /**\n *

Specifies the number of days an object is noncurrent before Amazon S3 can perform the\n * associated action. For information about the noncurrent days calculations, see How\n * Amazon S3 Calculates How Long an Object Has Been Noncurrent in the\n * Amazon Simple Storage Service Developer Guide.

\n */\n NoncurrentDays?: number;\n\n /**\n *

The class of storage used to store the object.

\n */\n StorageClass?: TransitionStorageClass | string;\n}\n\nexport namespace NoncurrentVersionTransition {\n export const filterSensitiveLog = (obj: NoncurrentVersionTransition): any => ({\n ...obj,\n });\n}\n\nexport type ExpirationStatus = \"Disabled\" | \"Enabled\";\n\n/**\n *

Specifies when an object transitions to a specified storage class. For more information\n * about Amazon S3 lifecycle configuration rules, see Transitioning\n * Objects Using Amazon S3 Lifecycle in the Amazon Simple Storage Service Developer Guide.

\n */\nexport interface Transition {\n /**\n *

Indicates when objects are transitioned to the specified storage class. The date value\n * must be in ISO 8601 format. The time is always midnight UTC.

\n */\n Date?: Date;\n\n /**\n *

Indicates the number of days after creation when objects are transitioned to the\n * specified storage class. The value must be a positive integer.

\n */\n Days?: number;\n\n /**\n *

The storage class to which you want the object to transition.

\n */\n StorageClass?: TransitionStorageClass | string;\n}\n\nexport namespace Transition {\n export const filterSensitiveLog = (obj: Transition): any => ({\n ...obj,\n });\n}\n\n/**\n *

A lifecycle rule for individual objects in an Amazon S3 bucket.

\n */\nexport interface LifecycleRule {\n /**\n *

Specifies the expiration for the lifecycle of the object in the form of date, days and,\n * whether the object has a delete marker.

\n */\n Expiration?: LifecycleExpiration;\n\n /**\n *

Unique identifier for the rule. The value cannot be longer than 255 characters.

\n */\n ID?: string;\n\n /**\n * @deprecated\n *\n *

Prefix identifying one or more objects to which the rule applies. This is\n * No longer used; use Filter instead.

\n */\n Prefix?: string;\n\n /**\n *

The Filter is used to identify objects that a Lifecycle Rule applies to. A\n * Filter must have exactly one of Prefix, Tag, or\n * And specified.

\n */\n Filter?: LifecycleRuleFilter;\n\n /**\n *

If 'Enabled', the rule is currently being applied. If 'Disabled', the rule is not\n * currently being applied.

\n */\n Status: ExpirationStatus | string | undefined;\n\n /**\n *

Specifies when an Amazon S3 object transitions to a specified storage class.

\n */\n Transitions?: Transition[];\n\n /**\n *

Specifies the transition rule for the lifecycle rule that describes when noncurrent\n * objects transition to a specific storage class. If your bucket is versioning-enabled (or\n * versioning is suspended), you can set this action to request that Amazon S3 transition\n * noncurrent object versions to a specific storage class at a set period in the object's\n * lifetime.

\n */\n NoncurrentVersionTransitions?: NoncurrentVersionTransition[];\n\n /**\n *

Specifies when noncurrent object versions expire. Upon expiration, Amazon S3 permanently\n * deletes the noncurrent object versions. You set this lifecycle configuration action on a\n * bucket that has versioning enabled (or suspended) to request that Amazon S3 delete noncurrent\n * object versions at a specific period in the object's lifetime.

\n */\n NoncurrentVersionExpiration?: NoncurrentVersionExpiration;\n\n /**\n *

Specifies the days since the initiation of an incomplete multipart upload that Amazon S3 will\n * wait before permanently removing all parts of the upload. For more information, see \n * Aborting Incomplete Multipart Uploads Using a Bucket Lifecycle Policy in the\n * Amazon Simple Storage Service Developer Guide.

\n */\n AbortIncompleteMultipartUpload?: AbortIncompleteMultipartUpload;\n}\n\nexport namespace LifecycleRule {\n export const filterSensitiveLog = (obj: LifecycleRule): any => ({\n ...obj,\n ...(obj.Filter && { Filter: LifecycleRuleFilter.filterSensitiveLog(obj.Filter) }),\n });\n}\n\nexport interface GetBucketLifecycleConfigurationOutput {\n /**\n *

Container for a lifecycle rule.

\n */\n Rules?: LifecycleRule[];\n}\n\nexport namespace GetBucketLifecycleConfigurationOutput {\n export const filterSensitiveLog = (obj: GetBucketLifecycleConfigurationOutput): any => ({\n ...obj,\n ...(obj.Rules && { Rules: obj.Rules.map((item) => LifecycleRule.filterSensitiveLog(item)) }),\n });\n}\n\nexport interface GetBucketLifecycleConfigurationRequest {\n /**\n *

The name of the bucket for which to get the lifecycle information.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetBucketLifecycleConfigurationRequest {\n export const filterSensitiveLog = (obj: GetBucketLifecycleConfigurationRequest): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketLocationOutput {\n /**\n *

Specifies the Region where the bucket resides. For a list of all the Amazon S3 supported\n * location constraints by Region, see Regions and Endpoints.\n * Buckets in Region us-east-1 have a LocationConstraint of\n * null.

\n */\n LocationConstraint?: BucketLocationConstraint | string;\n}\n\nexport namespace GetBucketLocationOutput {\n export const filterSensitiveLog = (obj: GetBucketLocationOutput): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketLocationRequest {\n /**\n *

The name of the bucket for which to get the location.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetBucketLocationRequest {\n export const filterSensitiveLog = (obj: GetBucketLocationRequest): any => ({\n ...obj,\n });\n}\n\nexport type BucketLogsPermission = \"FULL_CONTROL\" | \"READ\" | \"WRITE\";\n\n/**\n *

Container for granting information.

\n */\nexport interface TargetGrant {\n /**\n *

Container for the person being granted permissions.

\n */\n Grantee?: Grantee;\n\n /**\n *

Logging permissions assigned to the grantee for the bucket.

\n */\n Permission?: BucketLogsPermission | string;\n}\n\nexport namespace TargetGrant {\n export const filterSensitiveLog = (obj: TargetGrant): any => ({\n ...obj,\n });\n}\n\n/**\n *

Describes where logs are stored and the prefix that Amazon S3 assigns to all log object keys\n * for a bucket. For more information, see PUT Bucket logging in the\n * Amazon Simple Storage Service API Reference.

\n */\nexport interface LoggingEnabled {\n /**\n *

Specifies the bucket where you want Amazon S3 to store server access logs. You can have your\n * logs delivered to any bucket that you own, including the same bucket that is being logged.\n * You can also configure multiple buckets to deliver their logs to the same target bucket. In\n * this case, you should choose a different TargetPrefix for each source bucket\n * so that the delivered log files can be distinguished by key.

\n */\n TargetBucket: string | undefined;\n\n /**\n *

Container for granting information.

\n */\n TargetGrants?: TargetGrant[];\n\n /**\n *

A prefix for all log object keys. If you store log files from multiple Amazon S3 buckets in a\n * single bucket, you can use a prefix to distinguish which log files came from which\n * bucket.

\n */\n TargetPrefix: string | undefined;\n}\n\nexport namespace LoggingEnabled {\n export const filterSensitiveLog = (obj: LoggingEnabled): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketLoggingOutput {\n /**\n *

Describes where logs are stored and the prefix that Amazon S3 assigns to all log object keys\n * for a bucket. For more information, see PUT Bucket logging in the\n * Amazon Simple Storage Service API Reference.

\n */\n LoggingEnabled?: LoggingEnabled;\n}\n\nexport namespace GetBucketLoggingOutput {\n export const filterSensitiveLog = (obj: GetBucketLoggingOutput): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketLoggingRequest {\n /**\n *

The bucket name for which to get the logging information.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetBucketLoggingRequest {\n export const filterSensitiveLog = (obj: GetBucketLoggingRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

A conjunction (logical AND) of predicates, which is used in evaluating a metrics filter.\n * The operator must have at least two predicates, and an object must match all of the\n * predicates in order for the filter to apply.

\n */\nexport interface MetricsAndOperator {\n /**\n *

The prefix used when evaluating an AND predicate.

\n */\n Prefix?: string;\n\n /**\n *

The list of tags used when evaluating an AND predicate.

\n */\n Tags?: Tag[];\n}\n\nexport namespace MetricsAndOperator {\n export const filterSensitiveLog = (obj: MetricsAndOperator): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies a metrics configuration filter. The metrics configuration only includes\n * objects that meet the filter's criteria. A filter must be a prefix, a tag, or a conjunction\n * (MetricsAndOperator).

\n */\nexport type MetricsFilter =\n | MetricsFilter.AndMember\n | MetricsFilter.PrefixMember\n | MetricsFilter.TagMember\n | MetricsFilter.$UnknownMember;\n\nexport namespace MetricsFilter {\n /**\n *

The prefix used when evaluating a metrics filter.

\n */\n export interface PrefixMember {\n Prefix: string;\n Tag?: never;\n And?: never;\n $unknown?: never;\n }\n\n /**\n *

The tag used when evaluating a metrics filter.

\n */\n export interface TagMember {\n Prefix?: never;\n Tag: Tag;\n And?: never;\n $unknown?: never;\n }\n\n /**\n *

A conjunction (logical AND) of predicates, which is used in evaluating a metrics filter.\n * The operator must have at least two predicates, and an object must match all of the\n * predicates in order for the filter to apply.

\n */\n export interface AndMember {\n Prefix?: never;\n Tag?: never;\n And: MetricsAndOperator;\n $unknown?: never;\n }\n\n export interface $UnknownMember {\n Prefix?: never;\n Tag?: never;\n And?: never;\n $unknown: [string, any];\n }\n\n export interface Visitor {\n Prefix: (value: string) => T;\n Tag: (value: Tag) => T;\n And: (value: MetricsAndOperator) => T;\n _: (name: string, value: any) => T;\n }\n\n export const visit = (value: MetricsFilter, visitor: Visitor): T => {\n if (value.Prefix !== undefined) return visitor.Prefix(value.Prefix);\n if (value.Tag !== undefined) return visitor.Tag(value.Tag);\n if (value.And !== undefined) return visitor.And(value.And);\n return visitor._(value.$unknown[0], value.$unknown[1]);\n };\n\n export const filterSensitiveLog = (obj: MetricsFilter): any => {\n if (obj.Prefix !== undefined) return { Prefix: obj.Prefix };\n if (obj.Tag !== undefined) return { Tag: Tag.filterSensitiveLog(obj.Tag) };\n if (obj.And !== undefined) return { And: MetricsAndOperator.filterSensitiveLog(obj.And) };\n if (obj.$unknown !== undefined) return { [obj.$unknown[0]]: \"UNKNOWN\" };\n };\n}\n\n/**\n *

Specifies a metrics configuration for the CloudWatch request metrics (specified by the\n * metrics configuration ID) from an Amazon S3 bucket. If you're updating an existing metrics\n * configuration, note that this is a full replacement of the existing metrics configuration.\n * If you don't include the elements you want to keep, they are erased. For more information,\n * see PUT Bucket\n * metrics in the Amazon Simple Storage Service API Reference.

\n */\nexport interface MetricsConfiguration {\n /**\n *

The ID used to identify the metrics configuration.

\n */\n Id: string | undefined;\n\n /**\n *

Specifies a metrics configuration filter. The metrics configuration will only include\n * objects that meet the filter's criteria. A filter must be a prefix, a tag, or a conjunction\n * (MetricsAndOperator).

\n */\n Filter?: MetricsFilter;\n}\n\nexport namespace MetricsConfiguration {\n export const filterSensitiveLog = (obj: MetricsConfiguration): any => ({\n ...obj,\n ...(obj.Filter && { Filter: MetricsFilter.filterSensitiveLog(obj.Filter) }),\n });\n}\n\nexport interface GetBucketMetricsConfigurationOutput {\n /**\n *

Specifies the metrics configuration.

\n */\n MetricsConfiguration?: MetricsConfiguration;\n}\n\nexport namespace GetBucketMetricsConfigurationOutput {\n export const filterSensitiveLog = (obj: GetBucketMetricsConfigurationOutput): any => ({\n ...obj,\n ...(obj.MetricsConfiguration && {\n MetricsConfiguration: MetricsConfiguration.filterSensitiveLog(obj.MetricsConfiguration),\n }),\n });\n}\n\nexport interface GetBucketMetricsConfigurationRequest {\n /**\n *

The name of the bucket containing the metrics configuration to retrieve.

\n */\n Bucket: string | undefined;\n\n /**\n *

The ID used to identify the metrics configuration.

\n */\n Id: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetBucketMetricsConfigurationRequest {\n export const filterSensitiveLog = (obj: GetBucketMetricsConfigurationRequest): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketNotificationConfigurationRequest {\n /**\n *

The name of the bucket for which to get the notification configuration.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetBucketNotificationConfigurationRequest {\n export const filterSensitiveLog = (obj: GetBucketNotificationConfigurationRequest): any => ({\n ...obj,\n });\n}\n\nexport type Event =\n | \"s3:ObjectCreated:*\"\n | \"s3:ObjectCreated:CompleteMultipartUpload\"\n | \"s3:ObjectCreated:Copy\"\n | \"s3:ObjectCreated:Post\"\n | \"s3:ObjectCreated:Put\"\n | \"s3:ObjectRemoved:*\"\n | \"s3:ObjectRemoved:Delete\"\n | \"s3:ObjectRemoved:DeleteMarkerCreated\"\n | \"s3:ObjectRestore:*\"\n | \"s3:ObjectRestore:Completed\"\n | \"s3:ObjectRestore:Post\"\n | \"s3:ReducedRedundancyLostObject\"\n | \"s3:Replication:*\"\n | \"s3:Replication:OperationFailedReplication\"\n | \"s3:Replication:OperationMissedThreshold\"\n | \"s3:Replication:OperationNotTracked\"\n | \"s3:Replication:OperationReplicatedAfterThreshold\";\n\nexport type FilterRuleName = \"prefix\" | \"suffix\";\n\n/**\n *

Specifies the Amazon S3 object key name to filter on and whether to filter on the suffix or\n * prefix of the key name.

\n */\nexport interface FilterRule {\n /**\n *

The object key name prefix or suffix identifying one or more objects to which the\n * filtering rule applies. The maximum length is 1,024 characters. Overlapping prefixes and\n * suffixes are not supported. For more information, see Configuring Event Notifications\n * in the Amazon Simple Storage Service Developer Guide.

\n */\n Name?: FilterRuleName | string;\n\n /**\n *

The value that the filter searches for in object key names.

\n */\n Value?: string;\n}\n\nexport namespace FilterRule {\n export const filterSensitiveLog = (obj: FilterRule): any => ({\n ...obj,\n });\n}\n\n/**\n *

A container for object key name prefix and suffix filtering rules.

\n */\nexport interface S3KeyFilter {\n /**\n *

A list of containers for the key-value pair that defines the criteria for the filter\n * rule.

\n */\n FilterRules?: FilterRule[];\n}\n\nexport namespace S3KeyFilter {\n export const filterSensitiveLog = (obj: S3KeyFilter): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies object key name filtering rules. For information about key name filtering, see\n * Configuring\n * Event Notifications in the Amazon Simple Storage Service Developer\n * Guide.

\n */\nexport interface NotificationConfigurationFilter {\n /**\n *

A container for object key name prefix and suffix filtering rules.

\n */\n Key?: S3KeyFilter;\n}\n\nexport namespace NotificationConfigurationFilter {\n export const filterSensitiveLog = (obj: NotificationConfigurationFilter): any => ({\n ...obj,\n });\n}\n\n/**\n *

A container for specifying the configuration for AWS Lambda notifications.

\n */\nexport interface LambdaFunctionConfiguration {\n /**\n *

An optional unique identifier for configurations in a notification configuration. If you\n * don't provide one, Amazon S3 will assign an ID.

\n */\n Id?: string;\n\n /**\n *

The Amazon Resource Name (ARN) of the AWS Lambda function that Amazon S3 invokes when the\n * specified event type occurs.

\n */\n LambdaFunctionArn: string | undefined;\n\n /**\n *

The Amazon S3 bucket event for which to invoke the AWS Lambda function. For more information,\n * see Supported\n * Event Types in the Amazon Simple Storage Service Developer Guide.

\n */\n Events: (Event | string)[] | undefined;\n\n /**\n *

Specifies object key name filtering rules. For information about key name filtering, see\n * Configuring\n * Event Notifications in the Amazon Simple Storage Service Developer\n * Guide.

\n */\n Filter?: NotificationConfigurationFilter;\n}\n\nexport namespace LambdaFunctionConfiguration {\n export const filterSensitiveLog = (obj: LambdaFunctionConfiguration): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies the configuration for publishing messages to an Amazon Simple Queue Service\n * (Amazon SQS) queue when Amazon S3 detects specified events.

\n */\nexport interface QueueConfiguration {\n /**\n *

An optional unique identifier for configurations in a notification configuration. If you\n * don't provide one, Amazon S3 will assign an ID.

\n */\n Id?: string;\n\n /**\n *

The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3 publishes a message\n * when it detects events of the specified type.

\n */\n QueueArn: string | undefined;\n\n /**\n *

A collection of bucket events for which to send notifications

\n */\n Events: (Event | string)[] | undefined;\n\n /**\n *

Specifies object key name filtering rules. For information about key name filtering, see\n * Configuring\n * Event Notifications in the Amazon Simple Storage Service Developer\n * Guide.

\n */\n Filter?: NotificationConfigurationFilter;\n}\n\nexport namespace QueueConfiguration {\n export const filterSensitiveLog = (obj: QueueConfiguration): any => ({\n ...obj,\n });\n}\n\n/**\n *

A container for specifying the configuration for publication of messages to an Amazon\n * Simple Notification Service (Amazon SNS) topic when Amazon S3 detects specified events.

\n */\nexport interface TopicConfiguration {\n /**\n *

An optional unique identifier for configurations in a notification configuration. If you\n * don't provide one, Amazon S3 will assign an ID.

\n */\n Id?: string;\n\n /**\n *

The Amazon Resource Name (ARN) of the Amazon SNS topic to which Amazon S3 publishes a message\n * when it detects events of the specified type.

\n */\n TopicArn: string | undefined;\n\n /**\n *

The Amazon S3 bucket event about which to send notifications. For more information, see\n * Supported\n * Event Types in the Amazon Simple Storage Service Developer Guide.

\n */\n Events: (Event | string)[] | undefined;\n\n /**\n *

Specifies object key name filtering rules. For information about key name filtering, see\n * Configuring\n * Event Notifications in the Amazon Simple Storage Service Developer\n * Guide.

\n */\n Filter?: NotificationConfigurationFilter;\n}\n\nexport namespace TopicConfiguration {\n export const filterSensitiveLog = (obj: TopicConfiguration): any => ({\n ...obj,\n });\n}\n\n/**\n *

A container for specifying the notification configuration of the bucket. If this element\n * is empty, notifications are turned off for the bucket.

\n */\nexport interface NotificationConfiguration {\n /**\n *

The topic to which notifications are sent and the events for which notifications are\n * generated.

\n */\n TopicConfigurations?: TopicConfiguration[];\n\n /**\n *

The Amazon Simple Queue Service queues to publish messages to and the events for which\n * to publish messages.

\n */\n QueueConfigurations?: QueueConfiguration[];\n\n /**\n *

Describes the AWS Lambda functions to invoke and the events for which to invoke\n * them.

\n */\n LambdaFunctionConfigurations?: LambdaFunctionConfiguration[];\n}\n\nexport namespace NotificationConfiguration {\n export const filterSensitiveLog = (obj: NotificationConfiguration): any => ({\n ...obj,\n });\n}\n\nexport type ObjectOwnership = \"BucketOwnerPreferred\" | \"ObjectWriter\";\n\n/**\n *

The container element for an ownership control rule.

\n */\nexport interface OwnershipControlsRule {\n /**\n *

The container element for object ownership for a bucket's ownership controls.

\n *

BucketOwnerPreferred - Objects uploaded to the bucket change ownership to the bucket\n * owner if the objects are uploaded with the bucket-owner-full-control canned\n * ACL.

\n *

ObjectWriter - The uploading account will own the object if the object is uploaded with\n * the bucket-owner-full-control canned ACL.

\n */\n ObjectOwnership: ObjectOwnership | string | undefined;\n}\n\nexport namespace OwnershipControlsRule {\n export const filterSensitiveLog = (obj: OwnershipControlsRule): any => ({\n ...obj,\n });\n}\n\n/**\n *

The container element for a bucket's ownership controls.

\n */\nexport interface OwnershipControls {\n /**\n *

The container element for an ownership control rule.

\n */\n Rules: OwnershipControlsRule[] | undefined;\n}\n\nexport namespace OwnershipControls {\n export const filterSensitiveLog = (obj: OwnershipControls): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketOwnershipControlsOutput {\n /**\n *

The OwnershipControls (BucketOwnerPreferred or ObjectWriter) currently in\n * effect for this Amazon S3 bucket.

\n */\n OwnershipControls?: OwnershipControls;\n}\n\nexport namespace GetBucketOwnershipControlsOutput {\n export const filterSensitiveLog = (obj: GetBucketOwnershipControlsOutput): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketOwnershipControlsRequest {\n /**\n *

The name of the Amazon S3 bucket whose OwnershipControls you want to retrieve.\n *

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetBucketOwnershipControlsRequest {\n export const filterSensitiveLog = (obj: GetBucketOwnershipControlsRequest): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketPolicyOutput {\n /**\n *

The bucket policy as a JSON document.

\n */\n Policy?: string;\n}\n\nexport namespace GetBucketPolicyOutput {\n export const filterSensitiveLog = (obj: GetBucketPolicyOutput): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketPolicyRequest {\n /**\n *

The bucket name for which to get the bucket policy.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetBucketPolicyRequest {\n export const filterSensitiveLog = (obj: GetBucketPolicyRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

The container element for a bucket's policy status.

\n */\nexport interface PolicyStatus {\n /**\n *

The policy status for this bucket. TRUE indicates that this bucket is\n * public. FALSE indicates that the bucket is not public.

\n */\n IsPublic?: boolean;\n}\n\nexport namespace PolicyStatus {\n export const filterSensitiveLog = (obj: PolicyStatus): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketPolicyStatusOutput {\n /**\n *

The policy status for the specified bucket.

\n */\n PolicyStatus?: PolicyStatus;\n}\n\nexport namespace GetBucketPolicyStatusOutput {\n export const filterSensitiveLog = (obj: GetBucketPolicyStatusOutput): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketPolicyStatusRequest {\n /**\n *

The name of the Amazon S3 bucket whose policy status you want to retrieve.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetBucketPolicyStatusRequest {\n export const filterSensitiveLog = (obj: GetBucketPolicyStatusRequest): any => ({\n ...obj,\n });\n}\n\nexport type DeleteMarkerReplicationStatus = \"Disabled\" | \"Enabled\";\n\n/**\n *

Specifies whether Amazon S3 replicates delete markers. If you specify a Filter\n * in your replication configuration, you must also include a\n * DeleteMarkerReplication element. If your Filter includes a\n * Tag element, the DeleteMarkerReplication\n * Status must be set to Disabled, because Amazon S3 does not support replicating\n * delete markers for tag-based rules. For an example configuration, see Basic Rule Configuration.

\n *

For more information about delete marker replication, see Basic Rule\n * Configuration.

\n * \n *

If you are using an earlier version of the replication configuration, Amazon S3 handles\n * replication of delete markers differently. For more information, see Backward Compatibility.

\n *
\n */\nexport interface DeleteMarkerReplication {\n /**\n *

Indicates whether to replicate delete markers.

\n * \n *

Indicates whether to replicate delete markers.

\n *
\n */\n Status?: DeleteMarkerReplicationStatus | string;\n}\n\nexport namespace DeleteMarkerReplication {\n export const filterSensitiveLog = (obj: DeleteMarkerReplication): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies encryption-related information for an Amazon S3 bucket that is a destination for\n * replicated objects.

\n */\nexport interface EncryptionConfiguration {\n /**\n *

Specifies the ID (Key ARN or Alias ARN) of the customer managed customer master key\n * (CMK) stored in AWS Key Management Service (KMS) for the destination bucket. Amazon S3 uses\n * this key to encrypt replica objects. Amazon S3 only supports symmetric customer managed CMKs.\n * For more information, see Using Symmetric and\n * Asymmetric Keys in the AWS Key Management Service Developer\n * Guide.

\n */\n ReplicaKmsKeyID?: string;\n}\n\nexport namespace EncryptionConfiguration {\n export const filterSensitiveLog = (obj: EncryptionConfiguration): any => ({\n ...obj,\n });\n}\n\n/**\n *

A container specifying the time value for S3 Replication Time Control (S3 RTC) and replication metrics\n * EventThreshold.

\n */\nexport interface ReplicationTimeValue {\n /**\n *

Contains an integer specifying time in minutes.

\n *

Valid values: 15 minutes.

\n */\n Minutes?: number;\n}\n\nexport namespace ReplicationTimeValue {\n export const filterSensitiveLog = (obj: ReplicationTimeValue): any => ({\n ...obj,\n });\n}\n\nexport type MetricsStatus = \"Disabled\" | \"Enabled\";\n\n/**\n *

A container specifying replication metrics-related settings enabling replication\n * metrics and events.

\n */\nexport interface Metrics {\n /**\n *

Specifies whether the replication metrics are enabled.

\n */\n Status: MetricsStatus | string | undefined;\n\n /**\n *

A container specifying the time threshold for emitting the\n * s3:Replication:OperationMissedThreshold event.

\n */\n EventThreshold?: ReplicationTimeValue;\n}\n\nexport namespace Metrics {\n export const filterSensitiveLog = (obj: Metrics): any => ({\n ...obj,\n });\n}\n\nexport type ReplicationTimeStatus = \"Disabled\" | \"Enabled\";\n\n/**\n *

A container specifying S3 Replication Time Control (S3 RTC) related information, including whether S3 RTC is\n * enabled and the time when all objects and operations on objects must be replicated. Must be\n * specified together with a Metrics block.

\n */\nexport interface ReplicationTime {\n /**\n *

Specifies whether the replication time is enabled.

\n */\n Status: ReplicationTimeStatus | string | undefined;\n\n /**\n *

A container specifying the time by which replication should be complete for all objects\n * and operations on objects.

\n */\n Time: ReplicationTimeValue | undefined;\n}\n\nexport namespace ReplicationTime {\n export const filterSensitiveLog = (obj: ReplicationTime): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies information about where to publish analysis or configuration results for an\n * Amazon S3 bucket and S3 Replication Time Control (S3 RTC).

\n */\nexport interface Destination {\n /**\n *

The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to store the\n * results.

\n */\n Bucket: string | undefined;\n\n /**\n *

Destination bucket owner account ID. In a cross-account scenario, if you direct Amazon S3 to\n * change replica ownership to the AWS account that owns the destination bucket by specifying\n * the AccessControlTranslation property, this is the account ID of the\n * destination bucket owner. For more information, see Replication Additional\n * Configuration: Changing the Replica Owner in the Amazon Simple Storage\n * Service Developer Guide.

\n */\n Account?: string;\n\n /**\n *

The storage class to use when replicating objects, such as S3 Standard or reduced\n * redundancy. By default, Amazon S3 uses the storage class of the source object to create the\n * object replica.

\n *

For valid values, see the StorageClass element of the PUT Bucket\n * replication action in the Amazon Simple Storage Service API Reference.

\n */\n StorageClass?: StorageClass | string;\n\n /**\n *

Specify this only in a cross-account scenario (where source and destination bucket\n * owners are not the same), and you want to change replica ownership to the AWS account that\n * owns the destination bucket. If this is not specified in the replication configuration, the\n * replicas are owned by same AWS account that owns the source object.

\n */\n AccessControlTranslation?: AccessControlTranslation;\n\n /**\n *

A container that provides information about encryption. If\n * SourceSelectionCriteria is specified, you must specify this element.

\n */\n EncryptionConfiguration?: EncryptionConfiguration;\n\n /**\n *

A container specifying S3 Replication Time Control (S3 RTC), including whether S3 RTC is enabled and the time\n * when all objects and operations on objects must be replicated. Must be specified together\n * with a Metrics block.

\n */\n ReplicationTime?: ReplicationTime;\n\n /**\n *

A container specifying replication metrics-related settings enabling replication\n * metrics and events.

\n */\n Metrics?: Metrics;\n}\n\nexport namespace Destination {\n export const filterSensitiveLog = (obj: Destination): any => ({\n ...obj,\n });\n}\n\nexport type ExistingObjectReplicationStatus = \"Disabled\" | \"Enabled\";\n\n/**\n *

Optional configuration to replicate existing source bucket objects. For more\n * information, see Replicating Existing Objects in the Amazon S3 Developer Guide.\n *

\n */\nexport interface ExistingObjectReplication {\n /**\n *

\n */\n Status: ExistingObjectReplicationStatus | string | undefined;\n}\n\nexport namespace ExistingObjectReplication {\n export const filterSensitiveLog = (obj: ExistingObjectReplication): any => ({\n ...obj,\n });\n}\n\n/**\n *

A container for specifying rule filters. The filters determine the subset of objects to\n * which the rule applies. This element is required only if you specify more than one filter.

\n *

For example:

\n *
    \n *
  • \n *

    If you specify both a Prefix and a Tag filter, wrap\n * these filters in an And tag.

    \n *
  • \n *
  • \n *

    If you specify a filter based on multiple tags, wrap the Tag elements\n * in an And tag

    \n *
  • \n *
\n */\nexport interface ReplicationRuleAndOperator {\n /**\n *

An object key name prefix that identifies the subset of objects to which the rule\n * applies.

\n */\n Prefix?: string;\n\n /**\n *

An array of tags containing key and value pairs.

\n */\n Tags?: Tag[];\n}\n\nexport namespace ReplicationRuleAndOperator {\n export const filterSensitiveLog = (obj: ReplicationRuleAndOperator): any => ({\n ...obj,\n });\n}\n\n/**\n *

A filter that identifies the subset of objects to which the replication rule applies. A\n * Filter must specify exactly one Prefix, Tag, or\n * an And child element.

\n */\nexport type ReplicationRuleFilter =\n | ReplicationRuleFilter.AndMember\n | ReplicationRuleFilter.PrefixMember\n | ReplicationRuleFilter.TagMember\n | ReplicationRuleFilter.$UnknownMember;\n\nexport namespace ReplicationRuleFilter {\n /**\n *

An object key name prefix that identifies the subset of objects to which the rule\n * applies.

\n */\n export interface PrefixMember {\n Prefix: string;\n Tag?: never;\n And?: never;\n $unknown?: never;\n }\n\n /**\n *

A container for specifying a tag key and value.

\n *

The rule applies only to objects that have the tag in their tag set.

\n */\n export interface TagMember {\n Prefix?: never;\n Tag: Tag;\n And?: never;\n $unknown?: never;\n }\n\n /**\n *

A container for specifying rule filters. The filters determine the subset of objects to\n * which the rule applies. This element is required only if you specify more than one filter.\n * For example:

\n *
    \n *
  • \n *

    If you specify both a Prefix and a Tag filter, wrap\n * these filters in an And tag.

    \n *
  • \n *
  • \n *

    If you specify a filter based on multiple tags, wrap the Tag elements\n * in an And tag.

    \n *
  • \n *
\n */\n export interface AndMember {\n Prefix?: never;\n Tag?: never;\n And: ReplicationRuleAndOperator;\n $unknown?: never;\n }\n\n export interface $UnknownMember {\n Prefix?: never;\n Tag?: never;\n And?: never;\n $unknown: [string, any];\n }\n\n export interface Visitor {\n Prefix: (value: string) => T;\n Tag: (value: Tag) => T;\n And: (value: ReplicationRuleAndOperator) => T;\n _: (name: string, value: any) => T;\n }\n\n export const visit = (value: ReplicationRuleFilter, visitor: Visitor): T => {\n if (value.Prefix !== undefined) return visitor.Prefix(value.Prefix);\n if (value.Tag !== undefined) return visitor.Tag(value.Tag);\n if (value.And !== undefined) return visitor.And(value.And);\n return visitor._(value.$unknown[0], value.$unknown[1]);\n };\n\n export const filterSensitiveLog = (obj: ReplicationRuleFilter): any => {\n if (obj.Prefix !== undefined) return { Prefix: obj.Prefix };\n if (obj.Tag !== undefined) return { Tag: Tag.filterSensitiveLog(obj.Tag) };\n if (obj.And !== undefined) return { And: ReplicationRuleAndOperator.filterSensitiveLog(obj.And) };\n if (obj.$unknown !== undefined) return { [obj.$unknown[0]]: \"UNKNOWN\" };\n };\n}\n\nexport type ReplicaModificationsStatus = \"Disabled\" | \"Enabled\";\n\n/**\n *

A filter that you can specify for selection for modifications on replicas. Amazon S3 doesn't\n * replicate replica modifications by default. In the latest version of replication\n * configuration (when Filter is specified), you can specify this element and set\n * the status to Enabled to replicate modifications on replicas.

\n * \n *

If you don't specify the Filter element, Amazon S3 assumes that the\n * replication configuration is the earlier version, V1. In the earlier version, this\n * element is not allowed.

\n *
\n */\nexport interface ReplicaModifications {\n /**\n *

Specifies whether Amazon S3 replicates modifications on replicas.

\n */\n Status: ReplicaModificationsStatus | string | undefined;\n}\n\nexport namespace ReplicaModifications {\n export const filterSensitiveLog = (obj: ReplicaModifications): any => ({\n ...obj,\n });\n}\n\nexport type SseKmsEncryptedObjectsStatus = \"Disabled\" | \"Enabled\";\n\n/**\n *

A container for filter information for the selection of S3 objects encrypted with AWS\n * KMS.

\n */\nexport interface SseKmsEncryptedObjects {\n /**\n *

Specifies whether Amazon S3 replicates objects created with server-side encryption using a\n * customer master key (CMK) stored in AWS Key Management Service.

\n */\n Status: SseKmsEncryptedObjectsStatus | string | undefined;\n}\n\nexport namespace SseKmsEncryptedObjects {\n export const filterSensitiveLog = (obj: SseKmsEncryptedObjects): any => ({\n ...obj,\n });\n}\n\n/**\n *

A container that describes additional filters for identifying the source objects that\n * you want to replicate. You can choose to enable or disable the replication of these\n * objects. Currently, Amazon S3 supports only the filter that you can specify for objects created\n * with server-side encryption using a customer master key (CMK) stored in AWS Key Management\n * Service (SSE-KMS).

\n */\nexport interface SourceSelectionCriteria {\n /**\n *

A container for filter information for the selection of Amazon S3 objects encrypted with AWS\n * KMS. If you include SourceSelectionCriteria in the replication configuration,\n * this element is required.

\n */\n SseKmsEncryptedObjects?: SseKmsEncryptedObjects;\n\n /**\n *

A filter that you can specify for selections for modifications on replicas. Amazon S3 doesn't\n * replicate replica modifications by default. In the latest version of replication\n * configuration (when Filter is specified), you can specify this element and set\n * the status to Enabled to replicate modifications on replicas.

\n * \n *

If you don't specify the Filter element, Amazon S3 assumes that the\n * replication configuration is the earlier version, V1. In the earlier version, this\n * element is not allowed

\n *
\n */\n ReplicaModifications?: ReplicaModifications;\n}\n\nexport namespace SourceSelectionCriteria {\n export const filterSensitiveLog = (obj: SourceSelectionCriteria): any => ({\n ...obj,\n });\n}\n\nexport type ReplicationRuleStatus = \"Disabled\" | \"Enabled\";\n\n/**\n *

Specifies which Amazon S3 objects to replicate and where to store the replicas.

\n */\nexport interface ReplicationRule {\n /**\n *

A unique identifier for the rule. The maximum value is 255 characters.

\n */\n ID?: string;\n\n /**\n *

The priority indicates which rule has precedence whenever two or more replication rules\n * conflict. Amazon S3 will attempt to replicate objects according to all replication rules.\n * However, if there are two or more rules with the same destination bucket, then objects will\n * be replicated according to the rule with the highest priority. The higher the number, the\n * higher the priority.

\n *

For more information, see Replication in the\n * Amazon Simple Storage Service Developer Guide.

\n */\n Priority?: number;\n\n /**\n * @deprecated\n *\n *

An object key name prefix that identifies the object or objects to which the rule\n * applies. The maximum prefix length is 1,024 characters. To include all objects in a bucket,\n * specify an empty string.

\n */\n Prefix?: string;\n\n /**\n *

A filter that identifies the subset of objects to which the replication rule applies. A\n * Filter must specify exactly one Prefix, Tag, or\n * an And child element.

\n */\n Filter?: ReplicationRuleFilter;\n\n /**\n *

Specifies whether the rule is enabled.

\n */\n Status: ReplicationRuleStatus | string | undefined;\n\n /**\n *

A container that describes additional filters for identifying the source objects that\n * you want to replicate. You can choose to enable or disable the replication of these\n * objects. Currently, Amazon S3 supports only the filter that you can specify for objects created\n * with server-side encryption using a customer master key (CMK) stored in AWS Key Management\n * Service (SSE-KMS).

\n */\n SourceSelectionCriteria?: SourceSelectionCriteria;\n\n /**\n *

\n */\n ExistingObjectReplication?: ExistingObjectReplication;\n\n /**\n *

A container for information about the replication destination and its configurations\n * including enabling the S3 Replication Time Control (S3 RTC).

\n */\n Destination: Destination | undefined;\n\n /**\n *

Specifies whether Amazon S3 replicates delete markers. If you specify a Filter\n * in your replication configuration, you must also include a\n * DeleteMarkerReplication element. If your Filter includes a\n * Tag element, the DeleteMarkerReplication\n * Status must be set to Disabled, because Amazon S3 does not support replicating\n * delete markers for tag-based rules. For an example configuration, see Basic Rule Configuration.

\n *

For more information about delete marker replication, see Basic Rule\n * Configuration.

\n * \n *

If you are using an earlier version of the replication configuration, Amazon S3 handles\n * replication of delete markers differently. For more information, see Backward Compatibility.

\n *
\n */\n DeleteMarkerReplication?: DeleteMarkerReplication;\n}\n\nexport namespace ReplicationRule {\n export const filterSensitiveLog = (obj: ReplicationRule): any => ({\n ...obj,\n ...(obj.Filter && { Filter: ReplicationRuleFilter.filterSensitiveLog(obj.Filter) }),\n });\n}\n\n/**\n *

A container for replication rules. You can add up to 1,000 rules. The maximum size of a\n * replication configuration is 2 MB.

\n */\nexport interface ReplicationConfiguration {\n /**\n *

The Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role that\n * Amazon S3 assumes when replicating objects. For more information, see How to Set Up\n * Replication in the Amazon Simple Storage Service Developer Guide.

\n */\n Role: string | undefined;\n\n /**\n *

A container for one or more replication rules. A replication configuration must have at\n * least one rule and can contain a maximum of 1,000 rules.

\n */\n Rules: ReplicationRule[] | undefined;\n}\n\nexport namespace ReplicationConfiguration {\n export const filterSensitiveLog = (obj: ReplicationConfiguration): any => ({\n ...obj,\n ...(obj.Rules && { Rules: obj.Rules.map((item) => ReplicationRule.filterSensitiveLog(item)) }),\n });\n}\n\nexport interface GetBucketReplicationOutput {\n /**\n *

A container for replication rules. You can add up to 1,000 rules. The maximum size of a\n * replication configuration is 2 MB.

\n */\n ReplicationConfiguration?: ReplicationConfiguration;\n}\n\nexport namespace GetBucketReplicationOutput {\n export const filterSensitiveLog = (obj: GetBucketReplicationOutput): any => ({\n ...obj,\n ...(obj.ReplicationConfiguration && {\n ReplicationConfiguration: ReplicationConfiguration.filterSensitiveLog(obj.ReplicationConfiguration),\n }),\n });\n}\n\nexport interface GetBucketReplicationRequest {\n /**\n *

The bucket name for which to get the replication information.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetBucketReplicationRequest {\n export const filterSensitiveLog = (obj: GetBucketReplicationRequest): any => ({\n ...obj,\n });\n}\n\nexport type Payer = \"BucketOwner\" | \"Requester\";\n\nexport interface GetBucketRequestPaymentOutput {\n /**\n *

Specifies who pays for the download and request fees.

\n */\n Payer?: Payer | string;\n}\n\nexport namespace GetBucketRequestPaymentOutput {\n export const filterSensitiveLog = (obj: GetBucketRequestPaymentOutput): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketRequestPaymentRequest {\n /**\n *

The name of the bucket for which to get the payment request configuration

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetBucketRequestPaymentRequest {\n export const filterSensitiveLog = (obj: GetBucketRequestPaymentRequest): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketTaggingOutput {\n /**\n *

Contains the tag set.

\n */\n TagSet: Tag[] | undefined;\n}\n\nexport namespace GetBucketTaggingOutput {\n export const filterSensitiveLog = (obj: GetBucketTaggingOutput): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketTaggingRequest {\n /**\n *

The name of the bucket for which to get the tagging information.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetBucketTaggingRequest {\n export const filterSensitiveLog = (obj: GetBucketTaggingRequest): any => ({\n ...obj,\n });\n}\n\nexport type MFADeleteStatus = \"Disabled\" | \"Enabled\";\n\nexport type BucketVersioningStatus = \"Enabled\" | \"Suspended\";\n\nexport interface GetBucketVersioningOutput {\n /**\n *

The versioning state of the bucket.

\n */\n Status?: BucketVersioningStatus | string;\n\n /**\n *

Specifies whether MFA delete is enabled in the bucket versioning configuration. This\n * element is only returned if the bucket has been configured with MFA delete. If the bucket\n * has never been so configured, this element is not returned.

\n */\n MFADelete?: MFADeleteStatus | string;\n}\n\nexport namespace GetBucketVersioningOutput {\n export const filterSensitiveLog = (obj: GetBucketVersioningOutput): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketVersioningRequest {\n /**\n *

The name of the bucket for which to get the versioning information.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetBucketVersioningRequest {\n export const filterSensitiveLog = (obj: GetBucketVersioningRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

The error information.

\n */\nexport interface ErrorDocument {\n /**\n *

The object key name to use when a 4XX class error occurs.

\n */\n Key: string | undefined;\n}\n\nexport namespace ErrorDocument {\n export const filterSensitiveLog = (obj: ErrorDocument): any => ({\n ...obj,\n });\n}\n\n/**\n *

Container for the Suffix element.

\n */\nexport interface IndexDocument {\n /**\n *

A suffix that is appended to a request that is for a directory on the website endpoint\n * (for example,if the suffix is index.html and you make a request to samplebucket/images/ the\n * data that is returned will be for the object with the key name images/index.html) The\n * suffix must not be empty and must not include a slash character.

\n */\n Suffix: string | undefined;\n}\n\nexport namespace IndexDocument {\n export const filterSensitiveLog = (obj: IndexDocument): any => ({\n ...obj,\n });\n}\n\nexport type Protocol = \"http\" | \"https\";\n\n/**\n *

Specifies the redirect behavior of all requests to a website endpoint of an Amazon S3\n * bucket.

\n */\nexport interface RedirectAllRequestsTo {\n /**\n *

Name of the host where requests are redirected.

\n */\n HostName: string | undefined;\n\n /**\n *

Protocol to use when redirecting requests. The default is the protocol that is used in\n * the original request.

\n */\n Protocol?: Protocol | string;\n}\n\nexport namespace RedirectAllRequestsTo {\n export const filterSensitiveLog = (obj: RedirectAllRequestsTo): any => ({\n ...obj,\n });\n}\n\n/**\n *

A container for describing a condition that must be met for the specified redirect to\n * apply. For example, 1. If request is for pages in the /docs folder, redirect\n * to the /documents folder. 2. If request results in HTTP error 4xx, redirect\n * request to another host where you might process the error.

\n */\nexport interface Condition {\n /**\n *

The HTTP error code when the redirect is applied. In the event of an error, if the error\n * code equals this value, then the specified redirect is applied. Required when parent\n * element Condition is specified and sibling KeyPrefixEquals is not\n * specified. If both are specified, then both must be true for the redirect to be\n * applied.

\n */\n HttpErrorCodeReturnedEquals?: string;\n\n /**\n *

The object key name prefix when the redirect is applied. For example, to redirect\n * requests for ExamplePage.html, the key prefix will be\n * ExamplePage.html. To redirect request for all pages with the prefix\n * docs/, the key prefix will be /docs, which identifies all\n * objects in the docs/ folder. Required when the parent element\n * Condition is specified and sibling HttpErrorCodeReturnedEquals\n * is not specified. If both conditions are specified, both must be true for the redirect to\n * be applied.

\n */\n KeyPrefixEquals?: string;\n}\n\nexport namespace Condition {\n export const filterSensitiveLog = (obj: Condition): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies how requests are redirected. In the event of an error, you can specify a\n * different error code to return.

\n */\nexport interface Redirect {\n /**\n *

The host name to use in the redirect request.

\n */\n HostName?: string;\n\n /**\n *

The HTTP redirect code to use on the response. Not required if one of the siblings is\n * present.

\n */\n HttpRedirectCode?: string;\n\n /**\n *

Protocol to use when redirecting requests. The default is the protocol that is used in\n * the original request.

\n */\n Protocol?: Protocol | string;\n\n /**\n *

The object key prefix to use in the redirect request. For example, to redirect requests\n * for all pages with prefix docs/ (objects in the docs/ folder) to\n * documents/, you can set a condition block with KeyPrefixEquals\n * set to docs/ and in the Redirect set ReplaceKeyPrefixWith to\n * /documents. Not required if one of the siblings is present. Can be present\n * only if ReplaceKeyWith is not provided.

\n */\n ReplaceKeyPrefixWith?: string;\n\n /**\n *

The specific object key to use in the redirect request. For example, redirect request to\n * error.html. Not required if one of the siblings is present. Can be present\n * only if ReplaceKeyPrefixWith is not provided.

\n */\n ReplaceKeyWith?: string;\n}\n\nexport namespace Redirect {\n export const filterSensitiveLog = (obj: Redirect): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies the redirect behavior and when a redirect is applied. For more information\n * about routing rules, see Configuring advanced conditional redirects in the\n * Amazon Simple Storage Service Developer Guide.

\n */\nexport interface RoutingRule {\n /**\n *

A container for describing a condition that must be met for the specified redirect to\n * apply. For example, 1. If request is for pages in the /docs folder, redirect\n * to the /documents folder. 2. If request results in HTTP error 4xx, redirect\n * request to another host where you might process the error.

\n */\n Condition?: Condition;\n\n /**\n *

Container for redirect information. You can redirect requests to another host, to\n * another page, or with another protocol. In the event of an error, you can specify a\n * different error code to return.

\n */\n Redirect: Redirect | undefined;\n}\n\nexport namespace RoutingRule {\n export const filterSensitiveLog = (obj: RoutingRule): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketWebsiteOutput {\n /**\n *

Specifies the redirect behavior of all requests to a website endpoint of an Amazon S3\n * bucket.

\n */\n RedirectAllRequestsTo?: RedirectAllRequestsTo;\n\n /**\n *

The name of the index document for the website (for example\n * index.html).

\n */\n IndexDocument?: IndexDocument;\n\n /**\n *

The object key name of the website error document to use for 4XX class errors.

\n */\n ErrorDocument?: ErrorDocument;\n\n /**\n *

Rules that define when a redirect is applied and the redirect behavior.

\n */\n RoutingRules?: RoutingRule[];\n}\n\nexport namespace GetBucketWebsiteOutput {\n export const filterSensitiveLog = (obj: GetBucketWebsiteOutput): any => ({\n ...obj,\n });\n}\n\nexport interface GetBucketWebsiteRequest {\n /**\n *

The bucket name for which to get the website configuration.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetBucketWebsiteRequest {\n export const filterSensitiveLog = (obj: GetBucketWebsiteRequest): any => ({\n ...obj,\n });\n}\n\nexport type ReplicationStatus = \"COMPLETE\" | \"FAILED\" | \"PENDING\" | \"REPLICA\";\n\nexport interface GetObjectOutput {\n /**\n *

Object data.

\n */\n Body?: Readable | ReadableStream | Blob;\n\n /**\n *

Specifies whether the object retrieved was (true) or was not (false) a Delete Marker. If\n * false, this response header does not appear in the response.

\n */\n DeleteMarker?: boolean;\n\n /**\n *

Indicates that a range of bytes was specified.

\n */\n AcceptRanges?: string;\n\n /**\n *

If the object expiration is configured (see PUT Bucket lifecycle), the response includes\n * this header. It includes the expiry-date and rule-id key-value pairs providing object\n * expiration information. The value of the rule-id is URL encoded.

\n */\n Expiration?: string;\n\n /**\n *

Provides information about object restoration operation and expiration time of the\n * restored object copy.

\n */\n Restore?: string;\n\n /**\n *

Last modified date of the object

\n */\n LastModified?: Date;\n\n /**\n *

Size of the body in bytes.

\n */\n ContentLength?: number;\n\n /**\n *

An ETag is an opaque identifier assigned by a web server to a specific version of a\n * resource found at a URL.

\n */\n ETag?: string;\n\n /**\n *

This is set to the number of metadata entries not returned in x-amz-meta\n * headers. This can happen if you create metadata using an API like SOAP that supports more\n * flexible metadata than the REST API. For example, using SOAP, you can create metadata whose\n * values are not legal HTTP headers.

\n */\n MissingMeta?: number;\n\n /**\n *

Version of the object.

\n */\n VersionId?: string;\n\n /**\n *

Specifies caching behavior along the request/reply chain.

\n */\n CacheControl?: string;\n\n /**\n *

Specifies presentational information for the object.

\n */\n ContentDisposition?: string;\n\n /**\n *

Specifies what content encodings have been applied to the object and thus what decoding\n * mechanisms must be applied to obtain the media-type referenced by the Content-Type header\n * field.

\n */\n ContentEncoding?: string;\n\n /**\n *

The language the content is in.

\n */\n ContentLanguage?: string;\n\n /**\n *

The portion of the object returned in the response.

\n */\n ContentRange?: string;\n\n /**\n *

A standard MIME type describing the format of the object data.

\n */\n ContentType?: string;\n\n /**\n *

The date and time at which the object is no longer cacheable.

\n */\n Expires?: Date;\n\n /**\n *

If the bucket is configured as a website, redirects requests for this object to another\n * object in the same bucket or to an external URL. Amazon S3 stores the value of this header in\n * the object metadata.

\n */\n WebsiteRedirectLocation?: string;\n\n /**\n *

The server-side encryption algorithm used when storing this object in Amazon S3 (for example,\n * AES256, aws:kms).

\n */\n ServerSideEncryption?: ServerSideEncryption | string;\n\n /**\n *

A map of metadata to store with the object in S3.

\n */\n Metadata?: { [key: string]: string };\n\n /**\n *

If server-side encryption with a customer-provided encryption key was requested, the\n * response will include this header confirming the encryption algorithm used.

\n */\n SSECustomerAlgorithm?: string;\n\n /**\n *

If server-side encryption with a customer-provided encryption key was requested, the\n * response will include this header to provide round-trip message integrity verification of\n * the customer-provided encryption key.

\n */\n SSECustomerKeyMD5?: string;\n\n /**\n *

If present, specifies the ID of the AWS Key Management Service (AWS KMS) symmetric\n * customer managed customer master key (CMK) that was used for the object.

\n */\n SSEKMSKeyId?: string;\n\n /**\n *

Indicates whether the object uses an S3 Bucket Key for server-side encryption with AWS KMS (SSE-KMS).

\n */\n BucketKeyEnabled?: boolean;\n\n /**\n *

Provides storage class information of the object. Amazon S3 returns this header for all\n * objects except for S3 Standard storage class objects.

\n */\n StorageClass?: StorageClass | string;\n\n /**\n *

If present, indicates that the requester was successfully charged for the\n * request.

\n */\n RequestCharged?: RequestCharged | string;\n\n /**\n *

Amazon S3 can return this if your request involves a bucket that is either a source or\n * destination in a replication rule.

\n */\n ReplicationStatus?: ReplicationStatus | string;\n\n /**\n *

The count of parts this object has.

\n */\n PartsCount?: number;\n\n /**\n *

The number of tags, if any, on the object.

\n */\n TagCount?: number;\n\n /**\n *

The Object Lock mode currently in place for this object.

\n */\n ObjectLockMode?: ObjectLockMode | string;\n\n /**\n *

The date and time when this object's Object Lock will expire.

\n */\n ObjectLockRetainUntilDate?: Date;\n\n /**\n *

Indicates whether this object has an active legal hold. This field is only returned if\n * you have permission to view an object's legal hold status.

\n */\n ObjectLockLegalHoldStatus?: ObjectLockLegalHoldStatus | string;\n}\n\nexport namespace GetObjectOutput {\n export const filterSensitiveLog = (obj: GetObjectOutput): any => ({\n ...obj,\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n });\n}\n\nexport interface GetObjectRequest {\n /**\n *

The bucket name containing the object.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

Return the object only if its entity tag (ETag) is the same as the one specified,\n * otherwise return a 412 (precondition failed).

\n */\n IfMatch?: string;\n\n /**\n *

Return the object only if it has been modified since the specified time, otherwise\n * return a 304 (not modified).

\n */\n IfModifiedSince?: Date;\n\n /**\n *

Return the object only if its entity tag (ETag) is different from the one specified,\n * otherwise return a 304 (not modified).

\n */\n IfNoneMatch?: string;\n\n /**\n *

Return the object only if it has not been modified since the specified time, otherwise\n * return a 412 (precondition failed).

\n */\n IfUnmodifiedSince?: Date;\n\n /**\n *

Key of the object to get.

\n */\n Key: string | undefined;\n\n /**\n *

Downloads the specified range bytes of an object. For more information about the HTTP\n * Range header, see https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.

\n * \n *

Amazon S3 doesn't support retrieving multiple ranges of data per GET\n * request.

\n *
\n */\n Range?: string;\n\n /**\n *

Sets the Cache-Control header of the response.

\n */\n ResponseCacheControl?: string;\n\n /**\n *

Sets the Content-Disposition header of the response

\n */\n ResponseContentDisposition?: string;\n\n /**\n *

Sets the Content-Encoding header of the response.

\n */\n ResponseContentEncoding?: string;\n\n /**\n *

Sets the Content-Language header of the response.

\n */\n ResponseContentLanguage?: string;\n\n /**\n *

Sets the Content-Type header of the response.

\n */\n ResponseContentType?: string;\n\n /**\n *

Sets the Expires header of the response.

\n */\n ResponseExpires?: Date;\n\n /**\n *

VersionId used to reference a specific version of the object.

\n */\n VersionId?: string;\n\n /**\n *

Specifies the algorithm to use to when encrypting the object (for example,\n * AES256).

\n */\n SSECustomerAlgorithm?: string;\n\n /**\n *

Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This\n * value is used to store the object and then it is discarded; Amazon S3 does not store the\n * encryption key. The key must be appropriate for use with the algorithm specified in the\n * x-amz-server-side-encryption-customer-algorithm header.

\n */\n SSECustomerKey?: string;\n\n /**\n *

Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses\n * this header for a message integrity check to ensure that the encryption key was transmitted\n * without error.

\n */\n SSECustomerKeyMD5?: string;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

Part number of the object being read. This is a positive integer between 1 and 10,000.\n * Effectively performs a 'ranged' GET request for the part specified. Useful for downloading\n * just a part of an object.

\n */\n PartNumber?: number;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetObjectRequest {\n export const filterSensitiveLog = (obj: GetObjectRequest): any => ({\n ...obj,\n ...(obj.SSECustomerKey && { SSECustomerKey: SENSITIVE_STRING }),\n });\n}\n\n/**\n *

Object is archived and inaccessible until restored.

\n */\nexport interface InvalidObjectState extends __SmithyException, $MetadataBearer {\n name: \"InvalidObjectState\";\n $fault: \"client\";\n StorageClass?: StorageClass | string;\n AccessTier?: IntelligentTieringAccessTier | string;\n}\n\nexport namespace InvalidObjectState {\n export const filterSensitiveLog = (obj: InvalidObjectState): any => ({\n ...obj,\n });\n}\n\n/**\n *

The specified key does not exist.

\n */\nexport interface NoSuchKey extends __SmithyException, $MetadataBearer {\n name: \"NoSuchKey\";\n $fault: \"client\";\n}\n\nexport namespace NoSuchKey {\n export const filterSensitiveLog = (obj: NoSuchKey): any => ({\n ...obj,\n });\n}\n\nexport interface GetObjectAclOutput {\n /**\n *

Container for the bucket owner's display name and ID.

\n */\n Owner?: Owner;\n\n /**\n *

A list of grants.

\n */\n Grants?: Grant[];\n\n /**\n *

If present, indicates that the requester was successfully charged for the\n * request.

\n */\n RequestCharged?: RequestCharged | string;\n}\n\nexport namespace GetObjectAclOutput {\n export const filterSensitiveLog = (obj: GetObjectAclOutput): any => ({\n ...obj,\n });\n}\n\nexport interface GetObjectAclRequest {\n /**\n *

The bucket name that contains the object for which to get the ACL information.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

The key of the object for which to get the ACL information.

\n */\n Key: string | undefined;\n\n /**\n *

VersionId used to reference a specific version of the object.

\n */\n VersionId?: string;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetObjectAclRequest {\n export const filterSensitiveLog = (obj: GetObjectAclRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

A Legal Hold configuration for an object.

\n */\nexport interface ObjectLockLegalHold {\n /**\n *

Indicates whether the specified object has a Legal Hold in place.

\n */\n Status?: ObjectLockLegalHoldStatus | string;\n}\n\nexport namespace ObjectLockLegalHold {\n export const filterSensitiveLog = (obj: ObjectLockLegalHold): any => ({\n ...obj,\n });\n}\n\nexport interface GetObjectLegalHoldOutput {\n /**\n *

The current Legal Hold status for the specified object.

\n */\n LegalHold?: ObjectLockLegalHold;\n}\n\nexport namespace GetObjectLegalHoldOutput {\n export const filterSensitiveLog = (obj: GetObjectLegalHoldOutput): any => ({\n ...obj,\n });\n}\n\nexport interface GetObjectLegalHoldRequest {\n /**\n *

The bucket name containing the object whose Legal Hold status you want to retrieve.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

The key name for the object whose Legal Hold status you want to retrieve.

\n */\n Key: string | undefined;\n\n /**\n *

The version ID of the object whose Legal Hold status you want to retrieve.

\n */\n VersionId?: string;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetObjectLegalHoldRequest {\n export const filterSensitiveLog = (obj: GetObjectLegalHoldRequest): any => ({\n ...obj,\n });\n}\n\nexport type ObjectLockEnabled = \"Enabled\";\n\nexport type ObjectLockRetentionMode = \"COMPLIANCE\" | \"GOVERNANCE\";\n\n/**\n *

The container element for specifying the default Object Lock retention settings for new\n * objects placed in the specified bucket.

\n */\nexport interface DefaultRetention {\n /**\n *

The default Object Lock retention mode you want to apply to new objects placed in the\n * specified bucket.

\n */\n Mode?: ObjectLockRetentionMode | string;\n\n /**\n *

The number of days that you want to specify for the default retention period.

\n */\n Days?: number;\n\n /**\n *

The number of years that you want to specify for the default retention period.

\n */\n Years?: number;\n}\n\nexport namespace DefaultRetention {\n export const filterSensitiveLog = (obj: DefaultRetention): any => ({\n ...obj,\n });\n}\n\n/**\n *

The container element for an Object Lock rule.

\n */\nexport interface ObjectLockRule {\n /**\n *

The default retention period that you want to apply to new objects placed in the\n * specified bucket.

\n */\n DefaultRetention?: DefaultRetention;\n}\n\nexport namespace ObjectLockRule {\n export const filterSensitiveLog = (obj: ObjectLockRule): any => ({\n ...obj,\n });\n}\n\n/**\n *

The container element for Object Lock configuration parameters.

\n */\nexport interface ObjectLockConfiguration {\n /**\n *

Indicates whether this bucket has an Object Lock configuration enabled.

\n */\n ObjectLockEnabled?: ObjectLockEnabled | string;\n\n /**\n *

The Object Lock rule in place for the specified object.

\n */\n Rule?: ObjectLockRule;\n}\n\nexport namespace ObjectLockConfiguration {\n export const filterSensitiveLog = (obj: ObjectLockConfiguration): any => ({\n ...obj,\n });\n}\n\nexport interface GetObjectLockConfigurationOutput {\n /**\n *

The specified bucket's Object Lock configuration.

\n */\n ObjectLockConfiguration?: ObjectLockConfiguration;\n}\n\nexport namespace GetObjectLockConfigurationOutput {\n export const filterSensitiveLog = (obj: GetObjectLockConfigurationOutput): any => ({\n ...obj,\n });\n}\n\nexport interface GetObjectLockConfigurationRequest {\n /**\n *

The bucket whose Object Lock configuration you want to retrieve.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetObjectLockConfigurationRequest {\n export const filterSensitiveLog = (obj: GetObjectLockConfigurationRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

A Retention configuration for an object.

\n */\nexport interface ObjectLockRetention {\n /**\n *

Indicates the Retention mode for the specified object.

\n */\n Mode?: ObjectLockRetentionMode | string;\n\n /**\n *

The date on which this Object Lock Retention will expire.

\n */\n RetainUntilDate?: Date;\n}\n\nexport namespace ObjectLockRetention {\n export const filterSensitiveLog = (obj: ObjectLockRetention): any => ({\n ...obj,\n });\n}\n\nexport interface GetObjectRetentionOutput {\n /**\n *

The container element for an object's retention settings.

\n */\n Retention?: ObjectLockRetention;\n}\n\nexport namespace GetObjectRetentionOutput {\n export const filterSensitiveLog = (obj: GetObjectRetentionOutput): any => ({\n ...obj,\n });\n}\n\nexport interface GetObjectRetentionRequest {\n /**\n *

The bucket name containing the object whose retention settings you want to retrieve.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

The key name for the object whose retention settings you want to retrieve.

\n */\n Key: string | undefined;\n\n /**\n *

The version ID for the object whose retention settings you want to retrieve.

\n */\n VersionId?: string;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetObjectRetentionRequest {\n export const filterSensitiveLog = (obj: GetObjectRetentionRequest): any => ({\n ...obj,\n });\n}\n\nexport interface GetObjectTaggingOutput {\n /**\n *

The versionId of the object for which you got the tagging information.

\n */\n VersionId?: string;\n\n /**\n *

Contains the tag set.

\n */\n TagSet: Tag[] | undefined;\n}\n\nexport namespace GetObjectTaggingOutput {\n export const filterSensitiveLog = (obj: GetObjectTaggingOutput): any => ({\n ...obj,\n });\n}\n\nexport interface GetObjectTaggingRequest {\n /**\n *

The bucket name containing the object for which to get the tagging information.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

Object key for which to get the tagging information.

\n */\n Key: string | undefined;\n\n /**\n *

The versionId of the object for which to get the tagging information.

\n */\n VersionId?: string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetObjectTaggingRequest {\n export const filterSensitiveLog = (obj: GetObjectTaggingRequest): any => ({\n ...obj,\n });\n}\n\nexport interface GetObjectTorrentOutput {\n /**\n *

A Bencoded dictionary as defined by the BitTorrent specification

\n */\n Body?: Readable | ReadableStream | Blob;\n\n /**\n *

If present, indicates that the requester was successfully charged for the\n * request.

\n */\n RequestCharged?: RequestCharged | string;\n}\n\nexport namespace GetObjectTorrentOutput {\n export const filterSensitiveLog = (obj: GetObjectTorrentOutput): any => ({\n ...obj,\n });\n}\n\nexport interface GetObjectTorrentRequest {\n /**\n *

The name of the bucket containing the object for which to get the torrent files.

\n */\n Bucket: string | undefined;\n\n /**\n *

The object key for which to get the information.

\n */\n Key: string | undefined;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetObjectTorrentRequest {\n export const filterSensitiveLog = (obj: GetObjectTorrentRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

The PublicAccessBlock configuration that you want to apply to this Amazon S3 bucket. You can\n * enable the configuration options in any combination. For more information about when Amazon S3\n * considers a bucket or object public, see The Meaning of \"Public\" in the Amazon Simple Storage Service Developer Guide.

\n */\nexport interface PublicAccessBlockConfiguration {\n /**\n *

Specifies whether Amazon S3 should block public access control lists (ACLs) for this bucket\n * and objects in this bucket. Setting this element to TRUE causes the following\n * behavior:

\n *
    \n *
  • \n *

    PUT Bucket acl and PUT Object acl calls fail if the specified ACL is\n * public.

    \n *
  • \n *
  • \n *

    PUT Object calls fail if the request includes a public ACL.

    \n *
  • \n *
  • \n *

    PUT Bucket calls fail if the request includes a public ACL.

    \n *
  • \n *
\n *

Enabling this setting doesn't affect existing policies or ACLs.

\n */\n BlockPublicAcls?: boolean;\n\n /**\n *

Specifies whether Amazon S3 should ignore public ACLs for this bucket and objects in this\n * bucket. Setting this element to TRUE causes Amazon S3 to ignore all public ACLs on\n * this bucket and objects in this bucket.

\n *

Enabling this setting doesn't affect the persistence of any existing ACLs and doesn't\n * prevent new public ACLs from being set.

\n */\n IgnorePublicAcls?: boolean;\n\n /**\n *

Specifies whether Amazon S3 should block public bucket policies for this bucket. Setting this\n * element to TRUE causes Amazon S3 to reject calls to PUT Bucket policy if the\n * specified bucket policy allows public access.

\n *

Enabling this setting doesn't affect existing bucket policies.

\n */\n BlockPublicPolicy?: boolean;\n\n /**\n *

Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting\n * this element to TRUE restricts access to this bucket to only AWS service\n * principals and authorized users within this account if the bucket has a public\n * policy.

\n *

Enabling this setting doesn't affect previously stored bucket policies, except that\n * public and cross-account access within any public bucket policy, including non-public\n * delegation to specific accounts, is blocked.

\n */\n RestrictPublicBuckets?: boolean;\n}\n\nexport namespace PublicAccessBlockConfiguration {\n export const filterSensitiveLog = (obj: PublicAccessBlockConfiguration): any => ({\n ...obj,\n });\n}\n\nexport interface GetPublicAccessBlockOutput {\n /**\n *

The PublicAccessBlock configuration currently in effect for this Amazon S3\n * bucket.

\n */\n PublicAccessBlockConfiguration?: PublicAccessBlockConfiguration;\n}\n\nexport namespace GetPublicAccessBlockOutput {\n export const filterSensitiveLog = (obj: GetPublicAccessBlockOutput): any => ({\n ...obj,\n });\n}\n\nexport interface GetPublicAccessBlockRequest {\n /**\n *

The name of the Amazon S3 bucket whose PublicAccessBlock configuration you want\n * to retrieve.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace GetPublicAccessBlockRequest {\n export const filterSensitiveLog = (obj: GetPublicAccessBlockRequest): any => ({\n ...obj,\n });\n}\n\nexport interface HeadBucketRequest {\n /**\n *

The bucket name.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace HeadBucketRequest {\n export const filterSensitiveLog = (obj: HeadBucketRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

The specified bucket does not exist.

\n */\nexport interface NoSuchBucket extends __SmithyException, $MetadataBearer {\n name: \"NoSuchBucket\";\n $fault: \"client\";\n}\n\nexport namespace NoSuchBucket {\n export const filterSensitiveLog = (obj: NoSuchBucket): any => ({\n ...obj,\n });\n}\n\nexport type ArchiveStatus = \"ARCHIVE_ACCESS\" | \"DEEP_ARCHIVE_ACCESS\";\n\nexport interface HeadObjectOutput {\n /**\n *

Specifies whether the object retrieved was (true) or was not (false) a Delete Marker. If\n * false, this response header does not appear in the response.

\n */\n DeleteMarker?: boolean;\n\n /**\n *

Indicates that a range of bytes was specified.

\n */\n AcceptRanges?: string;\n\n /**\n *

If the object expiration is configured (see PUT Bucket lifecycle), the response includes\n * this header. It includes the expiry-date and rule-id key-value pairs providing object\n * expiration information. The value of the rule-id is URL encoded.

\n */\n Expiration?: string;\n\n /**\n *

If the object is an archived object (an object whose storage class is GLACIER), the\n * response includes this header if either the archive restoration is in progress (see RestoreObject or an archive copy is already restored.

\n *\n *

If an archive copy is already restored, the header value indicates when Amazon S3 is\n * scheduled to delete the object copy. For example:

\n *\n *

\n * x-amz-restore: ongoing-request=\"false\", expiry-date=\"Fri, 23 Dec 2012 00:00:00\n * GMT\"\n *

\n *\n *

If the object restoration is in progress, the header returns the value\n * ongoing-request=\"true\".

\n *\n *

For more information about archiving objects, see Transitioning Objects: General Considerations.

\n */\n Restore?: string;\n\n /**\n *

The archive state of the head object.

\n */\n ArchiveStatus?: ArchiveStatus | string;\n\n /**\n *

Last modified date of the object

\n */\n LastModified?: Date;\n\n /**\n *

Size of the body in bytes.

\n */\n ContentLength?: number;\n\n /**\n *

An ETag is an opaque identifier assigned by a web server to a specific version of a\n * resource found at a URL.

\n */\n ETag?: string;\n\n /**\n *

This is set to the number of metadata entries not returned in x-amz-meta\n * headers. This can happen if you create metadata using an API like SOAP that supports more\n * flexible metadata than the REST API. For example, using SOAP, you can create metadata whose\n * values are not legal HTTP headers.

\n */\n MissingMeta?: number;\n\n /**\n *

Version of the object.

\n */\n VersionId?: string;\n\n /**\n *

Specifies caching behavior along the request/reply chain.

\n */\n CacheControl?: string;\n\n /**\n *

Specifies presentational information for the object.

\n */\n ContentDisposition?: string;\n\n /**\n *

Specifies what content encodings have been applied to the object and thus what decoding\n * mechanisms must be applied to obtain the media-type referenced by the Content-Type header\n * field.

\n */\n ContentEncoding?: string;\n\n /**\n *

The language the content is in.

\n */\n ContentLanguage?: string;\n\n /**\n *

A standard MIME type describing the format of the object data.

\n */\n ContentType?: string;\n\n /**\n *

The date and time at which the object is no longer cacheable.

\n */\n Expires?: Date;\n\n /**\n *

If the bucket is configured as a website, redirects requests for this object to another\n * object in the same bucket or to an external URL. Amazon S3 stores the value of this header in\n * the object metadata.

\n */\n WebsiteRedirectLocation?: string;\n\n /**\n *

If the object is stored using server-side encryption either with an AWS KMS customer\n * master key (CMK) or an Amazon S3-managed encryption key, the response includes this header with\n * the value of the server-side encryption algorithm used when storing this object in Amazon\n * S3 (for example, AES256, aws:kms).

\n */\n ServerSideEncryption?: ServerSideEncryption | string;\n\n /**\n *

A map of metadata to store with the object in S3.

\n */\n Metadata?: { [key: string]: string };\n\n /**\n *

If server-side encryption with a customer-provided encryption key was requested, the\n * response will include this header confirming the encryption algorithm used.

\n */\n SSECustomerAlgorithm?: string;\n\n /**\n *

If server-side encryption with a customer-provided encryption key was requested, the\n * response will include this header to provide round-trip message integrity verification of\n * the customer-provided encryption key.

\n */\n SSECustomerKeyMD5?: string;\n\n /**\n *

If present, specifies the ID of the AWS Key Management Service (AWS KMS) symmetric\n * customer managed customer master key (CMK) that was used for the object.

\n */\n SSEKMSKeyId?: string;\n\n /**\n *

Indicates whether the object uses an S3 Bucket Key for server-side encryption with AWS KMS (SSE-KMS).

\n */\n BucketKeyEnabled?: boolean;\n\n /**\n *

Provides storage class information of the object. Amazon S3 returns this header for all\n * objects except for S3 Standard storage class objects.

\n *\n *

For more information, see Storage\n * Classes.

\n */\n StorageClass?: StorageClass | string;\n\n /**\n *

If present, indicates that the requester was successfully charged for the\n * request.

\n */\n RequestCharged?: RequestCharged | string;\n\n /**\n *

Amazon S3 can return this header if your request involves a bucket that is either a source or\n * a destination in a replication rule.

\n *\n *

In replication, you have a source bucket on which you configure replication and\n * destination bucket or buckets where Amazon S3 stores object replicas. When you request an object\n * (GetObject) or object metadata (HeadObject) from these\n * buckets, Amazon S3 will return the x-amz-replication-status header in the response\n * as follows:

\n *
    \n *
  • \n *

    If requesting an object from the source bucket — Amazon S3 will return the\n * x-amz-replication-status header if the object in your request is\n * eligible for replication.

    \n *

    For example, suppose that in your replication configuration, you specify object\n * prefix TaxDocs requesting Amazon S3 to replicate objects with key prefix\n * TaxDocs. Any objects you upload with this key name prefix, for\n * example TaxDocs/document1.pdf, are eligible for replication. For any\n * object request with this key name prefix, Amazon S3 will return the\n * x-amz-replication-status header with value PENDING, COMPLETED or\n * FAILED indicating object replication status.

    \n *
  • \n *
  • \n *

    If requesting an object from a destination bucket — Amazon S3 will return the\n * x-amz-replication-status header with value REPLICA if the object in\n * your request is a replica that Amazon S3 created and there is no replica modification\n * replication in progress.

    \n *
  • \n *
  • \n *

    When replicating objects to multiple destination buckets the\n * x-amz-replication-status header acts differently. The header of the\n * source object will only return a value of COMPLETED when replication is successful to\n * all destinations. The header will remain at value PENDING until replication has\n * completed for all destinations. If one or more destinations fails replication the\n * header will return FAILED.

    \n *
  • \n *
\n *\n *

For more information, see Replication.

\n */\n ReplicationStatus?: ReplicationStatus | string;\n\n /**\n *

The count of parts this object has.

\n */\n PartsCount?: number;\n\n /**\n *

The Object Lock mode, if any, that's in effect for this object. This header is only\n * returned if the requester has the s3:GetObjectRetention permission. For more\n * information about S3 Object Lock, see Object\n * Lock.

\n */\n ObjectLockMode?: ObjectLockMode | string;\n\n /**\n *

The date and time when the Object Lock retention period expires. This header is only\n * returned if the requester has the s3:GetObjectRetention permission.

\n */\n ObjectLockRetainUntilDate?: Date;\n\n /**\n *

Specifies whether a legal hold is in effect for this object. This header is only\n * returned if the requester has the s3:GetObjectLegalHold permission. This\n * header is not returned if the specified version of this object has never had a legal hold\n * applied. For more information about S3 Object Lock, see Object Lock.

\n */\n ObjectLockLegalHoldStatus?: ObjectLockLegalHoldStatus | string;\n}\n\nexport namespace HeadObjectOutput {\n export const filterSensitiveLog = (obj: HeadObjectOutput): any => ({\n ...obj,\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n });\n}\n\nexport interface HeadObjectRequest {\n /**\n *

The name of the bucket containing the object.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

Return the object only if its entity tag (ETag) is the same as the one specified,\n * otherwise return a 412 (precondition failed).

\n */\n IfMatch?: string;\n\n /**\n *

Return the object only if it has been modified since the specified time, otherwise\n * return a 304 (not modified).

\n */\n IfModifiedSince?: Date;\n\n /**\n *

Return the object only if its entity tag (ETag) is different from the one specified,\n * otherwise return a 304 (not modified).

\n */\n IfNoneMatch?: string;\n\n /**\n *

Return the object only if it has not been modified since the specified time, otherwise\n * return a 412 (precondition failed).

\n */\n IfUnmodifiedSince?: Date;\n\n /**\n *

The object key.

\n */\n Key: string | undefined;\n\n /**\n *

Downloads the specified range bytes of an object. For more information about the HTTP\n * Range header, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.

\n * \n *

Amazon S3 doesn't support retrieving multiple ranges of data per GET\n * request.

\n *
\n */\n Range?: string;\n\n /**\n *

VersionId used to reference a specific version of the object.

\n */\n VersionId?: string;\n\n /**\n *

Specifies the algorithm to use to when encrypting the object (for example,\n * AES256).

\n */\n SSECustomerAlgorithm?: string;\n\n /**\n *

Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This\n * value is used to store the object and then it is discarded; Amazon S3 does not store the\n * encryption key. The key must be appropriate for use with the algorithm specified in the\n * x-amz-server-side-encryption-customer-algorithm header.

\n */\n SSECustomerKey?: string;\n\n /**\n *

Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses\n * this header for a message integrity check to ensure that the encryption key was transmitted\n * without error.

\n */\n SSECustomerKeyMD5?: string;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

Part number of the object being read. This is a positive integer between 1 and 10,000.\n * Effectively performs a 'ranged' HEAD request for the part specified. Useful querying about\n * the size of the part and the number of parts in this object.

\n */\n PartNumber?: number;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace HeadObjectRequest {\n export const filterSensitiveLog = (obj: HeadObjectRequest): any => ({\n ...obj,\n ...(obj.SSECustomerKey && { SSECustomerKey: SENSITIVE_STRING }),\n });\n}\n\nexport interface ListBucketAnalyticsConfigurationsOutput {\n /**\n *

Indicates whether the returned list of analytics configurations is complete. A value of\n * true indicates that the list is not complete and the NextContinuationToken will be provided\n * for a subsequent request.

\n */\n IsTruncated?: boolean;\n\n /**\n *

The marker that is used as a starting point for this analytics configuration list\n * response. This value is present if it was sent in the request.

\n */\n ContinuationToken?: string;\n\n /**\n *

\n * NextContinuationToken is sent when isTruncated is true, which\n * indicates that there are more analytics configurations to list. The next request must\n * include this NextContinuationToken. The token is obfuscated and is not a\n * usable value.

\n */\n NextContinuationToken?: string;\n\n /**\n *

The list of analytics configurations for a bucket.

\n */\n AnalyticsConfigurationList?: AnalyticsConfiguration[];\n}\n\nexport namespace ListBucketAnalyticsConfigurationsOutput {\n export const filterSensitiveLog = (obj: ListBucketAnalyticsConfigurationsOutput): any => ({\n ...obj,\n ...(obj.AnalyticsConfigurationList && {\n AnalyticsConfigurationList: obj.AnalyticsConfigurationList.map((item) =>\n AnalyticsConfiguration.filterSensitiveLog(item)\n ),\n }),\n });\n}\n\nexport interface ListBucketAnalyticsConfigurationsRequest {\n /**\n *

The name of the bucket from which analytics configurations are retrieved.

\n */\n Bucket: string | undefined;\n\n /**\n *

The ContinuationToken that represents a placeholder from where this request should\n * begin.

\n */\n ContinuationToken?: string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace ListBucketAnalyticsConfigurationsRequest {\n export const filterSensitiveLog = (obj: ListBucketAnalyticsConfigurationsRequest): any => ({\n ...obj,\n });\n}\n\nexport interface ListBucketIntelligentTieringConfigurationsOutput {\n /**\n *

Indicates whether the returned list of analytics configurations is complete. A value of\n * true indicates that the list is not complete and the NextContinuationToken will be provided\n * for a subsequent request.

\n */\n IsTruncated?: boolean;\n\n /**\n *

The ContinuationToken that represents a placeholder from where this request should\n * begin.

\n */\n ContinuationToken?: string;\n\n /**\n *

The marker used to continue this inventory configuration listing. Use the\n * NextContinuationToken from this response to continue the listing in a\n * subsequent request. The continuation token is an opaque value that Amazon S3 understands.

\n */\n NextContinuationToken?: string;\n\n /**\n *

The list of S3 Intelligent-Tiering configurations for a bucket.

\n */\n IntelligentTieringConfigurationList?: IntelligentTieringConfiguration[];\n}\n\nexport namespace ListBucketIntelligentTieringConfigurationsOutput {\n export const filterSensitiveLog = (obj: ListBucketIntelligentTieringConfigurationsOutput): any => ({\n ...obj,\n });\n}\n\nexport interface ListBucketIntelligentTieringConfigurationsRequest {\n /**\n *

The name of the Amazon S3 bucket whose configuration you want to modify or retrieve.

\n */\n Bucket: string | undefined;\n\n /**\n *

The ContinuationToken that represents a placeholder from where this request should\n * begin.

\n */\n ContinuationToken?: string;\n}\n\nexport namespace ListBucketIntelligentTieringConfigurationsRequest {\n export const filterSensitiveLog = (obj: ListBucketIntelligentTieringConfigurationsRequest): any => ({\n ...obj,\n });\n}\n\nexport interface ListBucketInventoryConfigurationsOutput {\n /**\n *

If sent in the request, the marker that is used as a starting point for this inventory\n * configuration list response.

\n */\n ContinuationToken?: string;\n\n /**\n *

The list of inventory configurations for a bucket.

\n */\n InventoryConfigurationList?: InventoryConfiguration[];\n\n /**\n *

Tells whether the returned list of inventory configurations is complete. A value of true\n * indicates that the list is not complete and the NextContinuationToken is provided for a\n * subsequent request.

\n */\n IsTruncated?: boolean;\n\n /**\n *

The marker used to continue this inventory configuration listing. Use the\n * NextContinuationToken from this response to continue the listing in a\n * subsequent request. The continuation token is an opaque value that Amazon S3 understands.

\n */\n NextContinuationToken?: string;\n}\n\nexport namespace ListBucketInventoryConfigurationsOutput {\n export const filterSensitiveLog = (obj: ListBucketInventoryConfigurationsOutput): any => ({\n ...obj,\n ...(obj.InventoryConfigurationList && {\n InventoryConfigurationList: obj.InventoryConfigurationList.map((item) =>\n InventoryConfiguration.filterSensitiveLog(item)\n ),\n }),\n });\n}\n\nexport interface ListBucketInventoryConfigurationsRequest {\n /**\n *

The name of the bucket containing the inventory configurations to retrieve.

\n */\n Bucket: string | undefined;\n\n /**\n *

The marker used to continue an inventory configuration listing that has been truncated.\n * Use the NextContinuationToken from a previously truncated list response to continue the\n * listing. The continuation token is an opaque value that Amazon S3 understands.

\n */\n ContinuationToken?: string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace ListBucketInventoryConfigurationsRequest {\n export const filterSensitiveLog = (obj: ListBucketInventoryConfigurationsRequest): any => ({\n ...obj,\n });\n}\n\nexport interface ListBucketMetricsConfigurationsOutput {\n /**\n *

Indicates whether the returned list of metrics configurations is complete. A value of\n * true indicates that the list is not complete and the NextContinuationToken will be provided\n * for a subsequent request.

\n */\n IsTruncated?: boolean;\n\n /**\n *

The marker that is used as a starting point for this metrics configuration list\n * response. This value is present if it was sent in the request.

\n */\n ContinuationToken?: string;\n\n /**\n *

The marker used to continue a metrics configuration listing that has been truncated. Use\n * the NextContinuationToken from a previously truncated list response to\n * continue the listing. The continuation token is an opaque value that Amazon S3\n * understands.

\n */\n NextContinuationToken?: string;\n\n /**\n *

The list of metrics configurations for a bucket.

\n */\n MetricsConfigurationList?: MetricsConfiguration[];\n}\n\nexport namespace ListBucketMetricsConfigurationsOutput {\n export const filterSensitiveLog = (obj: ListBucketMetricsConfigurationsOutput): any => ({\n ...obj,\n ...(obj.MetricsConfigurationList && {\n MetricsConfigurationList: obj.MetricsConfigurationList.map((item) =>\n MetricsConfiguration.filterSensitiveLog(item)\n ),\n }),\n });\n}\n\nexport interface ListBucketMetricsConfigurationsRequest {\n /**\n *

The name of the bucket containing the metrics configurations to retrieve.

\n */\n Bucket: string | undefined;\n\n /**\n *

The marker that is used to continue a metrics configuration listing that has been\n * truncated. Use the NextContinuationToken from a previously truncated list response to\n * continue the listing. The continuation token is an opaque value that Amazon S3\n * understands.

\n */\n ContinuationToken?: string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace ListBucketMetricsConfigurationsRequest {\n export const filterSensitiveLog = (obj: ListBucketMetricsConfigurationsRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

In terms of implementation, a Bucket is a resource. An Amazon S3 bucket name is globally\n * unique, and the namespace is shared by all AWS accounts.

\n */\nexport interface Bucket {\n /**\n *

The name of the bucket.

\n */\n Name?: string;\n\n /**\n *

Date the bucket was created. This date can change when making changes to your bucket, such as editing its bucket policy.

\n */\n CreationDate?: Date;\n}\n\nexport namespace Bucket {\n export const filterSensitiveLog = (obj: Bucket): any => ({\n ...obj,\n });\n}\n\nexport interface ListBucketsOutput {\n /**\n *

The list of buckets owned by the requestor.

\n */\n Buckets?: Bucket[];\n\n /**\n *

The owner of the buckets listed.

\n */\n Owner?: Owner;\n}\n\nexport namespace ListBucketsOutput {\n export const filterSensitiveLog = (obj: ListBucketsOutput): any => ({\n ...obj,\n });\n}\n\n/**\n *

Container for all (if there are any) keys between Prefix and the next occurrence of the\n * string specified by a delimiter. CommonPrefixes lists keys that act like subdirectories in\n * the directory specified by Prefix. For example, if the prefix is notes/ and the delimiter\n * is a slash (/) as in notes/summer/july, the common prefix is notes/summer/.

\n */\nexport interface CommonPrefix {\n /**\n *

Container for the specified common prefix.

\n */\n Prefix?: string;\n}\n\nexport namespace CommonPrefix {\n export const filterSensitiveLog = (obj: CommonPrefix): any => ({\n ...obj,\n });\n}\n\nexport type EncodingType = \"url\";\n\n/**\n *

Container element that identifies who initiated the multipart upload.

\n */\nexport interface Initiator {\n /**\n *

If the principal is an AWS account, it provides the Canonical User ID. If the principal\n * is an IAM User, it provides a user ARN value.

\n */\n ID?: string;\n\n /**\n *

Name of the Principal.

\n */\n DisplayName?: string;\n}\n\nexport namespace Initiator {\n export const filterSensitiveLog = (obj: Initiator): any => ({\n ...obj,\n });\n}\n\n/**\n *

Container for the MultipartUpload for the Amazon S3 object.

\n */\nexport interface MultipartUpload {\n /**\n *

Upload ID that identifies the multipart upload.

\n */\n UploadId?: string;\n\n /**\n *

Key of the object for which the multipart upload was initiated.

\n */\n Key?: string;\n\n /**\n *

Date and time at which the multipart upload was initiated.

\n */\n Initiated?: Date;\n\n /**\n *

The class of storage used to store the object.

\n */\n StorageClass?: StorageClass | string;\n\n /**\n *

Specifies the owner of the object that is part of the multipart upload.

\n */\n Owner?: Owner;\n\n /**\n *

Identifies who initiated the multipart upload.

\n */\n Initiator?: Initiator;\n}\n\nexport namespace MultipartUpload {\n export const filterSensitiveLog = (obj: MultipartUpload): any => ({\n ...obj,\n });\n}\n\nexport interface ListMultipartUploadsOutput {\n /**\n *

The name of the bucket to which the multipart upload was initiated.

\n */\n Bucket?: string;\n\n /**\n *

The key at or after which the listing began.

\n */\n KeyMarker?: string;\n\n /**\n *

Upload ID after which listing began.

\n */\n UploadIdMarker?: string;\n\n /**\n *

When a list is truncated, this element specifies the value that should be used for the\n * key-marker request parameter in a subsequent request.

\n */\n NextKeyMarker?: string;\n\n /**\n *

When a prefix is provided in the request, this field contains the specified prefix. The\n * result contains only keys starting with the specified prefix.

\n */\n Prefix?: string;\n\n /**\n *

Contains the delimiter you specified in the request. If you don't specify a delimiter in\n * your request, this element is absent from the response.

\n */\n Delimiter?: string;\n\n /**\n *

When a list is truncated, this element specifies the value that should be used for the\n * upload-id-marker request parameter in a subsequent request.

\n */\n NextUploadIdMarker?: string;\n\n /**\n *

Maximum number of multipart uploads that could have been included in the\n * response.

\n */\n MaxUploads?: number;\n\n /**\n *

Indicates whether the returned list of multipart uploads is truncated. A value of true\n * indicates that the list was truncated. The list can be truncated if the number of multipart\n * uploads exceeds the limit allowed or specified by max uploads.

\n */\n IsTruncated?: boolean;\n\n /**\n *

Container for elements related to a particular multipart upload. A response can contain\n * zero or more Upload elements.

\n */\n Uploads?: MultipartUpload[];\n\n /**\n *

If you specify a delimiter in the request, then the result returns each distinct key\n * prefix containing the delimiter in a CommonPrefixes element. The distinct key\n * prefixes are returned in the Prefix child element.

\n */\n CommonPrefixes?: CommonPrefix[];\n\n /**\n *

Encoding type used by Amazon S3 to encode object keys in the response.

\n *

If you specify encoding-type request parameter, Amazon S3 includes this element\n * in the response, and returns encoded key name values in the following response\n * elements:

\n *\n *

\n * Delimiter, KeyMarker, Prefix,\n * NextKeyMarker, Key.

\n */\n EncodingType?: EncodingType | string;\n}\n\nexport namespace ListMultipartUploadsOutput {\n export const filterSensitiveLog = (obj: ListMultipartUploadsOutput): any => ({\n ...obj,\n });\n}\n\nexport interface ListMultipartUploadsRequest {\n /**\n *

The name of the bucket to which the multipart upload was initiated.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

Character you use to group keys.

\n *

All keys that contain the same string between the prefix, if specified, and the first\n * occurrence of the delimiter after the prefix are grouped under a single result element,\n * CommonPrefixes. If you don't specify the prefix parameter, then the\n * substring starts at the beginning of the key. The keys that are grouped under\n * CommonPrefixes result element are not returned elsewhere in the\n * response.

\n */\n Delimiter?: string;\n\n /**\n *

Requests Amazon S3 to encode the object keys in the response and specifies the encoding\n * method to use. An object key may contain any Unicode character; however, XML 1.0 parser\n * cannot parse some characters, such as characters with an ASCII value from 0 to 10. For\n * characters that are not supported in XML 1.0, you can add this parameter to request that\n * Amazon S3 encode the keys in the response.

\n */\n EncodingType?: EncodingType | string;\n\n /**\n *

Together with upload-id-marker, this parameter specifies the multipart upload after\n * which listing should begin.

\n *

If upload-id-marker is not specified, only the keys lexicographically\n * greater than the specified key-marker will be included in the list.

\n *\n *

If upload-id-marker is specified, any multipart uploads for a key equal to\n * the key-marker might also be included, provided those multipart uploads have\n * upload IDs lexicographically greater than the specified\n * upload-id-marker.

\n */\n KeyMarker?: string;\n\n /**\n *

Sets the maximum number of multipart uploads, from 1 to 1,000, to return in the response\n * body. 1,000 is the maximum number of uploads that can be returned in a response.

\n */\n MaxUploads?: number;\n\n /**\n *

Lists in-progress uploads only for those keys that begin with the specified prefix. You\n * can use prefixes to separate a bucket into different grouping of keys. (You can think of\n * using prefix to make groups in the same way you'd use a folder in a file system.)

\n */\n Prefix?: string;\n\n /**\n *

Together with key-marker, specifies the multipart upload after which listing should\n * begin. If key-marker is not specified, the upload-id-marker parameter is ignored.\n * Otherwise, any multipart uploads for a key equal to the key-marker might be included in the\n * list only if they have an upload ID lexicographically greater than the specified\n * upload-id-marker.

\n */\n UploadIdMarker?: string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace ListMultipartUploadsRequest {\n export const filterSensitiveLog = (obj: ListMultipartUploadsRequest): any => ({\n ...obj,\n });\n}\n\nexport type ObjectStorageClass =\n | \"DEEP_ARCHIVE\"\n | \"GLACIER\"\n | \"INTELLIGENT_TIERING\"\n | \"ONEZONE_IA\"\n | \"OUTPOSTS\"\n | \"REDUCED_REDUNDANCY\"\n | \"STANDARD\"\n | \"STANDARD_IA\";\n\n/**\n *

An object consists of data and its descriptive metadata.

\n */\nexport interface _Object {\n /**\n *

The name that you assign to an object. You use the object key to retrieve the\n * object.

\n */\n Key?: string;\n\n /**\n *

The date the Object was Last Modified

\n */\n LastModified?: Date;\n\n /**\n *

The entity tag is a hash of the object. The ETag reflects changes only to the contents\n * of an object, not its metadata. The ETag may or may not be an MD5 digest of the object\n * data. Whether or not it is depends on how the object was created and how it is encrypted as\n * described below:

\n *
    \n *
  • \n *

    Objects created by the PUT Object, POST Object, or Copy operation, or through the\n * AWS Management Console, and are encrypted by SSE-S3 or plaintext, have ETags that are\n * an MD5 digest of their object data.

    \n *
  • \n *
  • \n *

    Objects created by the PUT Object, POST Object, or Copy operation, or through the\n * AWS Management Console, and are encrypted by SSE-C or SSE-KMS, have ETags that are\n * not an MD5 digest of their object data.

    \n *
  • \n *
  • \n *

    If an object is created by either the Multipart Upload or Part Copy operation, the\n * ETag is not an MD5 digest, regardless of the method of encryption.

    \n *
  • \n *
\n */\n ETag?: string;\n\n /**\n *

Size in bytes of the object

\n */\n Size?: number;\n\n /**\n *

The class of storage used to store the object.

\n */\n StorageClass?: ObjectStorageClass | string;\n\n /**\n *

The owner of the object

\n */\n Owner?: Owner;\n}\n\nexport namespace _Object {\n export const filterSensitiveLog = (obj: _Object): any => ({\n ...obj,\n });\n}\n\nexport interface ListObjectsOutput {\n /**\n *

A flag that indicates whether Amazon S3 returned all of the results that satisfied the search\n * criteria.

\n */\n IsTruncated?: boolean;\n\n /**\n *

Indicates where in the bucket listing begins. Marker is included in the response if it\n * was sent with the request.

\n */\n Marker?: string;\n\n /**\n *

When response is truncated (the IsTruncated element value in the response is true), you\n * can use the key name in this field as marker in the subsequent request to get next set of\n * objects. Amazon S3 lists objects in alphabetical order Note: This element is returned only if\n * you have delimiter request parameter specified. If response does not include the NextMarker\n * and it is truncated, you can use the value of the last Key in the response as the marker in\n * the subsequent request to get the next set of object keys.

\n */\n NextMarker?: string;\n\n /**\n *

Metadata about each object returned.

\n */\n Contents?: _Object[];\n\n /**\n *

The bucket name.

\n */\n Name?: string;\n\n /**\n *

Keys that begin with the indicated prefix.

\n */\n Prefix?: string;\n\n /**\n *

Causes keys that contain the same string between the prefix and the first occurrence of\n * the delimiter to be rolled up into a single result element in the\n * CommonPrefixes collection. These rolled-up keys are not returned elsewhere\n * in the response. Each rolled-up result counts as only one return against the\n * MaxKeys value.

\n */\n Delimiter?: string;\n\n /**\n *

The maximum number of keys returned in the response body.

\n */\n MaxKeys?: number;\n\n /**\n *

All of the keys rolled up in a common prefix count as a single return when calculating\n * the number of returns.

\n *\n *

A response can contain CommonPrefixes only if you specify a delimiter.

\n *\n *

CommonPrefixes contains all (if there are any) keys between Prefix and the next\n * occurrence of the string specified by the delimiter.

\n *\n *

CommonPrefixes lists keys that act like subdirectories in the directory specified by\n * Prefix.

\n *\n *

For example, if the prefix is notes/ and the delimiter is a slash (/) as in\n * notes/summer/july, the common prefix is notes/summer/. All of the keys that roll up into a\n * common prefix count as a single return when calculating the number of returns.

\n */\n CommonPrefixes?: CommonPrefix[];\n\n /**\n *

Encoding type used by Amazon S3 to encode object keys in the response.

\n */\n EncodingType?: EncodingType | string;\n}\n\nexport namespace ListObjectsOutput {\n export const filterSensitiveLog = (obj: ListObjectsOutput): any => ({\n ...obj,\n });\n}\n\nexport interface ListObjectsRequest {\n /**\n *

The name of the bucket containing the objects.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

A delimiter is a character you use to group keys.

\n */\n Delimiter?: string;\n\n /**\n *

Requests Amazon S3 to encode the object keys in the response and specifies the encoding\n * method to use. An object key may contain any Unicode character; however, XML 1.0 parser\n * cannot parse some characters, such as characters with an ASCII value from 0 to 10. For\n * characters that are not supported in XML 1.0, you can add this parameter to request that\n * Amazon S3 encode the keys in the response.

\n */\n EncodingType?: EncodingType | string;\n\n /**\n *

Specifies the key to start with when listing objects in a bucket.

\n */\n Marker?: string;\n\n /**\n *

Sets the maximum number of keys returned in the response. By default the API returns up\n * to 1,000 key names. The response might contain fewer keys but will never contain more.\n *

\n */\n MaxKeys?: number;\n\n /**\n *

Limits the response to keys that begin with the specified prefix.

\n */\n Prefix?: string;\n\n /**\n *

Confirms that the requester knows that she or he will be charged for the list objects\n * request. Bucket owners need not specify this parameter in their requests.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace ListObjectsRequest {\n export const filterSensitiveLog = (obj: ListObjectsRequest): any => ({\n ...obj,\n });\n}\n\nexport interface ListObjectsV2Output {\n /**\n *

Set to false if all of the results were returned. Set to true if more keys are available\n * to return. If the number of results exceeds that specified by MaxKeys, all of the results\n * might not be returned.

\n */\n IsTruncated?: boolean;\n\n /**\n *

Metadata about each object returned.

\n */\n Contents?: _Object[];\n\n /**\n *

The bucket name.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Name?: string;\n\n /**\n *

Keys that begin with the indicated prefix.

\n */\n Prefix?: string;\n\n /**\n *

Causes keys that contain the same string between the prefix and the first occurrence of\n * the delimiter to be rolled up into a single result element in the CommonPrefixes\n * collection. These rolled-up keys are not returned elsewhere in the response. Each rolled-up\n * result counts as only one return against the MaxKeys value.

\n */\n Delimiter?: string;\n\n /**\n *

Sets the maximum number of keys returned in the response. By default the API returns up\n * to 1,000 key names. The response might contain fewer keys but will never contain\n * more.

\n */\n MaxKeys?: number;\n\n /**\n *

All of the keys rolled up into a common prefix count as a single return when calculating\n * the number of returns.

\n *\n *

A response can contain CommonPrefixes only if you specify a\n * delimiter.

\n *\n *

\n * CommonPrefixes contains all (if there are any) keys between\n * Prefix and the next occurrence of the string specified by a\n * delimiter.

\n *\n *

\n * CommonPrefixes lists keys that act like subdirectories in the directory\n * specified by Prefix.

\n *\n *

For example, if the prefix is notes/ and the delimiter is a slash\n * (/) as in notes/summer/july, the common prefix is\n * notes/summer/. All of the keys that roll up into a common prefix count as a\n * single return when calculating the number of returns.

\n */\n CommonPrefixes?: CommonPrefix[];\n\n /**\n *

Encoding type used by Amazon S3 to encode object key names in the XML response.

\n *\n *

If you specify the encoding-type request parameter, Amazon S3 includes this element in the\n * response, and returns encoded key name values in the following response elements:

\n *\n *

\n * Delimiter, Prefix, Key, and StartAfter.

\n */\n EncodingType?: EncodingType | string;\n\n /**\n *

KeyCount is the number of keys returned with this request. KeyCount will always be less\n * than equals to MaxKeys field. Say you ask for 50 keys, your result will include less than\n * equals 50 keys

\n */\n KeyCount?: number;\n\n /**\n *

If ContinuationToken was sent with the request, it is included in the response.

\n */\n ContinuationToken?: string;\n\n /**\n *

\n * NextContinuationToken is sent when isTruncated is true, which\n * means there are more keys in the bucket that can be listed. The next list requests to Amazon S3\n * can be continued with this NextContinuationToken.\n * NextContinuationToken is obfuscated and is not a real key

\n */\n NextContinuationToken?: string;\n\n /**\n *

If StartAfter was sent with the request, it is included in the response.

\n */\n StartAfter?: string;\n}\n\nexport namespace ListObjectsV2Output {\n export const filterSensitiveLog = (obj: ListObjectsV2Output): any => ({\n ...obj,\n });\n}\n\nexport interface ListObjectsV2Request {\n /**\n *

Bucket name to list.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

A delimiter is a character you use to group keys.

\n */\n Delimiter?: string;\n\n /**\n *

Encoding type used by Amazon S3 to encode object keys in the response.

\n */\n EncodingType?: EncodingType | string;\n\n /**\n *

Sets the maximum number of keys returned in the response. By default the API returns up\n * to 1,000 key names. The response might contain fewer keys but will never contain\n * more.

\n */\n MaxKeys?: number;\n\n /**\n *

Limits the response to keys that begin with the specified prefix.

\n */\n Prefix?: string;\n\n /**\n *

ContinuationToken indicates Amazon S3 that the list is being continued on this bucket with a\n * token. ContinuationToken is obfuscated and is not a real key.

\n */\n ContinuationToken?: string;\n\n /**\n *

The owner field is not present in listV2 by default, if you want to return owner field\n * with each key in the result then set the fetch owner field to true.

\n */\n FetchOwner?: boolean;\n\n /**\n *

StartAfter is where you want Amazon S3 to start listing from. Amazon S3 starts listing after this\n * specified key. StartAfter can be any key in the bucket.

\n */\n StartAfter?: string;\n\n /**\n *

Confirms that the requester knows that she or he will be charged for the list objects\n * request in V2 style. Bucket owners need not specify this parameter in their\n * requests.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace ListObjectsV2Request {\n export const filterSensitiveLog = (obj: ListObjectsV2Request): any => ({\n ...obj,\n });\n}\n\n/**\n *

Information about the delete marker.

\n */\nexport interface DeleteMarkerEntry {\n /**\n *

The account that created the delete marker.>

\n */\n Owner?: Owner;\n\n /**\n *

The object key.

\n */\n Key?: string;\n\n /**\n *

Version ID of an object.

\n */\n VersionId?: string;\n\n /**\n *

Specifies whether the object is (true) or is not (false) the latest version of an\n * object.

\n */\n IsLatest?: boolean;\n\n /**\n *

Date and time the object was last modified.

\n */\n LastModified?: Date;\n}\n\nexport namespace DeleteMarkerEntry {\n export const filterSensitiveLog = (obj: DeleteMarkerEntry): any => ({\n ...obj,\n });\n}\n\nexport type ObjectVersionStorageClass = \"STANDARD\";\n\n/**\n *

The version of an object.

\n */\nexport interface ObjectVersion {\n /**\n *

The entity tag is an MD5 hash of that version of the object.

\n */\n ETag?: string;\n\n /**\n *

Size in bytes of the object.

\n */\n Size?: number;\n\n /**\n *

The class of storage used to store the object.

\n */\n StorageClass?: ObjectVersionStorageClass | string;\n\n /**\n *

The object key.

\n */\n Key?: string;\n\n /**\n *

Version ID of an object.

\n */\n VersionId?: string;\n\n /**\n *

Specifies whether the object is (true) or is not (false) the latest version of an\n * object.

\n */\n IsLatest?: boolean;\n\n /**\n *

Date and time the object was last modified.

\n */\n LastModified?: Date;\n\n /**\n *

Specifies the owner of the object.

\n */\n Owner?: Owner;\n}\n\nexport namespace ObjectVersion {\n export const filterSensitiveLog = (obj: ObjectVersion): any => ({\n ...obj,\n });\n}\n\nexport interface ListObjectVersionsOutput {\n /**\n *

A flag that indicates whether Amazon S3 returned all of the results that satisfied the search\n * criteria. If your results were truncated, you can make a follow-up paginated request using\n * the NextKeyMarker and NextVersionIdMarker response parameters as a starting place in\n * another request to return the rest of the results.

\n */\n IsTruncated?: boolean;\n\n /**\n *

Marks the last key returned in a truncated response.

\n */\n KeyMarker?: string;\n\n /**\n *

Marks the last version of the key returned in a truncated response.

\n */\n VersionIdMarker?: string;\n\n /**\n *

When the number of responses exceeds the value of MaxKeys,\n * NextKeyMarker specifies the first key not returned that satisfies the\n * search criteria. Use this value for the key-marker request parameter in a subsequent\n * request.

\n */\n NextKeyMarker?: string;\n\n /**\n *

When the number of responses exceeds the value of MaxKeys,\n * NextVersionIdMarker specifies the first object version not returned that\n * satisfies the search criteria. Use this value for the version-id-marker request parameter\n * in a subsequent request.

\n */\n NextVersionIdMarker?: string;\n\n /**\n *

Container for version information.

\n */\n Versions?: ObjectVersion[];\n\n /**\n *

Container for an object that is a delete marker.

\n */\n DeleteMarkers?: DeleteMarkerEntry[];\n\n /**\n *

The bucket name.

\n */\n Name?: string;\n\n /**\n *

Selects objects that start with the value supplied by this parameter.

\n */\n Prefix?: string;\n\n /**\n *

The delimiter grouping the included keys. A delimiter is a character that you specify to\n * group keys. All keys that contain the same string between the prefix and the first\n * occurrence of the delimiter are grouped under a single result element in\n * CommonPrefixes. These groups are counted as one result against the max-keys\n * limitation. These keys are not returned elsewhere in the response.

\n */\n Delimiter?: string;\n\n /**\n *

Specifies the maximum number of objects to return.

\n */\n MaxKeys?: number;\n\n /**\n *

All of the keys rolled up into a common prefix count as a single return when calculating\n * the number of returns.

\n */\n CommonPrefixes?: CommonPrefix[];\n\n /**\n *

Encoding type used by Amazon S3 to encode object key names in the XML response.

\n *\n *

If you specify encoding-type request parameter, Amazon S3 includes this element in the\n * response, and returns encoded key name values in the following response elements:

\n *\n *

\n * KeyMarker, NextKeyMarker, Prefix, Key, and Delimiter.

\n */\n EncodingType?: EncodingType | string;\n}\n\nexport namespace ListObjectVersionsOutput {\n export const filterSensitiveLog = (obj: ListObjectVersionsOutput): any => ({\n ...obj,\n });\n}\n\nexport interface ListObjectVersionsRequest {\n /**\n *

The bucket name that contains the objects.

\n */\n Bucket: string | undefined;\n\n /**\n *

A delimiter is a character that you specify to group keys. All keys that contain the\n * same string between the prefix and the first occurrence of the delimiter are\n * grouped under a single result element in CommonPrefixes. These groups are counted as one\n * result against the max-keys limitation. These keys are not returned elsewhere in the\n * response.

\n */\n Delimiter?: string;\n\n /**\n *

Requests Amazon S3 to encode the object keys in the response and specifies the encoding\n * method to use. An object key may contain any Unicode character; however, XML 1.0 parser\n * cannot parse some characters, such as characters with an ASCII value from 0 to 10. For\n * characters that are not supported in XML 1.0, you can add this parameter to request that\n * Amazon S3 encode the keys in the response.

\n */\n EncodingType?: EncodingType | string;\n\n /**\n *

Specifies the key to start with when listing objects in a bucket.

\n */\n KeyMarker?: string;\n\n /**\n *

Sets the maximum number of keys returned in the response. By default the API returns up\n * to 1,000 key names. The response might contain fewer keys but will never contain more. If\n * additional keys satisfy the search criteria, but were not returned because max-keys was\n * exceeded, the response contains true. To return the\n * additional keys, see key-marker and version-id-marker.

\n */\n MaxKeys?: number;\n\n /**\n *

Use this parameter to select only those keys that begin with the specified prefix. You\n * can use prefixes to separate a bucket into different groupings of keys. (You can think of\n * using prefix to make groups in the same way you'd use a folder in a file system.) You can\n * use prefix with delimiter to roll up numerous objects into a single result under\n * CommonPrefixes.

\n */\n Prefix?: string;\n\n /**\n *

Specifies the object version you want to start listing from.

\n */\n VersionIdMarker?: string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace ListObjectVersionsRequest {\n export const filterSensitiveLog = (obj: ListObjectVersionsRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Container for elements related to a part.

\n */\nexport interface Part {\n /**\n *

Part number identifying the part. This is a positive integer between 1 and\n * 10,000.

\n */\n PartNumber?: number;\n\n /**\n *

Date and time at which the part was uploaded.

\n */\n LastModified?: Date;\n\n /**\n *

Entity tag returned when the part was uploaded.

\n */\n ETag?: string;\n\n /**\n *

Size in bytes of the uploaded part data.

\n */\n Size?: number;\n}\n\nexport namespace Part {\n export const filterSensitiveLog = (obj: Part): any => ({\n ...obj,\n });\n}\n\nexport interface ListPartsOutput {\n /**\n *

If the bucket has a lifecycle rule configured with an action to abort incomplete\n * multipart uploads and the prefix in the lifecycle rule matches the object name in the\n * request, then the response includes this header indicating when the initiated multipart\n * upload will become eligible for abort operation. For more information, see Aborting\n * Incomplete Multipart Uploads Using a Bucket Lifecycle Policy.

\n *\n *

The response will also include the x-amz-abort-rule-id header that will\n * provide the ID of the lifecycle configuration rule that defines this action.

\n */\n AbortDate?: Date;\n\n /**\n *

This header is returned along with the x-amz-abort-date header. It\n * identifies applicable lifecycle configuration rule that defines the action to abort\n * incomplete multipart uploads.

\n */\n AbortRuleId?: string;\n\n /**\n *

The name of the bucket to which the multipart upload was initiated.

\n */\n Bucket?: string;\n\n /**\n *

Object key for which the multipart upload was initiated.

\n */\n Key?: string;\n\n /**\n *

Upload ID identifying the multipart upload whose parts are being listed.

\n */\n UploadId?: string;\n\n /**\n *

When a list is truncated, this element specifies the last part in the list, as well as\n * the value to use for the part-number-marker request parameter in a subsequent\n * request.

\n */\n PartNumberMarker?: string;\n\n /**\n *

When a list is truncated, this element specifies the last part in the list, as well as\n * the value to use for the part-number-marker request parameter in a subsequent\n * request.

\n */\n NextPartNumberMarker?: string;\n\n /**\n *

Maximum number of parts that were allowed in the response.

\n */\n MaxParts?: number;\n\n /**\n *

Indicates whether the returned list of parts is truncated. A true value indicates that\n * the list was truncated. A list can be truncated if the number of parts exceeds the limit\n * returned in the MaxParts element.

\n */\n IsTruncated?: boolean;\n\n /**\n *

Container for elements related to a particular part. A response can contain zero or\n * more Part elements.

\n */\n Parts?: Part[];\n\n /**\n *

Container element that identifies who initiated the multipart upload. If the initiator\n * is an AWS account, this element provides the same information as the Owner\n * element. If the initiator is an IAM User, this element provides the user ARN and display\n * name.

\n */\n Initiator?: Initiator;\n\n /**\n *

Container element that identifies the object owner, after the object is created. If\n * multipart upload is initiated by an IAM user, this element provides the parent account ID\n * and display name.

\n */\n Owner?: Owner;\n\n /**\n *

Class of storage (STANDARD or REDUCED_REDUNDANCY) used to store the uploaded\n * object.

\n */\n StorageClass?: StorageClass | string;\n\n /**\n *

If present, indicates that the requester was successfully charged for the\n * request.

\n */\n RequestCharged?: RequestCharged | string;\n}\n\nexport namespace ListPartsOutput {\n export const filterSensitiveLog = (obj: ListPartsOutput): any => ({\n ...obj,\n });\n}\n\nexport interface ListPartsRequest {\n /**\n *

The name of the bucket to which the parts are being uploaded.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

Object key for which the multipart upload was initiated.

\n */\n Key: string | undefined;\n\n /**\n *

Sets the maximum number of parts to return.

\n */\n MaxParts?: number;\n\n /**\n *

Specifies the part after which listing should begin. Only parts with higher part numbers\n * will be listed.

\n */\n PartNumberMarker?: string;\n\n /**\n *

Upload ID identifying the multipart upload whose parts are being listed.

\n */\n UploadId: string | undefined;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace ListPartsRequest {\n export const filterSensitiveLog = (obj: ListPartsRequest): any => ({\n ...obj,\n });\n}\n\nexport interface PutBucketAccelerateConfigurationRequest {\n /**\n *

The name of the bucket for which the accelerate configuration is set.

\n */\n Bucket: string | undefined;\n\n /**\n *

Container for setting the transfer acceleration state.

\n */\n AccelerateConfiguration: AccelerateConfiguration | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutBucketAccelerateConfigurationRequest {\n export const filterSensitiveLog = (obj: PutBucketAccelerateConfigurationRequest): any => ({\n ...obj,\n });\n}\n\nexport interface PutBucketAclRequest {\n /**\n *

The canned ACL to apply to the bucket.

\n */\n ACL?: BucketCannedACL | string;\n\n /**\n *

Contains the elements that set the ACL permissions for an object per grantee.

\n */\n AccessControlPolicy?: AccessControlPolicy;\n\n /**\n *

The bucket to which to apply the ACL.

\n */\n Bucket: string | undefined;\n\n /**\n *

The base64-encoded 128-bit MD5 digest of the data. This header must be used as a message\n * integrity check to verify that the request body was not corrupted in transit. For more\n * information, go to RFC\n * 1864.\n *

\n *

For requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is calculated automatically.

\n */\n ContentMD5?: string;\n\n /**\n *

Allows grantee the read, write, read ACP, and write ACP permissions on the\n * bucket.

\n */\n GrantFullControl?: string;\n\n /**\n *

Allows grantee to list the objects in the bucket.

\n */\n GrantRead?: string;\n\n /**\n *

Allows grantee to read the bucket ACL.

\n */\n GrantReadACP?: string;\n\n /**\n *

Allows grantee to create, overwrite, and delete any object in the bucket.

\n */\n GrantWrite?: string;\n\n /**\n *

Allows grantee to write the ACL for the applicable bucket.

\n */\n GrantWriteACP?: string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutBucketAclRequest {\n export const filterSensitiveLog = (obj: PutBucketAclRequest): any => ({\n ...obj,\n });\n}\n\nexport interface PutBucketAnalyticsConfigurationRequest {\n /**\n *

The name of the bucket to which an analytics configuration is stored.

\n */\n Bucket: string | undefined;\n\n /**\n *

The ID that identifies the analytics configuration.

\n */\n Id: string | undefined;\n\n /**\n *

The configuration and any analyses for the analytics filter.

\n */\n AnalyticsConfiguration: AnalyticsConfiguration | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutBucketAnalyticsConfigurationRequest {\n export const filterSensitiveLog = (obj: PutBucketAnalyticsConfigurationRequest): any => ({\n ...obj,\n ...(obj.AnalyticsConfiguration && {\n AnalyticsConfiguration: AnalyticsConfiguration.filterSensitiveLog(obj.AnalyticsConfiguration),\n }),\n });\n}\n\n/**\n *

Describes the cross-origin access configuration for objects in an Amazon S3 bucket. For more\n * information, see Enabling\n * Cross-Origin Resource Sharing in the Amazon Simple Storage Service Developer\n * Guide.

\n */\nexport interface CORSConfiguration {\n /**\n *

A set of origins and methods (cross-origin access that you want to allow). You can add\n * up to 100 rules to the configuration.

\n */\n CORSRules: CORSRule[] | undefined;\n}\n\nexport namespace CORSConfiguration {\n export const filterSensitiveLog = (obj: CORSConfiguration): any => ({\n ...obj,\n });\n}\n\nexport interface PutBucketCorsRequest {\n /**\n *

Specifies the bucket impacted by the corsconfiguration.

\n */\n Bucket: string | undefined;\n\n /**\n *

Describes the cross-origin access configuration for objects in an Amazon S3 bucket. For more\n * information, see Enabling Cross-Origin Resource\n * Sharing in the Amazon Simple Storage Service Developer Guide.

\n */\n CORSConfiguration: CORSConfiguration | undefined;\n\n /**\n *

The base64-encoded 128-bit MD5 digest of the data. This header must be used as a message\n * integrity check to verify that the request body was not corrupted in transit. For more\n * information, go to RFC\n * 1864.\n *

\n *

For requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is calculated automatically.

\n */\n ContentMD5?: string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutBucketCorsRequest {\n export const filterSensitiveLog = (obj: PutBucketCorsRequest): any => ({\n ...obj,\n });\n}\n\nexport interface PutBucketEncryptionRequest {\n /**\n *

Specifies default encryption for a bucket using server-side encryption with Amazon S3-managed\n * keys (SSE-S3) or customer master keys stored in AWS KMS (SSE-KMS). For information about\n * the Amazon S3 default encryption feature, see Amazon S3 Default Bucket Encryption\n * in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

The base64-encoded 128-bit MD5 digest of the server-side encryption configuration.

\n *

For requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is calculated automatically.

\n */\n ContentMD5?: string;\n\n /**\n *

Specifies the default server-side-encryption configuration.

\n */\n ServerSideEncryptionConfiguration: ServerSideEncryptionConfiguration | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutBucketEncryptionRequest {\n export const filterSensitiveLog = (obj: PutBucketEncryptionRequest): any => ({\n ...obj,\n ...(obj.ServerSideEncryptionConfiguration && {\n ServerSideEncryptionConfiguration: ServerSideEncryptionConfiguration.filterSensitiveLog(\n obj.ServerSideEncryptionConfiguration\n ),\n }),\n });\n}\n\nexport interface PutBucketIntelligentTieringConfigurationRequest {\n /**\n *

The name of the Amazon S3 bucket whose configuration you want to modify or retrieve.

\n */\n Bucket: string | undefined;\n\n /**\n *

The ID used to identify the S3 Intelligent-Tiering configuration.

\n */\n Id: string | undefined;\n\n /**\n *

Container for S3 Intelligent-Tiering configuration.

\n */\n IntelligentTieringConfiguration: IntelligentTieringConfiguration | undefined;\n}\n\nexport namespace PutBucketIntelligentTieringConfigurationRequest {\n export const filterSensitiveLog = (obj: PutBucketIntelligentTieringConfigurationRequest): any => ({\n ...obj,\n });\n}\n\nexport interface PutBucketInventoryConfigurationRequest {\n /**\n *

The name of the bucket where the inventory configuration will be stored.

\n */\n Bucket: string | undefined;\n\n /**\n *

The ID used to identify the inventory configuration.

\n */\n Id: string | undefined;\n\n /**\n *

Specifies the inventory configuration.

\n */\n InventoryConfiguration: InventoryConfiguration | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutBucketInventoryConfigurationRequest {\n export const filterSensitiveLog = (obj: PutBucketInventoryConfigurationRequest): any => ({\n ...obj,\n ...(obj.InventoryConfiguration && {\n InventoryConfiguration: InventoryConfiguration.filterSensitiveLog(obj.InventoryConfiguration),\n }),\n });\n}\n\n/**\n *

Specifies the lifecycle configuration for objects in an Amazon S3 bucket. For more\n * information, see Object Lifecycle Management\n * in the Amazon Simple Storage Service Developer Guide.

\n */\nexport interface BucketLifecycleConfiguration {\n /**\n *

A lifecycle rule for individual objects in an Amazon S3 bucket.

\n */\n Rules: LifecycleRule[] | undefined;\n}\n\nexport namespace BucketLifecycleConfiguration {\n export const filterSensitiveLog = (obj: BucketLifecycleConfiguration): any => ({\n ...obj,\n ...(obj.Rules && { Rules: obj.Rules.map((item) => LifecycleRule.filterSensitiveLog(item)) }),\n });\n}\n\nexport interface PutBucketLifecycleConfigurationRequest {\n /**\n *

The name of the bucket for which to set the configuration.

\n */\n Bucket: string | undefined;\n\n /**\n *

Container for lifecycle rules. You can add as many as 1,000 rules.

\n */\n LifecycleConfiguration?: BucketLifecycleConfiguration;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutBucketLifecycleConfigurationRequest {\n export const filterSensitiveLog = (obj: PutBucketLifecycleConfigurationRequest): any => ({\n ...obj,\n ...(obj.LifecycleConfiguration && {\n LifecycleConfiguration: BucketLifecycleConfiguration.filterSensitiveLog(obj.LifecycleConfiguration),\n }),\n });\n}\n\n/**\n *

Container for logging status information.

\n */\nexport interface BucketLoggingStatus {\n /**\n *

Describes where logs are stored and the prefix that Amazon S3 assigns to all log object keys\n * for a bucket. For more information, see PUT Bucket logging in the\n * Amazon Simple Storage Service API Reference.

\n */\n LoggingEnabled?: LoggingEnabled;\n}\n\nexport namespace BucketLoggingStatus {\n export const filterSensitiveLog = (obj: BucketLoggingStatus): any => ({\n ...obj,\n });\n}\n\nexport interface PutBucketLoggingRequest {\n /**\n *

The name of the bucket for which to set the logging parameters.

\n */\n Bucket: string | undefined;\n\n /**\n *

Container for logging status information.

\n */\n BucketLoggingStatus: BucketLoggingStatus | undefined;\n\n /**\n *

The MD5 hash of the PutBucketLogging request body.

\n *

For requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is calculated automatically.

\n */\n ContentMD5?: string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutBucketLoggingRequest {\n export const filterSensitiveLog = (obj: PutBucketLoggingRequest): any => ({\n ...obj,\n });\n}\n\nexport interface PutBucketMetricsConfigurationRequest {\n /**\n *

The name of the bucket for which the metrics configuration is set.

\n */\n Bucket: string | undefined;\n\n /**\n *

The ID used to identify the metrics configuration.

\n */\n Id: string | undefined;\n\n /**\n *

Specifies the metrics configuration.

\n */\n MetricsConfiguration: MetricsConfiguration | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutBucketMetricsConfigurationRequest {\n export const filterSensitiveLog = (obj: PutBucketMetricsConfigurationRequest): any => ({\n ...obj,\n ...(obj.MetricsConfiguration && {\n MetricsConfiguration: MetricsConfiguration.filterSensitiveLog(obj.MetricsConfiguration),\n }),\n });\n}\n\nexport interface PutBucketNotificationConfigurationRequest {\n /**\n *

The name of the bucket.

\n */\n Bucket: string | undefined;\n\n /**\n *

A container for specifying the notification configuration of the bucket. If this element\n * is empty, notifications are turned off for the bucket.

\n */\n NotificationConfiguration: NotificationConfiguration | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutBucketNotificationConfigurationRequest {\n export const filterSensitiveLog = (obj: PutBucketNotificationConfigurationRequest): any => ({\n ...obj,\n });\n}\n\nexport interface PutBucketOwnershipControlsRequest {\n /**\n *

The name of the Amazon S3 bucket whose OwnershipControls you want to set.

\n */\n Bucket: string | undefined;\n\n /**\n *

The MD5 hash of the OwnershipControls request body.

\n *

For requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is calculated automatically.

\n */\n ContentMD5?: string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n\n /**\n *

The OwnershipControls (BucketOwnerPreferred or ObjectWriter) that you want\n * to apply to this Amazon S3 bucket.

\n */\n OwnershipControls: OwnershipControls | undefined;\n}\n\nexport namespace PutBucketOwnershipControlsRequest {\n export const filterSensitiveLog = (obj: PutBucketOwnershipControlsRequest): any => ({\n ...obj,\n });\n}\n\nexport interface PutBucketPolicyRequest {\n /**\n *

The name of the bucket.

\n */\n Bucket: string | undefined;\n\n /**\n *

The MD5 hash of the request body.

\n *

For requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is calculated automatically.

\n */\n ContentMD5?: string;\n\n /**\n *

Set this parameter to true to confirm that you want to remove your permissions to change\n * this bucket policy in the future.

\n */\n ConfirmRemoveSelfBucketAccess?: boolean;\n\n /**\n *

The bucket policy as a JSON document.

\n */\n Policy: string | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutBucketPolicyRequest {\n export const filterSensitiveLog = (obj: PutBucketPolicyRequest): any => ({\n ...obj,\n });\n}\n\nexport interface PutBucketReplicationRequest {\n /**\n *

The name of the bucket

\n */\n Bucket: string | undefined;\n\n /**\n *

The base64-encoded 128-bit MD5 digest of the data. You must use this header as a message\n * integrity check to verify that the request body was not corrupted in transit. For more\n * information, see RFC 1864.

\n *

For requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is calculated automatically.

\n */\n ContentMD5?: string;\n\n /**\n *

A container for replication rules. You can add up to 1,000 rules. The maximum size of a\n * replication configuration is 2 MB.

\n */\n ReplicationConfiguration: ReplicationConfiguration | undefined;\n\n /**\n *

A token to allow Object Lock to be enabled for an existing bucket.

\n */\n Token?: string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutBucketReplicationRequest {\n export const filterSensitiveLog = (obj: PutBucketReplicationRequest): any => ({\n ...obj,\n ...(obj.ReplicationConfiguration && {\n ReplicationConfiguration: ReplicationConfiguration.filterSensitiveLog(obj.ReplicationConfiguration),\n }),\n });\n}\n\n/**\n *

Container for Payer.

\n */\nexport interface RequestPaymentConfiguration {\n /**\n *

Specifies who pays for the download and request fees.

\n */\n Payer: Payer | string | undefined;\n}\n\nexport namespace RequestPaymentConfiguration {\n export const filterSensitiveLog = (obj: RequestPaymentConfiguration): any => ({\n ...obj,\n });\n}\n\nexport interface PutBucketRequestPaymentRequest {\n /**\n *

The bucket name.

\n */\n Bucket: string | undefined;\n\n /**\n *

>The base64-encoded 128-bit MD5 digest of the data. You must use this header as a\n * message integrity check to verify that the request body was not corrupted in transit. For\n * more information, see RFC\n * 1864.

\n *

For requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is calculated automatically.

\n */\n ContentMD5?: string;\n\n /**\n *

Container for Payer.

\n */\n RequestPaymentConfiguration: RequestPaymentConfiguration | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutBucketRequestPaymentRequest {\n export const filterSensitiveLog = (obj: PutBucketRequestPaymentRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Container for TagSet elements.

\n */\nexport interface Tagging {\n /**\n *

A collection for a set of tags

\n */\n TagSet: Tag[] | undefined;\n}\n\nexport namespace Tagging {\n export const filterSensitiveLog = (obj: Tagging): any => ({\n ...obj,\n });\n}\n\nexport interface PutBucketTaggingRequest {\n /**\n *

The bucket name.

\n */\n Bucket: string | undefined;\n\n /**\n *

The base64-encoded 128-bit MD5 digest of the data. You must use this header as a message\n * integrity check to verify that the request body was not corrupted in transit. For more\n * information, see RFC 1864.

\n *

For requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is calculated automatically.

\n */\n ContentMD5?: string;\n\n /**\n *

Container for the TagSet and Tag elements.

\n */\n Tagging: Tagging | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutBucketTaggingRequest {\n export const filterSensitiveLog = (obj: PutBucketTaggingRequest): any => ({\n ...obj,\n });\n}\n\nexport type MFADelete = \"Disabled\" | \"Enabled\";\n\n/**\n *

Describes the versioning state of an Amazon S3 bucket. For more information, see PUT\n * Bucket versioning in the Amazon Simple Storage Service API Reference.

\n */\nexport interface VersioningConfiguration {\n /**\n *

Specifies whether MFA delete is enabled in the bucket versioning configuration. This\n * element is only returned if the bucket has been configured with MFA delete. If the bucket\n * has never been so configured, this element is not returned.

\n */\n MFADelete?: MFADelete | string;\n\n /**\n *

The versioning state of the bucket.

\n */\n Status?: BucketVersioningStatus | string;\n}\n\nexport namespace VersioningConfiguration {\n export const filterSensitiveLog = (obj: VersioningConfiguration): any => ({\n ...obj,\n });\n}\n\nexport interface PutBucketVersioningRequest {\n /**\n *

The bucket name.

\n */\n Bucket: string | undefined;\n\n /**\n *

>The base64-encoded 128-bit MD5 digest of the data. You must use this header as a\n * message integrity check to verify that the request body was not corrupted in transit. For\n * more information, see RFC\n * 1864.

\n *

For requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is calculated automatically.

\n */\n ContentMD5?: string;\n\n /**\n *

The concatenation of the authentication device's serial number, a space, and the value\n * that is displayed on your authentication device.

\n */\n MFA?: string;\n\n /**\n *

Container for setting the versioning state.

\n */\n VersioningConfiguration: VersioningConfiguration | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutBucketVersioningRequest {\n export const filterSensitiveLog = (obj: PutBucketVersioningRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies website configuration parameters for an Amazon S3 bucket.

\n */\nexport interface WebsiteConfiguration {\n /**\n *

The name of the error document for the website.

\n */\n ErrorDocument?: ErrorDocument;\n\n /**\n *

The name of the index document for the website.

\n */\n IndexDocument?: IndexDocument;\n\n /**\n *

The redirect behavior for every request to this bucket's website endpoint.

\n * \n *

If you specify this property, you can't specify any other property.

\n *
\n */\n RedirectAllRequestsTo?: RedirectAllRequestsTo;\n\n /**\n *

Rules that define when a redirect is applied and the redirect behavior.

\n */\n RoutingRules?: RoutingRule[];\n}\n\nexport namespace WebsiteConfiguration {\n export const filterSensitiveLog = (obj: WebsiteConfiguration): any => ({\n ...obj,\n });\n}\n\nexport interface PutBucketWebsiteRequest {\n /**\n *

The bucket name.

\n */\n Bucket: string | undefined;\n\n /**\n *

The base64-encoded 128-bit MD5 digest of the data. You must use this header as a message\n * integrity check to verify that the request body was not corrupted in transit. For more\n * information, see RFC 1864.

\n *

For requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is calculated automatically.

\n */\n ContentMD5?: string;\n\n /**\n *

Container for the request.

\n */\n WebsiteConfiguration: WebsiteConfiguration | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutBucketWebsiteRequest {\n export const filterSensitiveLog = (obj: PutBucketWebsiteRequest): any => ({\n ...obj,\n });\n}\n\nexport interface PutObjectOutput {\n /**\n *

If the expiration is configured for the object (see PutBucketLifecycleConfiguration), the response includes this header. It\n * includes the expiry-date and rule-id key-value pairs that provide information about object\n * expiration. The value of the rule-id is URL encoded.

\n */\n Expiration?: string;\n\n /**\n *

Entity tag for the uploaded object.

\n */\n ETag?: string;\n\n /**\n *

If you specified server-side encryption either with an AWS KMS customer master key (CMK)\n * or Amazon S3-managed encryption key in your PUT request, the response includes this header. It\n * confirms the encryption algorithm that Amazon S3 used to encrypt the object.

\n */\n ServerSideEncryption?: ServerSideEncryption | string;\n\n /**\n *

Version of the object.

\n */\n VersionId?: string;\n\n /**\n *

If server-side encryption with a customer-provided encryption key was requested, the\n * response will include this header confirming the encryption algorithm used.

\n */\n SSECustomerAlgorithm?: string;\n\n /**\n *

If server-side encryption with a customer-provided encryption key was requested, the\n * response will include this header to provide round-trip message integrity verification of\n * the customer-provided encryption key.

\n */\n SSECustomerKeyMD5?: string;\n\n /**\n *

If x-amz-server-side-encryption is present and has the value of\n * aws:kms, this header specifies the ID of the AWS Key Management Service\n * (AWS KMS) symmetric customer managed customer master key (CMK) that was used for the\n * object.

\n */\n SSEKMSKeyId?: string;\n\n /**\n *

If present, specifies the AWS KMS Encryption Context to use for object encryption. The\n * value of this header is a base64-encoded UTF-8 string holding JSON with the encryption\n * context key-value pairs.

\n */\n SSEKMSEncryptionContext?: string;\n\n /**\n *

Indicates whether the uploaded object uses an S3 Bucket Key for server-side encryption with AWS KMS (SSE-KMS).

\n */\n BucketKeyEnabled?: boolean;\n\n /**\n *

If present, indicates that the requester was successfully charged for the\n * request.

\n */\n RequestCharged?: RequestCharged | string;\n}\n\nexport namespace PutObjectOutput {\n export const filterSensitiveLog = (obj: PutObjectOutput): any => ({\n ...obj,\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n ...(obj.SSEKMSEncryptionContext && { SSEKMSEncryptionContext: SENSITIVE_STRING }),\n });\n}\n\nexport interface PutObjectRequest {\n /**\n *

The canned ACL to apply to the object. For more information, see Canned\n * ACL.

\n *

This action is not supported by Amazon S3 on Outposts.

\n */\n ACL?: ObjectCannedACL | string;\n\n /**\n *

Object data.

\n */\n Body?: Readable | ReadableStream | Blob;\n\n /**\n *

The bucket name to which the PUT operation was initiated.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

Can be used to specify caching behavior along the request/reply chain. For more\n * information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.

\n */\n CacheControl?: string;\n\n /**\n *

Specifies presentational information for the object. For more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1.

\n */\n ContentDisposition?: string;\n\n /**\n *

Specifies what content encodings have been applied to the object and thus what decoding\n * mechanisms must be applied to obtain the media-type referenced by the Content-Type header\n * field. For more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11.

\n */\n ContentEncoding?: string;\n\n /**\n *

The language the content is in.

\n */\n ContentLanguage?: string;\n\n /**\n *

Size of the body in bytes. This parameter is useful when the size of the body cannot be\n * determined automatically. For more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13.

\n */\n ContentLength?: number;\n\n /**\n *

The base64-encoded 128-bit MD5 digest of the message (without the headers) according to\n * RFC 1864. This header can be used as a message integrity check to verify that the data is\n * the same data that was originally sent. Although it is optional, we recommend using the\n * Content-MD5 mechanism as an end-to-end integrity check. For more information about REST\n * request authentication, see REST\n * Authentication.

\n */\n ContentMD5?: string;\n\n /**\n *

A standard MIME type describing the format of the contents. For more information, see\n * http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17.

\n */\n ContentType?: string;\n\n /**\n *

The date and time at which the object is no longer cacheable. For more information, see\n * http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21.

\n */\n Expires?: Date;\n\n /**\n *

Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the\n * object.

\n *

This action is not supported by Amazon S3 on Outposts.

\n */\n GrantFullControl?: string;\n\n /**\n *

Allows grantee to read the object data and its\n * metadata.

\n *

This action is not supported by Amazon S3 on Outposts.

\n */\n GrantRead?: string;\n\n /**\n *

Allows grantee to read the object ACL.

\n *

This action is not supported by Amazon S3 on Outposts.

\n */\n GrantReadACP?: string;\n\n /**\n *

Allows grantee to write the ACL for the applicable\n * object.

\n *

This action is not supported by Amazon S3 on Outposts.

\n */\n GrantWriteACP?: string;\n\n /**\n *

Object key for which the PUT operation was initiated.

\n */\n Key: string | undefined;\n\n /**\n *

A map of metadata to store with the object in S3.

\n */\n Metadata?: { [key: string]: string };\n\n /**\n *

The server-side encryption algorithm used when storing this object in Amazon S3 (for example,\n * AES256, aws:kms).

\n */\n ServerSideEncryption?: ServerSideEncryption | string;\n\n /**\n *

By default, Amazon S3 uses the STANDARD Storage Class to store newly created objects. The\n * STANDARD storage class provides high durability and high availability. Depending on\n * performance needs, you can specify a different Storage Class. Amazon S3 on Outposts only uses\n * the OUTPOSTS Storage Class. For more information, see Storage Classes in the Amazon S3\n * Service Developer Guide.

\n */\n StorageClass?: StorageClass | string;\n\n /**\n *

If the bucket is configured as a website, redirects requests for this object to another\n * object in the same bucket or to an external URL. Amazon S3 stores the value of this header in\n * the object metadata. For information about object metadata, see Object Key and Metadata.

\n *\n *

In the following example, the request header sets the redirect to an object\n * (anotherPage.html) in the same bucket:

\n *\n *

\n * x-amz-website-redirect-location: /anotherPage.html\n *

\n *\n *

In the following example, the request header sets the object redirect to another\n * website:

\n *\n *

\n * x-amz-website-redirect-location: http://www.example.com/\n *

\n *\n *

For more information about website hosting in Amazon S3, see Hosting Websites on Amazon S3 and How to Configure Website Page\n * Redirects.

\n */\n WebsiteRedirectLocation?: string;\n\n /**\n *

Specifies the algorithm to use to when encrypting the object (for example,\n * AES256).

\n */\n SSECustomerAlgorithm?: string;\n\n /**\n *

Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This\n * value is used to store the object and then it is discarded; Amazon S3 does not store the\n * encryption key. The key must be appropriate for use with the algorithm specified in the\n * x-amz-server-side-encryption-customer-algorithm header.

\n */\n SSECustomerKey?: string;\n\n /**\n *

Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses\n * this header for a message integrity check to ensure that the encryption key was transmitted\n * without error.

\n */\n SSECustomerKeyMD5?: string;\n\n /**\n *

If x-amz-server-side-encryption is present and has the value of\n * aws:kms, this header specifies the ID of the AWS Key Management Service\n * (AWS KMS) symmetrical customer managed customer master key (CMK) that was used for the\n * object.

\n *

If the value of x-amz-server-side-encryption is aws:kms, this\n * header specifies the ID of the symmetric customer managed AWS KMS CMK that will be used for\n * the object. If you specify x-amz-server-side-encryption:aws:kms, but do not\n * provide x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the AWS\n * managed CMK in AWS to protect the data.

\n */\n SSEKMSKeyId?: string;\n\n /**\n *

Specifies the AWS KMS Encryption Context to use for object encryption. The value of this\n * header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value\n * pairs.

\n */\n SSEKMSEncryptionContext?: string;\n\n /**\n *

Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using AWS KMS (SSE-KMS). Setting this header to true causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.

\n *

Specifying this header with a PUT operation doesn’t affect bucket-level settings for S3 Bucket Key.

\n */\n BucketKeyEnabled?: boolean;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

The tag-set for the object. The tag-set must be encoded as URL Query parameters. (For\n * example, \"Key1=Value1\")

\n */\n Tagging?: string;\n\n /**\n *

The Object Lock mode that you want to apply to this object.

\n */\n ObjectLockMode?: ObjectLockMode | string;\n\n /**\n *

The date and time when you want this object's Object Lock to expire.

\n */\n ObjectLockRetainUntilDate?: Date;\n\n /**\n *

Specifies whether a legal hold will be applied to this object. For more information\n * about S3 Object Lock, see Object\n * Lock.

\n */\n ObjectLockLegalHoldStatus?: ObjectLockLegalHoldStatus | string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutObjectRequest {\n export const filterSensitiveLog = (obj: PutObjectRequest): any => ({\n ...obj,\n ...(obj.SSECustomerKey && { SSECustomerKey: SENSITIVE_STRING }),\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n ...(obj.SSEKMSEncryptionContext && { SSEKMSEncryptionContext: SENSITIVE_STRING }),\n });\n}\n\nexport interface PutObjectAclOutput {\n /**\n *

If present, indicates that the requester was successfully charged for the\n * request.

\n */\n RequestCharged?: RequestCharged | string;\n}\n\nexport namespace PutObjectAclOutput {\n export const filterSensitiveLog = (obj: PutObjectAclOutput): any => ({\n ...obj,\n });\n}\n\nexport interface PutObjectAclRequest {\n /**\n *

The canned ACL to apply to the object. For more information, see Canned ACL.

\n */\n ACL?: ObjectCannedACL | string;\n\n /**\n *

Contains the elements that set the ACL permissions for an object per grantee.

\n */\n AccessControlPolicy?: AccessControlPolicy;\n\n /**\n *

The bucket name that contains the object to which you want to attach the ACL.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

The base64-encoded 128-bit MD5 digest of the data. This header must be used as a message\n * integrity check to verify that the request body was not corrupted in transit. For more\n * information, go to RFC\n * 1864.>\n *

\n *

For requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is calculated automatically.

\n */\n ContentMD5?: string;\n\n /**\n *

Allows grantee the read, write, read ACP, and write ACP permissions on the\n * bucket.

\n *

This action is not supported by Amazon S3 on Outposts.

\n */\n GrantFullControl?: string;\n\n /**\n *

Allows grantee to list the objects in the\n * bucket.

\n *

This action is not supported by Amazon S3 on Outposts.

\n */\n GrantRead?: string;\n\n /**\n *

Allows grantee to read the bucket ACL.

\n *

This action is not supported by Amazon S3 on Outposts.

\n */\n GrantReadACP?: string;\n\n /**\n *

Allows grantee to create, overwrite, and delete any object in the bucket.

\n */\n GrantWrite?: string;\n\n /**\n *

Allows grantee to write the ACL for the applicable\n * bucket.

\n *

This action is not supported by Amazon S3 on Outposts.

\n */\n GrantWriteACP?: string;\n\n /**\n *

Key for which the PUT operation was initiated.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Key: string | undefined;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

VersionId used to reference a specific version of the object.

\n */\n VersionId?: string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutObjectAclRequest {\n export const filterSensitiveLog = (obj: PutObjectAclRequest): any => ({\n ...obj,\n });\n}\n\nexport interface PutObjectLegalHoldOutput {\n /**\n *

If present, indicates that the requester was successfully charged for the\n * request.

\n */\n RequestCharged?: RequestCharged | string;\n}\n\nexport namespace PutObjectLegalHoldOutput {\n export const filterSensitiveLog = (obj: PutObjectLegalHoldOutput): any => ({\n ...obj,\n });\n}\n\nexport interface PutObjectLegalHoldRequest {\n /**\n *

The bucket name containing the object that you want to place a Legal Hold on.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

The key name for the object that you want to place a Legal Hold on.

\n */\n Key: string | undefined;\n\n /**\n *

Container element for the Legal Hold configuration you want to apply to the specified\n * object.

\n */\n LegalHold?: ObjectLockLegalHold;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

The version ID of the object that you want to place a Legal Hold on.

\n */\n VersionId?: string;\n\n /**\n *

The MD5 hash for the request body.

\n *

For requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is calculated automatically.

\n */\n ContentMD5?: string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutObjectLegalHoldRequest {\n export const filterSensitiveLog = (obj: PutObjectLegalHoldRequest): any => ({\n ...obj,\n });\n}\n\nexport interface PutObjectLockConfigurationOutput {\n /**\n *

If present, indicates that the requester was successfully charged for the\n * request.

\n */\n RequestCharged?: RequestCharged | string;\n}\n\nexport namespace PutObjectLockConfigurationOutput {\n export const filterSensitiveLog = (obj: PutObjectLockConfigurationOutput): any => ({\n ...obj,\n });\n}\n\nexport interface PutObjectLockConfigurationRequest {\n /**\n *

The bucket whose Object Lock configuration you want to create or replace.

\n */\n Bucket: string | undefined;\n\n /**\n *

The Object Lock configuration that you want to apply to the specified bucket.

\n */\n ObjectLockConfiguration?: ObjectLockConfiguration;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

A token to allow Object Lock to be enabled for an existing bucket.

\n */\n Token?: string;\n\n /**\n *

The MD5 hash for the request body.

\n *

For requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is calculated automatically.

\n */\n ContentMD5?: string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutObjectLockConfigurationRequest {\n export const filterSensitiveLog = (obj: PutObjectLockConfigurationRequest): any => ({\n ...obj,\n });\n}\n\nexport interface PutObjectRetentionOutput {\n /**\n *

If present, indicates that the requester was successfully charged for the\n * request.

\n */\n RequestCharged?: RequestCharged | string;\n}\n\nexport namespace PutObjectRetentionOutput {\n export const filterSensitiveLog = (obj: PutObjectRetentionOutput): any => ({\n ...obj,\n });\n}\n\nexport interface PutObjectRetentionRequest {\n /**\n *

The bucket name that contains the object you want to apply this Object Retention\n * configuration to.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

The key name for the object that you want to apply this Object Retention configuration\n * to.

\n */\n Key: string | undefined;\n\n /**\n *

The container element for the Object Retention configuration.

\n */\n Retention?: ObjectLockRetention;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

The version ID for the object that you want to apply this Object Retention configuration\n * to.

\n */\n VersionId?: string;\n\n /**\n *

Indicates whether this operation should bypass Governance-mode restrictions.

\n */\n BypassGovernanceRetention?: boolean;\n\n /**\n *

The MD5 hash for the request body.

\n *

For requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is calculated automatically.

\n */\n ContentMD5?: string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutObjectRetentionRequest {\n export const filterSensitiveLog = (obj: PutObjectRetentionRequest): any => ({\n ...obj,\n });\n}\n\nexport interface PutObjectTaggingOutput {\n /**\n *

The versionId of the object the tag-set was added to.

\n */\n VersionId?: string;\n}\n\nexport namespace PutObjectTaggingOutput {\n export const filterSensitiveLog = (obj: PutObjectTaggingOutput): any => ({\n ...obj,\n });\n}\n\nexport interface PutObjectTaggingRequest {\n /**\n *

The bucket name containing the object.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

Name of the object key.

\n */\n Key: string | undefined;\n\n /**\n *

The versionId of the object that the tag-set will be added to.

\n */\n VersionId?: string;\n\n /**\n *

The MD5 hash for the request body.

\n *

For requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is calculated automatically.

\n */\n ContentMD5?: string;\n\n /**\n *

Container for the TagSet and Tag elements

\n */\n Tagging: Tagging | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutObjectTaggingRequest {\n export const filterSensitiveLog = (obj: PutObjectTaggingRequest): any => ({\n ...obj,\n });\n}\n\nexport interface PutPublicAccessBlockRequest {\n /**\n *

The name of the Amazon S3 bucket whose PublicAccessBlock configuration you want\n * to set.

\n */\n Bucket: string | undefined;\n\n /**\n *

The MD5 hash of the PutPublicAccessBlock request body.

\n *

For requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is calculated automatically.

\n */\n ContentMD5?: string;\n\n /**\n *

The PublicAccessBlock configuration that you want to apply to this Amazon S3\n * bucket. You can enable the configuration options in any combination. For more information\n * about when Amazon S3 considers a bucket or object public, see The Meaning of \"Public\" in the Amazon Simple Storage Service Developer\n * Guide.

\n */\n PublicAccessBlockConfiguration: PublicAccessBlockConfiguration | undefined;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace PutPublicAccessBlockRequest {\n export const filterSensitiveLog = (obj: PutPublicAccessBlockRequest): any => ({\n ...obj,\n });\n}\n\n/**\n *

This operation is not allowed against this storage tier.

\n */\nexport interface ObjectAlreadyInActiveTierError extends __SmithyException, $MetadataBearer {\n name: \"ObjectAlreadyInActiveTierError\";\n $fault: \"client\";\n}\n\nexport namespace ObjectAlreadyInActiveTierError {\n export const filterSensitiveLog = (obj: ObjectAlreadyInActiveTierError): any => ({\n ...obj,\n });\n}\n\nexport interface RestoreObjectOutput {\n /**\n *

If present, indicates that the requester was successfully charged for the\n * request.

\n */\n RequestCharged?: RequestCharged | string;\n\n /**\n *

Indicates the path in the provided S3 output location where Select results will be\n * restored to.

\n */\n RestoreOutputPath?: string;\n}\n\nexport namespace RestoreObjectOutput {\n export const filterSensitiveLog = (obj: RestoreObjectOutput): any => ({\n ...obj,\n });\n}\n\nexport type Tier = \"Bulk\" | \"Expedited\" | \"Standard\";\n\n/**\n *

Container for S3 Glacier job parameters.

\n */\nexport interface GlacierJobParameters {\n /**\n *

Retrieval tier at which the restore will be processed.

\n */\n Tier: Tier | string | undefined;\n}\n\nexport namespace GlacierJobParameters {\n export const filterSensitiveLog = (obj: GlacierJobParameters): any => ({\n ...obj,\n });\n}\n\n/**\n *

Contains the type of server-side encryption used.

\n */\nexport interface Encryption {\n /**\n *

The server-side encryption algorithm used when storing job results in Amazon S3 (for example,\n * AES256, aws:kms).

\n */\n EncryptionType: ServerSideEncryption | string | undefined;\n\n /**\n *

If the encryption type is aws:kms, this optional value specifies the ID of\n * the symmetric customer managed AWS KMS CMK to use for encryption of job results. Amazon S3 only\n * supports symmetric CMKs. For more information, see Using Symmetric and\n * Asymmetric Keys in the AWS Key Management Service Developer\n * Guide.

\n */\n KMSKeyId?: string;\n\n /**\n *

If the encryption type is aws:kms, this optional value can be used to\n * specify the encryption context for the restore results.

\n */\n KMSContext?: string;\n}\n\nexport namespace Encryption {\n export const filterSensitiveLog = (obj: Encryption): any => ({\n ...obj,\n ...(obj.KMSKeyId && { KMSKeyId: SENSITIVE_STRING }),\n });\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**\n * Escapes characters that can not be in an XML attribute.\n */\nexport function escapeAttribute(value: string): string {\n return value.replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\");\n}\n","import { escapeAttribute } from \"./escape-attribute\";\nimport { Stringable } from \"./stringable\";\n\n/**\n * Represents an XML node.\n */\nexport class XmlNode {\n private attributes: { [name: string]: any } = {};\n\n constructor(private name: string, public readonly children: Stringable[] = []) {}\n\n withName(name: string): XmlNode {\n this.name = name;\n return this;\n }\n\n addAttribute(name: string, value: any): XmlNode {\n this.attributes[name] = value;\n return this;\n }\n\n addChildNode(child: Stringable): XmlNode {\n this.children.push(child);\n return this;\n }\n\n removeAttribute(name: string): XmlNode {\n delete this.attributes[name];\n return this;\n }\n\n toString(): string {\n const hasChildren = Boolean(this.children.length);\n let xmlText = `<${this.name}`;\n // add attributes\n const attributes = this.attributes;\n for (const attributeName of Object.keys(attributes)) {\n const attribute = attributes[attributeName];\n if (typeof attribute !== \"undefined\" && attribute !== null) {\n xmlText += ` ${attributeName}=\"${escapeAttribute(\"\" + attribute)}\"`;\n }\n }\n\n return (xmlText += !hasChildren ? \"/>\" : `>${this.children.map((c) => c.toString()).join(\"\")}`);\n }\n}\n","import { escapeElement } from \"./escape-element\";\nimport { Stringable } from \"./stringable\";\n/**\n * Represents an XML text value.\n */\nexport class XmlText implements Stringable {\n constructor(private value: string) {}\n\n toString(): string {\n return escapeElement(\"\" + this.value);\n }\n}\n","/**\n * Escapes characters that can not be in an XML element.\n */\nexport function escapeElement(value: string): string {\n return value.replace(/&/g, \"&\").replace(//g, \">\");\n}\n","import {\n AbortMultipartUploadCommandInput,\n AbortMultipartUploadCommandOutput,\n} from \"../commands/AbortMultipartUploadCommand\";\nimport {\n CompleteMultipartUploadCommandInput,\n CompleteMultipartUploadCommandOutput,\n} from \"../commands/CompleteMultipartUploadCommand\";\nimport { CopyObjectCommandInput, CopyObjectCommandOutput } from \"../commands/CopyObjectCommand\";\nimport { CreateBucketCommandInput, CreateBucketCommandOutput } from \"../commands/CreateBucketCommand\";\nimport {\n CreateMultipartUploadCommandInput,\n CreateMultipartUploadCommandOutput,\n} from \"../commands/CreateMultipartUploadCommand\";\nimport {\n DeleteBucketAnalyticsConfigurationCommandInput,\n DeleteBucketAnalyticsConfigurationCommandOutput,\n} from \"../commands/DeleteBucketAnalyticsConfigurationCommand\";\nimport { DeleteBucketCommandInput, DeleteBucketCommandOutput } from \"../commands/DeleteBucketCommand\";\nimport { DeleteBucketCorsCommandInput, DeleteBucketCorsCommandOutput } from \"../commands/DeleteBucketCorsCommand\";\nimport {\n DeleteBucketEncryptionCommandInput,\n DeleteBucketEncryptionCommandOutput,\n} from \"../commands/DeleteBucketEncryptionCommand\";\nimport {\n DeleteBucketIntelligentTieringConfigurationCommandInput,\n DeleteBucketIntelligentTieringConfigurationCommandOutput,\n} from \"../commands/DeleteBucketIntelligentTieringConfigurationCommand\";\nimport {\n DeleteBucketInventoryConfigurationCommandInput,\n DeleteBucketInventoryConfigurationCommandOutput,\n} from \"../commands/DeleteBucketInventoryConfigurationCommand\";\nimport {\n DeleteBucketLifecycleCommandInput,\n DeleteBucketLifecycleCommandOutput,\n} from \"../commands/DeleteBucketLifecycleCommand\";\nimport {\n DeleteBucketMetricsConfigurationCommandInput,\n DeleteBucketMetricsConfigurationCommandOutput,\n} from \"../commands/DeleteBucketMetricsConfigurationCommand\";\nimport {\n DeleteBucketOwnershipControlsCommandInput,\n DeleteBucketOwnershipControlsCommandOutput,\n} from \"../commands/DeleteBucketOwnershipControlsCommand\";\nimport { DeleteBucketPolicyCommandInput, DeleteBucketPolicyCommandOutput } from \"../commands/DeleteBucketPolicyCommand\";\nimport {\n DeleteBucketReplicationCommandInput,\n DeleteBucketReplicationCommandOutput,\n} from \"../commands/DeleteBucketReplicationCommand\";\nimport {\n DeleteBucketTaggingCommandInput,\n DeleteBucketTaggingCommandOutput,\n} from \"../commands/DeleteBucketTaggingCommand\";\nimport {\n DeleteBucketWebsiteCommandInput,\n DeleteBucketWebsiteCommandOutput,\n} from \"../commands/DeleteBucketWebsiteCommand\";\nimport { DeleteObjectCommandInput, DeleteObjectCommandOutput } from \"../commands/DeleteObjectCommand\";\nimport {\n DeleteObjectTaggingCommandInput,\n DeleteObjectTaggingCommandOutput,\n} from \"../commands/DeleteObjectTaggingCommand\";\nimport { DeleteObjectsCommandInput, DeleteObjectsCommandOutput } from \"../commands/DeleteObjectsCommand\";\nimport {\n DeletePublicAccessBlockCommandInput,\n DeletePublicAccessBlockCommandOutput,\n} from \"../commands/DeletePublicAccessBlockCommand\";\nimport {\n GetBucketAccelerateConfigurationCommandInput,\n GetBucketAccelerateConfigurationCommandOutput,\n} from \"../commands/GetBucketAccelerateConfigurationCommand\";\nimport { GetBucketAclCommandInput, GetBucketAclCommandOutput } from \"../commands/GetBucketAclCommand\";\nimport {\n GetBucketAnalyticsConfigurationCommandInput,\n GetBucketAnalyticsConfigurationCommandOutput,\n} from \"../commands/GetBucketAnalyticsConfigurationCommand\";\nimport { GetBucketCorsCommandInput, GetBucketCorsCommandOutput } from \"../commands/GetBucketCorsCommand\";\nimport {\n GetBucketEncryptionCommandInput,\n GetBucketEncryptionCommandOutput,\n} from \"../commands/GetBucketEncryptionCommand\";\nimport {\n GetBucketIntelligentTieringConfigurationCommandInput,\n GetBucketIntelligentTieringConfigurationCommandOutput,\n} from \"../commands/GetBucketIntelligentTieringConfigurationCommand\";\nimport {\n GetBucketInventoryConfigurationCommandInput,\n GetBucketInventoryConfigurationCommandOutput,\n} from \"../commands/GetBucketInventoryConfigurationCommand\";\nimport {\n GetBucketLifecycleConfigurationCommandInput,\n GetBucketLifecycleConfigurationCommandOutput,\n} from \"../commands/GetBucketLifecycleConfigurationCommand\";\nimport { GetBucketLocationCommandInput, GetBucketLocationCommandOutput } from \"../commands/GetBucketLocationCommand\";\nimport { GetBucketLoggingCommandInput, GetBucketLoggingCommandOutput } from \"../commands/GetBucketLoggingCommand\";\nimport {\n GetBucketMetricsConfigurationCommandInput,\n GetBucketMetricsConfigurationCommandOutput,\n} from \"../commands/GetBucketMetricsConfigurationCommand\";\nimport {\n GetBucketNotificationConfigurationCommandInput,\n GetBucketNotificationConfigurationCommandOutput,\n} from \"../commands/GetBucketNotificationConfigurationCommand\";\nimport {\n GetBucketOwnershipControlsCommandInput,\n GetBucketOwnershipControlsCommandOutput,\n} from \"../commands/GetBucketOwnershipControlsCommand\";\nimport { GetBucketPolicyCommandInput, GetBucketPolicyCommandOutput } from \"../commands/GetBucketPolicyCommand\";\nimport {\n GetBucketPolicyStatusCommandInput,\n GetBucketPolicyStatusCommandOutput,\n} from \"../commands/GetBucketPolicyStatusCommand\";\nimport {\n GetBucketReplicationCommandInput,\n GetBucketReplicationCommandOutput,\n} from \"../commands/GetBucketReplicationCommand\";\nimport {\n GetBucketRequestPaymentCommandInput,\n GetBucketRequestPaymentCommandOutput,\n} from \"../commands/GetBucketRequestPaymentCommand\";\nimport { GetBucketTaggingCommandInput, GetBucketTaggingCommandOutput } from \"../commands/GetBucketTaggingCommand\";\nimport {\n GetBucketVersioningCommandInput,\n GetBucketVersioningCommandOutput,\n} from \"../commands/GetBucketVersioningCommand\";\nimport { GetBucketWebsiteCommandInput, GetBucketWebsiteCommandOutput } from \"../commands/GetBucketWebsiteCommand\";\nimport { GetObjectAclCommandInput, GetObjectAclCommandOutput } from \"../commands/GetObjectAclCommand\";\nimport { GetObjectCommandInput, GetObjectCommandOutput } from \"../commands/GetObjectCommand\";\nimport { GetObjectLegalHoldCommandInput, GetObjectLegalHoldCommandOutput } from \"../commands/GetObjectLegalHoldCommand\";\nimport {\n GetObjectLockConfigurationCommandInput,\n GetObjectLockConfigurationCommandOutput,\n} from \"../commands/GetObjectLockConfigurationCommand\";\nimport { GetObjectRetentionCommandInput, GetObjectRetentionCommandOutput } from \"../commands/GetObjectRetentionCommand\";\nimport { GetObjectTaggingCommandInput, GetObjectTaggingCommandOutput } from \"../commands/GetObjectTaggingCommand\";\nimport { GetObjectTorrentCommandInput, GetObjectTorrentCommandOutput } from \"../commands/GetObjectTorrentCommand\";\nimport {\n GetPublicAccessBlockCommandInput,\n GetPublicAccessBlockCommandOutput,\n} from \"../commands/GetPublicAccessBlockCommand\";\nimport { HeadBucketCommandInput, HeadBucketCommandOutput } from \"../commands/HeadBucketCommand\";\nimport { HeadObjectCommandInput, HeadObjectCommandOutput } from \"../commands/HeadObjectCommand\";\nimport {\n ListBucketAnalyticsConfigurationsCommandInput,\n ListBucketAnalyticsConfigurationsCommandOutput,\n} from \"../commands/ListBucketAnalyticsConfigurationsCommand\";\nimport {\n ListBucketIntelligentTieringConfigurationsCommandInput,\n ListBucketIntelligentTieringConfigurationsCommandOutput,\n} from \"../commands/ListBucketIntelligentTieringConfigurationsCommand\";\nimport {\n ListBucketInventoryConfigurationsCommandInput,\n ListBucketInventoryConfigurationsCommandOutput,\n} from \"../commands/ListBucketInventoryConfigurationsCommand\";\nimport {\n ListBucketMetricsConfigurationsCommandInput,\n ListBucketMetricsConfigurationsCommandOutput,\n} from \"../commands/ListBucketMetricsConfigurationsCommand\";\nimport { ListBucketsCommandInput, ListBucketsCommandOutput } from \"../commands/ListBucketsCommand\";\nimport {\n ListMultipartUploadsCommandInput,\n ListMultipartUploadsCommandOutput,\n} from \"../commands/ListMultipartUploadsCommand\";\nimport { ListObjectVersionsCommandInput, ListObjectVersionsCommandOutput } from \"../commands/ListObjectVersionsCommand\";\nimport { ListObjectsCommandInput, ListObjectsCommandOutput } from \"../commands/ListObjectsCommand\";\nimport { ListObjectsV2CommandInput, ListObjectsV2CommandOutput } from \"../commands/ListObjectsV2Command\";\nimport { ListPartsCommandInput, ListPartsCommandOutput } from \"../commands/ListPartsCommand\";\nimport {\n PutBucketAccelerateConfigurationCommandInput,\n PutBucketAccelerateConfigurationCommandOutput,\n} from \"../commands/PutBucketAccelerateConfigurationCommand\";\nimport { PutBucketAclCommandInput, PutBucketAclCommandOutput } from \"../commands/PutBucketAclCommand\";\nimport {\n PutBucketAnalyticsConfigurationCommandInput,\n PutBucketAnalyticsConfigurationCommandOutput,\n} from \"../commands/PutBucketAnalyticsConfigurationCommand\";\nimport { PutBucketCorsCommandInput, PutBucketCorsCommandOutput } from \"../commands/PutBucketCorsCommand\";\nimport {\n PutBucketEncryptionCommandInput,\n PutBucketEncryptionCommandOutput,\n} from \"../commands/PutBucketEncryptionCommand\";\nimport {\n PutBucketIntelligentTieringConfigurationCommandInput,\n PutBucketIntelligentTieringConfigurationCommandOutput,\n} from \"../commands/PutBucketIntelligentTieringConfigurationCommand\";\nimport {\n PutBucketInventoryConfigurationCommandInput,\n PutBucketInventoryConfigurationCommandOutput,\n} from \"../commands/PutBucketInventoryConfigurationCommand\";\nimport {\n PutBucketLifecycleConfigurationCommandInput,\n PutBucketLifecycleConfigurationCommandOutput,\n} from \"../commands/PutBucketLifecycleConfigurationCommand\";\nimport { PutBucketLoggingCommandInput, PutBucketLoggingCommandOutput } from \"../commands/PutBucketLoggingCommand\";\nimport {\n PutBucketMetricsConfigurationCommandInput,\n PutBucketMetricsConfigurationCommandOutput,\n} from \"../commands/PutBucketMetricsConfigurationCommand\";\nimport {\n PutBucketNotificationConfigurationCommandInput,\n PutBucketNotificationConfigurationCommandOutput,\n} from \"../commands/PutBucketNotificationConfigurationCommand\";\nimport {\n PutBucketOwnershipControlsCommandInput,\n PutBucketOwnershipControlsCommandOutput,\n} from \"../commands/PutBucketOwnershipControlsCommand\";\nimport { PutBucketPolicyCommandInput, PutBucketPolicyCommandOutput } from \"../commands/PutBucketPolicyCommand\";\nimport {\n PutBucketReplicationCommandInput,\n PutBucketReplicationCommandOutput,\n} from \"../commands/PutBucketReplicationCommand\";\nimport {\n PutBucketRequestPaymentCommandInput,\n PutBucketRequestPaymentCommandOutput,\n} from \"../commands/PutBucketRequestPaymentCommand\";\nimport { PutBucketTaggingCommandInput, PutBucketTaggingCommandOutput } from \"../commands/PutBucketTaggingCommand\";\nimport {\n PutBucketVersioningCommandInput,\n PutBucketVersioningCommandOutput,\n} from \"../commands/PutBucketVersioningCommand\";\nimport { PutBucketWebsiteCommandInput, PutBucketWebsiteCommandOutput } from \"../commands/PutBucketWebsiteCommand\";\nimport { PutObjectAclCommandInput, PutObjectAclCommandOutput } from \"../commands/PutObjectAclCommand\";\nimport { PutObjectCommandInput, PutObjectCommandOutput } from \"../commands/PutObjectCommand\";\nimport { PutObjectLegalHoldCommandInput, PutObjectLegalHoldCommandOutput } from \"../commands/PutObjectLegalHoldCommand\";\nimport {\n PutObjectLockConfigurationCommandInput,\n PutObjectLockConfigurationCommandOutput,\n} from \"../commands/PutObjectLockConfigurationCommand\";\nimport { PutObjectRetentionCommandInput, PutObjectRetentionCommandOutput } from \"../commands/PutObjectRetentionCommand\";\nimport { PutObjectTaggingCommandInput, PutObjectTaggingCommandOutput } from \"../commands/PutObjectTaggingCommand\";\nimport {\n PutPublicAccessBlockCommandInput,\n PutPublicAccessBlockCommandOutput,\n} from \"../commands/PutPublicAccessBlockCommand\";\nimport { RestoreObjectCommandInput, RestoreObjectCommandOutput } from \"../commands/RestoreObjectCommand\";\nimport {\n SelectObjectContentCommandInput,\n SelectObjectContentCommandOutput,\n} from \"../commands/SelectObjectContentCommand\";\nimport { UploadPartCommandInput, UploadPartCommandOutput } from \"../commands/UploadPartCommand\";\nimport { UploadPartCopyCommandInput, UploadPartCopyCommandOutput } from \"../commands/UploadPartCopyCommand\";\nimport {\n AbortIncompleteMultipartUpload,\n AccelerateConfiguration,\n AccessControlPolicy,\n AccessControlTranslation,\n AnalyticsAndOperator,\n AnalyticsConfiguration,\n AnalyticsExportDestination,\n AnalyticsFilter,\n AnalyticsS3BucketDestination,\n Bucket,\n BucketAlreadyExists,\n BucketAlreadyOwnedByYou,\n BucketLifecycleConfiguration,\n BucketLoggingStatus,\n CORSConfiguration,\n CORSRule,\n CommonPrefix,\n CompletedMultipartUpload,\n CompletedPart,\n Condition,\n CopyObjectResult,\n CreateBucketConfiguration,\n DefaultRetention,\n Delete,\n DeleteMarkerEntry,\n DeleteMarkerReplication,\n DeletedObject,\n Destination,\n Encryption,\n EncryptionConfiguration,\n ErrorDocument,\n Event,\n ExistingObjectReplication,\n FilterRule,\n GlacierJobParameters,\n Grant,\n Grantee,\n IndexDocument,\n Initiator,\n IntelligentTieringAndOperator,\n IntelligentTieringConfiguration,\n IntelligentTieringFilter,\n InvalidObjectState,\n InventoryConfiguration,\n InventoryDestination,\n InventoryEncryption,\n InventoryFilter,\n InventoryOptionalField,\n InventoryS3BucketDestination,\n InventorySchedule,\n LambdaFunctionConfiguration,\n LifecycleExpiration,\n LifecycleRule,\n LifecycleRuleAndOperator,\n LifecycleRuleFilter,\n LoggingEnabled,\n Metrics,\n MetricsAndOperator,\n MetricsConfiguration,\n MetricsFilter,\n MultipartUpload,\n NoSuchBucket,\n NoSuchKey,\n NoSuchUpload,\n NoncurrentVersionExpiration,\n NoncurrentVersionTransition,\n NotificationConfiguration,\n NotificationConfigurationFilter,\n ObjectAlreadyInActiveTierError,\n ObjectIdentifier,\n ObjectLockConfiguration,\n ObjectLockLegalHold,\n ObjectLockRetention,\n ObjectLockRule,\n ObjectNotInActiveTierError,\n ObjectVersion,\n Owner,\n OwnershipControls,\n OwnershipControlsRule,\n Part,\n PolicyStatus,\n PublicAccessBlockConfiguration,\n QueueConfiguration,\n Redirect,\n RedirectAllRequestsTo,\n ReplicaModifications,\n ReplicationConfiguration,\n ReplicationRule,\n ReplicationRuleAndOperator,\n ReplicationRuleFilter,\n ReplicationTime,\n ReplicationTimeValue,\n RequestPaymentConfiguration,\n RoutingRule,\n S3KeyFilter,\n SSEKMS,\n SSES3,\n ServerSideEncryptionByDefault,\n ServerSideEncryptionConfiguration,\n ServerSideEncryptionRule,\n SourceSelectionCriteria,\n SseKmsEncryptedObjects,\n StorageClassAnalysis,\n StorageClassAnalysisDataExport,\n Tag,\n Tagging,\n TargetGrant,\n Tiering,\n TopicConfiguration,\n Transition,\n VersioningConfiguration,\n WebsiteConfiguration,\n _Error,\n _Object,\n} from \"../models/models_0\";\nimport {\n CSVInput,\n CSVOutput,\n ContinuationEvent,\n CopyPartResult,\n EndEvent,\n InputSerialization,\n JSONInput,\n JSONOutput,\n MetadataEntry,\n OutputLocation,\n OutputSerialization,\n ParquetInput,\n ProgressEvent,\n RecordsEvent,\n RequestProgress,\n RestoreRequest,\n S3Location,\n ScanRange,\n SelectObjectContentEventStream,\n SelectParameters,\n StatsEvent,\n} from \"../models/models_1\";\nimport { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from \"@aws-sdk/protocol-http\";\nimport {\n SmithyException as __SmithyException,\n dateToUtcString as __dateToUtcString,\n extendedEncodeURIComponent as __extendedEncodeURIComponent,\n getArrayIfSingleItem as __getArrayIfSingleItem,\n getValueFromTextNode as __getValueFromTextNode,\n} from \"@aws-sdk/smithy-client\";\nimport {\n Endpoint as __Endpoint,\n EventStreamSerdeContext as __EventStreamSerdeContext,\n MetadataBearer as __MetadataBearer,\n ResponseMetadata as __ResponseMetadata,\n SerdeContext as __SerdeContext,\n} from \"@aws-sdk/types\";\nimport { XmlNode as __XmlNode, XmlText as __XmlText } from \"@aws-sdk/xml-builder\";\nimport { parse as xmlParse } from \"fast-xml-parser\";\n\nexport const serializeAws_restXmlAbortMultipartUploadCommand = async (\n input: AbortMultipartUploadCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n \"x-id\": \"AbortMultipartUpload\",\n ...(input.UploadId !== undefined && { uploadId: input.UploadId }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlCompleteMultipartUploadCommand = async (\n input: CompleteMultipartUploadCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n ...(input.UploadId !== undefined && { uploadId: input.UploadId }),\n };\n let body: any;\n let contents: any;\n if (input.MultipartUpload !== undefined) {\n contents = serializeAws_restXmlCompletedMultipartUpload(input.MultipartUpload, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlCopyObjectCommand = async (\n input: CopyObjectCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ACL) && { \"x-amz-acl\": input.ACL! }),\n ...(isSerializableHeaderValue(input.CacheControl) && { \"cache-control\": input.CacheControl! }),\n ...(isSerializableHeaderValue(input.ContentDisposition) && { \"content-disposition\": input.ContentDisposition! }),\n ...(isSerializableHeaderValue(input.ContentEncoding) && { \"content-encoding\": input.ContentEncoding! }),\n ...(isSerializableHeaderValue(input.ContentLanguage) && { \"content-language\": input.ContentLanguage! }),\n ...(isSerializableHeaderValue(input.ContentType) && { \"content-type\": input.ContentType! }),\n ...(isSerializableHeaderValue(input.CopySource) && { \"x-amz-copy-source\": input.CopySource! }),\n ...(isSerializableHeaderValue(input.CopySourceIfMatch) && {\n \"x-amz-copy-source-if-match\": input.CopySourceIfMatch!,\n }),\n ...(isSerializableHeaderValue(input.CopySourceIfModifiedSince) && {\n \"x-amz-copy-source-if-modified-since\": __dateToUtcString(input.CopySourceIfModifiedSince!).toString(),\n }),\n ...(isSerializableHeaderValue(input.CopySourceIfNoneMatch) && {\n \"x-amz-copy-source-if-none-match\": input.CopySourceIfNoneMatch!,\n }),\n ...(isSerializableHeaderValue(input.CopySourceIfUnmodifiedSince) && {\n \"x-amz-copy-source-if-unmodified-since\": __dateToUtcString(input.CopySourceIfUnmodifiedSince!).toString(),\n }),\n ...(isSerializableHeaderValue(input.Expires) && { expires: __dateToUtcString(input.Expires!).toString() }),\n ...(isSerializableHeaderValue(input.GrantFullControl) && { \"x-amz-grant-full-control\": input.GrantFullControl! }),\n ...(isSerializableHeaderValue(input.GrantRead) && { \"x-amz-grant-read\": input.GrantRead! }),\n ...(isSerializableHeaderValue(input.GrantReadACP) && { \"x-amz-grant-read-acp\": input.GrantReadACP! }),\n ...(isSerializableHeaderValue(input.GrantWriteACP) && { \"x-amz-grant-write-acp\": input.GrantWriteACP! }),\n ...(isSerializableHeaderValue(input.MetadataDirective) && { \"x-amz-metadata-directive\": input.MetadataDirective! }),\n ...(isSerializableHeaderValue(input.TaggingDirective) && { \"x-amz-tagging-directive\": input.TaggingDirective! }),\n ...(isSerializableHeaderValue(input.ServerSideEncryption) && {\n \"x-amz-server-side-encryption\": input.ServerSideEncryption!,\n }),\n ...(isSerializableHeaderValue(input.StorageClass) && { \"x-amz-storage-class\": input.StorageClass! }),\n ...(isSerializableHeaderValue(input.WebsiteRedirectLocation) && {\n \"x-amz-website-redirect-location\": input.WebsiteRedirectLocation!,\n }),\n ...(isSerializableHeaderValue(input.SSECustomerAlgorithm) && {\n \"x-amz-server-side-encryption-customer-algorithm\": input.SSECustomerAlgorithm!,\n }),\n ...(isSerializableHeaderValue(input.SSECustomerKey) && {\n \"x-amz-server-side-encryption-customer-key\": input.SSECustomerKey!,\n }),\n ...(isSerializableHeaderValue(input.SSECustomerKeyMD5) && {\n \"x-amz-server-side-encryption-customer-key-md5\": input.SSECustomerKeyMD5!,\n }),\n ...(isSerializableHeaderValue(input.SSEKMSKeyId) && {\n \"x-amz-server-side-encryption-aws-kms-key-id\": input.SSEKMSKeyId!,\n }),\n ...(isSerializableHeaderValue(input.SSEKMSEncryptionContext) && {\n \"x-amz-server-side-encryption-context\": input.SSEKMSEncryptionContext!,\n }),\n ...(isSerializableHeaderValue(input.BucketKeyEnabled) && {\n \"x-amz-server-side-encryption-bucket-key-enabled\": input.BucketKeyEnabled!.toString(),\n }),\n ...(isSerializableHeaderValue(input.CopySourceSSECustomerAlgorithm) && {\n \"x-amz-copy-source-server-side-encryption-customer-algorithm\": input.CopySourceSSECustomerAlgorithm!,\n }),\n ...(isSerializableHeaderValue(input.CopySourceSSECustomerKey) && {\n \"x-amz-copy-source-server-side-encryption-customer-key\": input.CopySourceSSECustomerKey!,\n }),\n ...(isSerializableHeaderValue(input.CopySourceSSECustomerKeyMD5) && {\n \"x-amz-copy-source-server-side-encryption-customer-key-md5\": input.CopySourceSSECustomerKeyMD5!,\n }),\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.Tagging) && { \"x-amz-tagging\": input.Tagging! }),\n ...(isSerializableHeaderValue(input.ObjectLockMode) && { \"x-amz-object-lock-mode\": input.ObjectLockMode! }),\n ...(isSerializableHeaderValue(input.ObjectLockRetainUntilDate) && {\n \"x-amz-object-lock-retain-until-date\": (\n input.ObjectLockRetainUntilDate!.toISOString().split(\".\")[0] + \"Z\"\n ).toString(),\n }),\n ...(isSerializableHeaderValue(input.ObjectLockLegalHoldStatus) && {\n \"x-amz-object-lock-legal-hold\": input.ObjectLockLegalHoldStatus!,\n }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n ...(isSerializableHeaderValue(input.ExpectedSourceBucketOwner) && {\n \"x-amz-source-expected-bucket-owner\": input.ExpectedSourceBucketOwner!,\n }),\n ...(input.Metadata !== undefined &&\n Object.keys(input.Metadata).reduce(\n (acc: any, suffix: string) => ({\n ...acc,\n [`x-amz-meta-${suffix.toLowerCase()}`]: input.Metadata![suffix],\n }),\n {}\n )),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n \"x-id\": \"CopyObject\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlCreateBucketCommand = async (\n input: CreateBucketCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.ACL) && { \"x-amz-acl\": input.ACL! }),\n ...(isSerializableHeaderValue(input.GrantFullControl) && { \"x-amz-grant-full-control\": input.GrantFullControl! }),\n ...(isSerializableHeaderValue(input.GrantRead) && { \"x-amz-grant-read\": input.GrantRead! }),\n ...(isSerializableHeaderValue(input.GrantReadACP) && { \"x-amz-grant-read-acp\": input.GrantReadACP! }),\n ...(isSerializableHeaderValue(input.GrantWrite) && { \"x-amz-grant-write\": input.GrantWrite! }),\n ...(isSerializableHeaderValue(input.GrantWriteACP) && { \"x-amz-grant-write-acp\": input.GrantWriteACP! }),\n ...(isSerializableHeaderValue(input.ObjectLockEnabledForBucket) && {\n \"x-amz-bucket-object-lock-enabled\": input.ObjectLockEnabledForBucket!.toString(),\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n let body: any;\n let contents: any;\n if (input.CreateBucketConfiguration !== undefined) {\n contents = serializeAws_restXmlCreateBucketConfiguration(input.CreateBucketConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restXmlCreateMultipartUploadCommand = async (\n input: CreateMultipartUploadCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ACL) && { \"x-amz-acl\": input.ACL! }),\n ...(isSerializableHeaderValue(input.CacheControl) && { \"cache-control\": input.CacheControl! }),\n ...(isSerializableHeaderValue(input.ContentDisposition) && { \"content-disposition\": input.ContentDisposition! }),\n ...(isSerializableHeaderValue(input.ContentEncoding) && { \"content-encoding\": input.ContentEncoding! }),\n ...(isSerializableHeaderValue(input.ContentLanguage) && { \"content-language\": input.ContentLanguage! }),\n ...(isSerializableHeaderValue(input.ContentType) && { \"content-type\": input.ContentType! }),\n ...(isSerializableHeaderValue(input.Expires) && { expires: __dateToUtcString(input.Expires!).toString() }),\n ...(isSerializableHeaderValue(input.GrantFullControl) && { \"x-amz-grant-full-control\": input.GrantFullControl! }),\n ...(isSerializableHeaderValue(input.GrantRead) && { \"x-amz-grant-read\": input.GrantRead! }),\n ...(isSerializableHeaderValue(input.GrantReadACP) && { \"x-amz-grant-read-acp\": input.GrantReadACP! }),\n ...(isSerializableHeaderValue(input.GrantWriteACP) && { \"x-amz-grant-write-acp\": input.GrantWriteACP! }),\n ...(isSerializableHeaderValue(input.ServerSideEncryption) && {\n \"x-amz-server-side-encryption\": input.ServerSideEncryption!,\n }),\n ...(isSerializableHeaderValue(input.StorageClass) && { \"x-amz-storage-class\": input.StorageClass! }),\n ...(isSerializableHeaderValue(input.WebsiteRedirectLocation) && {\n \"x-amz-website-redirect-location\": input.WebsiteRedirectLocation!,\n }),\n ...(isSerializableHeaderValue(input.SSECustomerAlgorithm) && {\n \"x-amz-server-side-encryption-customer-algorithm\": input.SSECustomerAlgorithm!,\n }),\n ...(isSerializableHeaderValue(input.SSECustomerKey) && {\n \"x-amz-server-side-encryption-customer-key\": input.SSECustomerKey!,\n }),\n ...(isSerializableHeaderValue(input.SSECustomerKeyMD5) && {\n \"x-amz-server-side-encryption-customer-key-md5\": input.SSECustomerKeyMD5!,\n }),\n ...(isSerializableHeaderValue(input.SSEKMSKeyId) && {\n \"x-amz-server-side-encryption-aws-kms-key-id\": input.SSEKMSKeyId!,\n }),\n ...(isSerializableHeaderValue(input.SSEKMSEncryptionContext) && {\n \"x-amz-server-side-encryption-context\": input.SSEKMSEncryptionContext!,\n }),\n ...(isSerializableHeaderValue(input.BucketKeyEnabled) && {\n \"x-amz-server-side-encryption-bucket-key-enabled\": input.BucketKeyEnabled!.toString(),\n }),\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.Tagging) && { \"x-amz-tagging\": input.Tagging! }),\n ...(isSerializableHeaderValue(input.ObjectLockMode) && { \"x-amz-object-lock-mode\": input.ObjectLockMode! }),\n ...(isSerializableHeaderValue(input.ObjectLockRetainUntilDate) && {\n \"x-amz-object-lock-retain-until-date\": (\n input.ObjectLockRetainUntilDate!.toISOString().split(\".\")[0] + \"Z\"\n ).toString(),\n }),\n ...(isSerializableHeaderValue(input.ObjectLockLegalHoldStatus) && {\n \"x-amz-object-lock-legal-hold\": input.ObjectLockLegalHoldStatus!,\n }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n ...(input.Metadata !== undefined &&\n Object.keys(input.Metadata).reduce(\n (acc: any, suffix: string) => ({\n ...acc,\n [`x-amz-meta-${suffix.toLowerCase()}`]: input.Metadata![suffix],\n }),\n {}\n )),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n uploads: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlDeleteBucketCommand = async (\n input: DeleteBucketCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restXmlDeleteBucketAnalyticsConfigurationCommand = async (\n input: DeleteBucketAnalyticsConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n analytics: \"\",\n ...(input.Id !== undefined && { id: input.Id }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlDeleteBucketCorsCommand = async (\n input: DeleteBucketCorsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n cors: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlDeleteBucketEncryptionCommand = async (\n input: DeleteBucketEncryptionCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n encryption: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlDeleteBucketIntelligentTieringConfigurationCommand = async (\n input: DeleteBucketIntelligentTieringConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n \"intelligent-tiering\": \"\",\n ...(input.Id !== undefined && { id: input.Id }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlDeleteBucketInventoryConfigurationCommand = async (\n input: DeleteBucketInventoryConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n inventory: \"\",\n ...(input.Id !== undefined && { id: input.Id }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlDeleteBucketLifecycleCommand = async (\n input: DeleteBucketLifecycleCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n lifecycle: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlDeleteBucketMetricsConfigurationCommand = async (\n input: DeleteBucketMetricsConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n metrics: \"\",\n ...(input.Id !== undefined && { id: input.Id }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlDeleteBucketOwnershipControlsCommand = async (\n input: DeleteBucketOwnershipControlsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n ownershipControls: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlDeleteBucketPolicyCommand = async (\n input: DeleteBucketPolicyCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n policy: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlDeleteBucketReplicationCommand = async (\n input: DeleteBucketReplicationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n replication: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlDeleteBucketTaggingCommand = async (\n input: DeleteBucketTaggingCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n tagging: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlDeleteBucketWebsiteCommand = async (\n input: DeleteBucketWebsiteCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n website: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlDeleteObjectCommand = async (\n input: DeleteObjectCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.MFA) && { \"x-amz-mfa\": input.MFA! }),\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.BypassGovernanceRetention) && {\n \"x-amz-bypass-governance-retention\": input.BypassGovernanceRetention!.toString(),\n }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n \"x-id\": \"DeleteObject\",\n ...(input.VersionId !== undefined && { versionId: input.VersionId }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlDeleteObjectsCommand = async (\n input: DeleteObjectsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.MFA) && { \"x-amz-mfa\": input.MFA! }),\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.BypassGovernanceRetention) && {\n \"x-amz-bypass-governance-retention\": input.BypassGovernanceRetention!.toString(),\n }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n delete: \"\",\n };\n let body: any;\n let contents: any;\n if (input.Delete !== undefined) {\n contents = serializeAws_restXmlDelete(input.Delete, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlDeleteObjectTaggingCommand = async (\n input: DeleteObjectTaggingCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n tagging: \"\",\n ...(input.VersionId !== undefined && { versionId: input.VersionId }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlDeletePublicAccessBlockCommand = async (\n input: DeletePublicAccessBlockCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n publicAccessBlock: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"DELETE\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetBucketAccelerateConfigurationCommand = async (\n input: GetBucketAccelerateConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n accelerate: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetBucketAclCommand = async (\n input: GetBucketAclCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n acl: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetBucketAnalyticsConfigurationCommand = async (\n input: GetBucketAnalyticsConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n analytics: \"\",\n \"x-id\": \"GetBucketAnalyticsConfiguration\",\n ...(input.Id !== undefined && { id: input.Id }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetBucketCorsCommand = async (\n input: GetBucketCorsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n cors: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetBucketEncryptionCommand = async (\n input: GetBucketEncryptionCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n encryption: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetBucketIntelligentTieringConfigurationCommand = async (\n input: GetBucketIntelligentTieringConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n \"intelligent-tiering\": \"\",\n \"x-id\": \"GetBucketIntelligentTieringConfiguration\",\n ...(input.Id !== undefined && { id: input.Id }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetBucketInventoryConfigurationCommand = async (\n input: GetBucketInventoryConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n inventory: \"\",\n \"x-id\": \"GetBucketInventoryConfiguration\",\n ...(input.Id !== undefined && { id: input.Id }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetBucketLifecycleConfigurationCommand = async (\n input: GetBucketLifecycleConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n lifecycle: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetBucketLocationCommand = async (\n input: GetBucketLocationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n location: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetBucketLoggingCommand = async (\n input: GetBucketLoggingCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n logging: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetBucketMetricsConfigurationCommand = async (\n input: GetBucketMetricsConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n metrics: \"\",\n \"x-id\": \"GetBucketMetricsConfiguration\",\n ...(input.Id !== undefined && { id: input.Id }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetBucketNotificationConfigurationCommand = async (\n input: GetBucketNotificationConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n notification: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetBucketOwnershipControlsCommand = async (\n input: GetBucketOwnershipControlsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n ownershipControls: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetBucketPolicyCommand = async (\n input: GetBucketPolicyCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n policy: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetBucketPolicyStatusCommand = async (\n input: GetBucketPolicyStatusCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n policyStatus: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetBucketReplicationCommand = async (\n input: GetBucketReplicationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n replication: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetBucketRequestPaymentCommand = async (\n input: GetBucketRequestPaymentCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n requestPayment: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetBucketTaggingCommand = async (\n input: GetBucketTaggingCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n tagging: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetBucketVersioningCommand = async (\n input: GetBucketVersioningCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n versioning: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetBucketWebsiteCommand = async (\n input: GetBucketWebsiteCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n website: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetObjectCommand = async (\n input: GetObjectCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.IfMatch) && { \"if-match\": input.IfMatch! }),\n ...(isSerializableHeaderValue(input.IfModifiedSince) && {\n \"if-modified-since\": __dateToUtcString(input.IfModifiedSince!).toString(),\n }),\n ...(isSerializableHeaderValue(input.IfNoneMatch) && { \"if-none-match\": input.IfNoneMatch! }),\n ...(isSerializableHeaderValue(input.IfUnmodifiedSince) && {\n \"if-unmodified-since\": __dateToUtcString(input.IfUnmodifiedSince!).toString(),\n }),\n ...(isSerializableHeaderValue(input.Range) && { range: input.Range! }),\n ...(isSerializableHeaderValue(input.SSECustomerAlgorithm) && {\n \"x-amz-server-side-encryption-customer-algorithm\": input.SSECustomerAlgorithm!,\n }),\n ...(isSerializableHeaderValue(input.SSECustomerKey) && {\n \"x-amz-server-side-encryption-customer-key\": input.SSECustomerKey!,\n }),\n ...(isSerializableHeaderValue(input.SSECustomerKeyMD5) && {\n \"x-amz-server-side-encryption-customer-key-md5\": input.SSECustomerKeyMD5!,\n }),\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n \"x-id\": \"GetObject\",\n ...(input.ResponseCacheControl !== undefined && { \"response-cache-control\": input.ResponseCacheControl }),\n ...(input.ResponseContentDisposition !== undefined && {\n \"response-content-disposition\": input.ResponseContentDisposition,\n }),\n ...(input.ResponseContentEncoding !== undefined && { \"response-content-encoding\": input.ResponseContentEncoding }),\n ...(input.ResponseContentLanguage !== undefined && { \"response-content-language\": input.ResponseContentLanguage }),\n ...(input.ResponseContentType !== undefined && { \"response-content-type\": input.ResponseContentType }),\n ...(input.ResponseExpires !== undefined && {\n \"response-expires\": (input.ResponseExpires.toISOString().split(\".\")[0] + \"Z\").toString(),\n }),\n ...(input.VersionId !== undefined && { versionId: input.VersionId }),\n ...(input.PartNumber !== undefined && { partNumber: input.PartNumber.toString() }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetObjectAclCommand = async (\n input: GetObjectAclCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n acl: \"\",\n ...(input.VersionId !== undefined && { versionId: input.VersionId }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetObjectLegalHoldCommand = async (\n input: GetObjectLegalHoldCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n \"legal-hold\": \"\",\n ...(input.VersionId !== undefined && { versionId: input.VersionId }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetObjectLockConfigurationCommand = async (\n input: GetObjectLockConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n \"object-lock\": \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetObjectRetentionCommand = async (\n input: GetObjectRetentionCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n retention: \"\",\n ...(input.VersionId !== undefined && { versionId: input.VersionId }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetObjectTaggingCommand = async (\n input: GetObjectTaggingCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n tagging: \"\",\n ...(input.VersionId !== undefined && { versionId: input.VersionId }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetObjectTorrentCommand = async (\n input: GetObjectTorrentCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n torrent: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlGetPublicAccessBlockCommand = async (\n input: GetPublicAccessBlockCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n publicAccessBlock: \"\",\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlHeadBucketCommand = async (\n input: HeadBucketCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"HEAD\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restXmlHeadObjectCommand = async (\n input: HeadObjectCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.IfMatch) && { \"if-match\": input.IfMatch! }),\n ...(isSerializableHeaderValue(input.IfModifiedSince) && {\n \"if-modified-since\": __dateToUtcString(input.IfModifiedSince!).toString(),\n }),\n ...(isSerializableHeaderValue(input.IfNoneMatch) && { \"if-none-match\": input.IfNoneMatch! }),\n ...(isSerializableHeaderValue(input.IfUnmodifiedSince) && {\n \"if-unmodified-since\": __dateToUtcString(input.IfUnmodifiedSince!).toString(),\n }),\n ...(isSerializableHeaderValue(input.Range) && { range: input.Range! }),\n ...(isSerializableHeaderValue(input.SSECustomerAlgorithm) && {\n \"x-amz-server-side-encryption-customer-algorithm\": input.SSECustomerAlgorithm!,\n }),\n ...(isSerializableHeaderValue(input.SSECustomerKey) && {\n \"x-amz-server-side-encryption-customer-key\": input.SSECustomerKey!,\n }),\n ...(isSerializableHeaderValue(input.SSECustomerKeyMD5) && {\n \"x-amz-server-side-encryption-customer-key-md5\": input.SSECustomerKeyMD5!,\n }),\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n ...(input.VersionId !== undefined && { versionId: input.VersionId }),\n ...(input.PartNumber !== undefined && { partNumber: input.PartNumber.toString() }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"HEAD\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlListBucketAnalyticsConfigurationsCommand = async (\n input: ListBucketAnalyticsConfigurationsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n analytics: \"\",\n \"x-id\": \"ListBucketAnalyticsConfigurations\",\n ...(input.ContinuationToken !== undefined && { \"continuation-token\": input.ContinuationToken }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlListBucketIntelligentTieringConfigurationsCommand = async (\n input: ListBucketIntelligentTieringConfigurationsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n \"intelligent-tiering\": \"\",\n \"x-id\": \"ListBucketIntelligentTieringConfigurations\",\n ...(input.ContinuationToken !== undefined && { \"continuation-token\": input.ContinuationToken }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlListBucketInventoryConfigurationsCommand = async (\n input: ListBucketInventoryConfigurationsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n inventory: \"\",\n \"x-id\": \"ListBucketInventoryConfigurations\",\n ...(input.ContinuationToken !== undefined && { \"continuation-token\": input.ContinuationToken }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlListBucketMetricsConfigurationsCommand = async (\n input: ListBucketMetricsConfigurationsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n metrics: \"\",\n \"x-id\": \"ListBucketMetricsConfigurations\",\n ...(input.ContinuationToken !== undefined && { \"continuation-token\": input.ContinuationToken }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlListBucketsCommand = async (\n input: ListBucketsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {};\n let resolvedPath = \"/\";\n let body: any;\n body = \"\";\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n body,\n });\n};\n\nexport const serializeAws_restXmlListMultipartUploadsCommand = async (\n input: ListMultipartUploadsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n uploads: \"\",\n ...(input.Delimiter !== undefined && { delimiter: input.Delimiter }),\n ...(input.EncodingType !== undefined && { \"encoding-type\": input.EncodingType }),\n ...(input.KeyMarker !== undefined && { \"key-marker\": input.KeyMarker }),\n ...(input.MaxUploads !== undefined && { \"max-uploads\": input.MaxUploads.toString() }),\n ...(input.Prefix !== undefined && { prefix: input.Prefix }),\n ...(input.UploadIdMarker !== undefined && { \"upload-id-marker\": input.UploadIdMarker }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlListObjectsCommand = async (\n input: ListObjectsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n ...(input.Delimiter !== undefined && { delimiter: input.Delimiter }),\n ...(input.EncodingType !== undefined && { \"encoding-type\": input.EncodingType }),\n ...(input.Marker !== undefined && { marker: input.Marker }),\n ...(input.MaxKeys !== undefined && { \"max-keys\": input.MaxKeys.toString() }),\n ...(input.Prefix !== undefined && { prefix: input.Prefix }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlListObjectsV2Command = async (\n input: ListObjectsV2CommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n \"list-type\": \"2\",\n ...(input.Delimiter !== undefined && { delimiter: input.Delimiter }),\n ...(input.EncodingType !== undefined && { \"encoding-type\": input.EncodingType }),\n ...(input.MaxKeys !== undefined && { \"max-keys\": input.MaxKeys.toString() }),\n ...(input.Prefix !== undefined && { prefix: input.Prefix }),\n ...(input.ContinuationToken !== undefined && { \"continuation-token\": input.ContinuationToken }),\n ...(input.FetchOwner !== undefined && { \"fetch-owner\": input.FetchOwner.toString() }),\n ...(input.StartAfter !== undefined && { \"start-after\": input.StartAfter }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlListObjectVersionsCommand = async (\n input: ListObjectVersionsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n versions: \"\",\n ...(input.Delimiter !== undefined && { delimiter: input.Delimiter }),\n ...(input.EncodingType !== undefined && { \"encoding-type\": input.EncodingType }),\n ...(input.KeyMarker !== undefined && { \"key-marker\": input.KeyMarker }),\n ...(input.MaxKeys !== undefined && { \"max-keys\": input.MaxKeys.toString() }),\n ...(input.Prefix !== undefined && { prefix: input.Prefix }),\n ...(input.VersionIdMarker !== undefined && { \"version-id-marker\": input.VersionIdMarker }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlListPartsCommand = async (\n input: ListPartsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n \"x-id\": \"ListParts\",\n ...(input.MaxParts !== undefined && { \"max-parts\": input.MaxParts.toString() }),\n ...(input.PartNumberMarker !== undefined && { \"part-number-marker\": input.PartNumberMarker }),\n ...(input.UploadId !== undefined && { uploadId: input.UploadId }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutBucketAccelerateConfigurationCommand = async (\n input: PutBucketAccelerateConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n accelerate: \"\",\n };\n let body: any;\n let contents: any;\n if (input.AccelerateConfiguration !== undefined) {\n contents = serializeAws_restXmlAccelerateConfiguration(input.AccelerateConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutBucketAclCommand = async (\n input: PutBucketAclCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.ACL) && { \"x-amz-acl\": input.ACL! }),\n ...(isSerializableHeaderValue(input.ContentMD5) && { \"content-md5\": input.ContentMD5! }),\n ...(isSerializableHeaderValue(input.GrantFullControl) && { \"x-amz-grant-full-control\": input.GrantFullControl! }),\n ...(isSerializableHeaderValue(input.GrantRead) && { \"x-amz-grant-read\": input.GrantRead! }),\n ...(isSerializableHeaderValue(input.GrantReadACP) && { \"x-amz-grant-read-acp\": input.GrantReadACP! }),\n ...(isSerializableHeaderValue(input.GrantWrite) && { \"x-amz-grant-write\": input.GrantWrite! }),\n ...(isSerializableHeaderValue(input.GrantWriteACP) && { \"x-amz-grant-write-acp\": input.GrantWriteACP! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n acl: \"\",\n };\n let body: any;\n let contents: any;\n if (input.AccessControlPolicy !== undefined) {\n contents = serializeAws_restXmlAccessControlPolicy(input.AccessControlPolicy, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutBucketAnalyticsConfigurationCommand = async (\n input: PutBucketAnalyticsConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n analytics: \"\",\n ...(input.Id !== undefined && { id: input.Id }),\n };\n let body: any;\n let contents: any;\n if (input.AnalyticsConfiguration !== undefined) {\n contents = serializeAws_restXmlAnalyticsConfiguration(input.AnalyticsConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutBucketCorsCommand = async (\n input: PutBucketCorsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.ContentMD5) && { \"content-md5\": input.ContentMD5! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n cors: \"\",\n };\n let body: any;\n let contents: any;\n if (input.CORSConfiguration !== undefined) {\n contents = serializeAws_restXmlCORSConfiguration(input.CORSConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutBucketEncryptionCommand = async (\n input: PutBucketEncryptionCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.ContentMD5) && { \"content-md5\": input.ContentMD5! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n encryption: \"\",\n };\n let body: any;\n let contents: any;\n if (input.ServerSideEncryptionConfiguration !== undefined) {\n contents = serializeAws_restXmlServerSideEncryptionConfiguration(input.ServerSideEncryptionConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutBucketIntelligentTieringConfigurationCommand = async (\n input: PutBucketIntelligentTieringConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n \"intelligent-tiering\": \"\",\n ...(input.Id !== undefined && { id: input.Id }),\n };\n let body: any;\n let contents: any;\n if (input.IntelligentTieringConfiguration !== undefined) {\n contents = serializeAws_restXmlIntelligentTieringConfiguration(input.IntelligentTieringConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutBucketInventoryConfigurationCommand = async (\n input: PutBucketInventoryConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n inventory: \"\",\n ...(input.Id !== undefined && { id: input.Id }),\n };\n let body: any;\n let contents: any;\n if (input.InventoryConfiguration !== undefined) {\n contents = serializeAws_restXmlInventoryConfiguration(input.InventoryConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutBucketLifecycleConfigurationCommand = async (\n input: PutBucketLifecycleConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n lifecycle: \"\",\n };\n let body: any;\n let contents: any;\n if (input.LifecycleConfiguration !== undefined) {\n contents = serializeAws_restXmlBucketLifecycleConfiguration(input.LifecycleConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutBucketLoggingCommand = async (\n input: PutBucketLoggingCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.ContentMD5) && { \"content-md5\": input.ContentMD5! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n logging: \"\",\n };\n let body: any;\n let contents: any;\n if (input.BucketLoggingStatus !== undefined) {\n contents = serializeAws_restXmlBucketLoggingStatus(input.BucketLoggingStatus, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutBucketMetricsConfigurationCommand = async (\n input: PutBucketMetricsConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n metrics: \"\",\n ...(input.Id !== undefined && { id: input.Id }),\n };\n let body: any;\n let contents: any;\n if (input.MetricsConfiguration !== undefined) {\n contents = serializeAws_restXmlMetricsConfiguration(input.MetricsConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutBucketNotificationConfigurationCommand = async (\n input: PutBucketNotificationConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n notification: \"\",\n };\n let body: any;\n let contents: any;\n if (input.NotificationConfiguration !== undefined) {\n contents = serializeAws_restXmlNotificationConfiguration(input.NotificationConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutBucketOwnershipControlsCommand = async (\n input: PutBucketOwnershipControlsCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.ContentMD5) && { \"content-md5\": input.ContentMD5! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n ownershipControls: \"\",\n };\n let body: any;\n let contents: any;\n if (input.OwnershipControls !== undefined) {\n contents = serializeAws_restXmlOwnershipControls(input.OwnershipControls, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutBucketPolicyCommand = async (\n input: PutBucketPolicyCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"text/plain\",\n ...(isSerializableHeaderValue(input.ContentMD5) && { \"content-md5\": input.ContentMD5! }),\n ...(isSerializableHeaderValue(input.ConfirmRemoveSelfBucketAccess) && {\n \"x-amz-confirm-remove-self-bucket-access\": input.ConfirmRemoveSelfBucketAccess!.toString(),\n }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n policy: \"\",\n };\n let body: any;\n let contents: any;\n if (input.Policy !== undefined) {\n contents = input.Policy;\n body = contents;\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutBucketReplicationCommand = async (\n input: PutBucketReplicationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.ContentMD5) && { \"content-md5\": input.ContentMD5! }),\n ...(isSerializableHeaderValue(input.Token) && { \"x-amz-bucket-object-lock-token\": input.Token! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n replication: \"\",\n };\n let body: any;\n let contents: any;\n if (input.ReplicationConfiguration !== undefined) {\n contents = serializeAws_restXmlReplicationConfiguration(input.ReplicationConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutBucketRequestPaymentCommand = async (\n input: PutBucketRequestPaymentCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.ContentMD5) && { \"content-md5\": input.ContentMD5! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n requestPayment: \"\",\n };\n let body: any;\n let contents: any;\n if (input.RequestPaymentConfiguration !== undefined) {\n contents = serializeAws_restXmlRequestPaymentConfiguration(input.RequestPaymentConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutBucketTaggingCommand = async (\n input: PutBucketTaggingCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.ContentMD5) && { \"content-md5\": input.ContentMD5! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n tagging: \"\",\n };\n let body: any;\n let contents: any;\n if (input.Tagging !== undefined) {\n contents = serializeAws_restXmlTagging(input.Tagging, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutBucketVersioningCommand = async (\n input: PutBucketVersioningCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.ContentMD5) && { \"content-md5\": input.ContentMD5! }),\n ...(isSerializableHeaderValue(input.MFA) && { \"x-amz-mfa\": input.MFA! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n versioning: \"\",\n };\n let body: any;\n let contents: any;\n if (input.VersioningConfiguration !== undefined) {\n contents = serializeAws_restXmlVersioningConfiguration(input.VersioningConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutBucketWebsiteCommand = async (\n input: PutBucketWebsiteCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.ContentMD5) && { \"content-md5\": input.ContentMD5! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n website: \"\",\n };\n let body: any;\n let contents: any;\n if (input.WebsiteConfiguration !== undefined) {\n contents = serializeAws_restXmlWebsiteConfiguration(input.WebsiteConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutObjectCommand = async (\n input: PutObjectCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/octet-stream\",\n ...(isSerializableHeaderValue(input.ACL) && { \"x-amz-acl\": input.ACL! }),\n ...(isSerializableHeaderValue(input.CacheControl) && { \"cache-control\": input.CacheControl! }),\n ...(isSerializableHeaderValue(input.ContentDisposition) && { \"content-disposition\": input.ContentDisposition! }),\n ...(isSerializableHeaderValue(input.ContentEncoding) && { \"content-encoding\": input.ContentEncoding! }),\n ...(isSerializableHeaderValue(input.ContentLanguage) && { \"content-language\": input.ContentLanguage! }),\n ...(isSerializableHeaderValue(input.ContentLength) && { \"content-length\": input.ContentLength!.toString() }),\n ...(isSerializableHeaderValue(input.ContentMD5) && { \"content-md5\": input.ContentMD5! }),\n ...(isSerializableHeaderValue(input.ContentType) && { \"content-type\": input.ContentType! }),\n ...(isSerializableHeaderValue(input.Expires) && { expires: __dateToUtcString(input.Expires!).toString() }),\n ...(isSerializableHeaderValue(input.GrantFullControl) && { \"x-amz-grant-full-control\": input.GrantFullControl! }),\n ...(isSerializableHeaderValue(input.GrantRead) && { \"x-amz-grant-read\": input.GrantRead! }),\n ...(isSerializableHeaderValue(input.GrantReadACP) && { \"x-amz-grant-read-acp\": input.GrantReadACP! }),\n ...(isSerializableHeaderValue(input.GrantWriteACP) && { \"x-amz-grant-write-acp\": input.GrantWriteACP! }),\n ...(isSerializableHeaderValue(input.ServerSideEncryption) && {\n \"x-amz-server-side-encryption\": input.ServerSideEncryption!,\n }),\n ...(isSerializableHeaderValue(input.StorageClass) && { \"x-amz-storage-class\": input.StorageClass! }),\n ...(isSerializableHeaderValue(input.WebsiteRedirectLocation) && {\n \"x-amz-website-redirect-location\": input.WebsiteRedirectLocation!,\n }),\n ...(isSerializableHeaderValue(input.SSECustomerAlgorithm) && {\n \"x-amz-server-side-encryption-customer-algorithm\": input.SSECustomerAlgorithm!,\n }),\n ...(isSerializableHeaderValue(input.SSECustomerKey) && {\n \"x-amz-server-side-encryption-customer-key\": input.SSECustomerKey!,\n }),\n ...(isSerializableHeaderValue(input.SSECustomerKeyMD5) && {\n \"x-amz-server-side-encryption-customer-key-md5\": input.SSECustomerKeyMD5!,\n }),\n ...(isSerializableHeaderValue(input.SSEKMSKeyId) && {\n \"x-amz-server-side-encryption-aws-kms-key-id\": input.SSEKMSKeyId!,\n }),\n ...(isSerializableHeaderValue(input.SSEKMSEncryptionContext) && {\n \"x-amz-server-side-encryption-context\": input.SSEKMSEncryptionContext!,\n }),\n ...(isSerializableHeaderValue(input.BucketKeyEnabled) && {\n \"x-amz-server-side-encryption-bucket-key-enabled\": input.BucketKeyEnabled!.toString(),\n }),\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.Tagging) && { \"x-amz-tagging\": input.Tagging! }),\n ...(isSerializableHeaderValue(input.ObjectLockMode) && { \"x-amz-object-lock-mode\": input.ObjectLockMode! }),\n ...(isSerializableHeaderValue(input.ObjectLockRetainUntilDate) && {\n \"x-amz-object-lock-retain-until-date\": (\n input.ObjectLockRetainUntilDate!.toISOString().split(\".\")[0] + \"Z\"\n ).toString(),\n }),\n ...(isSerializableHeaderValue(input.ObjectLockLegalHoldStatus) && {\n \"x-amz-object-lock-legal-hold\": input.ObjectLockLegalHoldStatus!,\n }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n ...(input.Metadata !== undefined &&\n Object.keys(input.Metadata).reduce(\n (acc: any, suffix: string) => ({\n ...acc,\n [`x-amz-meta-${suffix.toLowerCase()}`]: input.Metadata![suffix],\n }),\n {}\n )),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n \"x-id\": \"PutObject\",\n };\n let body: any;\n let contents: any;\n if (input.Body !== undefined) {\n contents = input.Body;\n body = contents;\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutObjectAclCommand = async (\n input: PutObjectAclCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.ACL) && { \"x-amz-acl\": input.ACL! }),\n ...(isSerializableHeaderValue(input.ContentMD5) && { \"content-md5\": input.ContentMD5! }),\n ...(isSerializableHeaderValue(input.GrantFullControl) && { \"x-amz-grant-full-control\": input.GrantFullControl! }),\n ...(isSerializableHeaderValue(input.GrantRead) && { \"x-amz-grant-read\": input.GrantRead! }),\n ...(isSerializableHeaderValue(input.GrantReadACP) && { \"x-amz-grant-read-acp\": input.GrantReadACP! }),\n ...(isSerializableHeaderValue(input.GrantWrite) && { \"x-amz-grant-write\": input.GrantWrite! }),\n ...(isSerializableHeaderValue(input.GrantWriteACP) && { \"x-amz-grant-write-acp\": input.GrantWriteACP! }),\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n acl: \"\",\n ...(input.VersionId !== undefined && { versionId: input.VersionId }),\n };\n let body: any;\n let contents: any;\n if (input.AccessControlPolicy !== undefined) {\n contents = serializeAws_restXmlAccessControlPolicy(input.AccessControlPolicy, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutObjectLegalHoldCommand = async (\n input: PutObjectLegalHoldCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.ContentMD5) && { \"content-md5\": input.ContentMD5! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n \"legal-hold\": \"\",\n ...(input.VersionId !== undefined && { versionId: input.VersionId }),\n };\n let body: any;\n let contents: any;\n if (input.LegalHold !== undefined) {\n contents = serializeAws_restXmlObjectLockLegalHold(input.LegalHold, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutObjectLockConfigurationCommand = async (\n input: PutObjectLockConfigurationCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.Token) && { \"x-amz-bucket-object-lock-token\": input.Token! }),\n ...(isSerializableHeaderValue(input.ContentMD5) && { \"content-md5\": input.ContentMD5! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n \"object-lock\": \"\",\n };\n let body: any;\n let contents: any;\n if (input.ObjectLockConfiguration !== undefined) {\n contents = serializeAws_restXmlObjectLockConfiguration(input.ObjectLockConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutObjectRetentionCommand = async (\n input: PutObjectRetentionCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.BypassGovernanceRetention) && {\n \"x-amz-bypass-governance-retention\": input.BypassGovernanceRetention!.toString(),\n }),\n ...(isSerializableHeaderValue(input.ContentMD5) && { \"content-md5\": input.ContentMD5! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n retention: \"\",\n ...(input.VersionId !== undefined && { versionId: input.VersionId }),\n };\n let body: any;\n let contents: any;\n if (input.Retention !== undefined) {\n contents = serializeAws_restXmlObjectLockRetention(input.Retention, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutObjectTaggingCommand = async (\n input: PutObjectTaggingCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.ContentMD5) && { \"content-md5\": input.ContentMD5! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n tagging: \"\",\n ...(input.VersionId !== undefined && { versionId: input.VersionId }),\n };\n let body: any;\n let contents: any;\n if (input.Tagging !== undefined) {\n contents = serializeAws_restXmlTagging(input.Tagging, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlPutPublicAccessBlockCommand = async (\n input: PutPublicAccessBlockCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.ContentMD5) && { \"content-md5\": input.ContentMD5! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n const query: any = {\n publicAccessBlock: \"\",\n };\n let body: any;\n let contents: any;\n if (input.PublicAccessBlockConfiguration !== undefined) {\n contents = serializeAws_restXmlPublicAccessBlockConfiguration(input.PublicAccessBlockConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlRestoreObjectCommand = async (\n input: RestoreObjectCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n restore: \"\",\n ...(input.VersionId !== undefined && { versionId: input.VersionId }),\n };\n let body: any;\n let contents: any;\n if (input.RestoreRequest !== undefined) {\n contents = serializeAws_restXmlRestoreRequest(input.RestoreRequest, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlSelectObjectContentCommand = async (\n input: SelectObjectContentCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/xml\",\n ...(isSerializableHeaderValue(input.SSECustomerAlgorithm) && {\n \"x-amz-server-side-encryption-customer-algorithm\": input.SSECustomerAlgorithm!,\n }),\n ...(isSerializableHeaderValue(input.SSECustomerKey) && {\n \"x-amz-server-side-encryption-customer-key\": input.SSECustomerKey!,\n }),\n ...(isSerializableHeaderValue(input.SSECustomerKeyMD5) && {\n \"x-amz-server-side-encryption-customer-key-md5\": input.SSECustomerKeyMD5!,\n }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n select: \"\",\n \"select-type\": \"2\",\n };\n let body: any;\n body = '';\n const bodyNode = new __XmlNode(\"SelectObjectContentRequest\");\n bodyNode.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n if (input.Expression !== undefined) {\n const node = new __XmlNode(\"Expression\").addChildNode(new __XmlText(input.Expression)).withName(\"Expression\");\n bodyNode.addChildNode(node);\n }\n if (input.ExpressionType !== undefined) {\n const node = new __XmlNode(\"ExpressionType\")\n .addChildNode(new __XmlText(input.ExpressionType))\n .withName(\"ExpressionType\");\n bodyNode.addChildNode(node);\n }\n if (input.InputSerialization !== undefined) {\n const node = serializeAws_restXmlInputSerialization(input.InputSerialization, context).withName(\n \"InputSerialization\"\n );\n bodyNode.addChildNode(node);\n }\n if (input.OutputSerialization !== undefined) {\n const node = serializeAws_restXmlOutputSerialization(input.OutputSerialization, context).withName(\n \"OutputSerialization\"\n );\n bodyNode.addChildNode(node);\n }\n if (input.RequestProgress !== undefined) {\n const node = serializeAws_restXmlRequestProgress(input.RequestProgress, context).withName(\"RequestProgress\");\n bodyNode.addChildNode(node);\n }\n if (input.ScanRange !== undefined) {\n const node = serializeAws_restXmlScanRange(input.ScanRange, context).withName(\"ScanRange\");\n bodyNode.addChildNode(node);\n }\n body += bodyNode.toString();\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlUploadPartCommand = async (\n input: UploadPartCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n \"content-type\": \"application/octet-stream\",\n ...(isSerializableHeaderValue(input.ContentLength) && { \"content-length\": input.ContentLength!.toString() }),\n ...(isSerializableHeaderValue(input.ContentMD5) && { \"content-md5\": input.ContentMD5! }),\n ...(isSerializableHeaderValue(input.SSECustomerAlgorithm) && {\n \"x-amz-server-side-encryption-customer-algorithm\": input.SSECustomerAlgorithm!,\n }),\n ...(isSerializableHeaderValue(input.SSECustomerKey) && {\n \"x-amz-server-side-encryption-customer-key\": input.SSECustomerKey!,\n }),\n ...(isSerializableHeaderValue(input.SSECustomerKeyMD5) && {\n \"x-amz-server-side-encryption-customer-key-md5\": input.SSECustomerKeyMD5!,\n }),\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n \"x-id\": \"UploadPart\",\n ...(input.PartNumber !== undefined && { partNumber: input.PartNumber.toString() }),\n ...(input.UploadId !== undefined && { uploadId: input.UploadId }),\n };\n let body: any;\n let contents: any;\n if (input.Body !== undefined) {\n contents = input.Body;\n body = contents;\n }\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const serializeAws_restXmlUploadPartCopyCommand = async (\n input: UploadPartCopyCommandInput,\n context: __SerdeContext\n): Promise<__HttpRequest> => {\n const headers: any = {\n ...(isSerializableHeaderValue(input.CopySource) && { \"x-amz-copy-source\": input.CopySource! }),\n ...(isSerializableHeaderValue(input.CopySourceIfMatch) && {\n \"x-amz-copy-source-if-match\": input.CopySourceIfMatch!,\n }),\n ...(isSerializableHeaderValue(input.CopySourceIfModifiedSince) && {\n \"x-amz-copy-source-if-modified-since\": __dateToUtcString(input.CopySourceIfModifiedSince!).toString(),\n }),\n ...(isSerializableHeaderValue(input.CopySourceIfNoneMatch) && {\n \"x-amz-copy-source-if-none-match\": input.CopySourceIfNoneMatch!,\n }),\n ...(isSerializableHeaderValue(input.CopySourceIfUnmodifiedSince) && {\n \"x-amz-copy-source-if-unmodified-since\": __dateToUtcString(input.CopySourceIfUnmodifiedSince!).toString(),\n }),\n ...(isSerializableHeaderValue(input.CopySourceRange) && { \"x-amz-copy-source-range\": input.CopySourceRange! }),\n ...(isSerializableHeaderValue(input.SSECustomerAlgorithm) && {\n \"x-amz-server-side-encryption-customer-algorithm\": input.SSECustomerAlgorithm!,\n }),\n ...(isSerializableHeaderValue(input.SSECustomerKey) && {\n \"x-amz-server-side-encryption-customer-key\": input.SSECustomerKey!,\n }),\n ...(isSerializableHeaderValue(input.SSECustomerKeyMD5) && {\n \"x-amz-server-side-encryption-customer-key-md5\": input.SSECustomerKeyMD5!,\n }),\n ...(isSerializableHeaderValue(input.CopySourceSSECustomerAlgorithm) && {\n \"x-amz-copy-source-server-side-encryption-customer-algorithm\": input.CopySourceSSECustomerAlgorithm!,\n }),\n ...(isSerializableHeaderValue(input.CopySourceSSECustomerKey) && {\n \"x-amz-copy-source-server-side-encryption-customer-key\": input.CopySourceSSECustomerKey!,\n }),\n ...(isSerializableHeaderValue(input.CopySourceSSECustomerKeyMD5) && {\n \"x-amz-copy-source-server-side-encryption-customer-key-md5\": input.CopySourceSSECustomerKeyMD5!,\n }),\n ...(isSerializableHeaderValue(input.RequestPayer) && { \"x-amz-request-payer\": input.RequestPayer! }),\n ...(isSerializableHeaderValue(input.ExpectedBucketOwner) && {\n \"x-amz-expected-bucket-owner\": input.ExpectedBucketOwner!,\n }),\n ...(isSerializableHeaderValue(input.ExpectedSourceBucketOwner) && {\n \"x-amz-source-expected-bucket-owner\": input.ExpectedSourceBucketOwner!,\n }),\n };\n let resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n const labelValue: string = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n } else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n const labelValue: string = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\n \"{Key+}\",\n labelValue\n .split(\"/\")\n .map((segment) => __extendedEncodeURIComponent(segment))\n .join(\"/\")\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n const query: any = {\n \"x-id\": \"UploadPartCopy\",\n ...(input.PartNumber !== undefined && { partNumber: input.PartNumber.toString() }),\n ...(input.UploadId !== undefined && { uploadId: input.UploadId }),\n };\n let body: any;\n const { hostname, protocol = \"https\", port } = await context.endpoint();\n return new __HttpRequest({\n protocol,\n hostname,\n port,\n method: \"PUT\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\n\nexport const deserializeAws_restXmlAbortMultipartUploadCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return deserializeAws_restXmlAbortMultipartUploadCommandError(output, context);\n }\n const contents: AbortMultipartUploadCommandOutput = {\n $metadata: deserializeMetadata(output),\n RequestCharged: undefined,\n };\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlAbortMultipartUploadCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"NoSuchUpload\":\n case \"com.amazonaws.s3#NoSuchUpload\":\n response = {\n ...(await deserializeAws_restXmlNoSuchUploadResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlCompleteMultipartUploadCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlCompleteMultipartUploadCommandError(output, context);\n }\n const contents: CompleteMultipartUploadCommandOutput = {\n $metadata: deserializeMetadata(output),\n Bucket: undefined,\n BucketKeyEnabled: undefined,\n ETag: undefined,\n Expiration: undefined,\n Key: undefined,\n Location: undefined,\n RequestCharged: undefined,\n SSEKMSKeyId: undefined,\n ServerSideEncryption: undefined,\n VersionId: undefined,\n };\n if (output.headers[\"x-amz-expiration\"] !== undefined) {\n contents.Expiration = output.headers[\"x-amz-expiration\"];\n }\n if (output.headers[\"x-amz-server-side-encryption\"] !== undefined) {\n contents.ServerSideEncryption = output.headers[\"x-amz-server-side-encryption\"];\n }\n if (output.headers[\"x-amz-version-id\"] !== undefined) {\n contents.VersionId = output.headers[\"x-amz-version-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"] !== undefined) {\n contents.SSEKMSKeyId = output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-bucket-key-enabled\"] !== undefined) {\n contents.BucketKeyEnabled = output.headers[\"x-amz-server-side-encryption-bucket-key-enabled\"] === \"true\";\n }\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n const data: any = await parseBody(output.body, context);\n if (data[\"Bucket\"] !== undefined) {\n contents.Bucket = data[\"Bucket\"];\n }\n if (data[\"ETag\"] !== undefined) {\n contents.ETag = data[\"ETag\"];\n }\n if (data[\"Key\"] !== undefined) {\n contents.Key = data[\"Key\"];\n }\n if (data[\"Location\"] !== undefined) {\n contents.Location = data[\"Location\"];\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlCompleteMultipartUploadCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlCopyObjectCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlCopyObjectCommandError(output, context);\n }\n const contents: CopyObjectCommandOutput = {\n $metadata: deserializeMetadata(output),\n BucketKeyEnabled: undefined,\n CopyObjectResult: undefined,\n CopySourceVersionId: undefined,\n Expiration: undefined,\n RequestCharged: undefined,\n SSECustomerAlgorithm: undefined,\n SSECustomerKeyMD5: undefined,\n SSEKMSEncryptionContext: undefined,\n SSEKMSKeyId: undefined,\n ServerSideEncryption: undefined,\n VersionId: undefined,\n };\n if (output.headers[\"x-amz-expiration\"] !== undefined) {\n contents.Expiration = output.headers[\"x-amz-expiration\"];\n }\n if (output.headers[\"x-amz-copy-source-version-id\"] !== undefined) {\n contents.CopySourceVersionId = output.headers[\"x-amz-copy-source-version-id\"];\n }\n if (output.headers[\"x-amz-version-id\"] !== undefined) {\n contents.VersionId = output.headers[\"x-amz-version-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption\"] !== undefined) {\n contents.ServerSideEncryption = output.headers[\"x-amz-server-side-encryption\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-algorithm\"] !== undefined) {\n contents.SSECustomerAlgorithm = output.headers[\"x-amz-server-side-encryption-customer-algorithm\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-key-md5\"] !== undefined) {\n contents.SSECustomerKeyMD5 = output.headers[\"x-amz-server-side-encryption-customer-key-md5\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"] !== undefined) {\n contents.SSEKMSKeyId = output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-context\"] !== undefined) {\n contents.SSEKMSEncryptionContext = output.headers[\"x-amz-server-side-encryption-context\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-bucket-key-enabled\"] !== undefined) {\n contents.BucketKeyEnabled = output.headers[\"x-amz-server-side-encryption-bucket-key-enabled\"] === \"true\";\n }\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n const data: any = await parseBody(output.body, context);\n contents.CopyObjectResult = deserializeAws_restXmlCopyObjectResult(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlCopyObjectCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ObjectNotInActiveTierError\":\n case \"com.amazonaws.s3#ObjectNotInActiveTierError\":\n response = {\n ...(await deserializeAws_restXmlObjectNotInActiveTierErrorResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlCreateBucketCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlCreateBucketCommandError(output, context);\n }\n const contents: CreateBucketCommandOutput = {\n $metadata: deserializeMetadata(output),\n Location: undefined,\n };\n if (output.headers[\"location\"] !== undefined) {\n contents.Location = output.headers[\"location\"];\n }\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlCreateBucketCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BucketAlreadyExists\":\n case \"com.amazonaws.s3#BucketAlreadyExists\":\n response = {\n ...(await deserializeAws_restXmlBucketAlreadyExistsResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"BucketAlreadyOwnedByYou\":\n case \"com.amazonaws.s3#BucketAlreadyOwnedByYou\":\n response = {\n ...(await deserializeAws_restXmlBucketAlreadyOwnedByYouResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlCreateMultipartUploadCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlCreateMultipartUploadCommandError(output, context);\n }\n const contents: CreateMultipartUploadCommandOutput = {\n $metadata: deserializeMetadata(output),\n AbortDate: undefined,\n AbortRuleId: undefined,\n Bucket: undefined,\n BucketKeyEnabled: undefined,\n Key: undefined,\n RequestCharged: undefined,\n SSECustomerAlgorithm: undefined,\n SSECustomerKeyMD5: undefined,\n SSEKMSEncryptionContext: undefined,\n SSEKMSKeyId: undefined,\n ServerSideEncryption: undefined,\n UploadId: undefined,\n };\n if (output.headers[\"x-amz-abort-date\"] !== undefined) {\n contents.AbortDate = new Date(output.headers[\"x-amz-abort-date\"]);\n }\n if (output.headers[\"x-amz-abort-rule-id\"] !== undefined) {\n contents.AbortRuleId = output.headers[\"x-amz-abort-rule-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption\"] !== undefined) {\n contents.ServerSideEncryption = output.headers[\"x-amz-server-side-encryption\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-algorithm\"] !== undefined) {\n contents.SSECustomerAlgorithm = output.headers[\"x-amz-server-side-encryption-customer-algorithm\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-key-md5\"] !== undefined) {\n contents.SSECustomerKeyMD5 = output.headers[\"x-amz-server-side-encryption-customer-key-md5\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"] !== undefined) {\n contents.SSEKMSKeyId = output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-context\"] !== undefined) {\n contents.SSEKMSEncryptionContext = output.headers[\"x-amz-server-side-encryption-context\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-bucket-key-enabled\"] !== undefined) {\n contents.BucketKeyEnabled = output.headers[\"x-amz-server-side-encryption-bucket-key-enabled\"] === \"true\";\n }\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n const data: any = await parseBody(output.body, context);\n if (data[\"Bucket\"] !== undefined) {\n contents.Bucket = data[\"Bucket\"];\n }\n if (data[\"Key\"] !== undefined) {\n contents.Key = data[\"Key\"];\n }\n if (data[\"UploadId\"] !== undefined) {\n contents.UploadId = data[\"UploadId\"];\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlCreateMultipartUploadCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlDeleteBucketCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return deserializeAws_restXmlDeleteBucketCommandError(output, context);\n }\n const contents: DeleteBucketCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlDeleteBucketCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlDeleteBucketAnalyticsConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return deserializeAws_restXmlDeleteBucketAnalyticsConfigurationCommandError(output, context);\n }\n const contents: DeleteBucketAnalyticsConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlDeleteBucketAnalyticsConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlDeleteBucketCorsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return deserializeAws_restXmlDeleteBucketCorsCommandError(output, context);\n }\n const contents: DeleteBucketCorsCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlDeleteBucketCorsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlDeleteBucketEncryptionCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return deserializeAws_restXmlDeleteBucketEncryptionCommandError(output, context);\n }\n const contents: DeleteBucketEncryptionCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlDeleteBucketEncryptionCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlDeleteBucketIntelligentTieringConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return deserializeAws_restXmlDeleteBucketIntelligentTieringConfigurationCommandError(output, context);\n }\n const contents: DeleteBucketIntelligentTieringConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlDeleteBucketIntelligentTieringConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlDeleteBucketInventoryConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return deserializeAws_restXmlDeleteBucketInventoryConfigurationCommandError(output, context);\n }\n const contents: DeleteBucketInventoryConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlDeleteBucketInventoryConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlDeleteBucketLifecycleCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return deserializeAws_restXmlDeleteBucketLifecycleCommandError(output, context);\n }\n const contents: DeleteBucketLifecycleCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlDeleteBucketLifecycleCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlDeleteBucketMetricsConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return deserializeAws_restXmlDeleteBucketMetricsConfigurationCommandError(output, context);\n }\n const contents: DeleteBucketMetricsConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlDeleteBucketMetricsConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlDeleteBucketOwnershipControlsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return deserializeAws_restXmlDeleteBucketOwnershipControlsCommandError(output, context);\n }\n const contents: DeleteBucketOwnershipControlsCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlDeleteBucketOwnershipControlsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlDeleteBucketPolicyCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return deserializeAws_restXmlDeleteBucketPolicyCommandError(output, context);\n }\n const contents: DeleteBucketPolicyCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlDeleteBucketPolicyCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlDeleteBucketReplicationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return deserializeAws_restXmlDeleteBucketReplicationCommandError(output, context);\n }\n const contents: DeleteBucketReplicationCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlDeleteBucketReplicationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlDeleteBucketTaggingCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return deserializeAws_restXmlDeleteBucketTaggingCommandError(output, context);\n }\n const contents: DeleteBucketTaggingCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlDeleteBucketTaggingCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlDeleteBucketWebsiteCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return deserializeAws_restXmlDeleteBucketWebsiteCommandError(output, context);\n }\n const contents: DeleteBucketWebsiteCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlDeleteBucketWebsiteCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlDeleteObjectCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return deserializeAws_restXmlDeleteObjectCommandError(output, context);\n }\n const contents: DeleteObjectCommandOutput = {\n $metadata: deserializeMetadata(output),\n DeleteMarker: undefined,\n RequestCharged: undefined,\n VersionId: undefined,\n };\n if (output.headers[\"x-amz-delete-marker\"] !== undefined) {\n contents.DeleteMarker = output.headers[\"x-amz-delete-marker\"] === \"true\";\n }\n if (output.headers[\"x-amz-version-id\"] !== undefined) {\n contents.VersionId = output.headers[\"x-amz-version-id\"];\n }\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlDeleteObjectCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlDeleteObjectsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlDeleteObjectsCommandError(output, context);\n }\n const contents: DeleteObjectsCommandOutput = {\n $metadata: deserializeMetadata(output),\n Deleted: undefined,\n Errors: undefined,\n RequestCharged: undefined,\n };\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n const data: any = await parseBody(output.body, context);\n if (data.Deleted === \"\") {\n contents.Deleted = [];\n }\n if (data[\"Deleted\"] !== undefined) {\n contents.Deleted = deserializeAws_restXmlDeletedObjects(__getArrayIfSingleItem(data[\"Deleted\"]), context);\n }\n if (data.Error === \"\") {\n contents.Errors = [];\n }\n if (data[\"Error\"] !== undefined) {\n contents.Errors = deserializeAws_restXmlErrors(__getArrayIfSingleItem(data[\"Error\"]), context);\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlDeleteObjectsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlDeleteObjectTaggingCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return deserializeAws_restXmlDeleteObjectTaggingCommandError(output, context);\n }\n const contents: DeleteObjectTaggingCommandOutput = {\n $metadata: deserializeMetadata(output),\n VersionId: undefined,\n };\n if (output.headers[\"x-amz-version-id\"] !== undefined) {\n contents.VersionId = output.headers[\"x-amz-version-id\"];\n }\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlDeleteObjectTaggingCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlDeletePublicAccessBlockCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return deserializeAws_restXmlDeletePublicAccessBlockCommandError(output, context);\n }\n const contents: DeletePublicAccessBlockCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlDeletePublicAccessBlockCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetBucketAccelerateConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetBucketAccelerateConfigurationCommandError(output, context);\n }\n const contents: GetBucketAccelerateConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n Status: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data[\"Status\"] !== undefined) {\n contents.Status = data[\"Status\"];\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetBucketAccelerateConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetBucketAclCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetBucketAclCommandError(output, context);\n }\n const contents: GetBucketAclCommandOutput = {\n $metadata: deserializeMetadata(output),\n Grants: undefined,\n Owner: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data.AccessControlList === \"\") {\n contents.Grants = [];\n }\n if (data[\"AccessControlList\"] !== undefined && data[\"AccessControlList\"][\"Grant\"] !== undefined) {\n contents.Grants = deserializeAws_restXmlGrants(__getArrayIfSingleItem(data[\"AccessControlList\"][\"Grant\"]), context);\n }\n if (data[\"Owner\"] !== undefined) {\n contents.Owner = deserializeAws_restXmlOwner(data[\"Owner\"], context);\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetBucketAclCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetBucketAnalyticsConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetBucketAnalyticsConfigurationCommandError(output, context);\n }\n const contents: GetBucketAnalyticsConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n AnalyticsConfiguration: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.AnalyticsConfiguration = deserializeAws_restXmlAnalyticsConfiguration(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetBucketAnalyticsConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetBucketCorsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetBucketCorsCommandError(output, context);\n }\n const contents: GetBucketCorsCommandOutput = {\n $metadata: deserializeMetadata(output),\n CORSRules: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data.CORSRule === \"\") {\n contents.CORSRules = [];\n }\n if (data[\"CORSRule\"] !== undefined) {\n contents.CORSRules = deserializeAws_restXmlCORSRules(__getArrayIfSingleItem(data[\"CORSRule\"]), context);\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetBucketCorsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetBucketEncryptionCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetBucketEncryptionCommandError(output, context);\n }\n const contents: GetBucketEncryptionCommandOutput = {\n $metadata: deserializeMetadata(output),\n ServerSideEncryptionConfiguration: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ServerSideEncryptionConfiguration = deserializeAws_restXmlServerSideEncryptionConfiguration(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetBucketEncryptionCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetBucketIntelligentTieringConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetBucketIntelligentTieringConfigurationCommandError(output, context);\n }\n const contents: GetBucketIntelligentTieringConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n IntelligentTieringConfiguration: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.IntelligentTieringConfiguration = deserializeAws_restXmlIntelligentTieringConfiguration(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetBucketIntelligentTieringConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetBucketInventoryConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetBucketInventoryConfigurationCommandError(output, context);\n }\n const contents: GetBucketInventoryConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n InventoryConfiguration: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.InventoryConfiguration = deserializeAws_restXmlInventoryConfiguration(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetBucketInventoryConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetBucketLifecycleConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetBucketLifecycleConfigurationCommandError(output, context);\n }\n const contents: GetBucketLifecycleConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n Rules: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data.Rule === \"\") {\n contents.Rules = [];\n }\n if (data[\"Rule\"] !== undefined) {\n contents.Rules = deserializeAws_restXmlLifecycleRules(__getArrayIfSingleItem(data[\"Rule\"]), context);\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetBucketLifecycleConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetBucketLocationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetBucketLocationCommandError(output, context);\n }\n const contents: GetBucketLocationCommandOutput = {\n $metadata: deserializeMetadata(output),\n LocationConstraint: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data[\"LocationConstraint\"] !== undefined) {\n contents.LocationConstraint = data[\"LocationConstraint\"];\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetBucketLocationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetBucketLoggingCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetBucketLoggingCommandError(output, context);\n }\n const contents: GetBucketLoggingCommandOutput = {\n $metadata: deserializeMetadata(output),\n LoggingEnabled: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data[\"LoggingEnabled\"] !== undefined) {\n contents.LoggingEnabled = deserializeAws_restXmlLoggingEnabled(data[\"LoggingEnabled\"], context);\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetBucketLoggingCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetBucketMetricsConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetBucketMetricsConfigurationCommandError(output, context);\n }\n const contents: GetBucketMetricsConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n MetricsConfiguration: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.MetricsConfiguration = deserializeAws_restXmlMetricsConfiguration(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetBucketMetricsConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetBucketNotificationConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetBucketNotificationConfigurationCommandError(output, context);\n }\n const contents: GetBucketNotificationConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n LambdaFunctionConfigurations: undefined,\n QueueConfigurations: undefined,\n TopicConfigurations: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data.CloudFunctionConfiguration === \"\") {\n contents.LambdaFunctionConfigurations = [];\n }\n if (data[\"CloudFunctionConfiguration\"] !== undefined) {\n contents.LambdaFunctionConfigurations = deserializeAws_restXmlLambdaFunctionConfigurationList(\n __getArrayIfSingleItem(data[\"CloudFunctionConfiguration\"]),\n context\n );\n }\n if (data.QueueConfiguration === \"\") {\n contents.QueueConfigurations = [];\n }\n if (data[\"QueueConfiguration\"] !== undefined) {\n contents.QueueConfigurations = deserializeAws_restXmlQueueConfigurationList(\n __getArrayIfSingleItem(data[\"QueueConfiguration\"]),\n context\n );\n }\n if (data.TopicConfiguration === \"\") {\n contents.TopicConfigurations = [];\n }\n if (data[\"TopicConfiguration\"] !== undefined) {\n contents.TopicConfigurations = deserializeAws_restXmlTopicConfigurationList(\n __getArrayIfSingleItem(data[\"TopicConfiguration\"]),\n context\n );\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetBucketNotificationConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetBucketOwnershipControlsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetBucketOwnershipControlsCommandError(output, context);\n }\n const contents: GetBucketOwnershipControlsCommandOutput = {\n $metadata: deserializeMetadata(output),\n OwnershipControls: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.OwnershipControls = deserializeAws_restXmlOwnershipControls(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetBucketOwnershipControlsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetBucketPolicyCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetBucketPolicyCommandError(output, context);\n }\n const contents: GetBucketPolicyCommandOutput = {\n $metadata: deserializeMetadata(output),\n Policy: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data[\"Policy\"] !== undefined) {\n contents.Policy = data[\"Policy\"];\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetBucketPolicyCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetBucketPolicyStatusCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetBucketPolicyStatusCommandError(output, context);\n }\n const contents: GetBucketPolicyStatusCommandOutput = {\n $metadata: deserializeMetadata(output),\n PolicyStatus: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.PolicyStatus = deserializeAws_restXmlPolicyStatus(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetBucketPolicyStatusCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetBucketReplicationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetBucketReplicationCommandError(output, context);\n }\n const contents: GetBucketReplicationCommandOutput = {\n $metadata: deserializeMetadata(output),\n ReplicationConfiguration: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ReplicationConfiguration = deserializeAws_restXmlReplicationConfiguration(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetBucketReplicationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetBucketRequestPaymentCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetBucketRequestPaymentCommandError(output, context);\n }\n const contents: GetBucketRequestPaymentCommandOutput = {\n $metadata: deserializeMetadata(output),\n Payer: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data[\"Payer\"] !== undefined) {\n contents.Payer = data[\"Payer\"];\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetBucketRequestPaymentCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetBucketTaggingCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetBucketTaggingCommandError(output, context);\n }\n const contents: GetBucketTaggingCommandOutput = {\n $metadata: deserializeMetadata(output),\n TagSet: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data.TagSet === \"\") {\n contents.TagSet = [];\n }\n if (data[\"TagSet\"] !== undefined && data[\"TagSet\"][\"Tag\"] !== undefined) {\n contents.TagSet = deserializeAws_restXmlTagSet(__getArrayIfSingleItem(data[\"TagSet\"][\"Tag\"]), context);\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetBucketTaggingCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetBucketVersioningCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetBucketVersioningCommandError(output, context);\n }\n const contents: GetBucketVersioningCommandOutput = {\n $metadata: deserializeMetadata(output),\n MFADelete: undefined,\n Status: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data[\"MfaDelete\"] !== undefined) {\n contents.MFADelete = data[\"MfaDelete\"];\n }\n if (data[\"Status\"] !== undefined) {\n contents.Status = data[\"Status\"];\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetBucketVersioningCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetBucketWebsiteCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetBucketWebsiteCommandError(output, context);\n }\n const contents: GetBucketWebsiteCommandOutput = {\n $metadata: deserializeMetadata(output),\n ErrorDocument: undefined,\n IndexDocument: undefined,\n RedirectAllRequestsTo: undefined,\n RoutingRules: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data[\"ErrorDocument\"] !== undefined) {\n contents.ErrorDocument = deserializeAws_restXmlErrorDocument(data[\"ErrorDocument\"], context);\n }\n if (data[\"IndexDocument\"] !== undefined) {\n contents.IndexDocument = deserializeAws_restXmlIndexDocument(data[\"IndexDocument\"], context);\n }\n if (data[\"RedirectAllRequestsTo\"] !== undefined) {\n contents.RedirectAllRequestsTo = deserializeAws_restXmlRedirectAllRequestsTo(\n data[\"RedirectAllRequestsTo\"],\n context\n );\n }\n if (data.RoutingRules === \"\") {\n contents.RoutingRules = [];\n }\n if (data[\"RoutingRules\"] !== undefined && data[\"RoutingRules\"][\"RoutingRule\"] !== undefined) {\n contents.RoutingRules = deserializeAws_restXmlRoutingRules(\n __getArrayIfSingleItem(data[\"RoutingRules\"][\"RoutingRule\"]),\n context\n );\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetBucketWebsiteCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetObjectCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetObjectCommandError(output, context);\n }\n const contents: GetObjectCommandOutput = {\n $metadata: deserializeMetadata(output),\n AcceptRanges: undefined,\n Body: undefined,\n BucketKeyEnabled: undefined,\n CacheControl: undefined,\n ContentDisposition: undefined,\n ContentEncoding: undefined,\n ContentLanguage: undefined,\n ContentLength: undefined,\n ContentRange: undefined,\n ContentType: undefined,\n DeleteMarker: undefined,\n ETag: undefined,\n Expiration: undefined,\n Expires: undefined,\n LastModified: undefined,\n Metadata: undefined,\n MissingMeta: undefined,\n ObjectLockLegalHoldStatus: undefined,\n ObjectLockMode: undefined,\n ObjectLockRetainUntilDate: undefined,\n PartsCount: undefined,\n ReplicationStatus: undefined,\n RequestCharged: undefined,\n Restore: undefined,\n SSECustomerAlgorithm: undefined,\n SSECustomerKeyMD5: undefined,\n SSEKMSKeyId: undefined,\n ServerSideEncryption: undefined,\n StorageClass: undefined,\n TagCount: undefined,\n VersionId: undefined,\n WebsiteRedirectLocation: undefined,\n };\n if (output.headers[\"x-amz-delete-marker\"] !== undefined) {\n contents.DeleteMarker = output.headers[\"x-amz-delete-marker\"] === \"true\";\n }\n if (output.headers[\"accept-ranges\"] !== undefined) {\n contents.AcceptRanges = output.headers[\"accept-ranges\"];\n }\n if (output.headers[\"x-amz-expiration\"] !== undefined) {\n contents.Expiration = output.headers[\"x-amz-expiration\"];\n }\n if (output.headers[\"x-amz-restore\"] !== undefined) {\n contents.Restore = output.headers[\"x-amz-restore\"];\n }\n if (output.headers[\"last-modified\"] !== undefined) {\n contents.LastModified = new Date(output.headers[\"last-modified\"]);\n }\n if (output.headers[\"content-length\"] !== undefined) {\n contents.ContentLength = parseInt(output.headers[\"content-length\"], 10);\n }\n if (output.headers[\"etag\"] !== undefined) {\n contents.ETag = output.headers[\"etag\"];\n }\n if (output.headers[\"x-amz-missing-meta\"] !== undefined) {\n contents.MissingMeta = parseInt(output.headers[\"x-amz-missing-meta\"], 10);\n }\n if (output.headers[\"x-amz-version-id\"] !== undefined) {\n contents.VersionId = output.headers[\"x-amz-version-id\"];\n }\n if (output.headers[\"cache-control\"] !== undefined) {\n contents.CacheControl = output.headers[\"cache-control\"];\n }\n if (output.headers[\"content-disposition\"] !== undefined) {\n contents.ContentDisposition = output.headers[\"content-disposition\"];\n }\n if (output.headers[\"content-encoding\"] !== undefined) {\n contents.ContentEncoding = output.headers[\"content-encoding\"];\n }\n if (output.headers[\"content-language\"] !== undefined) {\n contents.ContentLanguage = output.headers[\"content-language\"];\n }\n if (output.headers[\"content-range\"] !== undefined) {\n contents.ContentRange = output.headers[\"content-range\"];\n }\n if (output.headers[\"content-type\"] !== undefined) {\n contents.ContentType = output.headers[\"content-type\"];\n }\n if (output.headers[\"expires\"] !== undefined) {\n contents.Expires = new Date(output.headers[\"expires\"]);\n }\n if (output.headers[\"x-amz-website-redirect-location\"] !== undefined) {\n contents.WebsiteRedirectLocation = output.headers[\"x-amz-website-redirect-location\"];\n }\n if (output.headers[\"x-amz-server-side-encryption\"] !== undefined) {\n contents.ServerSideEncryption = output.headers[\"x-amz-server-side-encryption\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-algorithm\"] !== undefined) {\n contents.SSECustomerAlgorithm = output.headers[\"x-amz-server-side-encryption-customer-algorithm\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-key-md5\"] !== undefined) {\n contents.SSECustomerKeyMD5 = output.headers[\"x-amz-server-side-encryption-customer-key-md5\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"] !== undefined) {\n contents.SSEKMSKeyId = output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-bucket-key-enabled\"] !== undefined) {\n contents.BucketKeyEnabled = output.headers[\"x-amz-server-side-encryption-bucket-key-enabled\"] === \"true\";\n }\n if (output.headers[\"x-amz-storage-class\"] !== undefined) {\n contents.StorageClass = output.headers[\"x-amz-storage-class\"];\n }\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n if (output.headers[\"x-amz-replication-status\"] !== undefined) {\n contents.ReplicationStatus = output.headers[\"x-amz-replication-status\"];\n }\n if (output.headers[\"x-amz-mp-parts-count\"] !== undefined) {\n contents.PartsCount = parseInt(output.headers[\"x-amz-mp-parts-count\"], 10);\n }\n if (output.headers[\"x-amz-tagging-count\"] !== undefined) {\n contents.TagCount = parseInt(output.headers[\"x-amz-tagging-count\"], 10);\n }\n if (output.headers[\"x-amz-object-lock-mode\"] !== undefined) {\n contents.ObjectLockMode = output.headers[\"x-amz-object-lock-mode\"];\n }\n if (output.headers[\"x-amz-object-lock-retain-until-date\"] !== undefined) {\n contents.ObjectLockRetainUntilDate = new Date(output.headers[\"x-amz-object-lock-retain-until-date\"]);\n }\n if (output.headers[\"x-amz-object-lock-legal-hold\"] !== undefined) {\n contents.ObjectLockLegalHoldStatus = output.headers[\"x-amz-object-lock-legal-hold\"];\n }\n Object.keys(output.headers).forEach((header) => {\n if (contents.Metadata === undefined) {\n contents.Metadata = {};\n }\n if (header.startsWith(\"x-amz-meta-\")) {\n contents.Metadata[header.substring(11)] = output.headers[header];\n }\n });\n const data: any = output.body;\n contents.Body = data;\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetObjectCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InvalidObjectState\":\n case \"com.amazonaws.s3#InvalidObjectState\":\n response = {\n ...(await deserializeAws_restXmlInvalidObjectStateResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n case \"NoSuchKey\":\n case \"com.amazonaws.s3#NoSuchKey\":\n response = {\n ...(await deserializeAws_restXmlNoSuchKeyResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetObjectAclCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetObjectAclCommandError(output, context);\n }\n const contents: GetObjectAclCommandOutput = {\n $metadata: deserializeMetadata(output),\n Grants: undefined,\n Owner: undefined,\n RequestCharged: undefined,\n };\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n const data: any = await parseBody(output.body, context);\n if (data.AccessControlList === \"\") {\n contents.Grants = [];\n }\n if (data[\"AccessControlList\"] !== undefined && data[\"AccessControlList\"][\"Grant\"] !== undefined) {\n contents.Grants = deserializeAws_restXmlGrants(__getArrayIfSingleItem(data[\"AccessControlList\"][\"Grant\"]), context);\n }\n if (data[\"Owner\"] !== undefined) {\n contents.Owner = deserializeAws_restXmlOwner(data[\"Owner\"], context);\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetObjectAclCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"NoSuchKey\":\n case \"com.amazonaws.s3#NoSuchKey\":\n response = {\n ...(await deserializeAws_restXmlNoSuchKeyResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetObjectLegalHoldCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetObjectLegalHoldCommandError(output, context);\n }\n const contents: GetObjectLegalHoldCommandOutput = {\n $metadata: deserializeMetadata(output),\n LegalHold: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.LegalHold = deserializeAws_restXmlObjectLockLegalHold(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetObjectLegalHoldCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetObjectLockConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetObjectLockConfigurationCommandError(output, context);\n }\n const contents: GetObjectLockConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n ObjectLockConfiguration: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.ObjectLockConfiguration = deserializeAws_restXmlObjectLockConfiguration(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetObjectLockConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetObjectRetentionCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetObjectRetentionCommandError(output, context);\n }\n const contents: GetObjectRetentionCommandOutput = {\n $metadata: deserializeMetadata(output),\n Retention: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.Retention = deserializeAws_restXmlObjectLockRetention(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetObjectRetentionCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetObjectTaggingCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetObjectTaggingCommandError(output, context);\n }\n const contents: GetObjectTaggingCommandOutput = {\n $metadata: deserializeMetadata(output),\n TagSet: undefined,\n VersionId: undefined,\n };\n if (output.headers[\"x-amz-version-id\"] !== undefined) {\n contents.VersionId = output.headers[\"x-amz-version-id\"];\n }\n const data: any = await parseBody(output.body, context);\n if (data.TagSet === \"\") {\n contents.TagSet = [];\n }\n if (data[\"TagSet\"] !== undefined && data[\"TagSet\"][\"Tag\"] !== undefined) {\n contents.TagSet = deserializeAws_restXmlTagSet(__getArrayIfSingleItem(data[\"TagSet\"][\"Tag\"]), context);\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetObjectTaggingCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetObjectTorrentCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetObjectTorrentCommandError(output, context);\n }\n const contents: GetObjectTorrentCommandOutput = {\n $metadata: deserializeMetadata(output),\n Body: undefined,\n RequestCharged: undefined,\n };\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n const data: any = output.body;\n contents.Body = data;\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetObjectTorrentCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlGetPublicAccessBlockCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlGetPublicAccessBlockCommandError(output, context);\n }\n const contents: GetPublicAccessBlockCommandOutput = {\n $metadata: deserializeMetadata(output),\n PublicAccessBlockConfiguration: undefined,\n };\n const data: any = await parseBody(output.body, context);\n contents.PublicAccessBlockConfiguration = deserializeAws_restXmlPublicAccessBlockConfiguration(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlGetPublicAccessBlockCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlHeadBucketCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlHeadBucketCommandError(output, context);\n }\n const contents: HeadBucketCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlHeadBucketCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"NoSuchBucket\":\n case \"com.amazonaws.s3#NoSuchBucket\":\n response = {\n ...(await deserializeAws_restXmlNoSuchBucketResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlHeadObjectCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlHeadObjectCommandError(output, context);\n }\n const contents: HeadObjectCommandOutput = {\n $metadata: deserializeMetadata(output),\n AcceptRanges: undefined,\n ArchiveStatus: undefined,\n BucketKeyEnabled: undefined,\n CacheControl: undefined,\n ContentDisposition: undefined,\n ContentEncoding: undefined,\n ContentLanguage: undefined,\n ContentLength: undefined,\n ContentType: undefined,\n DeleteMarker: undefined,\n ETag: undefined,\n Expiration: undefined,\n Expires: undefined,\n LastModified: undefined,\n Metadata: undefined,\n MissingMeta: undefined,\n ObjectLockLegalHoldStatus: undefined,\n ObjectLockMode: undefined,\n ObjectLockRetainUntilDate: undefined,\n PartsCount: undefined,\n ReplicationStatus: undefined,\n RequestCharged: undefined,\n Restore: undefined,\n SSECustomerAlgorithm: undefined,\n SSECustomerKeyMD5: undefined,\n SSEKMSKeyId: undefined,\n ServerSideEncryption: undefined,\n StorageClass: undefined,\n VersionId: undefined,\n WebsiteRedirectLocation: undefined,\n };\n if (output.headers[\"x-amz-delete-marker\"] !== undefined) {\n contents.DeleteMarker = output.headers[\"x-amz-delete-marker\"] === \"true\";\n }\n if (output.headers[\"accept-ranges\"] !== undefined) {\n contents.AcceptRanges = output.headers[\"accept-ranges\"];\n }\n if (output.headers[\"x-amz-expiration\"] !== undefined) {\n contents.Expiration = output.headers[\"x-amz-expiration\"];\n }\n if (output.headers[\"x-amz-restore\"] !== undefined) {\n contents.Restore = output.headers[\"x-amz-restore\"];\n }\n if (output.headers[\"x-amz-archive-status\"] !== undefined) {\n contents.ArchiveStatus = output.headers[\"x-amz-archive-status\"];\n }\n if (output.headers[\"last-modified\"] !== undefined) {\n contents.LastModified = new Date(output.headers[\"last-modified\"]);\n }\n if (output.headers[\"content-length\"] !== undefined) {\n contents.ContentLength = parseInt(output.headers[\"content-length\"], 10);\n }\n if (output.headers[\"etag\"] !== undefined) {\n contents.ETag = output.headers[\"etag\"];\n }\n if (output.headers[\"x-amz-missing-meta\"] !== undefined) {\n contents.MissingMeta = parseInt(output.headers[\"x-amz-missing-meta\"], 10);\n }\n if (output.headers[\"x-amz-version-id\"] !== undefined) {\n contents.VersionId = output.headers[\"x-amz-version-id\"];\n }\n if (output.headers[\"cache-control\"] !== undefined) {\n contents.CacheControl = output.headers[\"cache-control\"];\n }\n if (output.headers[\"content-disposition\"] !== undefined) {\n contents.ContentDisposition = output.headers[\"content-disposition\"];\n }\n if (output.headers[\"content-encoding\"] !== undefined) {\n contents.ContentEncoding = output.headers[\"content-encoding\"];\n }\n if (output.headers[\"content-language\"] !== undefined) {\n contents.ContentLanguage = output.headers[\"content-language\"];\n }\n if (output.headers[\"content-type\"] !== undefined) {\n contents.ContentType = output.headers[\"content-type\"];\n }\n if (output.headers[\"expires\"] !== undefined) {\n contents.Expires = new Date(output.headers[\"expires\"]);\n }\n if (output.headers[\"x-amz-website-redirect-location\"] !== undefined) {\n contents.WebsiteRedirectLocation = output.headers[\"x-amz-website-redirect-location\"];\n }\n if (output.headers[\"x-amz-server-side-encryption\"] !== undefined) {\n contents.ServerSideEncryption = output.headers[\"x-amz-server-side-encryption\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-algorithm\"] !== undefined) {\n contents.SSECustomerAlgorithm = output.headers[\"x-amz-server-side-encryption-customer-algorithm\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-key-md5\"] !== undefined) {\n contents.SSECustomerKeyMD5 = output.headers[\"x-amz-server-side-encryption-customer-key-md5\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"] !== undefined) {\n contents.SSEKMSKeyId = output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-bucket-key-enabled\"] !== undefined) {\n contents.BucketKeyEnabled = output.headers[\"x-amz-server-side-encryption-bucket-key-enabled\"] === \"true\";\n }\n if (output.headers[\"x-amz-storage-class\"] !== undefined) {\n contents.StorageClass = output.headers[\"x-amz-storage-class\"];\n }\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n if (output.headers[\"x-amz-replication-status\"] !== undefined) {\n contents.ReplicationStatus = output.headers[\"x-amz-replication-status\"];\n }\n if (output.headers[\"x-amz-mp-parts-count\"] !== undefined) {\n contents.PartsCount = parseInt(output.headers[\"x-amz-mp-parts-count\"], 10);\n }\n if (output.headers[\"x-amz-object-lock-mode\"] !== undefined) {\n contents.ObjectLockMode = output.headers[\"x-amz-object-lock-mode\"];\n }\n if (output.headers[\"x-amz-object-lock-retain-until-date\"] !== undefined) {\n contents.ObjectLockRetainUntilDate = new Date(output.headers[\"x-amz-object-lock-retain-until-date\"]);\n }\n if (output.headers[\"x-amz-object-lock-legal-hold\"] !== undefined) {\n contents.ObjectLockLegalHoldStatus = output.headers[\"x-amz-object-lock-legal-hold\"];\n }\n Object.keys(output.headers).forEach((header) => {\n if (contents.Metadata === undefined) {\n contents.Metadata = {};\n }\n if (header.startsWith(\"x-amz-meta-\")) {\n contents.Metadata[header.substring(11)] = output.headers[header];\n }\n });\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlHeadObjectCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"NoSuchKey\":\n case \"com.amazonaws.s3#NoSuchKey\":\n response = {\n ...(await deserializeAws_restXmlNoSuchKeyResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlListBucketAnalyticsConfigurationsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlListBucketAnalyticsConfigurationsCommandError(output, context);\n }\n const contents: ListBucketAnalyticsConfigurationsCommandOutput = {\n $metadata: deserializeMetadata(output),\n AnalyticsConfigurationList: undefined,\n ContinuationToken: undefined,\n IsTruncated: undefined,\n NextContinuationToken: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data.AnalyticsConfiguration === \"\") {\n contents.AnalyticsConfigurationList = [];\n }\n if (data[\"AnalyticsConfiguration\"] !== undefined) {\n contents.AnalyticsConfigurationList = deserializeAws_restXmlAnalyticsConfigurationList(\n __getArrayIfSingleItem(data[\"AnalyticsConfiguration\"]),\n context\n );\n }\n if (data[\"ContinuationToken\"] !== undefined) {\n contents.ContinuationToken = data[\"ContinuationToken\"];\n }\n if (data[\"IsTruncated\"] !== undefined) {\n contents.IsTruncated = data[\"IsTruncated\"] == \"true\";\n }\n if (data[\"NextContinuationToken\"] !== undefined) {\n contents.NextContinuationToken = data[\"NextContinuationToken\"];\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlListBucketAnalyticsConfigurationsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlListBucketIntelligentTieringConfigurationsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlListBucketIntelligentTieringConfigurationsCommandError(output, context);\n }\n const contents: ListBucketIntelligentTieringConfigurationsCommandOutput = {\n $metadata: deserializeMetadata(output),\n ContinuationToken: undefined,\n IntelligentTieringConfigurationList: undefined,\n IsTruncated: undefined,\n NextContinuationToken: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data[\"ContinuationToken\"] !== undefined) {\n contents.ContinuationToken = data[\"ContinuationToken\"];\n }\n if (data.IntelligentTieringConfiguration === \"\") {\n contents.IntelligentTieringConfigurationList = [];\n }\n if (data[\"IntelligentTieringConfiguration\"] !== undefined) {\n contents.IntelligentTieringConfigurationList = deserializeAws_restXmlIntelligentTieringConfigurationList(\n __getArrayIfSingleItem(data[\"IntelligentTieringConfiguration\"]),\n context\n );\n }\n if (data[\"IsTruncated\"] !== undefined) {\n contents.IsTruncated = data[\"IsTruncated\"] == \"true\";\n }\n if (data[\"NextContinuationToken\"] !== undefined) {\n contents.NextContinuationToken = data[\"NextContinuationToken\"];\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlListBucketIntelligentTieringConfigurationsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlListBucketInventoryConfigurationsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlListBucketInventoryConfigurationsCommandError(output, context);\n }\n const contents: ListBucketInventoryConfigurationsCommandOutput = {\n $metadata: deserializeMetadata(output),\n ContinuationToken: undefined,\n InventoryConfigurationList: undefined,\n IsTruncated: undefined,\n NextContinuationToken: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data[\"ContinuationToken\"] !== undefined) {\n contents.ContinuationToken = data[\"ContinuationToken\"];\n }\n if (data.InventoryConfiguration === \"\") {\n contents.InventoryConfigurationList = [];\n }\n if (data[\"InventoryConfiguration\"] !== undefined) {\n contents.InventoryConfigurationList = deserializeAws_restXmlInventoryConfigurationList(\n __getArrayIfSingleItem(data[\"InventoryConfiguration\"]),\n context\n );\n }\n if (data[\"IsTruncated\"] !== undefined) {\n contents.IsTruncated = data[\"IsTruncated\"] == \"true\";\n }\n if (data[\"NextContinuationToken\"] !== undefined) {\n contents.NextContinuationToken = data[\"NextContinuationToken\"];\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlListBucketInventoryConfigurationsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlListBucketMetricsConfigurationsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlListBucketMetricsConfigurationsCommandError(output, context);\n }\n const contents: ListBucketMetricsConfigurationsCommandOutput = {\n $metadata: deserializeMetadata(output),\n ContinuationToken: undefined,\n IsTruncated: undefined,\n MetricsConfigurationList: undefined,\n NextContinuationToken: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data[\"ContinuationToken\"] !== undefined) {\n contents.ContinuationToken = data[\"ContinuationToken\"];\n }\n if (data[\"IsTruncated\"] !== undefined) {\n contents.IsTruncated = data[\"IsTruncated\"] == \"true\";\n }\n if (data.MetricsConfiguration === \"\") {\n contents.MetricsConfigurationList = [];\n }\n if (data[\"MetricsConfiguration\"] !== undefined) {\n contents.MetricsConfigurationList = deserializeAws_restXmlMetricsConfigurationList(\n __getArrayIfSingleItem(data[\"MetricsConfiguration\"]),\n context\n );\n }\n if (data[\"NextContinuationToken\"] !== undefined) {\n contents.NextContinuationToken = data[\"NextContinuationToken\"];\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlListBucketMetricsConfigurationsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlListBucketsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlListBucketsCommandError(output, context);\n }\n const contents: ListBucketsCommandOutput = {\n $metadata: deserializeMetadata(output),\n Buckets: undefined,\n Owner: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data.Buckets === \"\") {\n contents.Buckets = [];\n }\n if (data[\"Buckets\"] !== undefined && data[\"Buckets\"][\"Bucket\"] !== undefined) {\n contents.Buckets = deserializeAws_restXmlBuckets(__getArrayIfSingleItem(data[\"Buckets\"][\"Bucket\"]), context);\n }\n if (data[\"Owner\"] !== undefined) {\n contents.Owner = deserializeAws_restXmlOwner(data[\"Owner\"], context);\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlListBucketsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlListMultipartUploadsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlListMultipartUploadsCommandError(output, context);\n }\n const contents: ListMultipartUploadsCommandOutput = {\n $metadata: deserializeMetadata(output),\n Bucket: undefined,\n CommonPrefixes: undefined,\n Delimiter: undefined,\n EncodingType: undefined,\n IsTruncated: undefined,\n KeyMarker: undefined,\n MaxUploads: undefined,\n NextKeyMarker: undefined,\n NextUploadIdMarker: undefined,\n Prefix: undefined,\n UploadIdMarker: undefined,\n Uploads: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data[\"Bucket\"] !== undefined) {\n contents.Bucket = data[\"Bucket\"];\n }\n if (data.CommonPrefixes === \"\") {\n contents.CommonPrefixes = [];\n }\n if (data[\"CommonPrefixes\"] !== undefined) {\n contents.CommonPrefixes = deserializeAws_restXmlCommonPrefixList(\n __getArrayIfSingleItem(data[\"CommonPrefixes\"]),\n context\n );\n }\n if (data[\"Delimiter\"] !== undefined) {\n contents.Delimiter = data[\"Delimiter\"];\n }\n if (data[\"EncodingType\"] !== undefined) {\n contents.EncodingType = data[\"EncodingType\"];\n }\n if (data[\"IsTruncated\"] !== undefined) {\n contents.IsTruncated = data[\"IsTruncated\"] == \"true\";\n }\n if (data[\"KeyMarker\"] !== undefined) {\n contents.KeyMarker = data[\"KeyMarker\"];\n }\n if (data[\"MaxUploads\"] !== undefined) {\n contents.MaxUploads = parseInt(data[\"MaxUploads\"]);\n }\n if (data[\"NextKeyMarker\"] !== undefined) {\n contents.NextKeyMarker = data[\"NextKeyMarker\"];\n }\n if (data[\"NextUploadIdMarker\"] !== undefined) {\n contents.NextUploadIdMarker = data[\"NextUploadIdMarker\"];\n }\n if (data[\"Prefix\"] !== undefined) {\n contents.Prefix = data[\"Prefix\"];\n }\n if (data[\"UploadIdMarker\"] !== undefined) {\n contents.UploadIdMarker = data[\"UploadIdMarker\"];\n }\n if (data.Upload === \"\") {\n contents.Uploads = [];\n }\n if (data[\"Upload\"] !== undefined) {\n contents.Uploads = deserializeAws_restXmlMultipartUploadList(__getArrayIfSingleItem(data[\"Upload\"]), context);\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlListMultipartUploadsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlListObjectsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlListObjectsCommandError(output, context);\n }\n const contents: ListObjectsCommandOutput = {\n $metadata: deserializeMetadata(output),\n CommonPrefixes: undefined,\n Contents: undefined,\n Delimiter: undefined,\n EncodingType: undefined,\n IsTruncated: undefined,\n Marker: undefined,\n MaxKeys: undefined,\n Name: undefined,\n NextMarker: undefined,\n Prefix: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data.CommonPrefixes === \"\") {\n contents.CommonPrefixes = [];\n }\n if (data[\"CommonPrefixes\"] !== undefined) {\n contents.CommonPrefixes = deserializeAws_restXmlCommonPrefixList(\n __getArrayIfSingleItem(data[\"CommonPrefixes\"]),\n context\n );\n }\n if (data.Contents === \"\") {\n contents.Contents = [];\n }\n if (data[\"Contents\"] !== undefined) {\n contents.Contents = deserializeAws_restXmlObjectList(__getArrayIfSingleItem(data[\"Contents\"]), context);\n }\n if (data[\"Delimiter\"] !== undefined) {\n contents.Delimiter = data[\"Delimiter\"];\n }\n if (data[\"EncodingType\"] !== undefined) {\n contents.EncodingType = data[\"EncodingType\"];\n }\n if (data[\"IsTruncated\"] !== undefined) {\n contents.IsTruncated = data[\"IsTruncated\"] == \"true\";\n }\n if (data[\"Marker\"] !== undefined) {\n contents.Marker = data[\"Marker\"];\n }\n if (data[\"MaxKeys\"] !== undefined) {\n contents.MaxKeys = parseInt(data[\"MaxKeys\"]);\n }\n if (data[\"Name\"] !== undefined) {\n contents.Name = data[\"Name\"];\n }\n if (data[\"NextMarker\"] !== undefined) {\n contents.NextMarker = data[\"NextMarker\"];\n }\n if (data[\"Prefix\"] !== undefined) {\n contents.Prefix = data[\"Prefix\"];\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlListObjectsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"NoSuchBucket\":\n case \"com.amazonaws.s3#NoSuchBucket\":\n response = {\n ...(await deserializeAws_restXmlNoSuchBucketResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlListObjectsV2Command = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlListObjectsV2CommandError(output, context);\n }\n const contents: ListObjectsV2CommandOutput = {\n $metadata: deserializeMetadata(output),\n CommonPrefixes: undefined,\n Contents: undefined,\n ContinuationToken: undefined,\n Delimiter: undefined,\n EncodingType: undefined,\n IsTruncated: undefined,\n KeyCount: undefined,\n MaxKeys: undefined,\n Name: undefined,\n NextContinuationToken: undefined,\n Prefix: undefined,\n StartAfter: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data.CommonPrefixes === \"\") {\n contents.CommonPrefixes = [];\n }\n if (data[\"CommonPrefixes\"] !== undefined) {\n contents.CommonPrefixes = deserializeAws_restXmlCommonPrefixList(\n __getArrayIfSingleItem(data[\"CommonPrefixes\"]),\n context\n );\n }\n if (data.Contents === \"\") {\n contents.Contents = [];\n }\n if (data[\"Contents\"] !== undefined) {\n contents.Contents = deserializeAws_restXmlObjectList(__getArrayIfSingleItem(data[\"Contents\"]), context);\n }\n if (data[\"ContinuationToken\"] !== undefined) {\n contents.ContinuationToken = data[\"ContinuationToken\"];\n }\n if (data[\"Delimiter\"] !== undefined) {\n contents.Delimiter = data[\"Delimiter\"];\n }\n if (data[\"EncodingType\"] !== undefined) {\n contents.EncodingType = data[\"EncodingType\"];\n }\n if (data[\"IsTruncated\"] !== undefined) {\n contents.IsTruncated = data[\"IsTruncated\"] == \"true\";\n }\n if (data[\"KeyCount\"] !== undefined) {\n contents.KeyCount = parseInt(data[\"KeyCount\"]);\n }\n if (data[\"MaxKeys\"] !== undefined) {\n contents.MaxKeys = parseInt(data[\"MaxKeys\"]);\n }\n if (data[\"Name\"] !== undefined) {\n contents.Name = data[\"Name\"];\n }\n if (data[\"NextContinuationToken\"] !== undefined) {\n contents.NextContinuationToken = data[\"NextContinuationToken\"];\n }\n if (data[\"Prefix\"] !== undefined) {\n contents.Prefix = data[\"Prefix\"];\n }\n if (data[\"StartAfter\"] !== undefined) {\n contents.StartAfter = data[\"StartAfter\"];\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlListObjectsV2CommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"NoSuchBucket\":\n case \"com.amazonaws.s3#NoSuchBucket\":\n response = {\n ...(await deserializeAws_restXmlNoSuchBucketResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlListObjectVersionsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlListObjectVersionsCommandError(output, context);\n }\n const contents: ListObjectVersionsCommandOutput = {\n $metadata: deserializeMetadata(output),\n CommonPrefixes: undefined,\n DeleteMarkers: undefined,\n Delimiter: undefined,\n EncodingType: undefined,\n IsTruncated: undefined,\n KeyMarker: undefined,\n MaxKeys: undefined,\n Name: undefined,\n NextKeyMarker: undefined,\n NextVersionIdMarker: undefined,\n Prefix: undefined,\n VersionIdMarker: undefined,\n Versions: undefined,\n };\n const data: any = await parseBody(output.body, context);\n if (data.CommonPrefixes === \"\") {\n contents.CommonPrefixes = [];\n }\n if (data[\"CommonPrefixes\"] !== undefined) {\n contents.CommonPrefixes = deserializeAws_restXmlCommonPrefixList(\n __getArrayIfSingleItem(data[\"CommonPrefixes\"]),\n context\n );\n }\n if (data.DeleteMarker === \"\") {\n contents.DeleteMarkers = [];\n }\n if (data[\"DeleteMarker\"] !== undefined) {\n contents.DeleteMarkers = deserializeAws_restXmlDeleteMarkers(__getArrayIfSingleItem(data[\"DeleteMarker\"]), context);\n }\n if (data[\"Delimiter\"] !== undefined) {\n contents.Delimiter = data[\"Delimiter\"];\n }\n if (data[\"EncodingType\"] !== undefined) {\n contents.EncodingType = data[\"EncodingType\"];\n }\n if (data[\"IsTruncated\"] !== undefined) {\n contents.IsTruncated = data[\"IsTruncated\"] == \"true\";\n }\n if (data[\"KeyMarker\"] !== undefined) {\n contents.KeyMarker = data[\"KeyMarker\"];\n }\n if (data[\"MaxKeys\"] !== undefined) {\n contents.MaxKeys = parseInt(data[\"MaxKeys\"]);\n }\n if (data[\"Name\"] !== undefined) {\n contents.Name = data[\"Name\"];\n }\n if (data[\"NextKeyMarker\"] !== undefined) {\n contents.NextKeyMarker = data[\"NextKeyMarker\"];\n }\n if (data[\"NextVersionIdMarker\"] !== undefined) {\n contents.NextVersionIdMarker = data[\"NextVersionIdMarker\"];\n }\n if (data[\"Prefix\"] !== undefined) {\n contents.Prefix = data[\"Prefix\"];\n }\n if (data[\"VersionIdMarker\"] !== undefined) {\n contents.VersionIdMarker = data[\"VersionIdMarker\"];\n }\n if (data.Version === \"\") {\n contents.Versions = [];\n }\n if (data[\"Version\"] !== undefined) {\n contents.Versions = deserializeAws_restXmlObjectVersionList(__getArrayIfSingleItem(data[\"Version\"]), context);\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlListObjectVersionsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlListPartsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlListPartsCommandError(output, context);\n }\n const contents: ListPartsCommandOutput = {\n $metadata: deserializeMetadata(output),\n AbortDate: undefined,\n AbortRuleId: undefined,\n Bucket: undefined,\n Initiator: undefined,\n IsTruncated: undefined,\n Key: undefined,\n MaxParts: undefined,\n NextPartNumberMarker: undefined,\n Owner: undefined,\n PartNumberMarker: undefined,\n Parts: undefined,\n RequestCharged: undefined,\n StorageClass: undefined,\n UploadId: undefined,\n };\n if (output.headers[\"x-amz-abort-date\"] !== undefined) {\n contents.AbortDate = new Date(output.headers[\"x-amz-abort-date\"]);\n }\n if (output.headers[\"x-amz-abort-rule-id\"] !== undefined) {\n contents.AbortRuleId = output.headers[\"x-amz-abort-rule-id\"];\n }\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n const data: any = await parseBody(output.body, context);\n if (data[\"Bucket\"] !== undefined) {\n contents.Bucket = data[\"Bucket\"];\n }\n if (data[\"Initiator\"] !== undefined) {\n contents.Initiator = deserializeAws_restXmlInitiator(data[\"Initiator\"], context);\n }\n if (data[\"IsTruncated\"] !== undefined) {\n contents.IsTruncated = data[\"IsTruncated\"] == \"true\";\n }\n if (data[\"Key\"] !== undefined) {\n contents.Key = data[\"Key\"];\n }\n if (data[\"MaxParts\"] !== undefined) {\n contents.MaxParts = parseInt(data[\"MaxParts\"]);\n }\n if (data[\"NextPartNumberMarker\"] !== undefined) {\n contents.NextPartNumberMarker = data[\"NextPartNumberMarker\"];\n }\n if (data[\"Owner\"] !== undefined) {\n contents.Owner = deserializeAws_restXmlOwner(data[\"Owner\"], context);\n }\n if (data[\"PartNumberMarker\"] !== undefined) {\n contents.PartNumberMarker = data[\"PartNumberMarker\"];\n }\n if (data.Part === \"\") {\n contents.Parts = [];\n }\n if (data[\"Part\"] !== undefined) {\n contents.Parts = deserializeAws_restXmlParts(__getArrayIfSingleItem(data[\"Part\"]), context);\n }\n if (data[\"StorageClass\"] !== undefined) {\n contents.StorageClass = data[\"StorageClass\"];\n }\n if (data[\"UploadId\"] !== undefined) {\n contents.UploadId = data[\"UploadId\"];\n }\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlListPartsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutBucketAccelerateConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutBucketAccelerateConfigurationCommandError(output, context);\n }\n const contents: PutBucketAccelerateConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutBucketAccelerateConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutBucketAclCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutBucketAclCommandError(output, context);\n }\n const contents: PutBucketAclCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutBucketAclCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutBucketAnalyticsConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutBucketAnalyticsConfigurationCommandError(output, context);\n }\n const contents: PutBucketAnalyticsConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutBucketAnalyticsConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutBucketCorsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutBucketCorsCommandError(output, context);\n }\n const contents: PutBucketCorsCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutBucketCorsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutBucketEncryptionCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutBucketEncryptionCommandError(output, context);\n }\n const contents: PutBucketEncryptionCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutBucketEncryptionCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutBucketIntelligentTieringConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutBucketIntelligentTieringConfigurationCommandError(output, context);\n }\n const contents: PutBucketIntelligentTieringConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutBucketIntelligentTieringConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutBucketInventoryConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutBucketInventoryConfigurationCommandError(output, context);\n }\n const contents: PutBucketInventoryConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutBucketInventoryConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutBucketLifecycleConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutBucketLifecycleConfigurationCommandError(output, context);\n }\n const contents: PutBucketLifecycleConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutBucketLifecycleConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutBucketLoggingCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutBucketLoggingCommandError(output, context);\n }\n const contents: PutBucketLoggingCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutBucketLoggingCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutBucketMetricsConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutBucketMetricsConfigurationCommandError(output, context);\n }\n const contents: PutBucketMetricsConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutBucketMetricsConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutBucketNotificationConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutBucketNotificationConfigurationCommandError(output, context);\n }\n const contents: PutBucketNotificationConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutBucketNotificationConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutBucketOwnershipControlsCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutBucketOwnershipControlsCommandError(output, context);\n }\n const contents: PutBucketOwnershipControlsCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutBucketOwnershipControlsCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutBucketPolicyCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutBucketPolicyCommandError(output, context);\n }\n const contents: PutBucketPolicyCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutBucketPolicyCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutBucketReplicationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutBucketReplicationCommandError(output, context);\n }\n const contents: PutBucketReplicationCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutBucketReplicationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutBucketRequestPaymentCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutBucketRequestPaymentCommandError(output, context);\n }\n const contents: PutBucketRequestPaymentCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutBucketRequestPaymentCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutBucketTaggingCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutBucketTaggingCommandError(output, context);\n }\n const contents: PutBucketTaggingCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutBucketTaggingCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutBucketVersioningCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutBucketVersioningCommandError(output, context);\n }\n const contents: PutBucketVersioningCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutBucketVersioningCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutBucketWebsiteCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutBucketWebsiteCommandError(output, context);\n }\n const contents: PutBucketWebsiteCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutBucketWebsiteCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutObjectCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutObjectCommandError(output, context);\n }\n const contents: PutObjectCommandOutput = {\n $metadata: deserializeMetadata(output),\n BucketKeyEnabled: undefined,\n ETag: undefined,\n Expiration: undefined,\n RequestCharged: undefined,\n SSECustomerAlgorithm: undefined,\n SSECustomerKeyMD5: undefined,\n SSEKMSEncryptionContext: undefined,\n SSEKMSKeyId: undefined,\n ServerSideEncryption: undefined,\n VersionId: undefined,\n };\n if (output.headers[\"x-amz-expiration\"] !== undefined) {\n contents.Expiration = output.headers[\"x-amz-expiration\"];\n }\n if (output.headers[\"etag\"] !== undefined) {\n contents.ETag = output.headers[\"etag\"];\n }\n if (output.headers[\"x-amz-server-side-encryption\"] !== undefined) {\n contents.ServerSideEncryption = output.headers[\"x-amz-server-side-encryption\"];\n }\n if (output.headers[\"x-amz-version-id\"] !== undefined) {\n contents.VersionId = output.headers[\"x-amz-version-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-algorithm\"] !== undefined) {\n contents.SSECustomerAlgorithm = output.headers[\"x-amz-server-side-encryption-customer-algorithm\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-key-md5\"] !== undefined) {\n contents.SSECustomerKeyMD5 = output.headers[\"x-amz-server-side-encryption-customer-key-md5\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"] !== undefined) {\n contents.SSEKMSKeyId = output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-context\"] !== undefined) {\n contents.SSEKMSEncryptionContext = output.headers[\"x-amz-server-side-encryption-context\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-bucket-key-enabled\"] !== undefined) {\n contents.BucketKeyEnabled = output.headers[\"x-amz-server-side-encryption-bucket-key-enabled\"] === \"true\";\n }\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutObjectCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutObjectAclCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutObjectAclCommandError(output, context);\n }\n const contents: PutObjectAclCommandOutput = {\n $metadata: deserializeMetadata(output),\n RequestCharged: undefined,\n };\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutObjectAclCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"NoSuchKey\":\n case \"com.amazonaws.s3#NoSuchKey\":\n response = {\n ...(await deserializeAws_restXmlNoSuchKeyResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutObjectLegalHoldCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutObjectLegalHoldCommandError(output, context);\n }\n const contents: PutObjectLegalHoldCommandOutput = {\n $metadata: deserializeMetadata(output),\n RequestCharged: undefined,\n };\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutObjectLegalHoldCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutObjectLockConfigurationCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutObjectLockConfigurationCommandError(output, context);\n }\n const contents: PutObjectLockConfigurationCommandOutput = {\n $metadata: deserializeMetadata(output),\n RequestCharged: undefined,\n };\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutObjectLockConfigurationCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutObjectRetentionCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutObjectRetentionCommandError(output, context);\n }\n const contents: PutObjectRetentionCommandOutput = {\n $metadata: deserializeMetadata(output),\n RequestCharged: undefined,\n };\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutObjectRetentionCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutObjectTaggingCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutObjectTaggingCommandError(output, context);\n }\n const contents: PutObjectTaggingCommandOutput = {\n $metadata: deserializeMetadata(output),\n VersionId: undefined,\n };\n if (output.headers[\"x-amz-version-id\"] !== undefined) {\n contents.VersionId = output.headers[\"x-amz-version-id\"];\n }\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutObjectTaggingCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlPutPublicAccessBlockCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlPutPublicAccessBlockCommandError(output, context);\n }\n const contents: PutPublicAccessBlockCommandOutput = {\n $metadata: deserializeMetadata(output),\n };\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlPutPublicAccessBlockCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlRestoreObjectCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlRestoreObjectCommandError(output, context);\n }\n const contents: RestoreObjectCommandOutput = {\n $metadata: deserializeMetadata(output),\n RequestCharged: undefined,\n RestoreOutputPath: undefined,\n };\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n if (output.headers[\"x-amz-restore-output-path\"] !== undefined) {\n contents.RestoreOutputPath = output.headers[\"x-amz-restore-output-path\"];\n }\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlRestoreObjectCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ObjectAlreadyInActiveTierError\":\n case \"com.amazonaws.s3#ObjectAlreadyInActiveTierError\":\n response = {\n ...(await deserializeAws_restXmlObjectAlreadyInActiveTierErrorResponse(parsedOutput, context)),\n name: errorCode,\n $metadata: deserializeMetadata(output),\n };\n break;\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlSelectObjectContentCommand = async (\n output: __HttpResponse,\n context: __SerdeContext & __EventStreamSerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlSelectObjectContentCommandError(output, context);\n }\n const contents: SelectObjectContentCommandOutput = {\n $metadata: deserializeMetadata(output),\n Payload: undefined,\n };\n const data: any = context.eventStreamMarshaller.deserialize(output.body, async (event) => {\n const eventName = Object.keys(event)[0];\n const eventHeaders = Object.entries(event[eventName].headers).reduce((accummulator, curr) => {\n accummulator[curr[0]] = curr[1].value;\n return accummulator;\n }, {} as { [key: string]: any });\n const eventMessage = {\n headers: eventHeaders,\n body: event[eventName].body,\n };\n const parsedEvent = {\n [eventName]: eventMessage,\n };\n return await deserializeAws_restXmlSelectObjectContentEventStream_event(parsedEvent, context);\n });\n contents.Payload = data;\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlSelectObjectContentCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlUploadPartCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlUploadPartCommandError(output, context);\n }\n const contents: UploadPartCommandOutput = {\n $metadata: deserializeMetadata(output),\n BucketKeyEnabled: undefined,\n ETag: undefined,\n RequestCharged: undefined,\n SSECustomerAlgorithm: undefined,\n SSECustomerKeyMD5: undefined,\n SSEKMSKeyId: undefined,\n ServerSideEncryption: undefined,\n };\n if (output.headers[\"x-amz-server-side-encryption\"] !== undefined) {\n contents.ServerSideEncryption = output.headers[\"x-amz-server-side-encryption\"];\n }\n if (output.headers[\"etag\"] !== undefined) {\n contents.ETag = output.headers[\"etag\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-algorithm\"] !== undefined) {\n contents.SSECustomerAlgorithm = output.headers[\"x-amz-server-side-encryption-customer-algorithm\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-key-md5\"] !== undefined) {\n contents.SSECustomerKeyMD5 = output.headers[\"x-amz-server-side-encryption-customer-key-md5\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"] !== undefined) {\n contents.SSEKMSKeyId = output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-bucket-key-enabled\"] !== undefined) {\n contents.BucketKeyEnabled = output.headers[\"x-amz-server-side-encryption-bucket-key-enabled\"] === \"true\";\n }\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n await collectBody(output.body, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlUploadPartCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nexport const deserializeAws_restXmlUploadPartCopyCommand = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restXmlUploadPartCopyCommandError(output, context);\n }\n const contents: UploadPartCopyCommandOutput = {\n $metadata: deserializeMetadata(output),\n BucketKeyEnabled: undefined,\n CopyPartResult: undefined,\n CopySourceVersionId: undefined,\n RequestCharged: undefined,\n SSECustomerAlgorithm: undefined,\n SSECustomerKeyMD5: undefined,\n SSEKMSKeyId: undefined,\n ServerSideEncryption: undefined,\n };\n if (output.headers[\"x-amz-copy-source-version-id\"] !== undefined) {\n contents.CopySourceVersionId = output.headers[\"x-amz-copy-source-version-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption\"] !== undefined) {\n contents.ServerSideEncryption = output.headers[\"x-amz-server-side-encryption\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-algorithm\"] !== undefined) {\n contents.SSECustomerAlgorithm = output.headers[\"x-amz-server-side-encryption-customer-algorithm\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-key-md5\"] !== undefined) {\n contents.SSECustomerKeyMD5 = output.headers[\"x-amz-server-side-encryption-customer-key-md5\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"] !== undefined) {\n contents.SSEKMSKeyId = output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-bucket-key-enabled\"] !== undefined) {\n contents.BucketKeyEnabled = output.headers[\"x-amz-server-side-encryption-bucket-key-enabled\"] === \"true\";\n }\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n const data: any = await parseBody(output.body, context);\n contents.CopyPartResult = deserializeAws_restXmlCopyPartResult(data, context);\n return Promise.resolve(contents);\n};\n\nconst deserializeAws_restXmlUploadPartCopyCommandError = async (\n output: __HttpResponse,\n context: __SerdeContext\n): Promise => {\n const parsedOutput: any = {\n ...output,\n body: await parseBody(output.body, context),\n };\n let response: __SmithyException & __MetadataBearer & { [key: string]: any };\n let errorCode: string = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n const parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = {\n ...parsedBody,\n name: `${errorCode}`,\n message: parsedBody.message || parsedBody.Message || errorCode,\n $fault: \"client\",\n $metadata: deserializeMetadata(output),\n } as any;\n }\n const message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return Promise.reject(Object.assign(new Error(message), response));\n};\n\nconst deserializeAws_restXmlSelectObjectContentEventStream_event = async (\n output: any,\n context: __SerdeContext\n): Promise => {\n if (output[\"Records\"] !== undefined) {\n return {\n Records: await deserializeAws_restXmlRecordsEvent_event(output[\"Records\"], context),\n };\n }\n if (output[\"Stats\"] !== undefined) {\n return {\n Stats: await deserializeAws_restXmlStatsEvent_event(output[\"Stats\"], context),\n };\n }\n if (output[\"Progress\"] !== undefined) {\n return {\n Progress: await deserializeAws_restXmlProgressEvent_event(output[\"Progress\"], context),\n };\n }\n if (output[\"Cont\"] !== undefined) {\n return {\n Cont: await deserializeAws_restXmlContinuationEvent_event(output[\"Cont\"], context),\n };\n }\n if (output[\"End\"] !== undefined) {\n return {\n End: await deserializeAws_restXmlEndEvent_event(output[\"End\"], context),\n };\n }\n return { $unknown: output };\n};\nconst deserializeAws_restXmlContinuationEvent_event = async (\n output: any,\n context: __SerdeContext\n): Promise => {\n let contents: ContinuationEvent = {} as any;\n return contents;\n};\nconst deserializeAws_restXmlEndEvent_event = async (output: any, context: __SerdeContext): Promise => {\n let contents: EndEvent = {} as any;\n return contents;\n};\nconst deserializeAws_restXmlProgressEvent_event = async (\n output: any,\n context: __SerdeContext\n): Promise => {\n let contents: ProgressEvent = {} as any;\n contents.Details = await parseBody(output.body, context);\n return contents;\n};\nconst deserializeAws_restXmlRecordsEvent_event = async (\n output: any,\n context: __SerdeContext\n): Promise => {\n let contents: RecordsEvent = {} as any;\n contents.Payload = output.body;\n return contents;\n};\nconst deserializeAws_restXmlStatsEvent_event = async (output: any, context: __SerdeContext): Promise => {\n let contents: StatsEvent = {} as any;\n contents.Details = await parseBody(output.body, context);\n return contents;\n};\nconst deserializeAws_restXmlBucketAlreadyExistsResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const contents: BucketAlreadyExists = {\n name: \"BucketAlreadyExists\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n };\n const data: any = parsedOutput.body;\n return contents;\n};\n\nconst deserializeAws_restXmlBucketAlreadyOwnedByYouResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const contents: BucketAlreadyOwnedByYou = {\n name: \"BucketAlreadyOwnedByYou\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n };\n const data: any = parsedOutput.body;\n return contents;\n};\n\nconst deserializeAws_restXmlInvalidObjectStateResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const contents: InvalidObjectState = {\n name: \"InvalidObjectState\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n AccessTier: undefined,\n StorageClass: undefined,\n };\n const data: any = parsedOutput.body;\n if (data[\"AccessTier\"] !== undefined) {\n contents.AccessTier = data[\"AccessTier\"];\n }\n if (data[\"StorageClass\"] !== undefined) {\n contents.StorageClass = data[\"StorageClass\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlNoSuchBucketResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const contents: NoSuchBucket = {\n name: \"NoSuchBucket\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n };\n const data: any = parsedOutput.body;\n return contents;\n};\n\nconst deserializeAws_restXmlNoSuchKeyResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const contents: NoSuchKey = {\n name: \"NoSuchKey\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n };\n const data: any = parsedOutput.body;\n return contents;\n};\n\nconst deserializeAws_restXmlNoSuchUploadResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const contents: NoSuchUpload = {\n name: \"NoSuchUpload\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n };\n const data: any = parsedOutput.body;\n return contents;\n};\n\nconst deserializeAws_restXmlObjectAlreadyInActiveTierErrorResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const contents: ObjectAlreadyInActiveTierError = {\n name: \"ObjectAlreadyInActiveTierError\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n };\n const data: any = parsedOutput.body;\n return contents;\n};\n\nconst deserializeAws_restXmlObjectNotInActiveTierErrorResponse = async (\n parsedOutput: any,\n context: __SerdeContext\n): Promise => {\n const contents: ObjectNotInActiveTierError = {\n name: \"ObjectNotInActiveTierError\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput),\n };\n const data: any = parsedOutput.body;\n return contents;\n};\n\nconst serializeAws_restXmlAbortIncompleteMultipartUpload = (\n input: AbortIncompleteMultipartUpload,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"AbortIncompleteMultipartUpload\");\n if (input.DaysAfterInitiation !== undefined && input.DaysAfterInitiation !== null) {\n const node = new __XmlNode(\"DaysAfterInitiation\")\n .addChildNode(new __XmlText(String(input.DaysAfterInitiation)))\n .withName(\"DaysAfterInitiation\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlAccelerateConfiguration = (input: AccelerateConfiguration, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"AccelerateConfiguration\");\n if (input.Status !== undefined && input.Status !== null) {\n const node = new __XmlNode(\"BucketAccelerateStatus\").addChildNode(new __XmlText(input.Status)).withName(\"Status\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlAccessControlPolicy = (input: AccessControlPolicy, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"AccessControlPolicy\");\n if (input.Grants !== undefined && input.Grants !== null) {\n const nodes = serializeAws_restXmlGrants(input.Grants, context);\n const containerNode = new __XmlNode(\"AccessControlList\");\n nodes.map((node: any) => {\n containerNode.addChildNode(node);\n });\n bodyNode.addChildNode(containerNode);\n }\n if (input.Owner !== undefined && input.Owner !== null) {\n const node = serializeAws_restXmlOwner(input.Owner, context).withName(\"Owner\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlAccessControlTranslation = (\n input: AccessControlTranslation,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"AccessControlTranslation\");\n if (input.Owner !== undefined && input.Owner !== null) {\n const node = new __XmlNode(\"OwnerOverride\").addChildNode(new __XmlText(input.Owner)).withName(\"Owner\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlAllowedHeaders = (input: string[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = new __XmlNode(\"AllowedHeader\").addChildNode(new __XmlText(entry));\n return node.withName(\"member\");\n });\n};\n\nconst serializeAws_restXmlAllowedMethods = (input: string[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = new __XmlNode(\"AllowedMethod\").addChildNode(new __XmlText(entry));\n return node.withName(\"member\");\n });\n};\n\nconst serializeAws_restXmlAllowedOrigins = (input: string[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = new __XmlNode(\"AllowedOrigin\").addChildNode(new __XmlText(entry));\n return node.withName(\"member\");\n });\n};\n\nconst serializeAws_restXmlAnalyticsAndOperator = (input: AnalyticsAndOperator, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"AnalyticsAndOperator\");\n if (input.Prefix !== undefined && input.Prefix !== null) {\n const node = new __XmlNode(\"Prefix\").addChildNode(new __XmlText(input.Prefix)).withName(\"Prefix\");\n bodyNode.addChildNode(node);\n }\n if (input.Tags !== undefined && input.Tags !== null) {\n const nodes = serializeAws_restXmlTagSet(input.Tags, context);\n nodes.map((node: any) => {\n node = node.withName(\"Tag\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlAnalyticsConfiguration = (input: AnalyticsConfiguration, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"AnalyticsConfiguration\");\n if (input.Id !== undefined && input.Id !== null) {\n const node = new __XmlNode(\"AnalyticsId\").addChildNode(new __XmlText(input.Id)).withName(\"Id\");\n bodyNode.addChildNode(node);\n }\n if (input.Filter !== undefined && input.Filter !== null) {\n const node = serializeAws_restXmlAnalyticsFilter(input.Filter, context).withName(\"Filter\");\n bodyNode.addChildNode(node);\n }\n if (input.StorageClassAnalysis !== undefined && input.StorageClassAnalysis !== null) {\n const node = serializeAws_restXmlStorageClassAnalysis(input.StorageClassAnalysis, context).withName(\n \"StorageClassAnalysis\"\n );\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlAnalyticsExportDestination = (\n input: AnalyticsExportDestination,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"AnalyticsExportDestination\");\n if (input.S3BucketDestination !== undefined && input.S3BucketDestination !== null) {\n const node = serializeAws_restXmlAnalyticsS3BucketDestination(input.S3BucketDestination, context).withName(\n \"S3BucketDestination\"\n );\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlAnalyticsFilter = (input: AnalyticsFilter, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"AnalyticsFilter\");\n AnalyticsFilter.visit(input, {\n Prefix: (value) => {\n const node = new __XmlNode(\"Prefix\").addChildNode(new __XmlText(value)).withName(\"Prefix\");\n bodyNode.addChildNode(node);\n },\n Tag: (value) => {\n const node = serializeAws_restXmlTag(value, context).withName(\"Tag\");\n bodyNode.addChildNode(node);\n },\n And: (value) => {\n const node = serializeAws_restXmlAnalyticsAndOperator(value, context).withName(\"And\");\n bodyNode.addChildNode(node);\n },\n _: (name: string, value: any) => {\n if (!(value instanceof __XmlNode || value instanceof __XmlText)) {\n throw new Error(\"Unable to serialize unknown union members in XML.\");\n }\n bodyNode.addChildNode(new __XmlNode(name).addChildNode(value));\n },\n });\n return bodyNode;\n};\n\nconst serializeAws_restXmlAnalyticsS3BucketDestination = (\n input: AnalyticsS3BucketDestination,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"AnalyticsS3BucketDestination\");\n if (input.Format !== undefined && input.Format !== null) {\n const node = new __XmlNode(\"AnalyticsS3ExportFileFormat\")\n .addChildNode(new __XmlText(input.Format))\n .withName(\"Format\");\n bodyNode.addChildNode(node);\n }\n if (input.BucketAccountId !== undefined && input.BucketAccountId !== null) {\n const node = new __XmlNode(\"AccountId\")\n .addChildNode(new __XmlText(input.BucketAccountId))\n .withName(\"BucketAccountId\");\n bodyNode.addChildNode(node);\n }\n if (input.Bucket !== undefined && input.Bucket !== null) {\n const node = new __XmlNode(\"BucketName\").addChildNode(new __XmlText(input.Bucket)).withName(\"Bucket\");\n bodyNode.addChildNode(node);\n }\n if (input.Prefix !== undefined && input.Prefix !== null) {\n const node = new __XmlNode(\"Prefix\").addChildNode(new __XmlText(input.Prefix)).withName(\"Prefix\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlBucketLifecycleConfiguration = (\n input: BucketLifecycleConfiguration,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"BucketLifecycleConfiguration\");\n if (input.Rules !== undefined && input.Rules !== null) {\n const nodes = serializeAws_restXmlLifecycleRules(input.Rules, context);\n nodes.map((node: any) => {\n node = node.withName(\"Rule\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlBucketLoggingStatus = (input: BucketLoggingStatus, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"BucketLoggingStatus\");\n if (input.LoggingEnabled !== undefined && input.LoggingEnabled !== null) {\n const node = serializeAws_restXmlLoggingEnabled(input.LoggingEnabled, context).withName(\"LoggingEnabled\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlCompletedMultipartUpload = (\n input: CompletedMultipartUpload,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"CompletedMultipartUpload\");\n if (input.Parts !== undefined && input.Parts !== null) {\n const nodes = serializeAws_restXmlCompletedPartList(input.Parts, context);\n nodes.map((node: any) => {\n node = node.withName(\"Part\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlCompletedPart = (input: CompletedPart, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"CompletedPart\");\n if (input.ETag !== undefined && input.ETag !== null) {\n const node = new __XmlNode(\"ETag\").addChildNode(new __XmlText(input.ETag)).withName(\"ETag\");\n bodyNode.addChildNode(node);\n }\n if (input.PartNumber !== undefined && input.PartNumber !== null) {\n const node = new __XmlNode(\"PartNumber\")\n .addChildNode(new __XmlText(String(input.PartNumber)))\n .withName(\"PartNumber\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlCompletedPartList = (input: CompletedPart[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = serializeAws_restXmlCompletedPart(entry, context);\n return node.withName(\"member\");\n });\n};\n\nconst serializeAws_restXmlCondition = (input: Condition, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"Condition\");\n if (input.HttpErrorCodeReturnedEquals !== undefined && input.HttpErrorCodeReturnedEquals !== null) {\n const node = new __XmlNode(\"HttpErrorCodeReturnedEquals\")\n .addChildNode(new __XmlText(input.HttpErrorCodeReturnedEquals))\n .withName(\"HttpErrorCodeReturnedEquals\");\n bodyNode.addChildNode(node);\n }\n if (input.KeyPrefixEquals !== undefined && input.KeyPrefixEquals !== null) {\n const node = new __XmlNode(\"KeyPrefixEquals\")\n .addChildNode(new __XmlText(input.KeyPrefixEquals))\n .withName(\"KeyPrefixEquals\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlCORSConfiguration = (input: CORSConfiguration, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"CORSConfiguration\");\n if (input.CORSRules !== undefined && input.CORSRules !== null) {\n const nodes = serializeAws_restXmlCORSRules(input.CORSRules, context);\n nodes.map((node: any) => {\n node = node.withName(\"CORSRule\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlCORSRule = (input: CORSRule, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"CORSRule\");\n if (input.AllowedHeaders !== undefined && input.AllowedHeaders !== null) {\n const nodes = serializeAws_restXmlAllowedHeaders(input.AllowedHeaders, context);\n nodes.map((node: any) => {\n node = node.withName(\"AllowedHeader\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.AllowedMethods !== undefined && input.AllowedMethods !== null) {\n const nodes = serializeAws_restXmlAllowedMethods(input.AllowedMethods, context);\n nodes.map((node: any) => {\n node = node.withName(\"AllowedMethod\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.AllowedOrigins !== undefined && input.AllowedOrigins !== null) {\n const nodes = serializeAws_restXmlAllowedOrigins(input.AllowedOrigins, context);\n nodes.map((node: any) => {\n node = node.withName(\"AllowedOrigin\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.ExposeHeaders !== undefined && input.ExposeHeaders !== null) {\n const nodes = serializeAws_restXmlExposeHeaders(input.ExposeHeaders, context);\n nodes.map((node: any) => {\n node = node.withName(\"ExposeHeader\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.MaxAgeSeconds !== undefined && input.MaxAgeSeconds !== null) {\n const node = new __XmlNode(\"MaxAgeSeconds\")\n .addChildNode(new __XmlText(String(input.MaxAgeSeconds)))\n .withName(\"MaxAgeSeconds\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlCORSRules = (input: CORSRule[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = serializeAws_restXmlCORSRule(entry, context);\n return node.withName(\"member\");\n });\n};\n\nconst serializeAws_restXmlCreateBucketConfiguration = (\n input: CreateBucketConfiguration,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"CreateBucketConfiguration\");\n if (input.LocationConstraint !== undefined && input.LocationConstraint !== null) {\n const node = new __XmlNode(\"BucketLocationConstraint\")\n .addChildNode(new __XmlText(input.LocationConstraint))\n .withName(\"LocationConstraint\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlCSVInput = (input: CSVInput, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"CSVInput\");\n if (input.FileHeaderInfo !== undefined && input.FileHeaderInfo !== null) {\n const node = new __XmlNode(\"FileHeaderInfo\")\n .addChildNode(new __XmlText(input.FileHeaderInfo))\n .withName(\"FileHeaderInfo\");\n bodyNode.addChildNode(node);\n }\n if (input.Comments !== undefined && input.Comments !== null) {\n const node = new __XmlNode(\"Comments\").addChildNode(new __XmlText(input.Comments)).withName(\"Comments\");\n bodyNode.addChildNode(node);\n }\n if (input.QuoteEscapeCharacter !== undefined && input.QuoteEscapeCharacter !== null) {\n const node = new __XmlNode(\"QuoteEscapeCharacter\")\n .addChildNode(new __XmlText(input.QuoteEscapeCharacter))\n .withName(\"QuoteEscapeCharacter\");\n bodyNode.addChildNode(node);\n }\n if (input.RecordDelimiter !== undefined && input.RecordDelimiter !== null) {\n const node = new __XmlNode(\"RecordDelimiter\")\n .addChildNode(new __XmlText(input.RecordDelimiter))\n .withName(\"RecordDelimiter\");\n bodyNode.addChildNode(node);\n }\n if (input.FieldDelimiter !== undefined && input.FieldDelimiter !== null) {\n const node = new __XmlNode(\"FieldDelimiter\")\n .addChildNode(new __XmlText(input.FieldDelimiter))\n .withName(\"FieldDelimiter\");\n bodyNode.addChildNode(node);\n }\n if (input.QuoteCharacter !== undefined && input.QuoteCharacter !== null) {\n const node = new __XmlNode(\"QuoteCharacter\")\n .addChildNode(new __XmlText(input.QuoteCharacter))\n .withName(\"QuoteCharacter\");\n bodyNode.addChildNode(node);\n }\n if (input.AllowQuotedRecordDelimiter !== undefined && input.AllowQuotedRecordDelimiter !== null) {\n const node = new __XmlNode(\"AllowQuotedRecordDelimiter\")\n .addChildNode(new __XmlText(String(input.AllowQuotedRecordDelimiter)))\n .withName(\"AllowQuotedRecordDelimiter\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlCSVOutput = (input: CSVOutput, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"CSVOutput\");\n if (input.QuoteFields !== undefined && input.QuoteFields !== null) {\n const node = new __XmlNode(\"QuoteFields\").addChildNode(new __XmlText(input.QuoteFields)).withName(\"QuoteFields\");\n bodyNode.addChildNode(node);\n }\n if (input.QuoteEscapeCharacter !== undefined && input.QuoteEscapeCharacter !== null) {\n const node = new __XmlNode(\"QuoteEscapeCharacter\")\n .addChildNode(new __XmlText(input.QuoteEscapeCharacter))\n .withName(\"QuoteEscapeCharacter\");\n bodyNode.addChildNode(node);\n }\n if (input.RecordDelimiter !== undefined && input.RecordDelimiter !== null) {\n const node = new __XmlNode(\"RecordDelimiter\")\n .addChildNode(new __XmlText(input.RecordDelimiter))\n .withName(\"RecordDelimiter\");\n bodyNode.addChildNode(node);\n }\n if (input.FieldDelimiter !== undefined && input.FieldDelimiter !== null) {\n const node = new __XmlNode(\"FieldDelimiter\")\n .addChildNode(new __XmlText(input.FieldDelimiter))\n .withName(\"FieldDelimiter\");\n bodyNode.addChildNode(node);\n }\n if (input.QuoteCharacter !== undefined && input.QuoteCharacter !== null) {\n const node = new __XmlNode(\"QuoteCharacter\")\n .addChildNode(new __XmlText(input.QuoteCharacter))\n .withName(\"QuoteCharacter\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlDefaultRetention = (input: DefaultRetention, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"DefaultRetention\");\n if (input.Mode !== undefined && input.Mode !== null) {\n const node = new __XmlNode(\"ObjectLockRetentionMode\").addChildNode(new __XmlText(input.Mode)).withName(\"Mode\");\n bodyNode.addChildNode(node);\n }\n if (input.Days !== undefined && input.Days !== null) {\n const node = new __XmlNode(\"Days\").addChildNode(new __XmlText(String(input.Days))).withName(\"Days\");\n bodyNode.addChildNode(node);\n }\n if (input.Years !== undefined && input.Years !== null) {\n const node = new __XmlNode(\"Years\").addChildNode(new __XmlText(String(input.Years))).withName(\"Years\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlDelete = (input: Delete, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"Delete\");\n if (input.Objects !== undefined && input.Objects !== null) {\n const nodes = serializeAws_restXmlObjectIdentifierList(input.Objects, context);\n nodes.map((node: any) => {\n node = node.withName(\"Object\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.Quiet !== undefined && input.Quiet !== null) {\n const node = new __XmlNode(\"Quiet\").addChildNode(new __XmlText(String(input.Quiet))).withName(\"Quiet\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlDeleteMarkerReplication = (input: DeleteMarkerReplication, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"DeleteMarkerReplication\");\n if (input.Status !== undefined && input.Status !== null) {\n const node = new __XmlNode(\"DeleteMarkerReplicationStatus\")\n .addChildNode(new __XmlText(input.Status))\n .withName(\"Status\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlDestination = (input: Destination, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"Destination\");\n if (input.Bucket !== undefined && input.Bucket !== null) {\n const node = new __XmlNode(\"BucketName\").addChildNode(new __XmlText(input.Bucket)).withName(\"Bucket\");\n bodyNode.addChildNode(node);\n }\n if (input.Account !== undefined && input.Account !== null) {\n const node = new __XmlNode(\"AccountId\").addChildNode(new __XmlText(input.Account)).withName(\"Account\");\n bodyNode.addChildNode(node);\n }\n if (input.StorageClass !== undefined && input.StorageClass !== null) {\n const node = new __XmlNode(\"StorageClass\").addChildNode(new __XmlText(input.StorageClass)).withName(\"StorageClass\");\n bodyNode.addChildNode(node);\n }\n if (input.AccessControlTranslation !== undefined && input.AccessControlTranslation !== null) {\n const node = serializeAws_restXmlAccessControlTranslation(input.AccessControlTranslation, context).withName(\n \"AccessControlTranslation\"\n );\n bodyNode.addChildNode(node);\n }\n if (input.EncryptionConfiguration !== undefined && input.EncryptionConfiguration !== null) {\n const node = serializeAws_restXmlEncryptionConfiguration(input.EncryptionConfiguration, context).withName(\n \"EncryptionConfiguration\"\n );\n bodyNode.addChildNode(node);\n }\n if (input.ReplicationTime !== undefined && input.ReplicationTime !== null) {\n const node = serializeAws_restXmlReplicationTime(input.ReplicationTime, context).withName(\"ReplicationTime\");\n bodyNode.addChildNode(node);\n }\n if (input.Metrics !== undefined && input.Metrics !== null) {\n const node = serializeAws_restXmlMetrics(input.Metrics, context).withName(\"Metrics\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlEncryption = (input: Encryption, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"Encryption\");\n if (input.EncryptionType !== undefined && input.EncryptionType !== null) {\n const node = new __XmlNode(\"ServerSideEncryption\")\n .addChildNode(new __XmlText(input.EncryptionType))\n .withName(\"EncryptionType\");\n bodyNode.addChildNode(node);\n }\n if (input.KMSKeyId !== undefined && input.KMSKeyId !== null) {\n const node = new __XmlNode(\"SSEKMSKeyId\").addChildNode(new __XmlText(input.KMSKeyId)).withName(\"KMSKeyId\");\n bodyNode.addChildNode(node);\n }\n if (input.KMSContext !== undefined && input.KMSContext !== null) {\n const node = new __XmlNode(\"KMSContext\").addChildNode(new __XmlText(input.KMSContext)).withName(\"KMSContext\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlEncryptionConfiguration = (input: EncryptionConfiguration, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"EncryptionConfiguration\");\n if (input.ReplicaKmsKeyID !== undefined && input.ReplicaKmsKeyID !== null) {\n const node = new __XmlNode(\"ReplicaKmsKeyID\")\n .addChildNode(new __XmlText(input.ReplicaKmsKeyID))\n .withName(\"ReplicaKmsKeyID\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlErrorDocument = (input: ErrorDocument, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"ErrorDocument\");\n if (input.Key !== undefined && input.Key !== null) {\n const node = new __XmlNode(\"ObjectKey\").addChildNode(new __XmlText(input.Key)).withName(\"Key\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlEventList = (input: (Event | string)[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = new __XmlNode(\"Event\").addChildNode(new __XmlText(entry));\n return node.withName(\"member\");\n });\n};\n\nconst serializeAws_restXmlExistingObjectReplication = (\n input: ExistingObjectReplication,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"ExistingObjectReplication\");\n if (input.Status !== undefined && input.Status !== null) {\n const node = new __XmlNode(\"ExistingObjectReplicationStatus\")\n .addChildNode(new __XmlText(input.Status))\n .withName(\"Status\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlExposeHeaders = (input: string[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = new __XmlNode(\"ExposeHeader\").addChildNode(new __XmlText(entry));\n return node.withName(\"member\");\n });\n};\n\nconst serializeAws_restXmlFilterRule = (input: FilterRule, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"FilterRule\");\n if (input.Name !== undefined && input.Name !== null) {\n const node = new __XmlNode(\"FilterRuleName\").addChildNode(new __XmlText(input.Name)).withName(\"Name\");\n bodyNode.addChildNode(node);\n }\n if (input.Value !== undefined && input.Value !== null) {\n const node = new __XmlNode(\"FilterRuleValue\").addChildNode(new __XmlText(input.Value)).withName(\"Value\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlFilterRuleList = (input: FilterRule[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = serializeAws_restXmlFilterRule(entry, context);\n return node.withName(\"member\");\n });\n};\n\nconst serializeAws_restXmlGlacierJobParameters = (input: GlacierJobParameters, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"GlacierJobParameters\");\n if (input.Tier !== undefined && input.Tier !== null) {\n const node = new __XmlNode(\"Tier\").addChildNode(new __XmlText(input.Tier)).withName(\"Tier\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlGrant = (input: Grant, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"Grant\");\n if (input.Grantee !== undefined && input.Grantee !== null) {\n const node = serializeAws_restXmlGrantee(input.Grantee, context).withName(\"Grantee\");\n bodyNode.addChildNode(node);\n }\n if (input.Permission !== undefined && input.Permission !== null) {\n const node = new __XmlNode(\"Permission\").addChildNode(new __XmlText(input.Permission)).withName(\"Permission\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlGrantee = (input: Grantee, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"Grantee\");\n if (input.DisplayName !== undefined && input.DisplayName !== null) {\n const node = new __XmlNode(\"DisplayName\").addChildNode(new __XmlText(input.DisplayName)).withName(\"DisplayName\");\n bodyNode.addChildNode(node);\n }\n if (input.EmailAddress !== undefined && input.EmailAddress !== null) {\n const node = new __XmlNode(\"EmailAddress\").addChildNode(new __XmlText(input.EmailAddress)).withName(\"EmailAddress\");\n bodyNode.addChildNode(node);\n }\n if (input.ID !== undefined && input.ID !== null) {\n const node = new __XmlNode(\"ID\").addChildNode(new __XmlText(input.ID)).withName(\"ID\");\n bodyNode.addChildNode(node);\n }\n if (input.URI !== undefined && input.URI !== null) {\n const node = new __XmlNode(\"URI\").addChildNode(new __XmlText(input.URI)).withName(\"URI\");\n bodyNode.addChildNode(node);\n }\n if (input.Type !== undefined && input.Type !== null) {\n bodyNode.addAttribute(\"xsi:type\", input.Type);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlGrants = (input: Grant[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = serializeAws_restXmlGrant(entry, context);\n return node.withName(\"Grant\");\n });\n};\n\nconst serializeAws_restXmlIndexDocument = (input: IndexDocument, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"IndexDocument\");\n if (input.Suffix !== undefined && input.Suffix !== null) {\n const node = new __XmlNode(\"Suffix\").addChildNode(new __XmlText(input.Suffix)).withName(\"Suffix\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlInputSerialization = (input: InputSerialization, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"InputSerialization\");\n if (input.CSV !== undefined && input.CSV !== null) {\n const node = serializeAws_restXmlCSVInput(input.CSV, context).withName(\"CSV\");\n bodyNode.addChildNode(node);\n }\n if (input.CompressionType !== undefined && input.CompressionType !== null) {\n const node = new __XmlNode(\"CompressionType\")\n .addChildNode(new __XmlText(input.CompressionType))\n .withName(\"CompressionType\");\n bodyNode.addChildNode(node);\n }\n if (input.JSON !== undefined && input.JSON !== null) {\n const node = serializeAws_restXmlJSONInput(input.JSON, context).withName(\"JSON\");\n bodyNode.addChildNode(node);\n }\n if (input.Parquet !== undefined && input.Parquet !== null) {\n const node = serializeAws_restXmlParquetInput(input.Parquet, context).withName(\"Parquet\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlIntelligentTieringAndOperator = (\n input: IntelligentTieringAndOperator,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"IntelligentTieringAndOperator\");\n if (input.Prefix !== undefined && input.Prefix !== null) {\n const node = new __XmlNode(\"Prefix\").addChildNode(new __XmlText(input.Prefix)).withName(\"Prefix\");\n bodyNode.addChildNode(node);\n }\n if (input.Tags !== undefined && input.Tags !== null) {\n const nodes = serializeAws_restXmlTagSet(input.Tags, context);\n nodes.map((node: any) => {\n node = node.withName(\"Tag\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlIntelligentTieringConfiguration = (\n input: IntelligentTieringConfiguration,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"IntelligentTieringConfiguration\");\n if (input.Id !== undefined && input.Id !== null) {\n const node = new __XmlNode(\"IntelligentTieringId\").addChildNode(new __XmlText(input.Id)).withName(\"Id\");\n bodyNode.addChildNode(node);\n }\n if (input.Filter !== undefined && input.Filter !== null) {\n const node = serializeAws_restXmlIntelligentTieringFilter(input.Filter, context).withName(\"Filter\");\n bodyNode.addChildNode(node);\n }\n if (input.Status !== undefined && input.Status !== null) {\n const node = new __XmlNode(\"IntelligentTieringStatus\").addChildNode(new __XmlText(input.Status)).withName(\"Status\");\n bodyNode.addChildNode(node);\n }\n if (input.Tierings !== undefined && input.Tierings !== null) {\n const nodes = serializeAws_restXmlTieringList(input.Tierings, context);\n nodes.map((node: any) => {\n node = node.withName(\"Tiering\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlIntelligentTieringFilter = (\n input: IntelligentTieringFilter,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"IntelligentTieringFilter\");\n if (input.Prefix !== undefined && input.Prefix !== null) {\n const node = new __XmlNode(\"Prefix\").addChildNode(new __XmlText(input.Prefix)).withName(\"Prefix\");\n bodyNode.addChildNode(node);\n }\n if (input.Tag !== undefined && input.Tag !== null) {\n const node = serializeAws_restXmlTag(input.Tag, context).withName(\"Tag\");\n bodyNode.addChildNode(node);\n }\n if (input.And !== undefined && input.And !== null) {\n const node = serializeAws_restXmlIntelligentTieringAndOperator(input.And, context).withName(\"And\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlInventoryConfiguration = (input: InventoryConfiguration, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"InventoryConfiguration\");\n if (input.Destination !== undefined && input.Destination !== null) {\n const node = serializeAws_restXmlInventoryDestination(input.Destination, context).withName(\"Destination\");\n bodyNode.addChildNode(node);\n }\n if (input.IsEnabled !== undefined && input.IsEnabled !== null) {\n const node = new __XmlNode(\"IsEnabled\").addChildNode(new __XmlText(String(input.IsEnabled))).withName(\"IsEnabled\");\n bodyNode.addChildNode(node);\n }\n if (input.Filter !== undefined && input.Filter !== null) {\n const node = serializeAws_restXmlInventoryFilter(input.Filter, context).withName(\"Filter\");\n bodyNode.addChildNode(node);\n }\n if (input.Id !== undefined && input.Id !== null) {\n const node = new __XmlNode(\"InventoryId\").addChildNode(new __XmlText(input.Id)).withName(\"Id\");\n bodyNode.addChildNode(node);\n }\n if (input.IncludedObjectVersions !== undefined && input.IncludedObjectVersions !== null) {\n const node = new __XmlNode(\"InventoryIncludedObjectVersions\")\n .addChildNode(new __XmlText(input.IncludedObjectVersions))\n .withName(\"IncludedObjectVersions\");\n bodyNode.addChildNode(node);\n }\n if (input.OptionalFields !== undefined && input.OptionalFields !== null) {\n const nodes = serializeAws_restXmlInventoryOptionalFields(input.OptionalFields, context);\n const containerNode = new __XmlNode(\"OptionalFields\");\n nodes.map((node: any) => {\n containerNode.addChildNode(node);\n });\n bodyNode.addChildNode(containerNode);\n }\n if (input.Schedule !== undefined && input.Schedule !== null) {\n const node = serializeAws_restXmlInventorySchedule(input.Schedule, context).withName(\"Schedule\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlInventoryDestination = (input: InventoryDestination, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"InventoryDestination\");\n if (input.S3BucketDestination !== undefined && input.S3BucketDestination !== null) {\n const node = serializeAws_restXmlInventoryS3BucketDestination(input.S3BucketDestination, context).withName(\n \"S3BucketDestination\"\n );\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlInventoryEncryption = (input: InventoryEncryption, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"InventoryEncryption\");\n if (input.SSES3 !== undefined && input.SSES3 !== null) {\n const node = serializeAws_restXmlSSES3(input.SSES3, context).withName(\"SSE-S3\");\n bodyNode.addChildNode(node);\n }\n if (input.SSEKMS !== undefined && input.SSEKMS !== null) {\n const node = serializeAws_restXmlSSEKMS(input.SSEKMS, context).withName(\"SSE-KMS\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlInventoryFilter = (input: InventoryFilter, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"InventoryFilter\");\n if (input.Prefix !== undefined && input.Prefix !== null) {\n const node = new __XmlNode(\"Prefix\").addChildNode(new __XmlText(input.Prefix)).withName(\"Prefix\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlInventoryOptionalFields = (\n input: (InventoryOptionalField | string)[],\n context: __SerdeContext\n): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = new __XmlNode(\"InventoryOptionalField\").addChildNode(new __XmlText(entry));\n return node.withName(\"Field\");\n });\n};\n\nconst serializeAws_restXmlInventoryS3BucketDestination = (\n input: InventoryS3BucketDestination,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"InventoryS3BucketDestination\");\n if (input.AccountId !== undefined && input.AccountId !== null) {\n const node = new __XmlNode(\"AccountId\").addChildNode(new __XmlText(input.AccountId)).withName(\"AccountId\");\n bodyNode.addChildNode(node);\n }\n if (input.Bucket !== undefined && input.Bucket !== null) {\n const node = new __XmlNode(\"BucketName\").addChildNode(new __XmlText(input.Bucket)).withName(\"Bucket\");\n bodyNode.addChildNode(node);\n }\n if (input.Format !== undefined && input.Format !== null) {\n const node = new __XmlNode(\"InventoryFormat\").addChildNode(new __XmlText(input.Format)).withName(\"Format\");\n bodyNode.addChildNode(node);\n }\n if (input.Prefix !== undefined && input.Prefix !== null) {\n const node = new __XmlNode(\"Prefix\").addChildNode(new __XmlText(input.Prefix)).withName(\"Prefix\");\n bodyNode.addChildNode(node);\n }\n if (input.Encryption !== undefined && input.Encryption !== null) {\n const node = serializeAws_restXmlInventoryEncryption(input.Encryption, context).withName(\"Encryption\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlInventorySchedule = (input: InventorySchedule, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"InventorySchedule\");\n if (input.Frequency !== undefined && input.Frequency !== null) {\n const node = new __XmlNode(\"InventoryFrequency\").addChildNode(new __XmlText(input.Frequency)).withName(\"Frequency\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlJSONInput = (input: JSONInput, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"JSONInput\");\n if (input.Type !== undefined && input.Type !== null) {\n const node = new __XmlNode(\"JSONType\").addChildNode(new __XmlText(input.Type)).withName(\"Type\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlJSONOutput = (input: JSONOutput, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"JSONOutput\");\n if (input.RecordDelimiter !== undefined && input.RecordDelimiter !== null) {\n const node = new __XmlNode(\"RecordDelimiter\")\n .addChildNode(new __XmlText(input.RecordDelimiter))\n .withName(\"RecordDelimiter\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlLambdaFunctionConfiguration = (\n input: LambdaFunctionConfiguration,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"LambdaFunctionConfiguration\");\n if (input.Id !== undefined && input.Id !== null) {\n const node = new __XmlNode(\"NotificationId\").addChildNode(new __XmlText(input.Id)).withName(\"Id\");\n bodyNode.addChildNode(node);\n }\n if (input.LambdaFunctionArn !== undefined && input.LambdaFunctionArn !== null) {\n const node = new __XmlNode(\"LambdaFunctionArn\")\n .addChildNode(new __XmlText(input.LambdaFunctionArn))\n .withName(\"CloudFunction\");\n bodyNode.addChildNode(node);\n }\n if (input.Events !== undefined && input.Events !== null) {\n const nodes = serializeAws_restXmlEventList(input.Events, context);\n nodes.map((node: any) => {\n node = node.withName(\"Event\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.Filter !== undefined && input.Filter !== null) {\n const node = serializeAws_restXmlNotificationConfigurationFilter(input.Filter, context).withName(\"Filter\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlLambdaFunctionConfigurationList = (\n input: LambdaFunctionConfiguration[],\n context: __SerdeContext\n): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = serializeAws_restXmlLambdaFunctionConfiguration(entry, context);\n return node.withName(\"member\");\n });\n};\n\nconst serializeAws_restXmlLifecycleExpiration = (input: LifecycleExpiration, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"LifecycleExpiration\");\n if (input.Date !== undefined && input.Date !== null) {\n const node = new __XmlNode(\"Date\")\n .addChildNode(new __XmlText(input.Date.toISOString().split(\".\")[0] + \"Z\"))\n .withName(\"Date\");\n bodyNode.addChildNode(node);\n }\n if (input.Days !== undefined && input.Days !== null) {\n const node = new __XmlNode(\"Days\").addChildNode(new __XmlText(String(input.Days))).withName(\"Days\");\n bodyNode.addChildNode(node);\n }\n if (input.ExpiredObjectDeleteMarker !== undefined && input.ExpiredObjectDeleteMarker !== null) {\n const node = new __XmlNode(\"ExpiredObjectDeleteMarker\")\n .addChildNode(new __XmlText(String(input.ExpiredObjectDeleteMarker)))\n .withName(\"ExpiredObjectDeleteMarker\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlLifecycleRule = (input: LifecycleRule, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"LifecycleRule\");\n if (input.Expiration !== undefined && input.Expiration !== null) {\n const node = serializeAws_restXmlLifecycleExpiration(input.Expiration, context).withName(\"Expiration\");\n bodyNode.addChildNode(node);\n }\n if (input.ID !== undefined && input.ID !== null) {\n const node = new __XmlNode(\"ID\").addChildNode(new __XmlText(input.ID)).withName(\"ID\");\n bodyNode.addChildNode(node);\n }\n if (input.Prefix !== undefined && input.Prefix !== null) {\n const node = new __XmlNode(\"Prefix\").addChildNode(new __XmlText(input.Prefix)).withName(\"Prefix\");\n bodyNode.addChildNode(node);\n }\n if (input.Filter !== undefined && input.Filter !== null) {\n const node = serializeAws_restXmlLifecycleRuleFilter(input.Filter, context).withName(\"Filter\");\n bodyNode.addChildNode(node);\n }\n if (input.Status !== undefined && input.Status !== null) {\n const node = new __XmlNode(\"ExpirationStatus\").addChildNode(new __XmlText(input.Status)).withName(\"Status\");\n bodyNode.addChildNode(node);\n }\n if (input.Transitions !== undefined && input.Transitions !== null) {\n const nodes = serializeAws_restXmlTransitionList(input.Transitions, context);\n nodes.map((node: any) => {\n node = node.withName(\"Transition\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.NoncurrentVersionTransitions !== undefined && input.NoncurrentVersionTransitions !== null) {\n const nodes = serializeAws_restXmlNoncurrentVersionTransitionList(input.NoncurrentVersionTransitions, context);\n nodes.map((node: any) => {\n node = node.withName(\"NoncurrentVersionTransition\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.NoncurrentVersionExpiration !== undefined && input.NoncurrentVersionExpiration !== null) {\n const node = serializeAws_restXmlNoncurrentVersionExpiration(input.NoncurrentVersionExpiration, context).withName(\n \"NoncurrentVersionExpiration\"\n );\n bodyNode.addChildNode(node);\n }\n if (input.AbortIncompleteMultipartUpload !== undefined && input.AbortIncompleteMultipartUpload !== null) {\n const node = serializeAws_restXmlAbortIncompleteMultipartUpload(\n input.AbortIncompleteMultipartUpload,\n context\n ).withName(\"AbortIncompleteMultipartUpload\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlLifecycleRuleAndOperator = (\n input: LifecycleRuleAndOperator,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"LifecycleRuleAndOperator\");\n if (input.Prefix !== undefined && input.Prefix !== null) {\n const node = new __XmlNode(\"Prefix\").addChildNode(new __XmlText(input.Prefix)).withName(\"Prefix\");\n bodyNode.addChildNode(node);\n }\n if (input.Tags !== undefined && input.Tags !== null) {\n const nodes = serializeAws_restXmlTagSet(input.Tags, context);\n nodes.map((node: any) => {\n node = node.withName(\"Tag\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlLifecycleRuleFilter = (input: LifecycleRuleFilter, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"LifecycleRuleFilter\");\n LifecycleRuleFilter.visit(input, {\n Prefix: (value) => {\n const node = new __XmlNode(\"Prefix\").addChildNode(new __XmlText(value)).withName(\"Prefix\");\n bodyNode.addChildNode(node);\n },\n Tag: (value) => {\n const node = serializeAws_restXmlTag(value, context).withName(\"Tag\");\n bodyNode.addChildNode(node);\n },\n And: (value) => {\n const node = serializeAws_restXmlLifecycleRuleAndOperator(value, context).withName(\"And\");\n bodyNode.addChildNode(node);\n },\n _: (name: string, value: any) => {\n if (!(value instanceof __XmlNode || value instanceof __XmlText)) {\n throw new Error(\"Unable to serialize unknown union members in XML.\");\n }\n bodyNode.addChildNode(new __XmlNode(name).addChildNode(value));\n },\n });\n return bodyNode;\n};\n\nconst serializeAws_restXmlLifecycleRules = (input: LifecycleRule[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = serializeAws_restXmlLifecycleRule(entry, context);\n return node.withName(\"member\");\n });\n};\n\nconst serializeAws_restXmlLoggingEnabled = (input: LoggingEnabled, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"LoggingEnabled\");\n if (input.TargetBucket !== undefined && input.TargetBucket !== null) {\n const node = new __XmlNode(\"TargetBucket\").addChildNode(new __XmlText(input.TargetBucket)).withName(\"TargetBucket\");\n bodyNode.addChildNode(node);\n }\n if (input.TargetGrants !== undefined && input.TargetGrants !== null) {\n const nodes = serializeAws_restXmlTargetGrants(input.TargetGrants, context);\n const containerNode = new __XmlNode(\"TargetGrants\");\n nodes.map((node: any) => {\n containerNode.addChildNode(node);\n });\n bodyNode.addChildNode(containerNode);\n }\n if (input.TargetPrefix !== undefined && input.TargetPrefix !== null) {\n const node = new __XmlNode(\"TargetPrefix\").addChildNode(new __XmlText(input.TargetPrefix)).withName(\"TargetPrefix\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlMetadataEntry = (input: MetadataEntry, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"MetadataEntry\");\n if (input.Name !== undefined && input.Name !== null) {\n const node = new __XmlNode(\"MetadataKey\").addChildNode(new __XmlText(input.Name)).withName(\"Name\");\n bodyNode.addChildNode(node);\n }\n if (input.Value !== undefined && input.Value !== null) {\n const node = new __XmlNode(\"MetadataValue\").addChildNode(new __XmlText(input.Value)).withName(\"Value\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlMetrics = (input: Metrics, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"Metrics\");\n if (input.Status !== undefined && input.Status !== null) {\n const node = new __XmlNode(\"MetricsStatus\").addChildNode(new __XmlText(input.Status)).withName(\"Status\");\n bodyNode.addChildNode(node);\n }\n if (input.EventThreshold !== undefined && input.EventThreshold !== null) {\n const node = serializeAws_restXmlReplicationTimeValue(input.EventThreshold, context).withName(\"EventThreshold\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlMetricsAndOperator = (input: MetricsAndOperator, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"MetricsAndOperator\");\n if (input.Prefix !== undefined && input.Prefix !== null) {\n const node = new __XmlNode(\"Prefix\").addChildNode(new __XmlText(input.Prefix)).withName(\"Prefix\");\n bodyNode.addChildNode(node);\n }\n if (input.Tags !== undefined && input.Tags !== null) {\n const nodes = serializeAws_restXmlTagSet(input.Tags, context);\n nodes.map((node: any) => {\n node = node.withName(\"Tag\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlMetricsConfiguration = (input: MetricsConfiguration, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"MetricsConfiguration\");\n if (input.Id !== undefined && input.Id !== null) {\n const node = new __XmlNode(\"MetricsId\").addChildNode(new __XmlText(input.Id)).withName(\"Id\");\n bodyNode.addChildNode(node);\n }\n if (input.Filter !== undefined && input.Filter !== null) {\n const node = serializeAws_restXmlMetricsFilter(input.Filter, context).withName(\"Filter\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlMetricsFilter = (input: MetricsFilter, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"MetricsFilter\");\n MetricsFilter.visit(input, {\n Prefix: (value) => {\n const node = new __XmlNode(\"Prefix\").addChildNode(new __XmlText(value)).withName(\"Prefix\");\n bodyNode.addChildNode(node);\n },\n Tag: (value) => {\n const node = serializeAws_restXmlTag(value, context).withName(\"Tag\");\n bodyNode.addChildNode(node);\n },\n And: (value) => {\n const node = serializeAws_restXmlMetricsAndOperator(value, context).withName(\"And\");\n bodyNode.addChildNode(node);\n },\n _: (name: string, value: any) => {\n if (!(value instanceof __XmlNode || value instanceof __XmlText)) {\n throw new Error(\"Unable to serialize unknown union members in XML.\");\n }\n bodyNode.addChildNode(new __XmlNode(name).addChildNode(value));\n },\n });\n return bodyNode;\n};\n\nconst serializeAws_restXmlNoncurrentVersionExpiration = (\n input: NoncurrentVersionExpiration,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"NoncurrentVersionExpiration\");\n if (input.NoncurrentDays !== undefined && input.NoncurrentDays !== null) {\n const node = new __XmlNode(\"Days\")\n .addChildNode(new __XmlText(String(input.NoncurrentDays)))\n .withName(\"NoncurrentDays\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlNoncurrentVersionTransition = (\n input: NoncurrentVersionTransition,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"NoncurrentVersionTransition\");\n if (input.NoncurrentDays !== undefined && input.NoncurrentDays !== null) {\n const node = new __XmlNode(\"Days\")\n .addChildNode(new __XmlText(String(input.NoncurrentDays)))\n .withName(\"NoncurrentDays\");\n bodyNode.addChildNode(node);\n }\n if (input.StorageClass !== undefined && input.StorageClass !== null) {\n const node = new __XmlNode(\"TransitionStorageClass\")\n .addChildNode(new __XmlText(input.StorageClass))\n .withName(\"StorageClass\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlNoncurrentVersionTransitionList = (\n input: NoncurrentVersionTransition[],\n context: __SerdeContext\n): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = serializeAws_restXmlNoncurrentVersionTransition(entry, context);\n return node.withName(\"member\");\n });\n};\n\nconst serializeAws_restXmlNotificationConfiguration = (\n input: NotificationConfiguration,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"NotificationConfiguration\");\n if (input.TopicConfigurations !== undefined && input.TopicConfigurations !== null) {\n const nodes = serializeAws_restXmlTopicConfigurationList(input.TopicConfigurations, context);\n nodes.map((node: any) => {\n node = node.withName(\"TopicConfiguration\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.QueueConfigurations !== undefined && input.QueueConfigurations !== null) {\n const nodes = serializeAws_restXmlQueueConfigurationList(input.QueueConfigurations, context);\n nodes.map((node: any) => {\n node = node.withName(\"QueueConfiguration\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.LambdaFunctionConfigurations !== undefined && input.LambdaFunctionConfigurations !== null) {\n const nodes = serializeAws_restXmlLambdaFunctionConfigurationList(input.LambdaFunctionConfigurations, context);\n nodes.map((node: any) => {\n node = node.withName(\"CloudFunctionConfiguration\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlNotificationConfigurationFilter = (\n input: NotificationConfigurationFilter,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"NotificationConfigurationFilter\");\n if (input.Key !== undefined && input.Key !== null) {\n const node = serializeAws_restXmlS3KeyFilter(input.Key, context).withName(\"S3Key\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlObjectIdentifier = (input: ObjectIdentifier, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"ObjectIdentifier\");\n if (input.Key !== undefined && input.Key !== null) {\n const node = new __XmlNode(\"ObjectKey\").addChildNode(new __XmlText(input.Key)).withName(\"Key\");\n bodyNode.addChildNode(node);\n }\n if (input.VersionId !== undefined && input.VersionId !== null) {\n const node = new __XmlNode(\"ObjectVersionId\").addChildNode(new __XmlText(input.VersionId)).withName(\"VersionId\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlObjectIdentifierList = (input: ObjectIdentifier[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = serializeAws_restXmlObjectIdentifier(entry, context);\n return node.withName(\"member\");\n });\n};\n\nconst serializeAws_restXmlObjectLockConfiguration = (input: ObjectLockConfiguration, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"ObjectLockConfiguration\");\n if (input.ObjectLockEnabled !== undefined && input.ObjectLockEnabled !== null) {\n const node = new __XmlNode(\"ObjectLockEnabled\")\n .addChildNode(new __XmlText(input.ObjectLockEnabled))\n .withName(\"ObjectLockEnabled\");\n bodyNode.addChildNode(node);\n }\n if (input.Rule !== undefined && input.Rule !== null) {\n const node = serializeAws_restXmlObjectLockRule(input.Rule, context).withName(\"Rule\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlObjectLockLegalHold = (input: ObjectLockLegalHold, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"ObjectLockLegalHold\");\n if (input.Status !== undefined && input.Status !== null) {\n const node = new __XmlNode(\"ObjectLockLegalHoldStatus\")\n .addChildNode(new __XmlText(input.Status))\n .withName(\"Status\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlObjectLockRetention = (input: ObjectLockRetention, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"ObjectLockRetention\");\n if (input.Mode !== undefined && input.Mode !== null) {\n const node = new __XmlNode(\"ObjectLockRetentionMode\").addChildNode(new __XmlText(input.Mode)).withName(\"Mode\");\n bodyNode.addChildNode(node);\n }\n if (input.RetainUntilDate !== undefined && input.RetainUntilDate !== null) {\n const node = new __XmlNode(\"Date\")\n .addChildNode(new __XmlText(input.RetainUntilDate.toISOString().split(\".\")[0] + \"Z\"))\n .withName(\"RetainUntilDate\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlObjectLockRule = (input: ObjectLockRule, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"ObjectLockRule\");\n if (input.DefaultRetention !== undefined && input.DefaultRetention !== null) {\n const node = serializeAws_restXmlDefaultRetention(input.DefaultRetention, context).withName(\"DefaultRetention\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlOutputLocation = (input: OutputLocation, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"OutputLocation\");\n if (input.S3 !== undefined && input.S3 !== null) {\n const node = serializeAws_restXmlS3Location(input.S3, context).withName(\"S3\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlOutputSerialization = (input: OutputSerialization, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"OutputSerialization\");\n if (input.CSV !== undefined && input.CSV !== null) {\n const node = serializeAws_restXmlCSVOutput(input.CSV, context).withName(\"CSV\");\n bodyNode.addChildNode(node);\n }\n if (input.JSON !== undefined && input.JSON !== null) {\n const node = serializeAws_restXmlJSONOutput(input.JSON, context).withName(\"JSON\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlOwner = (input: Owner, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"Owner\");\n if (input.DisplayName !== undefined && input.DisplayName !== null) {\n const node = new __XmlNode(\"DisplayName\").addChildNode(new __XmlText(input.DisplayName)).withName(\"DisplayName\");\n bodyNode.addChildNode(node);\n }\n if (input.ID !== undefined && input.ID !== null) {\n const node = new __XmlNode(\"ID\").addChildNode(new __XmlText(input.ID)).withName(\"ID\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlOwnershipControls = (input: OwnershipControls, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"OwnershipControls\");\n if (input.Rules !== undefined && input.Rules !== null) {\n const nodes = serializeAws_restXmlOwnershipControlsRules(input.Rules, context);\n nodes.map((node: any) => {\n node = node.withName(\"Rule\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlOwnershipControlsRule = (input: OwnershipControlsRule, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"OwnershipControlsRule\");\n if (input.ObjectOwnership !== undefined && input.ObjectOwnership !== null) {\n const node = new __XmlNode(\"ObjectOwnership\")\n .addChildNode(new __XmlText(input.ObjectOwnership))\n .withName(\"ObjectOwnership\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlOwnershipControlsRules = (input: OwnershipControlsRule[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = serializeAws_restXmlOwnershipControlsRule(entry, context);\n return node.withName(\"member\");\n });\n};\n\nconst serializeAws_restXmlParquetInput = (input: ParquetInput, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"ParquetInput\");\n return bodyNode;\n};\n\nconst serializeAws_restXmlPublicAccessBlockConfiguration = (\n input: PublicAccessBlockConfiguration,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"PublicAccessBlockConfiguration\");\n if (input.BlockPublicAcls !== undefined && input.BlockPublicAcls !== null) {\n const node = new __XmlNode(\"Setting\")\n .addChildNode(new __XmlText(String(input.BlockPublicAcls)))\n .withName(\"BlockPublicAcls\");\n bodyNode.addChildNode(node);\n }\n if (input.IgnorePublicAcls !== undefined && input.IgnorePublicAcls !== null) {\n const node = new __XmlNode(\"Setting\")\n .addChildNode(new __XmlText(String(input.IgnorePublicAcls)))\n .withName(\"IgnorePublicAcls\");\n bodyNode.addChildNode(node);\n }\n if (input.BlockPublicPolicy !== undefined && input.BlockPublicPolicy !== null) {\n const node = new __XmlNode(\"Setting\")\n .addChildNode(new __XmlText(String(input.BlockPublicPolicy)))\n .withName(\"BlockPublicPolicy\");\n bodyNode.addChildNode(node);\n }\n if (input.RestrictPublicBuckets !== undefined && input.RestrictPublicBuckets !== null) {\n const node = new __XmlNode(\"Setting\")\n .addChildNode(new __XmlText(String(input.RestrictPublicBuckets)))\n .withName(\"RestrictPublicBuckets\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlQueueConfiguration = (input: QueueConfiguration, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"QueueConfiguration\");\n if (input.Id !== undefined && input.Id !== null) {\n const node = new __XmlNode(\"NotificationId\").addChildNode(new __XmlText(input.Id)).withName(\"Id\");\n bodyNode.addChildNode(node);\n }\n if (input.QueueArn !== undefined && input.QueueArn !== null) {\n const node = new __XmlNode(\"QueueArn\").addChildNode(new __XmlText(input.QueueArn)).withName(\"Queue\");\n bodyNode.addChildNode(node);\n }\n if (input.Events !== undefined && input.Events !== null) {\n const nodes = serializeAws_restXmlEventList(input.Events, context);\n nodes.map((node: any) => {\n node = node.withName(\"Event\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.Filter !== undefined && input.Filter !== null) {\n const node = serializeAws_restXmlNotificationConfigurationFilter(input.Filter, context).withName(\"Filter\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlQueueConfigurationList = (input: QueueConfiguration[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = serializeAws_restXmlQueueConfiguration(entry, context);\n return node.withName(\"member\");\n });\n};\n\nconst serializeAws_restXmlRedirect = (input: Redirect, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"Redirect\");\n if (input.HostName !== undefined && input.HostName !== null) {\n const node = new __XmlNode(\"HostName\").addChildNode(new __XmlText(input.HostName)).withName(\"HostName\");\n bodyNode.addChildNode(node);\n }\n if (input.HttpRedirectCode !== undefined && input.HttpRedirectCode !== null) {\n const node = new __XmlNode(\"HttpRedirectCode\")\n .addChildNode(new __XmlText(input.HttpRedirectCode))\n .withName(\"HttpRedirectCode\");\n bodyNode.addChildNode(node);\n }\n if (input.Protocol !== undefined && input.Protocol !== null) {\n const node = new __XmlNode(\"Protocol\").addChildNode(new __XmlText(input.Protocol)).withName(\"Protocol\");\n bodyNode.addChildNode(node);\n }\n if (input.ReplaceKeyPrefixWith !== undefined && input.ReplaceKeyPrefixWith !== null) {\n const node = new __XmlNode(\"ReplaceKeyPrefixWith\")\n .addChildNode(new __XmlText(input.ReplaceKeyPrefixWith))\n .withName(\"ReplaceKeyPrefixWith\");\n bodyNode.addChildNode(node);\n }\n if (input.ReplaceKeyWith !== undefined && input.ReplaceKeyWith !== null) {\n const node = new __XmlNode(\"ReplaceKeyWith\")\n .addChildNode(new __XmlText(input.ReplaceKeyWith))\n .withName(\"ReplaceKeyWith\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlRedirectAllRequestsTo = (input: RedirectAllRequestsTo, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"RedirectAllRequestsTo\");\n if (input.HostName !== undefined && input.HostName !== null) {\n const node = new __XmlNode(\"HostName\").addChildNode(new __XmlText(input.HostName)).withName(\"HostName\");\n bodyNode.addChildNode(node);\n }\n if (input.Protocol !== undefined && input.Protocol !== null) {\n const node = new __XmlNode(\"Protocol\").addChildNode(new __XmlText(input.Protocol)).withName(\"Protocol\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlReplicaModifications = (input: ReplicaModifications, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"ReplicaModifications\");\n if (input.Status !== undefined && input.Status !== null) {\n const node = new __XmlNode(\"ReplicaModificationsStatus\")\n .addChildNode(new __XmlText(input.Status))\n .withName(\"Status\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlReplicationConfiguration = (\n input: ReplicationConfiguration,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"ReplicationConfiguration\");\n if (input.Role !== undefined && input.Role !== null) {\n const node = new __XmlNode(\"Role\").addChildNode(new __XmlText(input.Role)).withName(\"Role\");\n bodyNode.addChildNode(node);\n }\n if (input.Rules !== undefined && input.Rules !== null) {\n const nodes = serializeAws_restXmlReplicationRules(input.Rules, context);\n nodes.map((node: any) => {\n node = node.withName(\"Rule\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlReplicationRule = (input: ReplicationRule, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"ReplicationRule\");\n if (input.ID !== undefined && input.ID !== null) {\n const node = new __XmlNode(\"ID\").addChildNode(new __XmlText(input.ID)).withName(\"ID\");\n bodyNode.addChildNode(node);\n }\n if (input.Priority !== undefined && input.Priority !== null) {\n const node = new __XmlNode(\"Priority\").addChildNode(new __XmlText(String(input.Priority))).withName(\"Priority\");\n bodyNode.addChildNode(node);\n }\n if (input.Prefix !== undefined && input.Prefix !== null) {\n const node = new __XmlNode(\"Prefix\").addChildNode(new __XmlText(input.Prefix)).withName(\"Prefix\");\n bodyNode.addChildNode(node);\n }\n if (input.Filter !== undefined && input.Filter !== null) {\n const node = serializeAws_restXmlReplicationRuleFilter(input.Filter, context).withName(\"Filter\");\n bodyNode.addChildNode(node);\n }\n if (input.Status !== undefined && input.Status !== null) {\n const node = new __XmlNode(\"ReplicationRuleStatus\").addChildNode(new __XmlText(input.Status)).withName(\"Status\");\n bodyNode.addChildNode(node);\n }\n if (input.SourceSelectionCriteria !== undefined && input.SourceSelectionCriteria !== null) {\n const node = serializeAws_restXmlSourceSelectionCriteria(input.SourceSelectionCriteria, context).withName(\n \"SourceSelectionCriteria\"\n );\n bodyNode.addChildNode(node);\n }\n if (input.ExistingObjectReplication !== undefined && input.ExistingObjectReplication !== null) {\n const node = serializeAws_restXmlExistingObjectReplication(input.ExistingObjectReplication, context).withName(\n \"ExistingObjectReplication\"\n );\n bodyNode.addChildNode(node);\n }\n if (input.Destination !== undefined && input.Destination !== null) {\n const node = serializeAws_restXmlDestination(input.Destination, context).withName(\"Destination\");\n bodyNode.addChildNode(node);\n }\n if (input.DeleteMarkerReplication !== undefined && input.DeleteMarkerReplication !== null) {\n const node = serializeAws_restXmlDeleteMarkerReplication(input.DeleteMarkerReplication, context).withName(\n \"DeleteMarkerReplication\"\n );\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlReplicationRuleAndOperator = (\n input: ReplicationRuleAndOperator,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"ReplicationRuleAndOperator\");\n if (input.Prefix !== undefined && input.Prefix !== null) {\n const node = new __XmlNode(\"Prefix\").addChildNode(new __XmlText(input.Prefix)).withName(\"Prefix\");\n bodyNode.addChildNode(node);\n }\n if (input.Tags !== undefined && input.Tags !== null) {\n const nodes = serializeAws_restXmlTagSet(input.Tags, context);\n nodes.map((node: any) => {\n node = node.withName(\"Tag\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlReplicationRuleFilter = (input: ReplicationRuleFilter, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"ReplicationRuleFilter\");\n ReplicationRuleFilter.visit(input, {\n Prefix: (value) => {\n const node = new __XmlNode(\"Prefix\").addChildNode(new __XmlText(value)).withName(\"Prefix\");\n bodyNode.addChildNode(node);\n },\n Tag: (value) => {\n const node = serializeAws_restXmlTag(value, context).withName(\"Tag\");\n bodyNode.addChildNode(node);\n },\n And: (value) => {\n const node = serializeAws_restXmlReplicationRuleAndOperator(value, context).withName(\"And\");\n bodyNode.addChildNode(node);\n },\n _: (name: string, value: any) => {\n if (!(value instanceof __XmlNode || value instanceof __XmlText)) {\n throw new Error(\"Unable to serialize unknown union members in XML.\");\n }\n bodyNode.addChildNode(new __XmlNode(name).addChildNode(value));\n },\n });\n return bodyNode;\n};\n\nconst serializeAws_restXmlReplicationRules = (input: ReplicationRule[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = serializeAws_restXmlReplicationRule(entry, context);\n return node.withName(\"member\");\n });\n};\n\nconst serializeAws_restXmlReplicationTime = (input: ReplicationTime, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"ReplicationTime\");\n if (input.Status !== undefined && input.Status !== null) {\n const node = new __XmlNode(\"ReplicationTimeStatus\").addChildNode(new __XmlText(input.Status)).withName(\"Status\");\n bodyNode.addChildNode(node);\n }\n if (input.Time !== undefined && input.Time !== null) {\n const node = serializeAws_restXmlReplicationTimeValue(input.Time, context).withName(\"Time\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlReplicationTimeValue = (input: ReplicationTimeValue, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"ReplicationTimeValue\");\n if (input.Minutes !== undefined && input.Minutes !== null) {\n const node = new __XmlNode(\"Minutes\").addChildNode(new __XmlText(String(input.Minutes))).withName(\"Minutes\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlRequestPaymentConfiguration = (\n input: RequestPaymentConfiguration,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"RequestPaymentConfiguration\");\n if (input.Payer !== undefined && input.Payer !== null) {\n const node = new __XmlNode(\"Payer\").addChildNode(new __XmlText(input.Payer)).withName(\"Payer\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlRequestProgress = (input: RequestProgress, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"RequestProgress\");\n if (input.Enabled !== undefined && input.Enabled !== null) {\n const node = new __XmlNode(\"EnableRequestProgress\")\n .addChildNode(new __XmlText(String(input.Enabled)))\n .withName(\"Enabled\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlRestoreRequest = (input: RestoreRequest, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"RestoreRequest\");\n if (input.Days !== undefined && input.Days !== null) {\n const node = new __XmlNode(\"Days\").addChildNode(new __XmlText(String(input.Days))).withName(\"Days\");\n bodyNode.addChildNode(node);\n }\n if (input.GlacierJobParameters !== undefined && input.GlacierJobParameters !== null) {\n const node = serializeAws_restXmlGlacierJobParameters(input.GlacierJobParameters, context).withName(\n \"GlacierJobParameters\"\n );\n bodyNode.addChildNode(node);\n }\n if (input.Type !== undefined && input.Type !== null) {\n const node = new __XmlNode(\"RestoreRequestType\").addChildNode(new __XmlText(input.Type)).withName(\"Type\");\n bodyNode.addChildNode(node);\n }\n if (input.Tier !== undefined && input.Tier !== null) {\n const node = new __XmlNode(\"Tier\").addChildNode(new __XmlText(input.Tier)).withName(\"Tier\");\n bodyNode.addChildNode(node);\n }\n if (input.Description !== undefined && input.Description !== null) {\n const node = new __XmlNode(\"Description\").addChildNode(new __XmlText(input.Description)).withName(\"Description\");\n bodyNode.addChildNode(node);\n }\n if (input.SelectParameters !== undefined && input.SelectParameters !== null) {\n const node = serializeAws_restXmlSelectParameters(input.SelectParameters, context).withName(\"SelectParameters\");\n bodyNode.addChildNode(node);\n }\n if (input.OutputLocation !== undefined && input.OutputLocation !== null) {\n const node = serializeAws_restXmlOutputLocation(input.OutputLocation, context).withName(\"OutputLocation\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlRoutingRule = (input: RoutingRule, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"RoutingRule\");\n if (input.Condition !== undefined && input.Condition !== null) {\n const node = serializeAws_restXmlCondition(input.Condition, context).withName(\"Condition\");\n bodyNode.addChildNode(node);\n }\n if (input.Redirect !== undefined && input.Redirect !== null) {\n const node = serializeAws_restXmlRedirect(input.Redirect, context).withName(\"Redirect\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlRoutingRules = (input: RoutingRule[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = serializeAws_restXmlRoutingRule(entry, context);\n return node.withName(\"RoutingRule\");\n });\n};\n\nconst serializeAws_restXmlS3KeyFilter = (input: S3KeyFilter, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"S3KeyFilter\");\n if (input.FilterRules !== undefined && input.FilterRules !== null) {\n const nodes = serializeAws_restXmlFilterRuleList(input.FilterRules, context);\n nodes.map((node: any) => {\n node = node.withName(\"FilterRule\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlS3Location = (input: S3Location, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"S3Location\");\n if (input.BucketName !== undefined && input.BucketName !== null) {\n const node = new __XmlNode(\"BucketName\").addChildNode(new __XmlText(input.BucketName)).withName(\"BucketName\");\n bodyNode.addChildNode(node);\n }\n if (input.Prefix !== undefined && input.Prefix !== null) {\n const node = new __XmlNode(\"LocationPrefix\").addChildNode(new __XmlText(input.Prefix)).withName(\"Prefix\");\n bodyNode.addChildNode(node);\n }\n if (input.Encryption !== undefined && input.Encryption !== null) {\n const node = serializeAws_restXmlEncryption(input.Encryption, context).withName(\"Encryption\");\n bodyNode.addChildNode(node);\n }\n if (input.CannedACL !== undefined && input.CannedACL !== null) {\n const node = new __XmlNode(\"ObjectCannedACL\").addChildNode(new __XmlText(input.CannedACL)).withName(\"CannedACL\");\n bodyNode.addChildNode(node);\n }\n if (input.AccessControlList !== undefined && input.AccessControlList !== null) {\n const nodes = serializeAws_restXmlGrants(input.AccessControlList, context);\n const containerNode = new __XmlNode(\"AccessControlList\");\n nodes.map((node: any) => {\n containerNode.addChildNode(node);\n });\n bodyNode.addChildNode(containerNode);\n }\n if (input.Tagging !== undefined && input.Tagging !== null) {\n const node = serializeAws_restXmlTagging(input.Tagging, context).withName(\"Tagging\");\n bodyNode.addChildNode(node);\n }\n if (input.UserMetadata !== undefined && input.UserMetadata !== null) {\n const nodes = serializeAws_restXmlUserMetadata(input.UserMetadata, context);\n const containerNode = new __XmlNode(\"UserMetadata\");\n nodes.map((node: any) => {\n containerNode.addChildNode(node);\n });\n bodyNode.addChildNode(containerNode);\n }\n if (input.StorageClass !== undefined && input.StorageClass !== null) {\n const node = new __XmlNode(\"StorageClass\").addChildNode(new __XmlText(input.StorageClass)).withName(\"StorageClass\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlScanRange = (input: ScanRange, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"ScanRange\");\n if (input.Start !== undefined && input.Start !== null) {\n const node = new __XmlNode(\"Start\").addChildNode(new __XmlText(String(input.Start))).withName(\"Start\");\n bodyNode.addChildNode(node);\n }\n if (input.End !== undefined && input.End !== null) {\n const node = new __XmlNode(\"End\").addChildNode(new __XmlText(String(input.End))).withName(\"End\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlSelectParameters = (input: SelectParameters, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"SelectParameters\");\n if (input.InputSerialization !== undefined && input.InputSerialization !== null) {\n const node = serializeAws_restXmlInputSerialization(input.InputSerialization, context).withName(\n \"InputSerialization\"\n );\n bodyNode.addChildNode(node);\n }\n if (input.ExpressionType !== undefined && input.ExpressionType !== null) {\n const node = new __XmlNode(\"ExpressionType\")\n .addChildNode(new __XmlText(input.ExpressionType))\n .withName(\"ExpressionType\");\n bodyNode.addChildNode(node);\n }\n if (input.Expression !== undefined && input.Expression !== null) {\n const node = new __XmlNode(\"Expression\").addChildNode(new __XmlText(input.Expression)).withName(\"Expression\");\n bodyNode.addChildNode(node);\n }\n if (input.OutputSerialization !== undefined && input.OutputSerialization !== null) {\n const node = serializeAws_restXmlOutputSerialization(input.OutputSerialization, context).withName(\n \"OutputSerialization\"\n );\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlServerSideEncryptionByDefault = (\n input: ServerSideEncryptionByDefault,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"ServerSideEncryptionByDefault\");\n if (input.SSEAlgorithm !== undefined && input.SSEAlgorithm !== null) {\n const node = new __XmlNode(\"ServerSideEncryption\")\n .addChildNode(new __XmlText(input.SSEAlgorithm))\n .withName(\"SSEAlgorithm\");\n bodyNode.addChildNode(node);\n }\n if (input.KMSMasterKeyID !== undefined && input.KMSMasterKeyID !== null) {\n const node = new __XmlNode(\"SSEKMSKeyId\")\n .addChildNode(new __XmlText(input.KMSMasterKeyID))\n .withName(\"KMSMasterKeyID\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlServerSideEncryptionConfiguration = (\n input: ServerSideEncryptionConfiguration,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"ServerSideEncryptionConfiguration\");\n if (input.Rules !== undefined && input.Rules !== null) {\n const nodes = serializeAws_restXmlServerSideEncryptionRules(input.Rules, context);\n nodes.map((node: any) => {\n node = node.withName(\"Rule\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlServerSideEncryptionRule = (\n input: ServerSideEncryptionRule,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"ServerSideEncryptionRule\");\n if (input.ApplyServerSideEncryptionByDefault !== undefined && input.ApplyServerSideEncryptionByDefault !== null) {\n const node = serializeAws_restXmlServerSideEncryptionByDefault(\n input.ApplyServerSideEncryptionByDefault,\n context\n ).withName(\"ApplyServerSideEncryptionByDefault\");\n bodyNode.addChildNode(node);\n }\n if (input.BucketKeyEnabled !== undefined && input.BucketKeyEnabled !== null) {\n const node = new __XmlNode(\"BucketKeyEnabled\")\n .addChildNode(new __XmlText(String(input.BucketKeyEnabled)))\n .withName(\"BucketKeyEnabled\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlServerSideEncryptionRules = (\n input: ServerSideEncryptionRule[],\n context: __SerdeContext\n): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = serializeAws_restXmlServerSideEncryptionRule(entry, context);\n return node.withName(\"member\");\n });\n};\n\nconst serializeAws_restXmlSourceSelectionCriteria = (input: SourceSelectionCriteria, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"SourceSelectionCriteria\");\n if (input.SseKmsEncryptedObjects !== undefined && input.SseKmsEncryptedObjects !== null) {\n const node = serializeAws_restXmlSseKmsEncryptedObjects(input.SseKmsEncryptedObjects, context).withName(\n \"SseKmsEncryptedObjects\"\n );\n bodyNode.addChildNode(node);\n }\n if (input.ReplicaModifications !== undefined && input.ReplicaModifications !== null) {\n const node = serializeAws_restXmlReplicaModifications(input.ReplicaModifications, context).withName(\n \"ReplicaModifications\"\n );\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlSSEKMS = (input: SSEKMS, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"SSE-KMS\");\n if (input.KeyId !== undefined && input.KeyId !== null) {\n const node = new __XmlNode(\"SSEKMSKeyId\").addChildNode(new __XmlText(input.KeyId)).withName(\"KeyId\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlSseKmsEncryptedObjects = (input: SseKmsEncryptedObjects, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"SseKmsEncryptedObjects\");\n if (input.Status !== undefined && input.Status !== null) {\n const node = new __XmlNode(\"SseKmsEncryptedObjectsStatus\")\n .addChildNode(new __XmlText(input.Status))\n .withName(\"Status\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlSSES3 = (input: SSES3, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"SSE-S3\");\n return bodyNode;\n};\n\nconst serializeAws_restXmlStorageClassAnalysis = (input: StorageClassAnalysis, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"StorageClassAnalysis\");\n if (input.DataExport !== undefined && input.DataExport !== null) {\n const node = serializeAws_restXmlStorageClassAnalysisDataExport(input.DataExport, context).withName(\"DataExport\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlStorageClassAnalysisDataExport = (\n input: StorageClassAnalysisDataExport,\n context: __SerdeContext\n): any => {\n const bodyNode = new __XmlNode(\"StorageClassAnalysisDataExport\");\n if (input.OutputSchemaVersion !== undefined && input.OutputSchemaVersion !== null) {\n const node = new __XmlNode(\"StorageClassAnalysisSchemaVersion\")\n .addChildNode(new __XmlText(input.OutputSchemaVersion))\n .withName(\"OutputSchemaVersion\");\n bodyNode.addChildNode(node);\n }\n if (input.Destination !== undefined && input.Destination !== null) {\n const node = serializeAws_restXmlAnalyticsExportDestination(input.Destination, context).withName(\"Destination\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlTag = (input: Tag, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"Tag\");\n if (input.Key !== undefined && input.Key !== null) {\n const node = new __XmlNode(\"ObjectKey\").addChildNode(new __XmlText(input.Key)).withName(\"Key\");\n bodyNode.addChildNode(node);\n }\n if (input.Value !== undefined && input.Value !== null) {\n const node = new __XmlNode(\"Value\").addChildNode(new __XmlText(input.Value)).withName(\"Value\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlTagging = (input: Tagging, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"Tagging\");\n if (input.TagSet !== undefined && input.TagSet !== null) {\n const nodes = serializeAws_restXmlTagSet(input.TagSet, context);\n const containerNode = new __XmlNode(\"TagSet\");\n nodes.map((node: any) => {\n containerNode.addChildNode(node);\n });\n bodyNode.addChildNode(containerNode);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlTagSet = (input: Tag[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = serializeAws_restXmlTag(entry, context);\n return node.withName(\"Tag\");\n });\n};\n\nconst serializeAws_restXmlTargetGrant = (input: TargetGrant, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"TargetGrant\");\n if (input.Grantee !== undefined && input.Grantee !== null) {\n const node = serializeAws_restXmlGrantee(input.Grantee, context).withName(\"Grantee\");\n bodyNode.addChildNode(node);\n }\n if (input.Permission !== undefined && input.Permission !== null) {\n const node = new __XmlNode(\"BucketLogsPermission\")\n .addChildNode(new __XmlText(input.Permission))\n .withName(\"Permission\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlTargetGrants = (input: TargetGrant[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = serializeAws_restXmlTargetGrant(entry, context);\n return node.withName(\"Grant\");\n });\n};\n\nconst serializeAws_restXmlTiering = (input: Tiering, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"Tiering\");\n if (input.Days !== undefined && input.Days !== null) {\n const node = new __XmlNode(\"IntelligentTieringDays\")\n .addChildNode(new __XmlText(String(input.Days)))\n .withName(\"Days\");\n bodyNode.addChildNode(node);\n }\n if (input.AccessTier !== undefined && input.AccessTier !== null) {\n const node = new __XmlNode(\"IntelligentTieringAccessTier\")\n .addChildNode(new __XmlText(input.AccessTier))\n .withName(\"AccessTier\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlTieringList = (input: Tiering[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = serializeAws_restXmlTiering(entry, context);\n return node.withName(\"member\");\n });\n};\n\nconst serializeAws_restXmlTopicConfiguration = (input: TopicConfiguration, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"TopicConfiguration\");\n if (input.Id !== undefined && input.Id !== null) {\n const node = new __XmlNode(\"NotificationId\").addChildNode(new __XmlText(input.Id)).withName(\"Id\");\n bodyNode.addChildNode(node);\n }\n if (input.TopicArn !== undefined && input.TopicArn !== null) {\n const node = new __XmlNode(\"TopicArn\").addChildNode(new __XmlText(input.TopicArn)).withName(\"Topic\");\n bodyNode.addChildNode(node);\n }\n if (input.Events !== undefined && input.Events !== null) {\n const nodes = serializeAws_restXmlEventList(input.Events, context);\n nodes.map((node: any) => {\n node = node.withName(\"Event\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.Filter !== undefined && input.Filter !== null) {\n const node = serializeAws_restXmlNotificationConfigurationFilter(input.Filter, context).withName(\"Filter\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlTopicConfigurationList = (input: TopicConfiguration[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = serializeAws_restXmlTopicConfiguration(entry, context);\n return node.withName(\"member\");\n });\n};\n\nconst serializeAws_restXmlTransition = (input: Transition, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"Transition\");\n if (input.Date !== undefined && input.Date !== null) {\n const node = new __XmlNode(\"Date\")\n .addChildNode(new __XmlText(input.Date.toISOString().split(\".\")[0] + \"Z\"))\n .withName(\"Date\");\n bodyNode.addChildNode(node);\n }\n if (input.Days !== undefined && input.Days !== null) {\n const node = new __XmlNode(\"Days\").addChildNode(new __XmlText(String(input.Days))).withName(\"Days\");\n bodyNode.addChildNode(node);\n }\n if (input.StorageClass !== undefined && input.StorageClass !== null) {\n const node = new __XmlNode(\"TransitionStorageClass\")\n .addChildNode(new __XmlText(input.StorageClass))\n .withName(\"StorageClass\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlTransitionList = (input: Transition[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = serializeAws_restXmlTransition(entry, context);\n return node.withName(\"member\");\n });\n};\n\nconst serializeAws_restXmlUserMetadata = (input: MetadataEntry[], context: __SerdeContext): any => {\n return input\n .filter((e: any) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null as any;\n }\n const node = serializeAws_restXmlMetadataEntry(entry, context);\n return node.withName(\"MetadataEntry\");\n });\n};\n\nconst serializeAws_restXmlVersioningConfiguration = (input: VersioningConfiguration, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"VersioningConfiguration\");\n if (input.MFADelete !== undefined && input.MFADelete !== null) {\n const node = new __XmlNode(\"MFADelete\").addChildNode(new __XmlText(input.MFADelete)).withName(\"MfaDelete\");\n bodyNode.addChildNode(node);\n }\n if (input.Status !== undefined && input.Status !== null) {\n const node = new __XmlNode(\"BucketVersioningStatus\").addChildNode(new __XmlText(input.Status)).withName(\"Status\");\n bodyNode.addChildNode(node);\n }\n return bodyNode;\n};\n\nconst serializeAws_restXmlWebsiteConfiguration = (input: WebsiteConfiguration, context: __SerdeContext): any => {\n const bodyNode = new __XmlNode(\"WebsiteConfiguration\");\n if (input.ErrorDocument !== undefined && input.ErrorDocument !== null) {\n const node = serializeAws_restXmlErrorDocument(input.ErrorDocument, context).withName(\"ErrorDocument\");\n bodyNode.addChildNode(node);\n }\n if (input.IndexDocument !== undefined && input.IndexDocument !== null) {\n const node = serializeAws_restXmlIndexDocument(input.IndexDocument, context).withName(\"IndexDocument\");\n bodyNode.addChildNode(node);\n }\n if (input.RedirectAllRequestsTo !== undefined && input.RedirectAllRequestsTo !== null) {\n const node = serializeAws_restXmlRedirectAllRequestsTo(input.RedirectAllRequestsTo, context).withName(\n \"RedirectAllRequestsTo\"\n );\n bodyNode.addChildNode(node);\n }\n if (input.RoutingRules !== undefined && input.RoutingRules !== null) {\n const nodes = serializeAws_restXmlRoutingRules(input.RoutingRules, context);\n const containerNode = new __XmlNode(\"RoutingRules\");\n nodes.map((node: any) => {\n containerNode.addChildNode(node);\n });\n bodyNode.addChildNode(containerNode);\n }\n return bodyNode;\n};\n\nconst deserializeAws_restXmlAbortIncompleteMultipartUpload = (\n output: any,\n context: __SerdeContext\n): AbortIncompleteMultipartUpload => {\n let contents: any = {\n DaysAfterInitiation: undefined,\n };\n if (output[\"DaysAfterInitiation\"] !== undefined) {\n contents.DaysAfterInitiation = parseInt(output[\"DaysAfterInitiation\"]);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlAccessControlTranslation = (\n output: any,\n context: __SerdeContext\n): AccessControlTranslation => {\n let contents: any = {\n Owner: undefined,\n };\n if (output[\"Owner\"] !== undefined) {\n contents.Owner = output[\"Owner\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlAllowedHeaders = (output: any, context: __SerdeContext): string[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return entry;\n });\n};\n\nconst deserializeAws_restXmlAllowedMethods = (output: any, context: __SerdeContext): string[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return entry;\n });\n};\n\nconst deserializeAws_restXmlAllowedOrigins = (output: any, context: __SerdeContext): string[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return entry;\n });\n};\n\nconst deserializeAws_restXmlAnalyticsAndOperator = (output: any, context: __SerdeContext): AnalyticsAndOperator => {\n let contents: any = {\n Prefix: undefined,\n Tags: undefined,\n };\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n if (output.Tag === \"\") {\n contents.Tags = [];\n }\n if (output[\"Tag\"] !== undefined) {\n contents.Tags = deserializeAws_restXmlTagSet(__getArrayIfSingleItem(output[\"Tag\"]), context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlAnalyticsConfiguration = (output: any, context: __SerdeContext): AnalyticsConfiguration => {\n let contents: any = {\n Id: undefined,\n Filter: undefined,\n StorageClassAnalysis: undefined,\n };\n if (output[\"Id\"] !== undefined) {\n contents.Id = output[\"Id\"];\n }\n if (output[\"Filter\"] !== undefined) {\n contents.Filter = deserializeAws_restXmlAnalyticsFilter(output[\"Filter\"], context);\n }\n if (output[\"StorageClassAnalysis\"] !== undefined) {\n contents.StorageClassAnalysis = deserializeAws_restXmlStorageClassAnalysis(output[\"StorageClassAnalysis\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlAnalyticsConfigurationList = (\n output: any,\n context: __SerdeContext\n): AnalyticsConfiguration[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlAnalyticsConfiguration(entry, context);\n });\n};\n\nconst deserializeAws_restXmlAnalyticsExportDestination = (\n output: any,\n context: __SerdeContext\n): AnalyticsExportDestination => {\n let contents: any = {\n S3BucketDestination: undefined,\n };\n if (output[\"S3BucketDestination\"] !== undefined) {\n contents.S3BucketDestination = deserializeAws_restXmlAnalyticsS3BucketDestination(\n output[\"S3BucketDestination\"],\n context\n );\n }\n return contents;\n};\n\nconst deserializeAws_restXmlAnalyticsFilter = (output: any, context: __SerdeContext): AnalyticsFilter => {\n if (output[\"Prefix\"] !== undefined) {\n return {\n Prefix: output[\"Prefix\"],\n };\n }\n if (output[\"Tag\"] !== undefined) {\n return {\n Tag: deserializeAws_restXmlTag(output[\"Tag\"], context),\n };\n }\n if (output[\"And\"] !== undefined) {\n return {\n And: deserializeAws_restXmlAnalyticsAndOperator(output[\"And\"], context),\n };\n }\n return { $unknown: Object.entries(output)[0] };\n};\n\nconst deserializeAws_restXmlAnalyticsS3BucketDestination = (\n output: any,\n context: __SerdeContext\n): AnalyticsS3BucketDestination => {\n let contents: any = {\n Format: undefined,\n BucketAccountId: undefined,\n Bucket: undefined,\n Prefix: undefined,\n };\n if (output[\"Format\"] !== undefined) {\n contents.Format = output[\"Format\"];\n }\n if (output[\"BucketAccountId\"] !== undefined) {\n contents.BucketAccountId = output[\"BucketAccountId\"];\n }\n if (output[\"Bucket\"] !== undefined) {\n contents.Bucket = output[\"Bucket\"];\n }\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlBucket = (output: any, context: __SerdeContext): Bucket => {\n let contents: any = {\n Name: undefined,\n CreationDate: undefined,\n };\n if (output[\"Name\"] !== undefined) {\n contents.Name = output[\"Name\"];\n }\n if (output[\"CreationDate\"] !== undefined) {\n contents.CreationDate = new Date(output[\"CreationDate\"]);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlBuckets = (output: any, context: __SerdeContext): Bucket[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlBucket(entry, context);\n });\n};\n\nconst deserializeAws_restXmlCommonPrefix = (output: any, context: __SerdeContext): CommonPrefix => {\n let contents: any = {\n Prefix: undefined,\n };\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlCommonPrefixList = (output: any, context: __SerdeContext): CommonPrefix[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlCommonPrefix(entry, context);\n });\n};\n\nconst deserializeAws_restXmlCondition = (output: any, context: __SerdeContext): Condition => {\n let contents: any = {\n HttpErrorCodeReturnedEquals: undefined,\n KeyPrefixEquals: undefined,\n };\n if (output[\"HttpErrorCodeReturnedEquals\"] !== undefined) {\n contents.HttpErrorCodeReturnedEquals = output[\"HttpErrorCodeReturnedEquals\"];\n }\n if (output[\"KeyPrefixEquals\"] !== undefined) {\n contents.KeyPrefixEquals = output[\"KeyPrefixEquals\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlCopyObjectResult = (output: any, context: __SerdeContext): CopyObjectResult => {\n let contents: any = {\n ETag: undefined,\n LastModified: undefined,\n };\n if (output[\"ETag\"] !== undefined) {\n contents.ETag = output[\"ETag\"];\n }\n if (output[\"LastModified\"] !== undefined) {\n contents.LastModified = new Date(output[\"LastModified\"]);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlCopyPartResult = (output: any, context: __SerdeContext): CopyPartResult => {\n let contents: any = {\n ETag: undefined,\n LastModified: undefined,\n };\n if (output[\"ETag\"] !== undefined) {\n contents.ETag = output[\"ETag\"];\n }\n if (output[\"LastModified\"] !== undefined) {\n contents.LastModified = new Date(output[\"LastModified\"]);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlCORSRule = (output: any, context: __SerdeContext): CORSRule => {\n let contents: any = {\n AllowedHeaders: undefined,\n AllowedMethods: undefined,\n AllowedOrigins: undefined,\n ExposeHeaders: undefined,\n MaxAgeSeconds: undefined,\n };\n if (output.AllowedHeader === \"\") {\n contents.AllowedHeaders = [];\n }\n if (output[\"AllowedHeader\"] !== undefined) {\n contents.AllowedHeaders = deserializeAws_restXmlAllowedHeaders(\n __getArrayIfSingleItem(output[\"AllowedHeader\"]),\n context\n );\n }\n if (output.AllowedMethod === \"\") {\n contents.AllowedMethods = [];\n }\n if (output[\"AllowedMethod\"] !== undefined) {\n contents.AllowedMethods = deserializeAws_restXmlAllowedMethods(\n __getArrayIfSingleItem(output[\"AllowedMethod\"]),\n context\n );\n }\n if (output.AllowedOrigin === \"\") {\n contents.AllowedOrigins = [];\n }\n if (output[\"AllowedOrigin\"] !== undefined) {\n contents.AllowedOrigins = deserializeAws_restXmlAllowedOrigins(\n __getArrayIfSingleItem(output[\"AllowedOrigin\"]),\n context\n );\n }\n if (output.ExposeHeader === \"\") {\n contents.ExposeHeaders = [];\n }\n if (output[\"ExposeHeader\"] !== undefined) {\n contents.ExposeHeaders = deserializeAws_restXmlExposeHeaders(\n __getArrayIfSingleItem(output[\"ExposeHeader\"]),\n context\n );\n }\n if (output[\"MaxAgeSeconds\"] !== undefined) {\n contents.MaxAgeSeconds = parseInt(output[\"MaxAgeSeconds\"]);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlCORSRules = (output: any, context: __SerdeContext): CORSRule[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlCORSRule(entry, context);\n });\n};\n\nconst deserializeAws_restXmlDefaultRetention = (output: any, context: __SerdeContext): DefaultRetention => {\n let contents: any = {\n Mode: undefined,\n Days: undefined,\n Years: undefined,\n };\n if (output[\"Mode\"] !== undefined) {\n contents.Mode = output[\"Mode\"];\n }\n if (output[\"Days\"] !== undefined) {\n contents.Days = parseInt(output[\"Days\"]);\n }\n if (output[\"Years\"] !== undefined) {\n contents.Years = parseInt(output[\"Years\"]);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlDeletedObject = (output: any, context: __SerdeContext): DeletedObject => {\n let contents: any = {\n Key: undefined,\n VersionId: undefined,\n DeleteMarker: undefined,\n DeleteMarkerVersionId: undefined,\n };\n if (output[\"Key\"] !== undefined) {\n contents.Key = output[\"Key\"];\n }\n if (output[\"VersionId\"] !== undefined) {\n contents.VersionId = output[\"VersionId\"];\n }\n if (output[\"DeleteMarker\"] !== undefined) {\n contents.DeleteMarker = output[\"DeleteMarker\"] == \"true\";\n }\n if (output[\"DeleteMarkerVersionId\"] !== undefined) {\n contents.DeleteMarkerVersionId = output[\"DeleteMarkerVersionId\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlDeletedObjects = (output: any, context: __SerdeContext): DeletedObject[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlDeletedObject(entry, context);\n });\n};\n\nconst deserializeAws_restXmlDeleteMarkerEntry = (output: any, context: __SerdeContext): DeleteMarkerEntry => {\n let contents: any = {\n Owner: undefined,\n Key: undefined,\n VersionId: undefined,\n IsLatest: undefined,\n LastModified: undefined,\n };\n if (output[\"Owner\"] !== undefined) {\n contents.Owner = deserializeAws_restXmlOwner(output[\"Owner\"], context);\n }\n if (output[\"Key\"] !== undefined) {\n contents.Key = output[\"Key\"];\n }\n if (output[\"VersionId\"] !== undefined) {\n contents.VersionId = output[\"VersionId\"];\n }\n if (output[\"IsLatest\"] !== undefined) {\n contents.IsLatest = output[\"IsLatest\"] == \"true\";\n }\n if (output[\"LastModified\"] !== undefined) {\n contents.LastModified = new Date(output[\"LastModified\"]);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlDeleteMarkerReplication = (\n output: any,\n context: __SerdeContext\n): DeleteMarkerReplication => {\n let contents: any = {\n Status: undefined,\n };\n if (output[\"Status\"] !== undefined) {\n contents.Status = output[\"Status\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlDeleteMarkers = (output: any, context: __SerdeContext): DeleteMarkerEntry[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlDeleteMarkerEntry(entry, context);\n });\n};\n\nconst deserializeAws_restXmlDestination = (output: any, context: __SerdeContext): Destination => {\n let contents: any = {\n Bucket: undefined,\n Account: undefined,\n StorageClass: undefined,\n AccessControlTranslation: undefined,\n EncryptionConfiguration: undefined,\n ReplicationTime: undefined,\n Metrics: undefined,\n };\n if (output[\"Bucket\"] !== undefined) {\n contents.Bucket = output[\"Bucket\"];\n }\n if (output[\"Account\"] !== undefined) {\n contents.Account = output[\"Account\"];\n }\n if (output[\"StorageClass\"] !== undefined) {\n contents.StorageClass = output[\"StorageClass\"];\n }\n if (output[\"AccessControlTranslation\"] !== undefined) {\n contents.AccessControlTranslation = deserializeAws_restXmlAccessControlTranslation(\n output[\"AccessControlTranslation\"],\n context\n );\n }\n if (output[\"EncryptionConfiguration\"] !== undefined) {\n contents.EncryptionConfiguration = deserializeAws_restXmlEncryptionConfiguration(\n output[\"EncryptionConfiguration\"],\n context\n );\n }\n if (output[\"ReplicationTime\"] !== undefined) {\n contents.ReplicationTime = deserializeAws_restXmlReplicationTime(output[\"ReplicationTime\"], context);\n }\n if (output[\"Metrics\"] !== undefined) {\n contents.Metrics = deserializeAws_restXmlMetrics(output[\"Metrics\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlEncryptionConfiguration = (\n output: any,\n context: __SerdeContext\n): EncryptionConfiguration => {\n let contents: any = {\n ReplicaKmsKeyID: undefined,\n };\n if (output[\"ReplicaKmsKeyID\"] !== undefined) {\n contents.ReplicaKmsKeyID = output[\"ReplicaKmsKeyID\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXml_Error = (output: any, context: __SerdeContext): _Error => {\n let contents: any = {\n Key: undefined,\n VersionId: undefined,\n Code: undefined,\n Message: undefined,\n };\n if (output[\"Key\"] !== undefined) {\n contents.Key = output[\"Key\"];\n }\n if (output[\"VersionId\"] !== undefined) {\n contents.VersionId = output[\"VersionId\"];\n }\n if (output[\"Code\"] !== undefined) {\n contents.Code = output[\"Code\"];\n }\n if (output[\"Message\"] !== undefined) {\n contents.Message = output[\"Message\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlErrorDocument = (output: any, context: __SerdeContext): ErrorDocument => {\n let contents: any = {\n Key: undefined,\n };\n if (output[\"Key\"] !== undefined) {\n contents.Key = output[\"Key\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlErrors = (output: any, context: __SerdeContext): _Error[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXml_Error(entry, context);\n });\n};\n\nconst deserializeAws_restXmlEventList = (output: any, context: __SerdeContext): (Event | string)[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return entry;\n });\n};\n\nconst deserializeAws_restXmlExistingObjectReplication = (\n output: any,\n context: __SerdeContext\n): ExistingObjectReplication => {\n let contents: any = {\n Status: undefined,\n };\n if (output[\"Status\"] !== undefined) {\n contents.Status = output[\"Status\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlExposeHeaders = (output: any, context: __SerdeContext): string[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return entry;\n });\n};\n\nconst deserializeAws_restXmlFilterRule = (output: any, context: __SerdeContext): FilterRule => {\n let contents: any = {\n Name: undefined,\n Value: undefined,\n };\n if (output[\"Name\"] !== undefined) {\n contents.Name = output[\"Name\"];\n }\n if (output[\"Value\"] !== undefined) {\n contents.Value = output[\"Value\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlFilterRuleList = (output: any, context: __SerdeContext): FilterRule[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlFilterRule(entry, context);\n });\n};\n\nconst deserializeAws_restXmlGrant = (output: any, context: __SerdeContext): Grant => {\n let contents: any = {\n Grantee: undefined,\n Permission: undefined,\n };\n if (output[\"Grantee\"] !== undefined) {\n contents.Grantee = deserializeAws_restXmlGrantee(output[\"Grantee\"], context);\n }\n if (output[\"Permission\"] !== undefined) {\n contents.Permission = output[\"Permission\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlGrantee = (output: any, context: __SerdeContext): Grantee => {\n let contents: any = {\n DisplayName: undefined,\n EmailAddress: undefined,\n ID: undefined,\n URI: undefined,\n Type: undefined,\n };\n if (output[\"DisplayName\"] !== undefined) {\n contents.DisplayName = output[\"DisplayName\"];\n }\n if (output[\"EmailAddress\"] !== undefined) {\n contents.EmailAddress = output[\"EmailAddress\"];\n }\n if (output[\"ID\"] !== undefined) {\n contents.ID = output[\"ID\"];\n }\n if (output[\"URI\"] !== undefined) {\n contents.URI = output[\"URI\"];\n }\n if (output[\"xsi:type\"] !== undefined) {\n contents.Type = output[\"xsi:type\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlGrants = (output: any, context: __SerdeContext): Grant[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlGrant(entry, context);\n });\n};\n\nconst deserializeAws_restXmlIndexDocument = (output: any, context: __SerdeContext): IndexDocument => {\n let contents: any = {\n Suffix: undefined,\n };\n if (output[\"Suffix\"] !== undefined) {\n contents.Suffix = output[\"Suffix\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlInitiator = (output: any, context: __SerdeContext): Initiator => {\n let contents: any = {\n ID: undefined,\n DisplayName: undefined,\n };\n if (output[\"ID\"] !== undefined) {\n contents.ID = output[\"ID\"];\n }\n if (output[\"DisplayName\"] !== undefined) {\n contents.DisplayName = output[\"DisplayName\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlIntelligentTieringAndOperator = (\n output: any,\n context: __SerdeContext\n): IntelligentTieringAndOperator => {\n let contents: any = {\n Prefix: undefined,\n Tags: undefined,\n };\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n if (output.Tag === \"\") {\n contents.Tags = [];\n }\n if (output[\"Tag\"] !== undefined) {\n contents.Tags = deserializeAws_restXmlTagSet(__getArrayIfSingleItem(output[\"Tag\"]), context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlIntelligentTieringConfiguration = (\n output: any,\n context: __SerdeContext\n): IntelligentTieringConfiguration => {\n let contents: any = {\n Id: undefined,\n Filter: undefined,\n Status: undefined,\n Tierings: undefined,\n };\n if (output[\"Id\"] !== undefined) {\n contents.Id = output[\"Id\"];\n }\n if (output[\"Filter\"] !== undefined) {\n contents.Filter = deserializeAws_restXmlIntelligentTieringFilter(output[\"Filter\"], context);\n }\n if (output[\"Status\"] !== undefined) {\n contents.Status = output[\"Status\"];\n }\n if (output.Tiering === \"\") {\n contents.Tierings = [];\n }\n if (output[\"Tiering\"] !== undefined) {\n contents.Tierings = deserializeAws_restXmlTieringList(__getArrayIfSingleItem(output[\"Tiering\"]), context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlIntelligentTieringConfigurationList = (\n output: any,\n context: __SerdeContext\n): IntelligentTieringConfiguration[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlIntelligentTieringConfiguration(entry, context);\n });\n};\n\nconst deserializeAws_restXmlIntelligentTieringFilter = (\n output: any,\n context: __SerdeContext\n): IntelligentTieringFilter => {\n let contents: any = {\n Prefix: undefined,\n Tag: undefined,\n And: undefined,\n };\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n if (output[\"Tag\"] !== undefined) {\n contents.Tag = deserializeAws_restXmlTag(output[\"Tag\"], context);\n }\n if (output[\"And\"] !== undefined) {\n contents.And = deserializeAws_restXmlIntelligentTieringAndOperator(output[\"And\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlInventoryConfiguration = (output: any, context: __SerdeContext): InventoryConfiguration => {\n let contents: any = {\n Destination: undefined,\n IsEnabled: undefined,\n Filter: undefined,\n Id: undefined,\n IncludedObjectVersions: undefined,\n OptionalFields: undefined,\n Schedule: undefined,\n };\n if (output[\"Destination\"] !== undefined) {\n contents.Destination = deserializeAws_restXmlInventoryDestination(output[\"Destination\"], context);\n }\n if (output[\"IsEnabled\"] !== undefined) {\n contents.IsEnabled = output[\"IsEnabled\"] == \"true\";\n }\n if (output[\"Filter\"] !== undefined) {\n contents.Filter = deserializeAws_restXmlInventoryFilter(output[\"Filter\"], context);\n }\n if (output[\"Id\"] !== undefined) {\n contents.Id = output[\"Id\"];\n }\n if (output[\"IncludedObjectVersions\"] !== undefined) {\n contents.IncludedObjectVersions = output[\"IncludedObjectVersions\"];\n }\n if (output.OptionalFields === \"\") {\n contents.OptionalFields = [];\n }\n if (output[\"OptionalFields\"] !== undefined && output[\"OptionalFields\"][\"Field\"] !== undefined) {\n contents.OptionalFields = deserializeAws_restXmlInventoryOptionalFields(\n __getArrayIfSingleItem(output[\"OptionalFields\"][\"Field\"]),\n context\n );\n }\n if (output[\"Schedule\"] !== undefined) {\n contents.Schedule = deserializeAws_restXmlInventorySchedule(output[\"Schedule\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlInventoryConfigurationList = (\n output: any,\n context: __SerdeContext\n): InventoryConfiguration[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlInventoryConfiguration(entry, context);\n });\n};\n\nconst deserializeAws_restXmlInventoryDestination = (output: any, context: __SerdeContext): InventoryDestination => {\n let contents: any = {\n S3BucketDestination: undefined,\n };\n if (output[\"S3BucketDestination\"] !== undefined) {\n contents.S3BucketDestination = deserializeAws_restXmlInventoryS3BucketDestination(\n output[\"S3BucketDestination\"],\n context\n );\n }\n return contents;\n};\n\nconst deserializeAws_restXmlInventoryEncryption = (output: any, context: __SerdeContext): InventoryEncryption => {\n let contents: any = {\n SSES3: undefined,\n SSEKMS: undefined,\n };\n if (output[\"SSE-S3\"] !== undefined) {\n contents.SSES3 = deserializeAws_restXmlSSES3(output[\"SSE-S3\"], context);\n }\n if (output[\"SSE-KMS\"] !== undefined) {\n contents.SSEKMS = deserializeAws_restXmlSSEKMS(output[\"SSE-KMS\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlInventoryFilter = (output: any, context: __SerdeContext): InventoryFilter => {\n let contents: any = {\n Prefix: undefined,\n };\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlInventoryOptionalFields = (\n output: any,\n context: __SerdeContext\n): (InventoryOptionalField | string)[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return entry;\n });\n};\n\nconst deserializeAws_restXmlInventoryS3BucketDestination = (\n output: any,\n context: __SerdeContext\n): InventoryS3BucketDestination => {\n let contents: any = {\n AccountId: undefined,\n Bucket: undefined,\n Format: undefined,\n Prefix: undefined,\n Encryption: undefined,\n };\n if (output[\"AccountId\"] !== undefined) {\n contents.AccountId = output[\"AccountId\"];\n }\n if (output[\"Bucket\"] !== undefined) {\n contents.Bucket = output[\"Bucket\"];\n }\n if (output[\"Format\"] !== undefined) {\n contents.Format = output[\"Format\"];\n }\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n if (output[\"Encryption\"] !== undefined) {\n contents.Encryption = deserializeAws_restXmlInventoryEncryption(output[\"Encryption\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlInventorySchedule = (output: any, context: __SerdeContext): InventorySchedule => {\n let contents: any = {\n Frequency: undefined,\n };\n if (output[\"Frequency\"] !== undefined) {\n contents.Frequency = output[\"Frequency\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlLambdaFunctionConfiguration = (\n output: any,\n context: __SerdeContext\n): LambdaFunctionConfiguration => {\n let contents: any = {\n Id: undefined,\n LambdaFunctionArn: undefined,\n Events: undefined,\n Filter: undefined,\n };\n if (output[\"Id\"] !== undefined) {\n contents.Id = output[\"Id\"];\n }\n if (output[\"CloudFunction\"] !== undefined) {\n contents.LambdaFunctionArn = output[\"CloudFunction\"];\n }\n if (output.Event === \"\") {\n contents.Events = [];\n }\n if (output[\"Event\"] !== undefined) {\n contents.Events = deserializeAws_restXmlEventList(__getArrayIfSingleItem(output[\"Event\"]), context);\n }\n if (output[\"Filter\"] !== undefined) {\n contents.Filter = deserializeAws_restXmlNotificationConfigurationFilter(output[\"Filter\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlLambdaFunctionConfigurationList = (\n output: any,\n context: __SerdeContext\n): LambdaFunctionConfiguration[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlLambdaFunctionConfiguration(entry, context);\n });\n};\n\nconst deserializeAws_restXmlLifecycleExpiration = (output: any, context: __SerdeContext): LifecycleExpiration => {\n let contents: any = {\n Date: undefined,\n Days: undefined,\n ExpiredObjectDeleteMarker: undefined,\n };\n if (output[\"Date\"] !== undefined) {\n contents.Date = new Date(output[\"Date\"]);\n }\n if (output[\"Days\"] !== undefined) {\n contents.Days = parseInt(output[\"Days\"]);\n }\n if (output[\"ExpiredObjectDeleteMarker\"] !== undefined) {\n contents.ExpiredObjectDeleteMarker = output[\"ExpiredObjectDeleteMarker\"] == \"true\";\n }\n return contents;\n};\n\nconst deserializeAws_restXmlLifecycleRule = (output: any, context: __SerdeContext): LifecycleRule => {\n let contents: any = {\n Expiration: undefined,\n ID: undefined,\n Prefix: undefined,\n Filter: undefined,\n Status: undefined,\n Transitions: undefined,\n NoncurrentVersionTransitions: undefined,\n NoncurrentVersionExpiration: undefined,\n AbortIncompleteMultipartUpload: undefined,\n };\n if (output[\"Expiration\"] !== undefined) {\n contents.Expiration = deserializeAws_restXmlLifecycleExpiration(output[\"Expiration\"], context);\n }\n if (output[\"ID\"] !== undefined) {\n contents.ID = output[\"ID\"];\n }\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n if (output[\"Filter\"] !== undefined) {\n contents.Filter = deserializeAws_restXmlLifecycleRuleFilter(output[\"Filter\"], context);\n }\n if (output[\"Status\"] !== undefined) {\n contents.Status = output[\"Status\"];\n }\n if (output.Transition === \"\") {\n contents.Transitions = [];\n }\n if (output[\"Transition\"] !== undefined) {\n contents.Transitions = deserializeAws_restXmlTransitionList(__getArrayIfSingleItem(output[\"Transition\"]), context);\n }\n if (output.NoncurrentVersionTransition === \"\") {\n contents.NoncurrentVersionTransitions = [];\n }\n if (output[\"NoncurrentVersionTransition\"] !== undefined) {\n contents.NoncurrentVersionTransitions = deserializeAws_restXmlNoncurrentVersionTransitionList(\n __getArrayIfSingleItem(output[\"NoncurrentVersionTransition\"]),\n context\n );\n }\n if (output[\"NoncurrentVersionExpiration\"] !== undefined) {\n contents.NoncurrentVersionExpiration = deserializeAws_restXmlNoncurrentVersionExpiration(\n output[\"NoncurrentVersionExpiration\"],\n context\n );\n }\n if (output[\"AbortIncompleteMultipartUpload\"] !== undefined) {\n contents.AbortIncompleteMultipartUpload = deserializeAws_restXmlAbortIncompleteMultipartUpload(\n output[\"AbortIncompleteMultipartUpload\"],\n context\n );\n }\n return contents;\n};\n\nconst deserializeAws_restXmlLifecycleRuleAndOperator = (\n output: any,\n context: __SerdeContext\n): LifecycleRuleAndOperator => {\n let contents: any = {\n Prefix: undefined,\n Tags: undefined,\n };\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n if (output.Tag === \"\") {\n contents.Tags = [];\n }\n if (output[\"Tag\"] !== undefined) {\n contents.Tags = deserializeAws_restXmlTagSet(__getArrayIfSingleItem(output[\"Tag\"]), context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlLifecycleRuleFilter = (output: any, context: __SerdeContext): LifecycleRuleFilter => {\n if (output[\"Prefix\"] !== undefined) {\n return {\n Prefix: output[\"Prefix\"],\n };\n }\n if (output[\"Tag\"] !== undefined) {\n return {\n Tag: deserializeAws_restXmlTag(output[\"Tag\"], context),\n };\n }\n if (output[\"And\"] !== undefined) {\n return {\n And: deserializeAws_restXmlLifecycleRuleAndOperator(output[\"And\"], context),\n };\n }\n return { $unknown: Object.entries(output)[0] };\n};\n\nconst deserializeAws_restXmlLifecycleRules = (output: any, context: __SerdeContext): LifecycleRule[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlLifecycleRule(entry, context);\n });\n};\n\nconst deserializeAws_restXmlLoggingEnabled = (output: any, context: __SerdeContext): LoggingEnabled => {\n let contents: any = {\n TargetBucket: undefined,\n TargetGrants: undefined,\n TargetPrefix: undefined,\n };\n if (output[\"TargetBucket\"] !== undefined) {\n contents.TargetBucket = output[\"TargetBucket\"];\n }\n if (output.TargetGrants === \"\") {\n contents.TargetGrants = [];\n }\n if (output[\"TargetGrants\"] !== undefined && output[\"TargetGrants\"][\"Grant\"] !== undefined) {\n contents.TargetGrants = deserializeAws_restXmlTargetGrants(\n __getArrayIfSingleItem(output[\"TargetGrants\"][\"Grant\"]),\n context\n );\n }\n if (output[\"TargetPrefix\"] !== undefined) {\n contents.TargetPrefix = output[\"TargetPrefix\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlMetrics = (output: any, context: __SerdeContext): Metrics => {\n let contents: any = {\n Status: undefined,\n EventThreshold: undefined,\n };\n if (output[\"Status\"] !== undefined) {\n contents.Status = output[\"Status\"];\n }\n if (output[\"EventThreshold\"] !== undefined) {\n contents.EventThreshold = deserializeAws_restXmlReplicationTimeValue(output[\"EventThreshold\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlMetricsAndOperator = (output: any, context: __SerdeContext): MetricsAndOperator => {\n let contents: any = {\n Prefix: undefined,\n Tags: undefined,\n };\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n if (output.Tag === \"\") {\n contents.Tags = [];\n }\n if (output[\"Tag\"] !== undefined) {\n contents.Tags = deserializeAws_restXmlTagSet(__getArrayIfSingleItem(output[\"Tag\"]), context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlMetricsConfiguration = (output: any, context: __SerdeContext): MetricsConfiguration => {\n let contents: any = {\n Id: undefined,\n Filter: undefined,\n };\n if (output[\"Id\"] !== undefined) {\n contents.Id = output[\"Id\"];\n }\n if (output[\"Filter\"] !== undefined) {\n contents.Filter = deserializeAws_restXmlMetricsFilter(output[\"Filter\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlMetricsConfigurationList = (\n output: any,\n context: __SerdeContext\n): MetricsConfiguration[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlMetricsConfiguration(entry, context);\n });\n};\n\nconst deserializeAws_restXmlMetricsFilter = (output: any, context: __SerdeContext): MetricsFilter => {\n if (output[\"Prefix\"] !== undefined) {\n return {\n Prefix: output[\"Prefix\"],\n };\n }\n if (output[\"Tag\"] !== undefined) {\n return {\n Tag: deserializeAws_restXmlTag(output[\"Tag\"], context),\n };\n }\n if (output[\"And\"] !== undefined) {\n return {\n And: deserializeAws_restXmlMetricsAndOperator(output[\"And\"], context),\n };\n }\n return { $unknown: Object.entries(output)[0] };\n};\n\nconst deserializeAws_restXmlMultipartUpload = (output: any, context: __SerdeContext): MultipartUpload => {\n let contents: any = {\n UploadId: undefined,\n Key: undefined,\n Initiated: undefined,\n StorageClass: undefined,\n Owner: undefined,\n Initiator: undefined,\n };\n if (output[\"UploadId\"] !== undefined) {\n contents.UploadId = output[\"UploadId\"];\n }\n if (output[\"Key\"] !== undefined) {\n contents.Key = output[\"Key\"];\n }\n if (output[\"Initiated\"] !== undefined) {\n contents.Initiated = new Date(output[\"Initiated\"]);\n }\n if (output[\"StorageClass\"] !== undefined) {\n contents.StorageClass = output[\"StorageClass\"];\n }\n if (output[\"Owner\"] !== undefined) {\n contents.Owner = deserializeAws_restXmlOwner(output[\"Owner\"], context);\n }\n if (output[\"Initiator\"] !== undefined) {\n contents.Initiator = deserializeAws_restXmlInitiator(output[\"Initiator\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlMultipartUploadList = (output: any, context: __SerdeContext): MultipartUpload[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlMultipartUpload(entry, context);\n });\n};\n\nconst deserializeAws_restXmlNoncurrentVersionExpiration = (\n output: any,\n context: __SerdeContext\n): NoncurrentVersionExpiration => {\n let contents: any = {\n NoncurrentDays: undefined,\n };\n if (output[\"NoncurrentDays\"] !== undefined) {\n contents.NoncurrentDays = parseInt(output[\"NoncurrentDays\"]);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlNoncurrentVersionTransition = (\n output: any,\n context: __SerdeContext\n): NoncurrentVersionTransition => {\n let contents: any = {\n NoncurrentDays: undefined,\n StorageClass: undefined,\n };\n if (output[\"NoncurrentDays\"] !== undefined) {\n contents.NoncurrentDays = parseInt(output[\"NoncurrentDays\"]);\n }\n if (output[\"StorageClass\"] !== undefined) {\n contents.StorageClass = output[\"StorageClass\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlNoncurrentVersionTransitionList = (\n output: any,\n context: __SerdeContext\n): NoncurrentVersionTransition[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlNoncurrentVersionTransition(entry, context);\n });\n};\n\nconst deserializeAws_restXmlNotificationConfigurationFilter = (\n output: any,\n context: __SerdeContext\n): NotificationConfigurationFilter => {\n let contents: any = {\n Key: undefined,\n };\n if (output[\"S3Key\"] !== undefined) {\n contents.Key = deserializeAws_restXmlS3KeyFilter(output[\"S3Key\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXml_Object = (output: any, context: __SerdeContext): _Object => {\n let contents: any = {\n Key: undefined,\n LastModified: undefined,\n ETag: undefined,\n Size: undefined,\n StorageClass: undefined,\n Owner: undefined,\n };\n if (output[\"Key\"] !== undefined) {\n contents.Key = output[\"Key\"];\n }\n if (output[\"LastModified\"] !== undefined) {\n contents.LastModified = new Date(output[\"LastModified\"]);\n }\n if (output[\"ETag\"] !== undefined) {\n contents.ETag = output[\"ETag\"];\n }\n if (output[\"Size\"] !== undefined) {\n contents.Size = parseInt(output[\"Size\"]);\n }\n if (output[\"StorageClass\"] !== undefined) {\n contents.StorageClass = output[\"StorageClass\"];\n }\n if (output[\"Owner\"] !== undefined) {\n contents.Owner = deserializeAws_restXmlOwner(output[\"Owner\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlObjectList = (output: any, context: __SerdeContext): _Object[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXml_Object(entry, context);\n });\n};\n\nconst deserializeAws_restXmlObjectLockConfiguration = (\n output: any,\n context: __SerdeContext\n): ObjectLockConfiguration => {\n let contents: any = {\n ObjectLockEnabled: undefined,\n Rule: undefined,\n };\n if (output[\"ObjectLockEnabled\"] !== undefined) {\n contents.ObjectLockEnabled = output[\"ObjectLockEnabled\"];\n }\n if (output[\"Rule\"] !== undefined) {\n contents.Rule = deserializeAws_restXmlObjectLockRule(output[\"Rule\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlObjectLockLegalHold = (output: any, context: __SerdeContext): ObjectLockLegalHold => {\n let contents: any = {\n Status: undefined,\n };\n if (output[\"Status\"] !== undefined) {\n contents.Status = output[\"Status\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlObjectLockRetention = (output: any, context: __SerdeContext): ObjectLockRetention => {\n let contents: any = {\n Mode: undefined,\n RetainUntilDate: undefined,\n };\n if (output[\"Mode\"] !== undefined) {\n contents.Mode = output[\"Mode\"];\n }\n if (output[\"RetainUntilDate\"] !== undefined) {\n contents.RetainUntilDate = new Date(output[\"RetainUntilDate\"]);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlObjectLockRule = (output: any, context: __SerdeContext): ObjectLockRule => {\n let contents: any = {\n DefaultRetention: undefined,\n };\n if (output[\"DefaultRetention\"] !== undefined) {\n contents.DefaultRetention = deserializeAws_restXmlDefaultRetention(output[\"DefaultRetention\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlObjectVersion = (output: any, context: __SerdeContext): ObjectVersion => {\n let contents: any = {\n ETag: undefined,\n Size: undefined,\n StorageClass: undefined,\n Key: undefined,\n VersionId: undefined,\n IsLatest: undefined,\n LastModified: undefined,\n Owner: undefined,\n };\n if (output[\"ETag\"] !== undefined) {\n contents.ETag = output[\"ETag\"];\n }\n if (output[\"Size\"] !== undefined) {\n contents.Size = parseInt(output[\"Size\"]);\n }\n if (output[\"StorageClass\"] !== undefined) {\n contents.StorageClass = output[\"StorageClass\"];\n }\n if (output[\"Key\"] !== undefined) {\n contents.Key = output[\"Key\"];\n }\n if (output[\"VersionId\"] !== undefined) {\n contents.VersionId = output[\"VersionId\"];\n }\n if (output[\"IsLatest\"] !== undefined) {\n contents.IsLatest = output[\"IsLatest\"] == \"true\";\n }\n if (output[\"LastModified\"] !== undefined) {\n contents.LastModified = new Date(output[\"LastModified\"]);\n }\n if (output[\"Owner\"] !== undefined) {\n contents.Owner = deserializeAws_restXmlOwner(output[\"Owner\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlObjectVersionList = (output: any, context: __SerdeContext): ObjectVersion[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlObjectVersion(entry, context);\n });\n};\n\nconst deserializeAws_restXmlOwner = (output: any, context: __SerdeContext): Owner => {\n let contents: any = {\n DisplayName: undefined,\n ID: undefined,\n };\n if (output[\"DisplayName\"] !== undefined) {\n contents.DisplayName = output[\"DisplayName\"];\n }\n if (output[\"ID\"] !== undefined) {\n contents.ID = output[\"ID\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlOwnershipControls = (output: any, context: __SerdeContext): OwnershipControls => {\n let contents: any = {\n Rules: undefined,\n };\n if (output.Rule === \"\") {\n contents.Rules = [];\n }\n if (output[\"Rule\"] !== undefined) {\n contents.Rules = deserializeAws_restXmlOwnershipControlsRules(__getArrayIfSingleItem(output[\"Rule\"]), context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlOwnershipControlsRule = (output: any, context: __SerdeContext): OwnershipControlsRule => {\n let contents: any = {\n ObjectOwnership: undefined,\n };\n if (output[\"ObjectOwnership\"] !== undefined) {\n contents.ObjectOwnership = output[\"ObjectOwnership\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlOwnershipControlsRules = (\n output: any,\n context: __SerdeContext\n): OwnershipControlsRule[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlOwnershipControlsRule(entry, context);\n });\n};\n\nconst deserializeAws_restXmlPart = (output: any, context: __SerdeContext): Part => {\n let contents: any = {\n PartNumber: undefined,\n LastModified: undefined,\n ETag: undefined,\n Size: undefined,\n };\n if (output[\"PartNumber\"] !== undefined) {\n contents.PartNumber = parseInt(output[\"PartNumber\"]);\n }\n if (output[\"LastModified\"] !== undefined) {\n contents.LastModified = new Date(output[\"LastModified\"]);\n }\n if (output[\"ETag\"] !== undefined) {\n contents.ETag = output[\"ETag\"];\n }\n if (output[\"Size\"] !== undefined) {\n contents.Size = parseInt(output[\"Size\"]);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlParts = (output: any, context: __SerdeContext): Part[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlPart(entry, context);\n });\n};\n\nconst deserializeAws_restXmlPolicyStatus = (output: any, context: __SerdeContext): PolicyStatus => {\n let contents: any = {\n IsPublic: undefined,\n };\n if (output[\"IsPublic\"] !== undefined) {\n contents.IsPublic = output[\"IsPublic\"] == \"true\";\n }\n return contents;\n};\n\nconst deserializeAws_restXmlPublicAccessBlockConfiguration = (\n output: any,\n context: __SerdeContext\n): PublicAccessBlockConfiguration => {\n let contents: any = {\n BlockPublicAcls: undefined,\n IgnorePublicAcls: undefined,\n BlockPublicPolicy: undefined,\n RestrictPublicBuckets: undefined,\n };\n if (output[\"BlockPublicAcls\"] !== undefined) {\n contents.BlockPublicAcls = output[\"BlockPublicAcls\"] == \"true\";\n }\n if (output[\"IgnorePublicAcls\"] !== undefined) {\n contents.IgnorePublicAcls = output[\"IgnorePublicAcls\"] == \"true\";\n }\n if (output[\"BlockPublicPolicy\"] !== undefined) {\n contents.BlockPublicPolicy = output[\"BlockPublicPolicy\"] == \"true\";\n }\n if (output[\"RestrictPublicBuckets\"] !== undefined) {\n contents.RestrictPublicBuckets = output[\"RestrictPublicBuckets\"] == \"true\";\n }\n return contents;\n};\n\nconst deserializeAws_restXmlQueueConfiguration = (output: any, context: __SerdeContext): QueueConfiguration => {\n let contents: any = {\n Id: undefined,\n QueueArn: undefined,\n Events: undefined,\n Filter: undefined,\n };\n if (output[\"Id\"] !== undefined) {\n contents.Id = output[\"Id\"];\n }\n if (output[\"Queue\"] !== undefined) {\n contents.QueueArn = output[\"Queue\"];\n }\n if (output.Event === \"\") {\n contents.Events = [];\n }\n if (output[\"Event\"] !== undefined) {\n contents.Events = deserializeAws_restXmlEventList(__getArrayIfSingleItem(output[\"Event\"]), context);\n }\n if (output[\"Filter\"] !== undefined) {\n contents.Filter = deserializeAws_restXmlNotificationConfigurationFilter(output[\"Filter\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlQueueConfigurationList = (output: any, context: __SerdeContext): QueueConfiguration[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlQueueConfiguration(entry, context);\n });\n};\n\nconst deserializeAws_restXmlRedirect = (output: any, context: __SerdeContext): Redirect => {\n let contents: any = {\n HostName: undefined,\n HttpRedirectCode: undefined,\n Protocol: undefined,\n ReplaceKeyPrefixWith: undefined,\n ReplaceKeyWith: undefined,\n };\n if (output[\"HostName\"] !== undefined) {\n contents.HostName = output[\"HostName\"];\n }\n if (output[\"HttpRedirectCode\"] !== undefined) {\n contents.HttpRedirectCode = output[\"HttpRedirectCode\"];\n }\n if (output[\"Protocol\"] !== undefined) {\n contents.Protocol = output[\"Protocol\"];\n }\n if (output[\"ReplaceKeyPrefixWith\"] !== undefined) {\n contents.ReplaceKeyPrefixWith = output[\"ReplaceKeyPrefixWith\"];\n }\n if (output[\"ReplaceKeyWith\"] !== undefined) {\n contents.ReplaceKeyWith = output[\"ReplaceKeyWith\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlRedirectAllRequestsTo = (output: any, context: __SerdeContext): RedirectAllRequestsTo => {\n let contents: any = {\n HostName: undefined,\n Protocol: undefined,\n };\n if (output[\"HostName\"] !== undefined) {\n contents.HostName = output[\"HostName\"];\n }\n if (output[\"Protocol\"] !== undefined) {\n contents.Protocol = output[\"Protocol\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlReplicaModifications = (output: any, context: __SerdeContext): ReplicaModifications => {\n let contents: any = {\n Status: undefined,\n };\n if (output[\"Status\"] !== undefined) {\n contents.Status = output[\"Status\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlReplicationConfiguration = (\n output: any,\n context: __SerdeContext\n): ReplicationConfiguration => {\n let contents: any = {\n Role: undefined,\n Rules: undefined,\n };\n if (output[\"Role\"] !== undefined) {\n contents.Role = output[\"Role\"];\n }\n if (output.Rule === \"\") {\n contents.Rules = [];\n }\n if (output[\"Rule\"] !== undefined) {\n contents.Rules = deserializeAws_restXmlReplicationRules(__getArrayIfSingleItem(output[\"Rule\"]), context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlReplicationRule = (output: any, context: __SerdeContext): ReplicationRule => {\n let contents: any = {\n ID: undefined,\n Priority: undefined,\n Prefix: undefined,\n Filter: undefined,\n Status: undefined,\n SourceSelectionCriteria: undefined,\n ExistingObjectReplication: undefined,\n Destination: undefined,\n DeleteMarkerReplication: undefined,\n };\n if (output[\"ID\"] !== undefined) {\n contents.ID = output[\"ID\"];\n }\n if (output[\"Priority\"] !== undefined) {\n contents.Priority = parseInt(output[\"Priority\"]);\n }\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n if (output[\"Filter\"] !== undefined) {\n contents.Filter = deserializeAws_restXmlReplicationRuleFilter(output[\"Filter\"], context);\n }\n if (output[\"Status\"] !== undefined) {\n contents.Status = output[\"Status\"];\n }\n if (output[\"SourceSelectionCriteria\"] !== undefined) {\n contents.SourceSelectionCriteria = deserializeAws_restXmlSourceSelectionCriteria(\n output[\"SourceSelectionCriteria\"],\n context\n );\n }\n if (output[\"ExistingObjectReplication\"] !== undefined) {\n contents.ExistingObjectReplication = deserializeAws_restXmlExistingObjectReplication(\n output[\"ExistingObjectReplication\"],\n context\n );\n }\n if (output[\"Destination\"] !== undefined) {\n contents.Destination = deserializeAws_restXmlDestination(output[\"Destination\"], context);\n }\n if (output[\"DeleteMarkerReplication\"] !== undefined) {\n contents.DeleteMarkerReplication = deserializeAws_restXmlDeleteMarkerReplication(\n output[\"DeleteMarkerReplication\"],\n context\n );\n }\n return contents;\n};\n\nconst deserializeAws_restXmlReplicationRuleAndOperator = (\n output: any,\n context: __SerdeContext\n): ReplicationRuleAndOperator => {\n let contents: any = {\n Prefix: undefined,\n Tags: undefined,\n };\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n if (output.Tag === \"\") {\n contents.Tags = [];\n }\n if (output[\"Tag\"] !== undefined) {\n contents.Tags = deserializeAws_restXmlTagSet(__getArrayIfSingleItem(output[\"Tag\"]), context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlReplicationRuleFilter = (output: any, context: __SerdeContext): ReplicationRuleFilter => {\n if (output[\"Prefix\"] !== undefined) {\n return {\n Prefix: output[\"Prefix\"],\n };\n }\n if (output[\"Tag\"] !== undefined) {\n return {\n Tag: deserializeAws_restXmlTag(output[\"Tag\"], context),\n };\n }\n if (output[\"And\"] !== undefined) {\n return {\n And: deserializeAws_restXmlReplicationRuleAndOperator(output[\"And\"], context),\n };\n }\n return { $unknown: Object.entries(output)[0] };\n};\n\nconst deserializeAws_restXmlReplicationRules = (output: any, context: __SerdeContext): ReplicationRule[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlReplicationRule(entry, context);\n });\n};\n\nconst deserializeAws_restXmlReplicationTime = (output: any, context: __SerdeContext): ReplicationTime => {\n let contents: any = {\n Status: undefined,\n Time: undefined,\n };\n if (output[\"Status\"] !== undefined) {\n contents.Status = output[\"Status\"];\n }\n if (output[\"Time\"] !== undefined) {\n contents.Time = deserializeAws_restXmlReplicationTimeValue(output[\"Time\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlReplicationTimeValue = (output: any, context: __SerdeContext): ReplicationTimeValue => {\n let contents: any = {\n Minutes: undefined,\n };\n if (output[\"Minutes\"] !== undefined) {\n contents.Minutes = parseInt(output[\"Minutes\"]);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlRoutingRule = (output: any, context: __SerdeContext): RoutingRule => {\n let contents: any = {\n Condition: undefined,\n Redirect: undefined,\n };\n if (output[\"Condition\"] !== undefined) {\n contents.Condition = deserializeAws_restXmlCondition(output[\"Condition\"], context);\n }\n if (output[\"Redirect\"] !== undefined) {\n contents.Redirect = deserializeAws_restXmlRedirect(output[\"Redirect\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlRoutingRules = (output: any, context: __SerdeContext): RoutingRule[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlRoutingRule(entry, context);\n });\n};\n\nconst deserializeAws_restXmlS3KeyFilter = (output: any, context: __SerdeContext): S3KeyFilter => {\n let contents: any = {\n FilterRules: undefined,\n };\n if (output.FilterRule === \"\") {\n contents.FilterRules = [];\n }\n if (output[\"FilterRule\"] !== undefined) {\n contents.FilterRules = deserializeAws_restXmlFilterRuleList(__getArrayIfSingleItem(output[\"FilterRule\"]), context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlServerSideEncryptionByDefault = (\n output: any,\n context: __SerdeContext\n): ServerSideEncryptionByDefault => {\n let contents: any = {\n SSEAlgorithm: undefined,\n KMSMasterKeyID: undefined,\n };\n if (output[\"SSEAlgorithm\"] !== undefined) {\n contents.SSEAlgorithm = output[\"SSEAlgorithm\"];\n }\n if (output[\"KMSMasterKeyID\"] !== undefined) {\n contents.KMSMasterKeyID = output[\"KMSMasterKeyID\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlServerSideEncryptionConfiguration = (\n output: any,\n context: __SerdeContext\n): ServerSideEncryptionConfiguration => {\n let contents: any = {\n Rules: undefined,\n };\n if (output.Rule === \"\") {\n contents.Rules = [];\n }\n if (output[\"Rule\"] !== undefined) {\n contents.Rules = deserializeAws_restXmlServerSideEncryptionRules(__getArrayIfSingleItem(output[\"Rule\"]), context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlServerSideEncryptionRule = (\n output: any,\n context: __SerdeContext\n): ServerSideEncryptionRule => {\n let contents: any = {\n ApplyServerSideEncryptionByDefault: undefined,\n BucketKeyEnabled: undefined,\n };\n if (output[\"ApplyServerSideEncryptionByDefault\"] !== undefined) {\n contents.ApplyServerSideEncryptionByDefault = deserializeAws_restXmlServerSideEncryptionByDefault(\n output[\"ApplyServerSideEncryptionByDefault\"],\n context\n );\n }\n if (output[\"BucketKeyEnabled\"] !== undefined) {\n contents.BucketKeyEnabled = output[\"BucketKeyEnabled\"] == \"true\";\n }\n return contents;\n};\n\nconst deserializeAws_restXmlServerSideEncryptionRules = (\n output: any,\n context: __SerdeContext\n): ServerSideEncryptionRule[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlServerSideEncryptionRule(entry, context);\n });\n};\n\nconst deserializeAws_restXmlSourceSelectionCriteria = (\n output: any,\n context: __SerdeContext\n): SourceSelectionCriteria => {\n let contents: any = {\n SseKmsEncryptedObjects: undefined,\n ReplicaModifications: undefined,\n };\n if (output[\"SseKmsEncryptedObjects\"] !== undefined) {\n contents.SseKmsEncryptedObjects = deserializeAws_restXmlSseKmsEncryptedObjects(\n output[\"SseKmsEncryptedObjects\"],\n context\n );\n }\n if (output[\"ReplicaModifications\"] !== undefined) {\n contents.ReplicaModifications = deserializeAws_restXmlReplicaModifications(output[\"ReplicaModifications\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlSSEKMS = (output: any, context: __SerdeContext): SSEKMS => {\n let contents: any = {\n KeyId: undefined,\n };\n if (output[\"KeyId\"] !== undefined) {\n contents.KeyId = output[\"KeyId\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlSseKmsEncryptedObjects = (output: any, context: __SerdeContext): SseKmsEncryptedObjects => {\n let contents: any = {\n Status: undefined,\n };\n if (output[\"Status\"] !== undefined) {\n contents.Status = output[\"Status\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlSSES3 = (output: any, context: __SerdeContext): SSES3 => {\n let contents: any = {};\n return contents;\n};\n\nconst deserializeAws_restXmlStorageClassAnalysis = (output: any, context: __SerdeContext): StorageClassAnalysis => {\n let contents: any = {\n DataExport: undefined,\n };\n if (output[\"DataExport\"] !== undefined) {\n contents.DataExport = deserializeAws_restXmlStorageClassAnalysisDataExport(output[\"DataExport\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlStorageClassAnalysisDataExport = (\n output: any,\n context: __SerdeContext\n): StorageClassAnalysisDataExport => {\n let contents: any = {\n OutputSchemaVersion: undefined,\n Destination: undefined,\n };\n if (output[\"OutputSchemaVersion\"] !== undefined) {\n contents.OutputSchemaVersion = output[\"OutputSchemaVersion\"];\n }\n if (output[\"Destination\"] !== undefined) {\n contents.Destination = deserializeAws_restXmlAnalyticsExportDestination(output[\"Destination\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlTag = (output: any, context: __SerdeContext): Tag => {\n let contents: any = {\n Key: undefined,\n Value: undefined,\n };\n if (output[\"Key\"] !== undefined) {\n contents.Key = output[\"Key\"];\n }\n if (output[\"Value\"] !== undefined) {\n contents.Value = output[\"Value\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlTagSet = (output: any, context: __SerdeContext): Tag[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlTag(entry, context);\n });\n};\n\nconst deserializeAws_restXmlTargetGrant = (output: any, context: __SerdeContext): TargetGrant => {\n let contents: any = {\n Grantee: undefined,\n Permission: undefined,\n };\n if (output[\"Grantee\"] !== undefined) {\n contents.Grantee = deserializeAws_restXmlGrantee(output[\"Grantee\"], context);\n }\n if (output[\"Permission\"] !== undefined) {\n contents.Permission = output[\"Permission\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlTargetGrants = (output: any, context: __SerdeContext): TargetGrant[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlTargetGrant(entry, context);\n });\n};\n\nconst deserializeAws_restXmlTiering = (output: any, context: __SerdeContext): Tiering => {\n let contents: any = {\n Days: undefined,\n AccessTier: undefined,\n };\n if (output[\"Days\"] !== undefined) {\n contents.Days = parseInt(output[\"Days\"]);\n }\n if (output[\"AccessTier\"] !== undefined) {\n contents.AccessTier = output[\"AccessTier\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlTieringList = (output: any, context: __SerdeContext): Tiering[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlTiering(entry, context);\n });\n};\n\nconst deserializeAws_restXmlTopicConfiguration = (output: any, context: __SerdeContext): TopicConfiguration => {\n let contents: any = {\n Id: undefined,\n TopicArn: undefined,\n Events: undefined,\n Filter: undefined,\n };\n if (output[\"Id\"] !== undefined) {\n contents.Id = output[\"Id\"];\n }\n if (output[\"Topic\"] !== undefined) {\n contents.TopicArn = output[\"Topic\"];\n }\n if (output.Event === \"\") {\n contents.Events = [];\n }\n if (output[\"Event\"] !== undefined) {\n contents.Events = deserializeAws_restXmlEventList(__getArrayIfSingleItem(output[\"Event\"]), context);\n }\n if (output[\"Filter\"] !== undefined) {\n contents.Filter = deserializeAws_restXmlNotificationConfigurationFilter(output[\"Filter\"], context);\n }\n return contents;\n};\n\nconst deserializeAws_restXmlTopicConfigurationList = (output: any, context: __SerdeContext): TopicConfiguration[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlTopicConfiguration(entry, context);\n });\n};\n\nconst deserializeAws_restXmlTransition = (output: any, context: __SerdeContext): Transition => {\n let contents: any = {\n Date: undefined,\n Days: undefined,\n StorageClass: undefined,\n };\n if (output[\"Date\"] !== undefined) {\n contents.Date = new Date(output[\"Date\"]);\n }\n if (output[\"Days\"] !== undefined) {\n contents.Days = parseInt(output[\"Days\"]);\n }\n if (output[\"StorageClass\"] !== undefined) {\n contents.StorageClass = output[\"StorageClass\"];\n }\n return contents;\n};\n\nconst deserializeAws_restXmlTransitionList = (output: any, context: __SerdeContext): Transition[] => {\n return (output || [])\n .filter((e: any) => e != null)\n .map((entry: any) => {\n if (entry === null) {\n return null as any;\n }\n return deserializeAws_restXmlTransition(entry, context);\n });\n};\n\nconst deserializeMetadata = (output: __HttpResponse): __ResponseMetadata => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"],\n});\n\n// Collect low-level response body stream to Uint8Array.\nconst collectBody = (streamBody: any = new Uint8Array(), context: __SerdeContext): Promise => {\n if (streamBody instanceof Uint8Array) {\n return Promise.resolve(streamBody);\n }\n return context.streamCollector(streamBody) || Promise.resolve(new Uint8Array());\n};\n\n// Encode Uint8Array data into string with utf-8.\nconst collectBodyString = (streamBody: any, context: __SerdeContext): Promise =>\n collectBody(streamBody, context).then((body) => context.utf8Encoder(body));\n\nconst isSerializableHeaderValue = (value: any): boolean =>\n value !== undefined &&\n value !== null &&\n value !== \"\" &&\n (!Object.getOwnPropertyNames(value).includes(\"length\") || value.length != 0) &&\n (!Object.getOwnPropertyNames(value).includes(\"size\") || value.size != 0);\n\nconst decodeEscapedXML = (str: string) =>\n str\n .replace(/&/g, \"&\")\n .replace(/'/g, \"'\")\n .replace(/"/g, '\"')\n .replace(/>/g, \">\")\n .replace(/</g, \"<\");\n\nconst parseBody = (streamBody: any, context: __SerdeContext): any =>\n collectBodyString(streamBody, context).then((encoded) => {\n if (encoded.length) {\n const parsedObj = xmlParse(encoded, {\n attributeNamePrefix: \"\",\n ignoreAttributes: false,\n parseNodeValue: false,\n tagValueProcessor: (val, tagName) => decodeEscapedXML(val),\n });\n const textNodeName = \"#text\";\n const key = Object.keys(parsedObj)[0];\n const parsedObjToReturn = parsedObj[key];\n if (parsedObjToReturn[textNodeName]) {\n parsedObjToReturn[key] = parsedObjToReturn[textNodeName];\n delete parsedObjToReturn[textNodeName];\n }\n return __getValueFromTextNode(parsedObjToReturn);\n }\n return {};\n });\n\nconst loadRestXmlErrorCode = (output: __HttpResponse, data: any): string => {\n if (data.Code !== undefined) {\n return data.Code;\n }\n if (output.statusCode == 404) {\n return \"NotFound\";\n }\n return \"\";\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export interface ARN {\n partition: string;\n service: string;\n region: string;\n accountId: string;\n resource: string;\n}\n/**\n * Validate whether a string is an ARN.\n */\nexport const validate = (str: any): boolean =>\n typeof str === \"string\" && str.indexOf(\"arn:\") === 0 && str.split(\":\").length >= 6;\n\n/**\n * Parse an ARN string into structure with partition, service, region, accountId and resource values\n */\nexport const parse = (arn: string): ARN => {\n const segments = arn.split(\":\");\n if (segments.length < 6 || segments[0] !== \"arn\") throw new Error(\"Malformed ARN\");\n const [\n ,\n //Skip \"arn\" literal\n partition,\n service,\n region,\n accountId,\n ...resource\n ] = segments;\n\n return {\n partition,\n service,\n region,\n accountId,\n resource: resource.join(\":\"),\n };\n};\n\ntype buildOptions = Omit & { partition?: string };\n\n/**\n * Build an ARN with service, partition, region, accountId, and resources strings\n */\nexport const build = (arnObject: buildOptions): string => {\n const { partition = \"aws\", service, region, accountId, resource } = arnObject;\n if ([service, region, accountId, resource].some((segment) => typeof segment !== \"string\")) {\n throw new Error(\"Input ARN object is invalid\");\n }\n return `arn:${partition}:${service}:${region}:${accountId}:${resource}`;\n};\n","import { ARN } from \"@aws-sdk/util-arn-parser\";\n\nconst DOMAIN_PATTERN = /^[a-z0-9][a-z0-9\\.\\-]{1,61}[a-z0-9]$/;\nconst IP_ADDRESS_PATTERN = /(\\d+\\.){3}\\d+/;\nconst DOTS_PATTERN = /\\.\\./;\nexport const DOT_PATTERN = /\\./;\nexport const S3_HOSTNAME_PATTERN = /^(.+\\.)?s3[.-]([a-z0-9-]+)\\./;\nconst S3_US_EAST_1_ALTNAME_PATTERN = /^s3(-external-1)?\\.amazonaws\\.com$/;\nconst AWS_PARTITION_SUFFIX = \"amazonaws.com\";\n\nexport interface AccessPointArn extends ARN {\n accessPointName: string;\n}\n\nexport interface BucketHostnameParams {\n isCustomEndpoint: boolean;\n baseHostname: string;\n bucketName: string;\n clientRegion: string;\n accelerateEndpoint?: boolean;\n dualstackEndpoint?: boolean;\n pathStyleEndpoint?: boolean;\n tlsCompatible?: boolean;\n}\n\nexport interface ArnHostnameParams extends Omit {\n bucketName: ARN;\n clientSigningRegion?: string;\n clientPartition?: string;\n useArnRegion?: boolean;\n}\n\nexport const isBucketNameOptions = (\n options: BucketHostnameParams | ArnHostnameParams\n): options is BucketHostnameParams => typeof options.bucketName === \"string\";\n\n/**\n * Get pseudo region from supplied region. For example, if supplied with `fips-us-west-2`, it returns `us-west-2`.\n * @internal\n */\nexport const getPseudoRegion = (region: string) => (isFipsRegion(region) ? region.replace(/fips-|-fips/, \"\") : region);\n\n/**\n * Determines whether a given string is DNS compliant per the rules outlined by\n * S3. Length, capitaization, and leading dot restrictions are enforced by the\n * DOMAIN_PATTERN regular expression.\n * @internal\n *\n * @see https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html\n */\nexport const isDnsCompatibleBucketName = (bucketName: string): boolean =>\n DOMAIN_PATTERN.test(bucketName) && !IP_ADDRESS_PATTERN.test(bucketName) && !DOTS_PATTERN.test(bucketName);\n\nconst getRegionalSuffix = (hostname: string): [string, string] => {\n const parts = hostname.match(S3_HOSTNAME_PATTERN)!;\n return [parts[2], hostname.replace(new RegExp(`^${parts[0]}`), \"\")];\n};\n\nexport const getSuffix = (hostname: string): [string, string] =>\n S3_US_EAST_1_ALTNAME_PATTERN.test(hostname) ? [\"us-east-1\", AWS_PARTITION_SUFFIX] : getRegionalSuffix(hostname);\n\n/**\n * Infer region and hostname suffix from a complete hostname\n * @internal\n * @param hostname - Hostname\n * @returns [Region, Hostname suffix]\n */\nexport const getSuffixForArnEndpoint = (hostname: string): [string, string] =>\n S3_US_EAST_1_ALTNAME_PATTERN.test(hostname)\n ? [hostname.replace(`.${AWS_PARTITION_SUFFIX}`, \"\"), AWS_PARTITION_SUFFIX]\n : getRegionalSuffix(hostname);\n\nexport const validateArnEndpointOptions = (options: {\n accelerateEndpoint?: boolean;\n tlsCompatible?: boolean;\n pathStyleEndpoint?: boolean;\n}) => {\n if (options.pathStyleEndpoint) {\n throw new Error(\"Path-style S3 endpoint is not supported when bucket is an ARN\");\n }\n if (options.accelerateEndpoint) {\n throw new Error(\"Accelerate endpoint is not supported when bucket is an ARN\");\n }\n if (!options.tlsCompatible) {\n throw new Error(\"HTTPS is required when bucket is an ARN\");\n }\n};\n\nexport const validateService = (service: string) => {\n if (service !== \"s3\" && service !== \"s3-outposts\") {\n throw new Error(\"Expect 's3' or 's3-outposts' in ARN service component\");\n }\n};\n\nexport const validateS3Service = (service: string) => {\n if (service !== \"s3\") {\n throw new Error(\"Expect 's3' in Accesspoint ARN service component\");\n }\n};\n\nexport const validateOutpostService = (service: string) => {\n if (service !== \"s3-outposts\") {\n throw new Error(\"Expect 's3-posts' in Outpost ARN service component\");\n }\n};\n\n/**\n * Validate partition inferred from ARN is the same to `options.clientPartition`.\n * @internal\n */\nexport const validatePartition = (partition: string, options: { clientPartition: string }) => {\n if (partition !== options.clientPartition) {\n throw new Error(`Partition in ARN is incompatible, got \"${partition}\" but expected \"${options.clientPartition}\"`);\n }\n};\n\n/**\n * validate region value inferred from ARN. If `options.useArnRegion` is set, it validates the region is not a FIPS\n * region. If `options.useArnRegion` is unset, it validates the region is equal to `options.clientRegion` or\n * `options.clientSigningRegion`.\n * @internal\n */\nexport const validateRegion = (\n region: string,\n options: {\n useArnRegion?: boolean;\n clientRegion: string;\n clientSigningRegion: string;\n }\n) => {\n if (region === \"\") {\n throw new Error(\"ARN region is empty\");\n }\n if (\n !options.useArnRegion &&\n !isEqualRegions(region, options.clientRegion) &&\n !isEqualRegions(region, options.clientSigningRegion)\n ) {\n throw new Error(`Region in ARN is incompatible, got ${region} but expected ${options.clientRegion}`);\n }\n if (options.useArnRegion && isFipsRegion(region)) {\n throw new Error(\"Endpoint does not support FIPS region\");\n }\n};\n\nconst isFipsRegion = (region: string) => region.startsWith(\"fips-\") || region.endsWith(\"-fips\");\n\nconst isEqualRegions = (regionA: string, regionB: string) =>\n regionA === regionB || getPseudoRegion(regionA) === regionB || regionA === getPseudoRegion(regionB);\n\n/**\n * Validate an account ID\n * @internal\n */\nexport const validateAccountId = (accountId: string) => {\n if (!/[0-9]{12}/.exec(accountId)) {\n throw new Error(\"Access point ARN accountID does not match regex '[0-9]{12}'\");\n }\n};\n\n/**\n * Validate a host label according to https://tools.ietf.org/html/rfc3986#section-3.2.2\n * @internal\n */\nexport const validateDNSHostLabel = (label: string, options: { tlsCompatible?: boolean } = { tlsCompatible: true }) => {\n // reference: https://tools.ietf.org/html/rfc3986#section-3.2.2\n if (\n label.length >= 64 ||\n !/^[a-z0-9][a-z0-9.-]+[a-z0-9]$/.test(label) ||\n /(\\d+\\.){3}\\d+/.test(label) ||\n /[.-]{2}/.test(label) ||\n (options?.tlsCompatible && DOT_PATTERN.test(label))\n ) {\n throw new Error(`Invalid DNS label ${label}`);\n }\n};\n\n/**\n * Validate and parse an Access Point ARN or Outposts ARN\n * @internal\n *\n * @param resource - The resource section of an ARN\n * @returns Access Point Name and optional Outpost ID.\n */\nexport const getArnResources = (\n resource: string\n): {\n accesspointName: string;\n outpostId?: string;\n} => {\n const delimiter = resource.includes(\":\") ? \":\" : \"/\";\n const [resourceType, ...rest] = resource.split(delimiter);\n if (resourceType === \"accesspoint\") {\n // Parse accesspoint ARN\n if (rest.length !== 1 || rest[0] === \"\") {\n throw new Error(`Access Point ARN should have one resource accesspoint${delimiter}{accesspointname}`);\n }\n return { accesspointName: rest[0] };\n } else if (resourceType === \"outpost\") {\n // Parse outpost ARN\n if (!rest[0] || rest[1] !== \"accesspoint\" || !rest[2] || rest.length !== 3) {\n throw new Error(\n `Outpost ARN should have resource outpost${delimiter}{outpostId}${delimiter}accesspoint${delimiter}{accesspointName}`\n );\n }\n const [outpostId, _, accesspointName] = rest;\n return { outpostId, accesspointName };\n } else {\n throw new Error(`ARN resource should begin with 'accesspoint${delimiter}' or 'outpost${delimiter}'`);\n }\n};\n\n/**\n * Throw if dual stack configuration is set to true.\n * @internal\n */\nexport const validateNoDualstack = (dualstackEndpoint: boolean) => {\n if (dualstackEndpoint) throw new Error(\"Dualstack endpoint is not supported with Outpost\");\n};\n\n/**\n * Validate region is not appended or prepended with a `fips-`\n * @internal\n */\nexport const validateNoFIPS = (region: string) => {\n if (isFipsRegion(region ?? \"\")) throw new Error(`FIPS region is not supported with Outpost, got ${region}`);\n};\n","import {\n ArnHostnameParams,\n BucketHostnameParams,\n DOT_PATTERN,\n getArnResources,\n getSuffix,\n getSuffixForArnEndpoint,\n isBucketNameOptions,\n isDnsCompatibleBucketName,\n validateAccountId,\n validateArnEndpointOptions,\n validateDNSHostLabel,\n validateNoDualstack,\n validateNoFIPS,\n validateOutpostService,\n validatePartition,\n validateRegion,\n validateS3Service,\n validateService,\n} from \"./bucketHostnameUtils\";\n\nexport interface BucketHostname {\n hostname: string;\n bucketEndpoint: boolean;\n signingRegion?: string;\n signingService?: string;\n}\n\nexport const bucketHostname = (options: BucketHostnameParams | ArnHostnameParams): BucketHostname => {\n const { isCustomEndpoint, baseHostname, dualstackEndpoint, accelerateEndpoint } = options;\n\n if (isCustomEndpoint) {\n if (dualstackEndpoint) throw new Error(\"Dualstack endpoint is not supported with custom endpoint\");\n if (accelerateEndpoint) throw new Error(\"Accelerate endpoint is not supported with custom endpoint\");\n }\n\n return isBucketNameOptions(options)\n ? // Construct endpoint when bucketName is a string referring to a bucket name\n getEndpointFromBucketName({ ...options, isCustomEndpoint })\n : // Construct endpoint when bucketName is an ARN referring to an S3 resource like Access Point\n getEndpointFromArn({ ...options, isCustomEndpoint });\n};\n\nconst getEndpointFromArn = (options: ArnHostnameParams & { isCustomEndpoint: boolean }): BucketHostname => {\n const { isCustomEndpoint, baseHostname } = options;\n const [clientRegion, hostnameSuffix] = isCustomEndpoint\n ? [options.clientRegion, baseHostname]\n : // Infer client region and hostname suffix from hostname from endpoints.json, like `s3.us-west-2.amazonaws.com`\n getSuffixForArnEndpoint(baseHostname);\n\n const {\n pathStyleEndpoint,\n dualstackEndpoint = false,\n accelerateEndpoint = false,\n tlsCompatible = true,\n useArnRegion,\n bucketName,\n clientPartition = \"aws\",\n clientSigningRegion = clientRegion,\n } = options;\n\n validateArnEndpointOptions({ pathStyleEndpoint, accelerateEndpoint, tlsCompatible });\n\n // Validate and parse the ARN supplied as a bucket name\n const { service, partition, accountId, region, resource } = bucketName;\n validateService(service);\n validatePartition(partition, { clientPartition });\n validateAccountId(accountId);\n validateRegion(region, { useArnRegion, clientRegion, clientSigningRegion });\n const { accesspointName, outpostId } = getArnResources(resource);\n validateDNSHostLabel(`${accesspointName}-${accountId}`, { tlsCompatible });\n\n const endpointRegion = useArnRegion ? region : clientRegion;\n const signingRegion = useArnRegion ? region : clientSigningRegion;\n if (outpostId) {\n // if this is an Outpost ARN\n validateOutpostService(service);\n validateDNSHostLabel(outpostId, { tlsCompatible });\n validateNoDualstack(dualstackEndpoint);\n validateNoFIPS(endpointRegion);\n const hostnamePrefix = `${accesspointName}-${accountId}.${outpostId}`;\n return {\n bucketEndpoint: true,\n hostname: `${hostnamePrefix}${isCustomEndpoint ? \"\" : `.s3-outposts.${endpointRegion}`}.${hostnameSuffix}`,\n signingRegion,\n signingService: \"s3-outposts\",\n };\n }\n // construct endpoint from Accesspoint ARN\n validateS3Service(service);\n const hostnamePrefix = `${accesspointName}-${accountId}`;\n return {\n bucketEndpoint: true,\n hostname: `${hostnamePrefix}${\n isCustomEndpoint ? \"\" : `.s3-accesspoint${dualstackEndpoint ? \".dualstack\" : \"\"}.${endpointRegion}`\n }.${hostnameSuffix}`,\n signingRegion,\n };\n};\n\nconst getEndpointFromBucketName = ({\n accelerateEndpoint = false,\n clientRegion: region,\n baseHostname,\n bucketName,\n dualstackEndpoint = false,\n pathStyleEndpoint = false,\n tlsCompatible = true,\n isCustomEndpoint = false,\n}: BucketHostnameParams & { isCustomEndpoint: boolean }): BucketHostname => {\n const [clientRegion, hostnameSuffix] = isCustomEndpoint ? [region, baseHostname] : getSuffix(baseHostname);\n if (pathStyleEndpoint || !isDnsCompatibleBucketName(bucketName) || (tlsCompatible && DOT_PATTERN.test(bucketName))) {\n return {\n bucketEndpoint: false,\n hostname: dualstackEndpoint ? `s3.dualstack.${clientRegion}.${hostnameSuffix}` : baseHostname,\n };\n }\n\n if (accelerateEndpoint) {\n baseHostname = `s3-accelerate${dualstackEndpoint ? \".dualstack\" : \"\"}.${hostnameSuffix}`;\n } else if (dualstackEndpoint) {\n baseHostname = `s3.dualstack.${clientRegion}.${hostnameSuffix}`;\n }\n\n return {\n bucketEndpoint: true,\n hostname: `${bucketName}.${baseHostname}`,\n };\n};\n","import { HttpRequest } from \"@aws-sdk/protocol-http\";\nimport {\n BuildHandler,\n BuildHandlerArguments,\n BuildHandlerOutput,\n BuildMiddleware,\n HandlerExecutionContext,\n MetadataBearer,\n Pluggable,\n RelativeMiddlewareOptions,\n} from \"@aws-sdk/types\";\nimport { parse as parseArn, validate as validateArn } from \"@aws-sdk/util-arn-parser\";\n\nimport { bucketHostname } from \"./bucketHostname\";\nimport { getPseudoRegion } from \"./bucketHostnameUtils\";\nimport { BucketEndpointResolvedConfig } from \"./configurations\";\n\nexport const bucketEndpointMiddleware = (options: BucketEndpointResolvedConfig): BuildMiddleware => <\n Output extends MetadataBearer\n>(\n next: BuildHandler,\n context: HandlerExecutionContext\n): BuildHandler => async (args: BuildHandlerArguments): Promise> => {\n const { Bucket: bucketName } = args.input as { Bucket: string };\n let replaceBucketInPath = options.bucketEndpoint;\n const request = args.request;\n if (HttpRequest.isInstance(request)) {\n if (options.bucketEndpoint) {\n request.hostname = bucketName;\n } else if (validateArn(bucketName)) {\n const bucketArn = parseArn(bucketName);\n const clientRegion = getPseudoRegion(await options.region());\n const { partition, signingRegion = clientRegion } = (await options.regionInfoProvider(clientRegion)) || {};\n const useArnRegion = await options.useArnRegion();\n const { hostname, bucketEndpoint, signingRegion: modifiedSigningRegion, signingService } = bucketHostname({\n bucketName: bucketArn,\n baseHostname: request.hostname,\n accelerateEndpoint: options.useAccelerateEndpoint,\n dualstackEndpoint: options.useDualstackEndpoint,\n pathStyleEndpoint: options.forcePathStyle,\n tlsCompatible: request.protocol === \"https:\",\n useArnRegion,\n clientPartition: partition,\n clientSigningRegion: signingRegion,\n clientRegion: clientRegion,\n isCustomEndpoint: options.isCustomEndpoint,\n });\n\n // If the request needs to use a region or service name inferred from ARN that different from client region, we\n // need to set them in the handler context so the signer will use them\n if (modifiedSigningRegion && modifiedSigningRegion !== signingRegion) {\n context[\"signing_region\"] = modifiedSigningRegion;\n }\n if (signingService && signingService !== \"s3\") {\n context[\"signing_service\"] = signingService;\n }\n\n request.hostname = hostname;\n replaceBucketInPath = bucketEndpoint;\n } else {\n const clientRegion = getPseudoRegion(await options.region());\n const { hostname, bucketEndpoint } = bucketHostname({\n bucketName,\n clientRegion,\n baseHostname: request.hostname,\n accelerateEndpoint: options.useAccelerateEndpoint,\n dualstackEndpoint: options.useDualstackEndpoint,\n pathStyleEndpoint: options.forcePathStyle,\n tlsCompatible: request.protocol === \"https:\",\n isCustomEndpoint: options.isCustomEndpoint,\n });\n\n request.hostname = hostname;\n replaceBucketInPath = bucketEndpoint;\n }\n\n if (replaceBucketInPath) {\n request.path = request.path.replace(/^(\\/)?[^\\/]+/, \"\");\n if (request.path === \"\") {\n request.path = \"/\";\n }\n }\n }\n\n return next({ ...args, request });\n};\n\nexport const bucketEndpointMiddlewareOptions: RelativeMiddlewareOptions = {\n tags: [\"BUCKET_ENDPOINT\"],\n name: \"bucketEndpointMiddleware\",\n relation: \"before\",\n toMiddleware: \"hostHeaderMiddleware\",\n override: true,\n};\n\nexport const getBucketEndpointPlugin = (options: BucketEndpointResolvedConfig): Pluggable => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(bucketEndpointMiddleware(options), bucketEndpointMiddlewareOptions);\n },\n});\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import {\n InitializeHandler,\n InitializeHandlerArguments,\n InitializeHandlerOptions,\n InitializeHandlerOutput,\n InitializeMiddleware,\n MetadataBearer,\n Pluggable,\n} from \"@aws-sdk/types\";\nimport { validate as validateArn } from \"@aws-sdk/util-arn-parser\";\n\n/**\n * @internal\n */\nexport function validateBucketNameMiddleware(): InitializeMiddleware {\n return (\n next: InitializeHandler\n ): InitializeHandler => async (\n args: InitializeHandlerArguments\n ): Promise> => {\n const {\n input: { Bucket },\n } = args;\n if (typeof Bucket === \"string\" && !validateArn(Bucket) && Bucket.indexOf(\"/\") >= 0) {\n const err = new Error(`Bucket name shouldn't contain '/', received '${Bucket}'`);\n err.name = \"InvalidBucketName\";\n throw err;\n }\n return next({ ...args });\n };\n}\n\n/**\n * @internal\n */\nexport const validateBucketNameMiddlewareOptions: InitializeHandlerOptions = {\n step: \"initialize\",\n tags: [\"VALIDATE_BUCKET_NAME\"],\n name: \"validateBucketNameMiddleware\",\n override: true,\n};\n\n/**\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport const getValidateBucketNamePlugin = (unused: any): Pluggable => ({\n applyToStack: (clientStack) => {\n clientStack.add(validateBucketNameMiddleware(), validateBucketNameMiddlewareOptions);\n },\n});\n","import { HttpRequest } from \"@aws-sdk/protocol-http\";\nimport {\n BuildHandler,\n BuildHandlerArguments,\n BuildHandlerOptions,\n BuildHandlerOutput,\n BuildMiddleware,\n MetadataBearer,\n Pluggable,\n Provider,\n} from \"@aws-sdk/types\";\n\ntype PreviouslyResolved = {\n region: Provider;\n isCustomEndpoint: boolean;\n};\n\n/**\n * @internal\n */\nexport const useRegionalEndpointMiddleware = (config: PreviouslyResolved): BuildMiddleware => <\n Output extends MetadataBearer\n>(\n next: BuildHandler\n): BuildHandler => async (args: BuildHandlerArguments): Promise> => {\n const { request } = args;\n if (!HttpRequest.isInstance(request) || config.isCustomEndpoint) return next({ ...args });\n if (request.hostname === \"s3.amazonaws.com\") {\n request.hostname = \"s3.us-east-1.amazonaws.com\";\n } else if (\"aws-global\" === (await config.region())) {\n request.hostname = \"s3.amazonaws.com\";\n }\n return next({ ...args });\n};\n\n/**\n * @internal\n */\nexport const useRegionalEndpointMiddlewareOptions: BuildHandlerOptions = {\n step: \"build\",\n tags: [\"USE_REGIONAL_ENDPOINT\", \"S3\"],\n name: \"useRegionalEndpointMiddleware\",\n override: true,\n};\n\n/**\n * @internal\n */\nexport const getUseRegionalEndpointPlugin = (config: PreviouslyResolved): Pluggable => ({\n applyToStack: (clientStack) => {\n clientStack.add(useRegionalEndpointMiddleware(config), useRegionalEndpointMiddlewareOptions);\n },\n});\n","import { HttpResponse } from \"@aws-sdk/protocol-http\";\nimport { DeserializeMiddleware, Encoder, Pluggable, RelativeMiddlewareOptions, StreamCollector } from \"@aws-sdk/types\";\n\ntype PreviouslyResolved = {\n streamCollector: StreamCollector;\n utf8Encoder: Encoder;\n};\n\n/**\n * In case of an internal error/terminated connection, S3 operations may return 200 errors. CopyObject, UploadPartCopy,\n * CompleteMultipartUpload may return empty payload or payload with only xml Preamble.\n * @internal\n */\nexport const throw200ExceptionsMiddleware = (config: PreviouslyResolved): DeserializeMiddleware => (\n next\n) => async (args) => {\n const result = await next(args);\n const { response } = result;\n if (!HttpResponse.isInstance(response)) return result;\n const { statusCode, body } = response;\n if (statusCode < 200 && statusCode >= 300) return result;\n\n // Throw 2XX response that's either an error or has empty body.\n const bodyBytes = await collectBody(body, config);\n const bodyString = await collectBodyString(bodyBytes, config);\n if (bodyBytes.length === 0) {\n const err = new Error(\"S3 aborted request\");\n err.name = \"InternalError\";\n throw err;\n }\n if (bodyString && bodyString.match(\"\")) {\n // Set the error code to 4XX so that error deserializer can parse them\n response.statusCode = 400;\n }\n\n // Body stream is consumed and paused at this point. So replace the response.body to the collected bytes.\n // So that the deserializer can consume the body as normal.\n response.body = bodyBytes;\n return result;\n};\n\n// Collect low-level response body stream to Uint8Array.\nconst collectBody = (streamBody: any = new Uint8Array(), context: PreviouslyResolved): Promise => {\n if (streamBody instanceof Uint8Array) {\n return Promise.resolve(streamBody);\n }\n return context.streamCollector(streamBody) || Promise.resolve(new Uint8Array());\n};\n\n// Encode Uint8Array data into string with utf-8.\nconst collectBodyString = (streamBody: any, context: PreviouslyResolved): Promise =>\n collectBody(streamBody, context).then((body) => context.utf8Encoder(body));\n\n/**\n * @internal\n */\nexport const throw200ExceptionsMiddlewareOptions: RelativeMiddlewareOptions = {\n relation: \"after\",\n toMiddleware: \"deserializerMiddleware\",\n tags: [\"THROW_200_EXCEPTIONS\", \"S3\"],\n name: \"throw200ExceptionsMiddleware\",\n override: true,\n};\n\n/**\n *\n * @internal\n */\nexport const getThrow200ExceptionsPlugin = (config: PreviouslyResolved): Pluggable => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(throw200ExceptionsMiddleware(config), throw200ExceptionsMiddlewareOptions);\n },\n});\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import {\n InitializeHandler,\n InitializeHandlerArguments,\n InitializeHandlerOptions,\n InitializeHandlerOutput,\n InitializeMiddleware,\n MetadataBearer,\n Pluggable,\n SourceData,\n} from \"@aws-sdk/types\";\n\nimport { ResolvedSsecMiddlewareConfig } from \"./configuration\";\n\nexport function ssecMiddleware(options: ResolvedSsecMiddlewareConfig): InitializeMiddleware {\n return (\n next: InitializeHandler\n ): InitializeHandler => async (\n args: InitializeHandlerArguments\n ): Promise> => {\n let input = { ...args.input };\n const properties = [\n {\n target: \"SSECustomerKey\",\n hash: \"SSECustomerKeyMD5\",\n },\n {\n target: \"CopySourceSSECustomerKey\",\n hash: \"CopySourceSSECustomerKeyMD5\",\n },\n ];\n\n for (const prop of properties) {\n const value: SourceData | undefined = (input as any)[prop.target];\n if (value) {\n const valueView = ArrayBuffer.isView(value)\n ? new Uint8Array(value.buffer, value.byteOffset, value.byteLength)\n : typeof value === \"string\"\n ? options.utf8Decoder(value)\n : new Uint8Array(value);\n const encoded = options.base64Encoder(valueView);\n const hash = new options.md5();\n hash.update(valueView);\n input = {\n ...(input as any),\n [prop.target]: encoded,\n [prop.hash]: options.base64Encoder(await hash.digest()),\n };\n }\n }\n\n return next({\n ...args,\n input,\n });\n };\n}\n\nexport const ssecMiddlewareOptions: InitializeHandlerOptions = {\n name: \"ssecMiddleware\",\n step: \"initialize\",\n tags: [\"SSE\"],\n override: true,\n};\n\nexport const getSsecPlugin = (config: ResolvedSsecMiddlewareConfig): Pluggable => ({\n applyToStack: (clientStack) => {\n clientStack.add(ssecMiddleware(config), ssecMiddlewareOptions);\n },\n});\n","import { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from \"../S3Client\";\nimport { CopyObjectOutput, CopyObjectRequest } from \"../models/models_0\";\nimport {\n deserializeAws_restXmlCopyObjectCommand,\n serializeAws_restXmlCopyObjectCommand,\n} from \"../protocols/Aws_restXml\";\nimport { getBucketEndpointPlugin } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getThrow200ExceptionsPlugin } from \"@aws-sdk/middleware-sdk-s3\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { getSsecPlugin } from \"@aws-sdk/middleware-ssec\";\nimport { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from \"@aws-sdk/protocol-http\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nimport {\n FinalizeHandlerArguments,\n Handler,\n HandlerExecutionContext,\n MiddlewareStack,\n HttpHandlerOptions as __HttpHandlerOptions,\n MetadataBearer as __MetadataBearer,\n SerdeContext as __SerdeContext,\n} from \"@aws-sdk/types\";\n\nexport type CopyObjectCommandInput = CopyObjectRequest;\nexport type CopyObjectCommandOutput = CopyObjectOutput & __MetadataBearer;\n\n/**\n *

Creates a copy of an object that is already stored in Amazon S3.

\n * \n *

You can store individual objects of up to 5 TB in Amazon S3. You create a copy of your\n * object up to 5 GB in size in a single atomic operation using this API. However, to copy\n * an object greater than 5 GB, you must use the multipart upload Upload Part - Copy API.\n * For more information, see Copy Object Using the REST Multipart Upload API.

\n *
\n *

All copy requests must be authenticated. Additionally, you must have\n * read access to the source object and write\n * access to the destination bucket. For more information, see REST Authentication. Both the Region\n * that you want to copy the object from and the Region that you want to copy the object to\n * must be enabled for your account.

\n *

A copy request might return an error when Amazon S3 receives the copy request or while Amazon S3\n * is copying the files. If the error occurs before the copy operation starts, you receive a\n * standard Amazon S3 error. If the error occurs during the copy operation, the error response is\n * embedded in the 200 OK response. This means that a 200 OK\n * response can contain either a success or an error. Design your application to parse the\n * contents of the response and handle it appropriately.

\n *

If the copy is successful, you receive a response with information about the copied\n * object.

\n * \n *

If the request is an HTTP 1.1 request, the response is chunk encoded. If it were not,\n * it would not contain the content-length, and you would need to read the entire\n * body.

\n *
\n *

The copy request charge is based on the storage class and Region that you specify for\n * the destination object. For pricing information, see Amazon S3 pricing.

\n * \n *

Amazon S3 transfer acceleration does not support cross-Region copies. If you request a\n * cross-Region copy using a transfer acceleration endpoint, you get a 400 Bad\n * Request error. For more information, see Transfer Acceleration.

\n *
\n *

\n * Metadata\n *

\n *

When copying an object, you can preserve all metadata (default) or specify new metadata.\n * However, the ACL is not preserved and is set to private for the user making the request. To\n * override the default ACL setting, specify a new ACL when generating a copy request. For\n * more information, see Using ACLs.

\n *

To specify whether you want the object metadata copied from the source object or\n * replaced with metadata provided in the request, you can optionally add the\n * x-amz-metadata-directive header. When you grant permissions, you can use\n * the s3:x-amz-metadata-directive condition key to enforce certain metadata\n * behavior when objects are uploaded. For more information, see Specifying Conditions in a\n * Policy in the Amazon S3 Developer Guide. For a complete list of\n * Amazon S3-specific condition keys, see Actions, Resources, and Condition Keys for\n * Amazon S3.

\n *

\n * \n * x-amz-copy-source-if Headers\n *

\n *

To only copy an object under certain conditions, such as whether the Etag\n * matches or whether the object was modified before or after a specified date, use the\n * following request parameters:

\n *
    \n *
  • \n *

    \n * x-amz-copy-source-if-match\n *

    \n *
  • \n *
  • \n *

    \n * x-amz-copy-source-if-none-match\n *

    \n *
  • \n *
  • \n *

    \n * x-amz-copy-source-if-unmodified-since\n *

    \n *
  • \n *
  • \n *

    \n * x-amz-copy-source-if-modified-since\n *

    \n *
  • \n *
\n *

If both the x-amz-copy-source-if-match and\n * x-amz-copy-source-if-unmodified-since headers are present in the request\n * and evaluate as follows, Amazon S3 returns 200 OK and copies the data:

\n *
    \n *
  • \n *

    \n * x-amz-copy-source-if-match condition evaluates to true

    \n *
  • \n *
  • \n *

    \n * x-amz-copy-source-if-unmodified-since condition evaluates to\n * false

    \n *
  • \n *
\n *\n *

If both the x-amz-copy-source-if-none-match and\n * x-amz-copy-source-if-modified-since headers are present in the request and\n * evaluate as follows, Amazon S3 returns the 412 Precondition Failed response\n * code:

\n *
    \n *
  • \n *

    \n * x-amz-copy-source-if-none-match condition evaluates to false

    \n *
  • \n *
  • \n *

    \n * x-amz-copy-source-if-modified-since condition evaluates to\n * true

    \n *
  • \n *
\n *\n * \n *

All headers with the x-amz- prefix, including\n * x-amz-copy-source, must be signed.

\n *
\n *

\n * Server-side encryption\n *

\n *

When you perform a CopyObject operation, you can optionally use the appropriate encryption-related headers to encrypt the object using server-side encryption with AWS managed encryption keys (SSE-S3 or SSE-KMS) or a customer-provided encryption key. With server-side encryption, Amazon S3 encrypts your data as it writes it to disks in its data centers and decrypts the data when you access it. For more information about server-side encryption, see Using\n * Server-Side Encryption.

\n *

If a target object uses SSE-KMS, you can enable an S3 Bucket Key for the object. For more\n * information, see Amazon S3 Bucket Keys in the Amazon Simple Storage Service Developer Guide.

\n *

\n * Access Control List (ACL)-Specific Request\n * Headers\n *

\n *

When copying an object, you can optionally use headers to grant ACL-based permissions.\n * By default, all objects are private. Only the owner has full access control. When adding a\n * new object, you can grant permissions to individual AWS accounts or to predefined groups\n * defined by Amazon S3. These permissions are then added to the ACL on the object. For more\n * information, see Access Control List (ACL) Overview and Managing ACLs Using the REST\n * API.

\n *\n *

\n * Storage Class Options\n *

\n *

You can use the CopyObject operation to change the storage class of an\n * object that is already stored in Amazon S3 using the StorageClass parameter. For\n * more information, see Storage\n * Classes in the Amazon S3 Service Developer Guide.

\n *

\n * Versioning\n *

\n *

By default, x-amz-copy-source identifies the current version of an object\n * to copy. If the current version is a delete marker, Amazon S3 behaves as if the object was\n * deleted. To copy a different version, use the versionId subresource.

\n *

If you enable versioning on the target bucket, Amazon S3 generates a unique version ID for\n * the object being copied. This version ID is different from the version ID of the source\n * object. Amazon S3 returns the version ID of the copied object in the\n * x-amz-version-id response header in the response.

\n *

If you do not enable versioning or suspend it on the target bucket, the version ID that\n * Amazon S3 generates is always null.

\n *

If the source object's storage class is GLACIER, you must restore a copy of this object\n * before you can use it as a source object for the copy operation. For more information, see\n * RestoreObject.

\n *

The following operations are related to CopyObject:

\n * \n *

For more information, see Copying\n * Objects.

\n */\nexport class CopyObjectCommand extends $Command<\n CopyObjectCommandInput,\n CopyObjectCommandOutput,\n S3ClientResolvedConfig\n> {\n // Start section: command_properties\n // End section: command_properties\n\n constructor(readonly input: CopyObjectCommandInput) {\n // Start section: command_constructor\n super();\n // End section: command_constructor\n }\n\n /**\n * @internal\n */\n resolveMiddleware(\n clientStack: MiddlewareStack,\n configuration: S3ClientResolvedConfig,\n options?: __HttpHandlerOptions\n ): Handler {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use(getThrow200ExceptionsPlugin(configuration));\n this.middlewareStack.use(getSsecPlugin(configuration));\n this.middlewareStack.use(getBucketEndpointPlugin(configuration));\n\n const stack = clientStack.concat(this.middlewareStack);\n\n const { logger } = configuration;\n const clientName = \"S3Client\";\n const commandName = \"CopyObjectCommand\";\n const handlerExecutionContext: HandlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: CopyObjectRequest.filterSensitiveLog,\n outputFilterSensitiveLog: CopyObjectOutput.filterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve(\n (request: FinalizeHandlerArguments) =>\n requestHandler.handle(request.request as __HttpRequest, options || {}),\n handlerExecutionContext\n );\n }\n\n private serialize(input: CopyObjectCommandInput, context: __SerdeContext): Promise<__HttpRequest> {\n return serializeAws_restXmlCopyObjectCommand(input, context);\n }\n\n private deserialize(output: __HttpResponse, context: __SerdeContext): Promise {\n return deserializeAws_restXmlCopyObjectCommand(output, context);\n }\n\n // Start section: command_body_extra\n // End section: command_body_extra\n}\n","import { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from \"../S3Client\";\nimport { GetObjectOutput, GetObjectRequest } from \"../models/models_0\";\nimport { deserializeAws_restXmlGetObjectCommand, serializeAws_restXmlGetObjectCommand } from \"../protocols/Aws_restXml\";\nimport { getBucketEndpointPlugin } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { getSsecPlugin } from \"@aws-sdk/middleware-ssec\";\nimport { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from \"@aws-sdk/protocol-http\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nimport {\n FinalizeHandlerArguments,\n Handler,\n HandlerExecutionContext,\n MiddlewareStack,\n HttpHandlerOptions as __HttpHandlerOptions,\n MetadataBearer as __MetadataBearer,\n SerdeContext as __SerdeContext,\n} from \"@aws-sdk/types\";\n\nexport type GetObjectCommandInput = GetObjectRequest;\nexport type GetObjectCommandOutput = GetObjectOutput & __MetadataBearer;\n\n/**\n *

Retrieves objects from Amazon S3. To use GET, you must have READ\n * access to the object. If you grant READ access to the anonymous user, you can\n * return the object without using an authorization header.

\n *\n *

An Amazon S3 bucket has no directory hierarchy such as you would find in a typical computer\n * file system. You can, however, create a logical hierarchy by using object key names that\n * imply a folder structure. For example, instead of naming an object sample.jpg,\n * you can name it photos/2006/February/sample.jpg.

\n *\n *

To get an object from such a logical hierarchy, specify the full key name for the object\n * in the GET operation. For a virtual hosted-style request example, if you have\n * the object photos/2006/February/sample.jpg, specify the resource as\n * /photos/2006/February/sample.jpg. For a path-style request example, if you\n * have the object photos/2006/February/sample.jpg in the bucket named\n * examplebucket, specify the resource as\n * /examplebucket/photos/2006/February/sample.jpg. For more information about\n * request types, see HTTP Host Header Bucket Specification.

\n *\n *

To distribute large files to many people, you can save bandwidth costs by using\n * BitTorrent. For more information, see Amazon S3\n * Torrent. For more information about returning the ACL of an object, see GetObjectAcl.

\n *\n *

If the object you are retrieving is stored in the S3 Glacier or\n * S3 Glacier Deep Archive storage class, or S3 Intelligent-Tiering Archive or\n * S3 Intelligent-Tiering Deep Archive tiers, before you can retrieve the object you must first restore a\n * copy using RestoreObject. Otherwise, this operation returns an\n * InvalidObjectStateError error. For information about restoring archived\n * objects, see Restoring Archived\n * Objects.

\n *\n *

Encryption request headers, like x-amz-server-side-encryption, should not\n * be sent for GET requests if your object uses server-side encryption with CMKs stored in AWS\n * KMS (SSE-KMS) or server-side encryption with Amazon S3–managed encryption keys (SSE-S3). If your\n * object does use these types of keys, you’ll get an HTTP 400 BadRequest error.

\n *

If you encrypt an object by using server-side encryption with customer-provided\n * encryption keys (SSE-C) when you store the object in Amazon S3, then when you GET the object,\n * you must use the following headers:

\n *
    \n *
  • \n *

    x-amz-server-side-encryption-customer-algorithm

    \n *
  • \n *
  • \n *

    x-amz-server-side-encryption-customer-key

    \n *
  • \n *
  • \n *

    x-amz-server-side-encryption-customer-key-MD5

    \n *
  • \n *
\n *

For more information about SSE-C, see Server-Side Encryption (Using\n * Customer-Provided Encryption Keys).

\n *\n *

Assuming you have permission to read object tags (permission for the\n * s3:GetObjectVersionTagging action), the response also returns the\n * x-amz-tagging-count header that provides the count of number of tags\n * associated with the object. You can use GetObjectTagging to retrieve\n * the tag set associated with an object.

\n *\n *

\n * Permissions\n *

\n *

You need the s3:GetObject permission for this operation. For more\n * information, see Specifying Permissions\n * in a Policy. If the object you request does not exist, the error Amazon S3 returns\n * depends on whether you also have the s3:ListBucket permission.

\n *
    \n *
  • \n *

    If you have the s3:ListBucket permission on the bucket, Amazon S3 will\n * return an HTTP status code 404 (\"no such key\") error.

    \n *
  • \n *
  • \n *

    If you don’t have the s3:ListBucket permission, Amazon S3 will return an\n * HTTP status code 403 (\"access denied\") error.

    \n *
  • \n *
\n *\n *\n *

\n * Versioning\n *

\n *

By default, the GET operation returns the current version of an object. To return a\n * different version, use the versionId subresource.

\n *\n * \n *

If the current version of the object is a delete marker, Amazon S3 behaves as if the\n * object was deleted and includes x-amz-delete-marker: true in the\n * response.

\n *
\n *\n *\n *

For more information about versioning, see PutBucketVersioning.

\n *\n *

\n * Overriding Response Header Values\n *

\n *

There are times when you want to override certain response header values in a GET\n * response. For example, you might override the Content-Disposition response header value in\n * your GET request.

\n *\n *

You can override values for a set of response headers using the following query\n * parameters. These response header values are sent only on a successful request, that is,\n * when status code 200 OK is returned. The set of headers you can override using these\n * parameters is a subset of the headers that Amazon S3 accepts when you create an object. The\n * response headers that you can override for the GET response are Content-Type,\n * Content-Language, Expires, Cache-Control,\n * Content-Disposition, and Content-Encoding. To override these\n * header values in the GET response, you use the following request parameters.

\n *\n * \n *

You must sign the request, either using an Authorization header or a presigned URL,\n * when using these parameters. They cannot be used with an unsigned (anonymous)\n * request.

\n *
\n *
    \n *
  • \n *

    \n * response-content-type\n *

    \n *
  • \n *
  • \n *

    \n * response-content-language\n *

    \n *
  • \n *
  • \n *

    \n * response-expires\n *

    \n *
  • \n *
  • \n *

    \n * response-cache-control\n *

    \n *
  • \n *
  • \n *

    \n * response-content-disposition\n *

    \n *
  • \n *
  • \n *

    \n * response-content-encoding\n *

    \n *
  • \n *
\n *\n *

\n * Additional Considerations about Request Headers\n *

\n *\n *

If both of the If-Match and If-Unmodified-Since headers are\n * present in the request as follows: If-Match condition evaluates to\n * true, and; If-Unmodified-Since condition evaluates to\n * false; then, S3 returns 200 OK and the data requested.

\n *\n *

If both of the If-None-Match and If-Modified-Since headers are\n * present in the request as follows: If-None-Match condition evaluates to\n * false, and; If-Modified-Since condition evaluates to\n * true; then, S3 returns 304 Not Modified response code.

\n *\n *

For more information about conditional requests, see RFC 7232.

\n *\n *

The following operations are related to GetObject:

\n * \n */\nexport class GetObjectCommand extends $Command {\n // Start section: command_properties\n // End section: command_properties\n\n constructor(readonly input: GetObjectCommandInput) {\n // Start section: command_constructor\n super();\n // End section: command_constructor\n }\n\n /**\n * @internal\n */\n resolveMiddleware(\n clientStack: MiddlewareStack,\n configuration: S3ClientResolvedConfig,\n options?: __HttpHandlerOptions\n ): Handler {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use(getSsecPlugin(configuration));\n this.middlewareStack.use(getBucketEndpointPlugin(configuration));\n\n const stack = clientStack.concat(this.middlewareStack);\n\n const { logger } = configuration;\n const clientName = \"S3Client\";\n const commandName = \"GetObjectCommand\";\n const handlerExecutionContext: HandlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: GetObjectRequest.filterSensitiveLog,\n outputFilterSensitiveLog: GetObjectOutput.filterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve(\n (request: FinalizeHandlerArguments) =>\n requestHandler.handle(request.request as __HttpRequest, options || {}),\n handlerExecutionContext\n );\n }\n\n private serialize(input: GetObjectCommandInput, context: __SerdeContext): Promise<__HttpRequest> {\n return serializeAws_restXmlGetObjectCommand(input, context);\n }\n\n private deserialize(output: __HttpResponse, context: __SerdeContext): Promise {\n return deserializeAws_restXmlGetObjectCommand(output, context);\n }\n\n // Start section: command_body_extra\n // End section: command_body_extra\n}\n","import { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from \"../S3Client\";\nimport { DeleteObjectOutput, DeleteObjectRequest } from \"../models/models_0\";\nimport {\n deserializeAws_restXmlDeleteObjectCommand,\n serializeAws_restXmlDeleteObjectCommand,\n} from \"../protocols/Aws_restXml\";\nimport { getBucketEndpointPlugin } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from \"@aws-sdk/protocol-http\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nimport {\n FinalizeHandlerArguments,\n Handler,\n HandlerExecutionContext,\n MiddlewareStack,\n HttpHandlerOptions as __HttpHandlerOptions,\n MetadataBearer as __MetadataBearer,\n SerdeContext as __SerdeContext,\n} from \"@aws-sdk/types\";\n\nexport type DeleteObjectCommandInput = DeleteObjectRequest;\nexport type DeleteObjectCommandOutput = DeleteObjectOutput & __MetadataBearer;\n\n/**\n *

Removes the null version (if there is one) of an object and inserts a delete marker,\n * which becomes the latest version of the object. If there isn't a null version, Amazon S3 does\n * not remove any objects.

\n *\n *

To remove a specific version, you must be the bucket owner and you must use the version\n * Id subresource. Using this subresource permanently deletes the version. If the object\n * deleted is a delete marker, Amazon S3 sets the response header,\n * x-amz-delete-marker, to true.

\n *\n *

If the object you want to delete is in a bucket where the bucket versioning\n * configuration is MFA Delete enabled, you must include the x-amz-mfa request\n * header in the DELETE versionId request. Requests that include\n * x-amz-mfa must use HTTPS.

\n *\n *

For more information about MFA Delete, see Using MFA Delete. To see sample requests that use versioning, see Sample Request.

\n *\n *

You can delete objects by explicitly calling the DELETE Object API or configure its\n * lifecycle (PutBucketLifecycle) to\n * enable Amazon S3 to remove them for you. If you want to block users or accounts from removing or\n * deleting objects from your bucket, you must deny them the s3:DeleteObject,\n * s3:DeleteObjectVersion, and s3:PutLifeCycleConfiguration\n * actions.

\n *\n *

The following operation is related to DeleteObject:

\n * \n */\nexport class DeleteObjectCommand extends $Command<\n DeleteObjectCommandInput,\n DeleteObjectCommandOutput,\n S3ClientResolvedConfig\n> {\n // Start section: command_properties\n // End section: command_properties\n\n constructor(readonly input: DeleteObjectCommandInput) {\n // Start section: command_constructor\n super();\n // End section: command_constructor\n }\n\n /**\n * @internal\n */\n resolveMiddleware(\n clientStack: MiddlewareStack,\n configuration: S3ClientResolvedConfig,\n options?: __HttpHandlerOptions\n ): Handler {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use(getBucketEndpointPlugin(configuration));\n\n const stack = clientStack.concat(this.middlewareStack);\n\n const { logger } = configuration;\n const clientName = \"S3Client\";\n const commandName = \"DeleteObjectCommand\";\n const handlerExecutionContext: HandlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: DeleteObjectRequest.filterSensitiveLog,\n outputFilterSensitiveLog: DeleteObjectOutput.filterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve(\n (request: FinalizeHandlerArguments) =>\n requestHandler.handle(request.request as __HttpRequest, options || {}),\n handlerExecutionContext\n );\n }\n\n private serialize(input: DeleteObjectCommandInput, context: __SerdeContext): Promise<__HttpRequest> {\n return serializeAws_restXmlDeleteObjectCommand(input, context);\n }\n\n private deserialize(output: __HttpResponse, context: __SerdeContext): Promise {\n return deserializeAws_restXmlDeleteObjectCommand(output, context);\n }\n\n // Start section: command_body_extra\n // End section: command_body_extra\n}\n","import { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from \"../S3Client\";\nimport { ListObjectsV2Output, ListObjectsV2Request } from \"../models/models_0\";\nimport {\n deserializeAws_restXmlListObjectsV2Command,\n serializeAws_restXmlListObjectsV2Command,\n} from \"../protocols/Aws_restXml\";\nimport { getBucketEndpointPlugin } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from \"@aws-sdk/protocol-http\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nimport {\n FinalizeHandlerArguments,\n Handler,\n HandlerExecutionContext,\n MiddlewareStack,\n HttpHandlerOptions as __HttpHandlerOptions,\n MetadataBearer as __MetadataBearer,\n SerdeContext as __SerdeContext,\n} from \"@aws-sdk/types\";\n\nexport type ListObjectsV2CommandInput = ListObjectsV2Request;\nexport type ListObjectsV2CommandOutput = ListObjectsV2Output & __MetadataBearer;\n\n/**\n *

Returns some or all (up to 1,000) of the objects in a bucket. You can use the request\n * parameters as selection criteria to return a subset of the objects in a bucket. A 200\n * OK response can contain valid or invalid XML. Make sure to design your\n * application to parse the contents of the response and handle it appropriately.

\n *\n *

To use this operation, you must have READ access to the bucket.

\n *\n *

To use this operation in an AWS Identity and Access Management (IAM) policy, you must\n * have permissions to perform the s3:ListBucket action. The bucket owner has\n * this permission by default and can grant this permission to others. For more information\n * about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3\n * Resources.

\n * \n *

This section describes the latest revision of the API. We recommend that you use this\n * revised API for application development. For backward compatibility, Amazon S3 continues to\n * support the prior version of this API, ListObjects.

\n *
\n *\n *

To get a list of your buckets, see ListBuckets.

\n *\n *

The following operations are related to ListObjectsV2:

\n * \n */\nexport class ListObjectsV2Command extends $Command<\n ListObjectsV2CommandInput,\n ListObjectsV2CommandOutput,\n S3ClientResolvedConfig\n> {\n // Start section: command_properties\n // End section: command_properties\n\n constructor(readonly input: ListObjectsV2CommandInput) {\n // Start section: command_constructor\n super();\n // End section: command_constructor\n }\n\n /**\n * @internal\n */\n resolveMiddleware(\n clientStack: MiddlewareStack,\n configuration: S3ClientResolvedConfig,\n options?: __HttpHandlerOptions\n ): Handler {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use(getBucketEndpointPlugin(configuration));\n\n const stack = clientStack.concat(this.middlewareStack);\n\n const { logger } = configuration;\n const clientName = \"S3Client\";\n const commandName = \"ListObjectsV2Command\";\n const handlerExecutionContext: HandlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: ListObjectsV2Request.filterSensitiveLog,\n outputFilterSensitiveLog: ListObjectsV2Output.filterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve(\n (request: FinalizeHandlerArguments) =>\n requestHandler.handle(request.request as __HttpRequest, options || {}),\n handlerExecutionContext\n );\n }\n\n private serialize(input: ListObjectsV2CommandInput, context: __SerdeContext): Promise<__HttpRequest> {\n return serializeAws_restXmlListObjectsV2Command(input, context);\n }\n\n private deserialize(output: __HttpResponse, context: __SerdeContext): Promise {\n return deserializeAws_restXmlListObjectsV2Command(output, context);\n }\n\n // Start section: command_body_extra\n // End section: command_body_extra\n}\n","import { buildQueryString } from \"@aws-sdk/querystring-builder\";\nimport { HttpRequest } from \"@aws-sdk/types\";\n\nexport function formatUrl(request: Omit): string {\n const { port, query } = request;\n let { protocol, path, hostname } = request;\n if (protocol && protocol.substr(-1) !== \":\") {\n protocol += \":\";\n }\n if (port) {\n hostname += `:${port}`;\n }\n if (path && path.charAt(0) !== \"/\") {\n path = `/${path}`;\n }\n let queryString = query ? buildQueryString(query) : \"\";\n if (queryString && queryString[0] !== \"?\") {\n queryString = `?${queryString}`;\n }\n return `${protocol}//${hostname}${path}${queryString}`;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Client, Command } from \"@aws-sdk/smithy-client\";\nimport { BuildMiddleware, HttpRequest, MetadataBearer } from \"@aws-sdk/types\";\n\nexport async function createRequest<\n InputTypesUnion extends object,\n InputType extends InputTypesUnion,\n OutputType extends MetadataBearer = MetadataBearer\n>(\n client: Client,\n command: Command\n): Promise {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const interceptMiddleware: BuildMiddleware = (next) => async (args) => {\n return { output: { request: args.request } as any, response: undefined };\n };\n const clientStack = client.middlewareStack.clone();\n\n // @ts-ignore: add middleware to the last of 'build' step\n clientStack.add(interceptMiddleware, {\n step: \"build\",\n priority: \"low\",\n });\n\n const handler = command.resolveMiddleware(clientStack, client.config, undefined);\n\n // @ts-ignore\n return await handler(command).then((output) => output.output.request);\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export const ALGORITHM_QUERY_PARAM = \"X-Amz-Algorithm\";\nexport const CREDENTIAL_QUERY_PARAM = \"X-Amz-Credential\";\nexport const AMZ_DATE_QUERY_PARAM = \"X-Amz-Date\";\nexport const SIGNED_HEADERS_QUERY_PARAM = \"X-Amz-SignedHeaders\";\nexport const EXPIRES_QUERY_PARAM = \"X-Amz-Expires\";\nexport const SIGNATURE_QUERY_PARAM = \"X-Amz-Signature\";\nexport const TOKEN_QUERY_PARAM = \"X-Amz-Security-Token\";\n\nexport const AUTH_HEADER = \"authorization\";\nexport const AMZ_DATE_HEADER = AMZ_DATE_QUERY_PARAM.toLowerCase();\nexport const DATE_HEADER = \"date\";\nexport const GENERATED_HEADERS = [AUTH_HEADER, AMZ_DATE_HEADER, DATE_HEADER];\nexport const SIGNATURE_HEADER = SIGNATURE_QUERY_PARAM.toLowerCase();\nexport const SHA256_HEADER = \"x-amz-content-sha256\";\nexport const TOKEN_HEADER = TOKEN_QUERY_PARAM.toLowerCase();\nexport const HOST_HEADER = \"host\";\n\nexport const ALWAYS_UNSIGNABLE_HEADERS = {\n authorization: true,\n \"cache-control\": true,\n connection: true,\n expect: true,\n from: true,\n \"keep-alive\": true,\n \"max-forwards\": true,\n pragma: true,\n referer: true,\n te: true,\n trailer: true,\n \"transfer-encoding\": true,\n upgrade: true,\n \"user-agent\": true,\n \"x-amzn-trace-id\": true,\n};\n\nexport const PROXY_HEADER_PATTERN = /^proxy-/;\n\nexport const SEC_HEADER_PATTERN = /^sec-/;\n\nexport const UNSIGNABLE_PATTERNS = [/^proxy-/i, /^sec-/i];\n\nexport const ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256\";\n\nexport const EVENT_ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256-PAYLOAD\";\n\nexport const UNSIGNED_PAYLOAD = \"UNSIGNED-PAYLOAD\";\n\nexport const MAX_CACHE_SIZE = 50;\nexport const KEY_TYPE_IDENTIFIER = \"aws4_request\";\n\nexport const MAX_PRESIGNED_TTL = 60 * 60 * 24 * 7;\n","import { Credentials, HashConstructor, SourceData } from \"@aws-sdk/types\";\nimport { toHex } from \"@aws-sdk/util-hex-encoding\";\n\nimport { KEY_TYPE_IDENTIFIER, MAX_CACHE_SIZE } from \"./constants\";\n\nconst signingKeyCache: { [key: string]: Uint8Array } = {};\nconst cacheQueue: Array = [];\n\n/**\n * Create a string describing the scope of credentials used to sign a request.\n *\n * @param shortDate The current calendar date in the form YYYYMMDD.\n * @param region The AWS region in which the service resides.\n * @param service The service to which the signed request is being sent.\n */\nexport function createScope(shortDate: string, region: string, service: string): string {\n return `${shortDate}/${region}/${service}/${KEY_TYPE_IDENTIFIER}`;\n}\n\n/**\n * Derive a signing key from its composite parts\n *\n * @param sha256Constructor A constructor function that can instantiate SHA-256\n * hash objects.\n * @param credentials The credentials with which the request will be\n * signed.\n * @param shortDate The current calendar date in the form YYYYMMDD.\n * @param region The AWS region in which the service resides.\n * @param service The service to which the signed request is being\n * sent.\n */\nexport const getSigningKey = async (\n sha256Constructor: HashConstructor,\n credentials: Credentials,\n shortDate: string,\n region: string,\n service: string\n): Promise => {\n const credsHash = await hmac(sha256Constructor, credentials.secretAccessKey, credentials.accessKeyId);\n const cacheKey = `${shortDate}:${region}:${service}:${toHex(credsHash)}:${credentials.sessionToken}`;\n if (cacheKey in signingKeyCache) {\n return signingKeyCache[cacheKey];\n }\n\n cacheQueue.push(cacheKey);\n while (cacheQueue.length > MAX_CACHE_SIZE) {\n delete signingKeyCache[cacheQueue.shift() as string];\n }\n\n let key: SourceData = `AWS4${credentials.secretAccessKey}`;\n for (const signable of [shortDate, region, service, KEY_TYPE_IDENTIFIER]) {\n key = await hmac(sha256Constructor, key, signable);\n }\n return (signingKeyCache[cacheKey] = key as Uint8Array);\n};\n\n/**\n * @internal\n */\nexport function clearCredentialCache(): void {\n cacheQueue.length = 0;\n Object.keys(signingKeyCache).forEach((cacheKey) => {\n delete signingKeyCache[cacheKey];\n });\n}\n\nfunction hmac(ctor: HashConstructor, secret: SourceData, data: SourceData): Promise {\n const hash = new ctor(secret);\n hash.update(data);\n return hash.digest();\n}\n","import { HeaderBag, HttpRequest } from \"@aws-sdk/types\";\n\nimport { ALWAYS_UNSIGNABLE_HEADERS, PROXY_HEADER_PATTERN, SEC_HEADER_PATTERN } from \"./constants\";\n\n/**\n * @internal\n */\nexport function getCanonicalHeaders(\n { headers }: HttpRequest,\n unsignableHeaders?: Set,\n signableHeaders?: Set\n): HeaderBag {\n const canonical: HeaderBag = {};\n for (const headerName of Object.keys(headers).sort()) {\n const canonicalHeaderName = headerName.toLowerCase();\n if (\n canonicalHeaderName in ALWAYS_UNSIGNABLE_HEADERS ||\n unsignableHeaders?.has(canonicalHeaderName) ||\n PROXY_HEADER_PATTERN.test(canonicalHeaderName) ||\n SEC_HEADER_PATTERN.test(canonicalHeaderName)\n ) {\n if (!signableHeaders || (signableHeaders && !signableHeaders.has(canonicalHeaderName))) {\n continue;\n }\n }\n\n canonical[canonicalHeaderName] = headers[headerName].trim().replace(/\\s+/g, \" \");\n }\n\n return canonical;\n}\n","export const escapeUri = (uri: string): string =>\n // AWS percent-encodes some extra non-standard characters in a URI\n encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode);\n\nconst hexEncode = (c: string) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`;\n","import { isArrayBuffer } from \"@aws-sdk/is-array-buffer\";\nimport { HashConstructor, HttpRequest } from \"@aws-sdk/types\";\nimport { toHex } from \"@aws-sdk/util-hex-encoding\";\n\nimport { SHA256_HEADER, UNSIGNED_PAYLOAD } from \"./constants\";\n\n/**\n * @internal\n */\nexport async function getPayloadHash(\n { headers, body }: HttpRequest,\n hashConstructor: HashConstructor\n): Promise {\n for (const headerName of Object.keys(headers)) {\n if (headerName.toLowerCase() === SHA256_HEADER) {\n return headers[headerName];\n }\n }\n\n if (body == undefined) {\n return \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\";\n } else if (typeof body === \"string\" || ArrayBuffer.isView(body) || isArrayBuffer(body)) {\n const hashCtor = new hashConstructor();\n hashCtor.update(body);\n return toHex(await hashCtor.digest());\n }\n\n // As any defined body that is not a string or binary data is a stream, this\n // body is unsignable. Attempt to send the request with an unsigned payload,\n // which may or may not be accepted by the service.\n return UNSIGNED_PAYLOAD;\n}\n","import { HttpRequest, QueryParameterBag } from \"@aws-sdk/types\";\n\n/**\n * @internal\n */\nexport function cloneRequest({ headers, query, ...rest }: HttpRequest): HttpRequest {\n return {\n ...rest,\n headers: { ...headers },\n query: query ? cloneQuery(query) : undefined,\n };\n}\n\nfunction cloneQuery(query: QueryParameterBag): QueryParameterBag {\n return Object.keys(query).reduce((carry: QueryParameterBag, paramName: string) => {\n const param = query[paramName];\n return {\n ...carry,\n [paramName]: Array.isArray(param) ? [...param] : param,\n };\n }, {});\n}\n","import { HttpRequest } from \"@aws-sdk/types\";\n\nimport { cloneRequest } from \"./cloneRequest\";\nimport { GENERATED_HEADERS } from \"./constants\";\n\n/**\n * @internal\n */\nexport function prepareRequest(request: HttpRequest): HttpRequest {\n // Create a clone of the request object that does not clone the body\n request = typeof (request as any).clone === \"function\" ? (request as any).clone() : cloneRequest(request);\n\n for (const headerName of Object.keys(request.headers)) {\n if (GENERATED_HEADERS.indexOf(headerName.toLowerCase()) > -1) {\n delete request.headers[headerName];\n }\n }\n\n return request;\n}\n","export function iso8601(time: number | string | Date): string {\n return toDate(time)\n .toISOString()\n .replace(/\\.\\d{3}Z$/, \"Z\");\n}\n\nexport function toDate(time: number | string | Date): Date {\n if (typeof time === \"number\") {\n return new Date(time * 1000);\n }\n\n if (typeof time === \"string\") {\n if (Number(time)) {\n return new Date(Number(time) * 1000);\n }\n return new Date(time);\n }\n\n return time;\n}\n","import {\n Credentials,\n DateInput,\n EventSigner,\n EventSigningArguments,\n FormattedEvent,\n HashConstructor,\n HeaderBag,\n HttpRequest,\n Provider,\n RequestPresigner,\n RequestPresigningArguments,\n RequestSigner,\n RequestSigningArguments,\n SigningArguments,\n StringSigner,\n} from \"@aws-sdk/types\";\nimport { toHex } from \"@aws-sdk/util-hex-encoding\";\n\nimport {\n ALGORITHM_IDENTIFIER,\n ALGORITHM_QUERY_PARAM,\n AMZ_DATE_HEADER,\n AMZ_DATE_QUERY_PARAM,\n AUTH_HEADER,\n CREDENTIAL_QUERY_PARAM,\n EVENT_ALGORITHM_IDENTIFIER,\n EXPIRES_QUERY_PARAM,\n MAX_PRESIGNED_TTL,\n SHA256_HEADER,\n SIGNATURE_QUERY_PARAM,\n SIGNED_HEADERS_QUERY_PARAM,\n TOKEN_HEADER,\n TOKEN_QUERY_PARAM,\n} from \"./constants\";\nimport { createScope, getSigningKey } from \"./credentialDerivation\";\nimport { getCanonicalHeaders } from \"./getCanonicalHeaders\";\nimport { getCanonicalQuery } from \"./getCanonicalQuery\";\nimport { getPayloadHash } from \"./getPayloadHash\";\nimport { hasHeader } from \"./hasHeader\";\nimport { moveHeadersToQuery } from \"./moveHeadersToQuery\";\nimport { prepareRequest } from \"./prepareRequest\";\nimport { iso8601 } from \"./utilDate\";\n\nexport interface SignatureV4Init {\n /**\n * The service signing name.\n */\n service: string;\n\n /**\n * The region name or a function that returns a promise that will be\n * resolved with the region name.\n */\n region: string | Provider;\n\n /**\n * The credentials with which the request should be signed or a function\n * that returns a promise that will be resolved with credentials.\n */\n credentials: Credentials | Provider;\n\n /**\n * A constructor function for a hash object that will calculate SHA-256 HMAC\n * checksums.\n */\n sha256?: HashConstructor;\n\n /**\n * Whether to uri-escape the request URI path as part of computing the\n * canonical request string. This is required for every AWS service, except\n * Amazon S3, as of late 2017.\n *\n * @default [true]\n */\n uriEscapePath?: boolean;\n\n /**\n * Whether to calculate a checksum of the request body and include it as\n * either a request header (when signing) or as a query string parameter\n * (when presigning). This is required for AWS Glacier and Amazon S3 and optional for\n * every other AWS service as of late 2017.\n *\n * @default [true]\n */\n applyChecksum?: boolean;\n}\n\nexport interface SignatureV4CryptoInit {\n sha256: HashConstructor;\n}\n\nexport class SignatureV4 implements RequestPresigner, RequestSigner, StringSigner, EventSigner {\n private readonly service: string;\n private readonly regionProvider: Provider;\n private readonly credentialProvider: Provider;\n private readonly sha256: HashConstructor;\n private readonly uriEscapePath: boolean;\n private readonly applyChecksum: boolean;\n\n constructor({\n applyChecksum,\n credentials,\n region,\n service,\n sha256,\n uriEscapePath = true,\n }: SignatureV4Init & SignatureV4CryptoInit) {\n this.service = service;\n this.sha256 = sha256;\n this.uriEscapePath = uriEscapePath;\n // default to true if applyChecksum isn't set\n this.applyChecksum = typeof applyChecksum === \"boolean\" ? applyChecksum : true;\n this.regionProvider = normalizeRegionProvider(region);\n this.credentialProvider = normalizeCredentialsProvider(credentials);\n }\n\n public async presign(originalRequest: HttpRequest, options: RequestPresigningArguments = {}): Promise {\n const {\n signingDate = new Date(),\n expiresIn = 3600,\n unsignableHeaders,\n unhoistableHeaders,\n signableHeaders,\n signingRegion,\n signingService,\n } = options;\n const credentials = await this.credentialProvider();\n const region = signingRegion ?? (await this.regionProvider());\n\n const { longDate, shortDate } = formatDate(signingDate);\n if (expiresIn > MAX_PRESIGNED_TTL) {\n return Promise.reject(\n \"Signature version 4 presigned URLs\" + \" must have an expiration date less than one week in\" + \" the future\"\n );\n }\n\n const scope = createScope(shortDate, region, signingService ?? this.service);\n const request = moveHeadersToQuery(prepareRequest(originalRequest), { unhoistableHeaders });\n\n if (credentials.sessionToken) {\n request.query[TOKEN_QUERY_PARAM] = credentials.sessionToken;\n }\n request.query[ALGORITHM_QUERY_PARAM] = ALGORITHM_IDENTIFIER;\n request.query[CREDENTIAL_QUERY_PARAM] = `${credentials.accessKeyId}/${scope}`;\n request.query[AMZ_DATE_QUERY_PARAM] = longDate;\n request.query[EXPIRES_QUERY_PARAM] = expiresIn.toString(10);\n\n const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders);\n request.query[SIGNED_HEADERS_QUERY_PARAM] = getCanonicalHeaderList(canonicalHeaders);\n\n request.query[SIGNATURE_QUERY_PARAM] = await this.getSignature(\n longDate,\n scope,\n this.getSigningKey(credentials, region, shortDate, signingService),\n this.createCanonicalRequest(request, canonicalHeaders, await getPayloadHash(originalRequest, this.sha256))\n );\n\n return request;\n }\n\n public async sign(stringToSign: string, options?: SigningArguments): Promise;\n public async sign(event: FormattedEvent, options: EventSigningArguments): Promise;\n public async sign(requestToSign: HttpRequest, options?: RequestSigningArguments): Promise;\n public async sign(toSign: any, options: any): Promise {\n if (typeof toSign === \"string\") {\n return this.signString(toSign, options);\n } else if (toSign.headers && toSign.payload) {\n return this.signEvent(toSign, options);\n } else {\n return this.signRequest(toSign, options);\n }\n }\n\n private async signEvent(\n { headers, payload }: FormattedEvent,\n { signingDate = new Date(), priorSignature, signingRegion, signingService }: EventSigningArguments\n ): Promise {\n const region = signingRegion ?? (await this.regionProvider());\n const { shortDate, longDate } = formatDate(signingDate);\n const scope = createScope(shortDate, region, signingService ?? this.service);\n const hashedPayload = await getPayloadHash({ headers: {}, body: payload } as any, this.sha256);\n const hash = new this.sha256();\n hash.update(headers);\n const hashedHeaders = toHex(await hash.digest());\n const stringToSign = [\n EVENT_ALGORITHM_IDENTIFIER,\n longDate,\n scope,\n priorSignature,\n hashedHeaders,\n hashedPayload,\n ].join(\"\\n\");\n return this.signString(stringToSign, { signingDate, signingRegion: region, signingService });\n }\n\n private async signString(\n stringToSign: string,\n { signingDate = new Date(), signingRegion, signingService }: SigningArguments = {}\n ): Promise {\n const credentials = await this.credentialProvider();\n const region = signingRegion ?? (await this.regionProvider());\n const { shortDate } = formatDate(signingDate);\n\n const hash = new this.sha256(await this.getSigningKey(credentials, region, shortDate, signingService));\n hash.update(stringToSign);\n return toHex(await hash.digest());\n }\n\n private async signRequest(\n requestToSign: HttpRequest,\n {\n signingDate = new Date(),\n signableHeaders,\n unsignableHeaders,\n signingRegion,\n signingService,\n }: RequestSigningArguments = {}\n ): Promise {\n const credentials = await this.credentialProvider();\n const region = signingRegion ?? (await this.regionProvider());\n const request = prepareRequest(requestToSign);\n const { longDate, shortDate } = formatDate(signingDate);\n const scope = createScope(shortDate, region, signingService ?? this.service);\n\n request.headers[AMZ_DATE_HEADER] = longDate;\n if (credentials.sessionToken) {\n request.headers[TOKEN_HEADER] = credentials.sessionToken;\n }\n\n const payloadHash = await getPayloadHash(request, this.sha256);\n if (!hasHeader(SHA256_HEADER, request.headers) && this.applyChecksum) {\n request.headers[SHA256_HEADER] = payloadHash;\n }\n\n const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders);\n const signature = await this.getSignature(\n longDate,\n scope,\n this.getSigningKey(credentials, region, shortDate, signingService),\n this.createCanonicalRequest(request, canonicalHeaders, payloadHash)\n );\n\n request.headers[AUTH_HEADER] =\n `${ALGORITHM_IDENTIFIER} ` +\n `Credential=${credentials.accessKeyId}/${scope}, ` +\n `SignedHeaders=${getCanonicalHeaderList(canonicalHeaders)}, ` +\n `Signature=${signature}`;\n\n return request;\n }\n\n private createCanonicalRequest(request: HttpRequest, canonicalHeaders: HeaderBag, payloadHash: string): string {\n const sortedHeaders = Object.keys(canonicalHeaders).sort();\n return `${request.method}\n${this.getCanonicalPath(request)}\n${getCanonicalQuery(request)}\n${sortedHeaders.map((name) => `${name}:${canonicalHeaders[name]}`).join(\"\\n\")}\n\n${sortedHeaders.join(\";\")}\n${payloadHash}`;\n }\n\n private async createStringToSign(\n longDate: string,\n credentialScope: string,\n canonicalRequest: string\n ): Promise {\n const hash = new this.sha256();\n hash.update(canonicalRequest);\n const hashedRequest = await hash.digest();\n\n return `${ALGORITHM_IDENTIFIER}\n${longDate}\n${credentialScope}\n${toHex(hashedRequest)}`;\n }\n\n private getCanonicalPath({ path }: HttpRequest): string {\n if (this.uriEscapePath) {\n const doubleEncoded = encodeURIComponent(path.replace(/^\\//, \"\"));\n return `/${doubleEncoded.replace(/%2F/g, \"/\")}`;\n }\n\n return path;\n }\n\n private async getSignature(\n longDate: string,\n credentialScope: string,\n keyPromise: Promise,\n canonicalRequest: string\n ): Promise {\n const stringToSign = await this.createStringToSign(longDate, credentialScope, canonicalRequest);\n\n const hash = new this.sha256(await keyPromise);\n hash.update(stringToSign);\n return toHex(await hash.digest());\n }\n\n private getSigningKey(\n credentials: Credentials,\n region: string,\n shortDate: string,\n service?: string\n ): Promise {\n return getSigningKey(this.sha256, credentials, shortDate, region, service || this.service);\n }\n}\n\nconst formatDate = (now: DateInput): { longDate: string; shortDate: string } => {\n const longDate = iso8601(now).replace(/[\\-:]/g, \"\");\n return {\n longDate,\n shortDate: longDate.substr(0, 8),\n };\n};\n\nconst getCanonicalHeaderList = (headers: object): string => Object.keys(headers).sort().join(\";\");\n\nconst normalizeRegionProvider = (region: string | Provider): Provider => {\n if (typeof region === \"string\") {\n const promisified = Promise.resolve(region);\n return () => promisified;\n } else {\n return region;\n }\n};\n\nconst normalizeCredentialsProvider = (credentials: Credentials | Provider): Provider => {\n if (typeof credentials === \"object\") {\n const promisified = Promise.resolve(credentials);\n return () => promisified;\n } else {\n return credentials;\n }\n};\n","export enum StorageErrorStrings {\n\tNO_CREDENTIALS = 'No credentials',\n\tNO_SRC_KEY = 'source param should be an object with the property \"key\" with value of type string',\n\tNO_DEST_KEY = 'destination param should be an object with the property \"key\" with value of type string',\n\tINVALID_BLOB = 'Object must be an instance of Blob',\n}\n\nexport enum AWSS3ProviderMultipartCopierErrors {\n\tCLEANUP_FAILED = 'Multipart copy clean up failed',\n\tNO_OBJECT_FOUND = 'Object does not exist',\n\tINVALID_QUEUESIZE = 'Queue size must be a positive number',\n\tNO_COPYSOURCE = 'You must specify a copy source',\n\tMAX_NUM_PARTS_EXCEEDED = 'Only a maximum of 10000 parts are allowed',\n}\n\nexport enum AWSS3ProviderUploadErrorStrings {\n\tUPLOAD_PAUSED_MESSAGE = 'paused',\n}\n","import { HttpRequest, QueryParameterBag } from \"@aws-sdk/types\";\n\nimport { cloneRequest } from \"./cloneRequest\";\n\n/**\n * @internal\n */\nexport function moveHeadersToQuery(\n request: HttpRequest,\n options: { unhoistableHeaders?: Set } = {}\n): HttpRequest & { query: QueryParameterBag } {\n const { headers, query = {} as QueryParameterBag } =\n typeof (request as any).clone === \"function\" ? (request as any).clone() : cloneRequest(request);\n for (const name of Object.keys(headers)) {\n const lname = name.toLowerCase();\n if (lname.substr(0, 6) === \"x-amz-\" && !options.unhoistableHeaders?.has(lname)) {\n query[name] = headers[name];\n delete headers[name];\n }\n }\n\n return {\n ...request,\n headers,\n query,\n };\n}\n","import { HeaderBag } from \"@aws-sdk/types\";\n\nexport function hasHeader(soughtHeader: string, headers: HeaderBag): boolean {\n soughtHeader = soughtHeader.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (soughtHeader === headerName.toLowerCase()) {\n return true;\n }\n }\n\n return false;\n}\n","import { HttpRequest } from \"@aws-sdk/types\";\nimport { escapeUri } from \"@aws-sdk/util-uri-escape\";\n\nimport { SIGNATURE_HEADER } from \"./constants\";\n\n/**\n * @internal\n */\nexport function getCanonicalQuery({ query = {} }: HttpRequest): string {\n const keys: Array = [];\n const serialized: { [key: string]: string } = {};\n for (const key of Object.keys(query).sort()) {\n if (key.toLowerCase() === SIGNATURE_HEADER) {\n continue;\n }\n\n keys.push(key);\n const value = query[key];\n if (typeof value === \"string\") {\n serialized[key] = `${escapeUri(key)}=${escapeUri(value)}`;\n } else if (Array.isArray(value)) {\n serialized[key] = value\n .slice(0)\n .sort()\n .reduce(\n (encoded: Array, value: string) => encoded.concat([`${escapeUri(key)}=${escapeUri(value)}`]),\n []\n )\n .join(\"&\");\n }\n }\n\n return keys\n .map((key) => serialized[key])\n .filter((serialized) => serialized) // omit any falsy values\n .join(\"&\");\n}\n","import { SignatureV4, SignatureV4CryptoInit, SignatureV4Init } from \"@aws-sdk/signature-v4\";\nimport { RequestPresigner, RequestPresigningArguments } from \"@aws-sdk/types\";\nimport { HttpRequest as IHttpRequest } from \"@aws-sdk/types\";\n\nimport { SHA256_HEADER, UNSIGNED_PAYLOAD } from \"./constants\";\n\n/**\n * PartialBy makes properties specified in K optional in interface T\n * see: https://stackoverflow.com/questions/43159887/make-a-single-property-optional-in-typescript\n * */\ntype Omit = Pick>;\ntype PartialBy = Omit & Partial>;\n\nexport type S3RequestPresignerOptions = PartialBy<\n SignatureV4Init & SignatureV4CryptoInit,\n \"service\" | \"uriEscapePath\"\n> & { signingName?: string };\n\nexport class S3RequestPresigner implements RequestPresigner {\n private readonly signer: SignatureV4;\n constructor(options: S3RequestPresignerOptions) {\n const resolvedOptions = {\n // Allow `signingName` because we want to support usecase of supply client's resolved config\n // directly. Where service equals signingName.\n service: options.signingName || options.service || \"s3\",\n uriEscapePath: options.uriEscapePath || false,\n ...options,\n };\n this.signer = new SignatureV4(resolvedOptions);\n }\n\n public async presign(\n requestToSign: IHttpRequest,\n { unsignableHeaders = new Set(), unhoistableHeaders = new Set(), ...options }: RequestPresigningArguments = {}\n ): Promise {\n unsignableHeaders.add(\"content-type\");\n // S3 requires SSE headers to be signed in headers instead of query\n // See: https://github.com/aws/aws-sdk-js-v3/issues/1576\n Object.keys(requestToSign.headers)\n .map((header) => header.toLowerCase())\n .filter((header) => header.startsWith(\"x-amz-server-side-encryption\"))\n .forEach((header) => {\n unhoistableHeaders.add(header);\n });\n requestToSign.headers[SHA256_HEADER] = UNSIGNED_PAYLOAD;\n if (!requestToSign.headers[\"host\"]) {\n requestToSign.headers.host = requestToSign.hostname;\n }\n return this.signer.presign(requestToSign, {\n expiresIn: 900,\n unsignableHeaders,\n unhoistableHeaders,\n ...options,\n });\n }\n}\n","export const UNSIGNED_PAYLOAD = \"UNSIGNED-PAYLOAD\";\nexport const SHA256_HEADER = \"X-Amz-Content-Sha256\";\n\nexport const ALGORITHM_QUERY_PARAM = \"X-Amz-Algorithm\";\nexport const CREDENTIAL_QUERY_PARAM = \"X-Amz-Credential\";\nexport const AMZ_DATE_QUERY_PARAM = \"X-Amz-Date\";\nexport const SIGNED_HEADERS_QUERY_PARAM = \"X-Amz-SignedHeaders\";\nexport const EXPIRES_QUERY_PARAM = \"X-Amz-Expires\";\nexport const HOST_HEADER = \"host\";\nexport const ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256\";\n","/*\n * Copyright 2017-2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport { HttpHandlerOptions } from '@aws-sdk/types';\nimport { HttpHandler, HttpRequest, HttpResponse } from '@aws-sdk/protocol-http';\nimport { buildQueryString } from '@aws-sdk/querystring-builder';\nimport axios, {\n\tAxiosRequestConfig,\n\tMethod,\n\tCancelTokenSource,\n\tAxiosRequestHeaders,\n\tAxiosRequestTransformer,\n} from 'axios';\nimport { ConsoleLogger as Logger, Platform } from '@aws-amplify/core';\nimport { FetchHttpHandlerOptions } from '@aws-sdk/fetch-http-handler';\nimport * as events from 'events';\nimport { AWSS3ProviderUploadErrorStrings } from '../common/StorageErrorStrings';\n\n/**\nExtending the axios interface here to make headers required, (previously, \nthey were not required on the type we were using, but our implementation\ndoes not currently account for missing headers. This worked previously, \nbecause the previous `headers` type was `any`.\n*/\ninterface AxiosTransformer extends Partial {\n\t(data: any, headers: AxiosRequestHeaders): any;\n}\n\nconst logger = new Logger('axios-http-handler');\nexport const SEND_UPLOAD_PROGRESS_EVENT = 'sendUploadProgress';\nexport const SEND_DOWNLOAD_PROGRESS_EVENT = 'sendDownloadProgress';\n\nexport type ErrorWithResponse = {\n\tresponse: { status: number } & { [key: string]: any };\n};\n\nfunction isBlob(body: any): body is Blob {\n\treturn typeof Blob !== 'undefined' && body instanceof Blob;\n}\n\nfunction hasErrorResponse(error: any): error is ErrorWithResponse {\n\treturn (\n\t\ttypeof error !== 'undefined' &&\n\t\tObject.prototype.hasOwnProperty.call(error, 'response') &&\n\t\ttypeof error.response !== 'undefined' &&\n\t\tObject.prototype.hasOwnProperty.call(error.response, 'status') &&\n\t\ttypeof error.response.status === 'number'\n\t);\n}\n\nconst normalizeHeaders = (\n\theaders: AxiosRequestHeaders,\n\tnormalizedName: string\n) => {\n\tfor (const [k, v] of Object.entries(headers)) {\n\t\tif (\n\t\t\tk !== normalizedName &&\n\t\t\tk.toUpperCase() === normalizedName.toUpperCase()\n\t\t) {\n\t\t\theaders[normalizedName] = v;\n\t\t\tdelete headers[k];\n\t\t}\n\t}\n};\n\nexport const reactNativeRequestTransformer: AxiosTransformer[] = [\n\t(data: any, headers: AxiosRequestHeaders): any => {\n\t\tif (isBlob(data)) {\n\t\t\tnormalizeHeaders(headers, 'Content-Type');\n\t\t\tnormalizeHeaders(headers, 'Accept');\n\t\t\treturn data;\n\t\t}\n\t\t// Axios' default transformRequest is an array\n\t\treturn axios.defaults.transformRequest[0].call(null, data, headers);\n\t},\n];\n\nexport type AxiosHttpHandlerOptions = HttpHandlerOptions & {\n\tcancelTokenSource?: CancelTokenSource;\n\temitter?: events.EventEmitter;\n};\n\nexport class AxiosHttpHandler implements HttpHandler {\n\tconstructor(\n\t\tprivate readonly httpOptions: FetchHttpHandlerOptions = {},\n\t\tprivate readonly emitter?: events.EventEmitter,\n\t\tprivate readonly cancelTokenSource?: CancelTokenSource\n\t) {}\n\n\tdestroy(): void {\n\t\t// Do nothing. TLS and HTTP/2 connection pooling is handled by the\n\t\t// browser.\n\t}\n\n\thandle(\n\t\trequest: HttpRequest,\n\t\toptions: AxiosHttpHandlerOptions\n\t): Promise<{ response: HttpResponse }> {\n\t\tconst requestTimeoutInMs = this.httpOptions.requestTimeout;\n\t\t// prioritize the call specific event emitter, this is useful for multipart upload as each individual parts has\n\t\t// their own event emitter, without having to create s3client for every individual calls.\n\t\tconst emitter = options.emitter || this.emitter;\n\n\t\tlet path = request.path;\n\t\tif (request.query) {\n\t\t\tconst queryString = buildQueryString(request.query);\n\t\t\tif (queryString) {\n\t\t\t\tpath += `?${queryString}`;\n\t\t\t}\n\t\t}\n\n\t\tconst port = request.port;\n\t\tconst url = `${request.protocol}//${request.hostname}${\n\t\t\tport ? `:${port}` : ''\n\t\t}${path}`;\n\n\t\tconst axiosRequest: AxiosRequestConfig = {};\n\t\taxiosRequest.url = url;\n\t\taxiosRequest.method = request.method as Method;\n\t\taxiosRequest.headers = request.headers;\n\n\t\t// The host header is automatically added by the browser and adding it explicitly in the\n\t\t// axios request throws an error https://github.com/aws-amplify/amplify-js/issues/5376\n\t\t// This is because the host header is a forbidden header for the http client to set\n\t\t// see https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name and\n\t\t// https://fetch.spec.whatwg.org/#forbidden-header-name\n\t\t// The reason we are removing this header here instead of in the aws-sdk's client\n\t\t// middleware is that the host header is required to be in the request signature and if\n\t\t// we remove it from the middlewares, then the request fails because the header is added\n\t\t// by the browser but is absent from the signature.\n\t\tdelete axiosRequest.headers['host'];\n\n\t\tif (request.body) {\n\t\t\taxiosRequest.data = request.body;\n\t\t} else {\n\t\t\t// Fix for https://github.com/aws-amplify/amplify-js/issues/5432\n\n\t\t\t// If the POST request body is empty but content-type header is set, axios is forcibly removing it\n\t\t\t// See https://github.com/axios/axios/issues/1535 and refusing to fix it https://github.com/axios/axios/issues/755\n\t\t\t// This change is a workaround to set the data as null (instead of undefined) to prevent axios from\n\t\t\t// removing the content-type header. Link for the source code\n\t\t\t// https://github.com/axios/axios/blob/dc4bc49673943e35280e5df831f5c3d0347a9393/lib/adapters/xhr.js#L121-L123\n\n\t\t\tif (\n\t\t\t\taxiosRequest.headers[\n\t\t\t\t\tObject.keys(axiosRequest.headers).find(\n\t\t\t\t\t\tkey => key.toLowerCase() === 'content-type'\n\t\t\t\t\t)\n\t\t\t\t]\n\t\t\t) {\n\t\t\t\taxiosRequest.data = null;\n\t\t\t}\n\t\t}\n\t\tif (emitter) {\n\t\t\t// TODO: Unify linting rules across JS repo\n\t\t\taxiosRequest.onUploadProgress = function(event) {\n\t\t\t\temitter.emit(SEND_UPLOAD_PROGRESS_EVENT, event);\n\t\t\t\tlogger.debug(event);\n\t\t\t};\n\t\t\t// TODO: Unify linting rules across JS repo\n\t\t\taxiosRequest.onDownloadProgress = function(event) {\n\t\t\t\temitter.emit(SEND_DOWNLOAD_PROGRESS_EVENT, event);\n\t\t\t\tlogger.debug(event);\n\t\t\t};\n\t\t}\n\t\t// If a cancel token source is passed down from the provider, allows cancellation of in-flight requests\n\t\tif (this.cancelTokenSource) {\n\t\t\taxiosRequest.cancelToken = this.cancelTokenSource.token;\n\t\t}\n\n\t\tif (options.cancelTokenSource) {\n\t\t\taxiosRequest.cancelToken = options.cancelTokenSource.token;\n\t\t}\n\n\t\t// From gamma release, aws-sdk now expects all response type to be of blob or streams\n\t\taxiosRequest.responseType = 'blob';\n\t\t// In Axios, Blobs are identified by calling Object.prototype.toString on the object. However, on React Native,\n\t\t// calling Object.prototype.toString on a Blob returns '[object Object]' instead of '[object Blob]', which causes\n\t\t// Axios to treat Blobs as generic Javascript objects. Therefore we need a to use a custom request transformer\n\t\t// to correctly handle Blob in React Native.\n\t\tif (Platform.isReactNative) {\n\t\t\taxiosRequest.transformRequest = reactNativeRequestTransformer;\n\t\t}\n\n\t\tconst raceOfPromises = [\n\t\t\taxios\n\t\t\t\t.request(axiosRequest)\n\t\t\t\t.then(response => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tresponse: new HttpResponse({\n\t\t\t\t\t\t\theaders: response.headers,\n\t\t\t\t\t\t\tstatusCode: response.status,\n\t\t\t\t\t\t\tbody: response.data,\n\t\t\t\t\t\t}),\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\t// Error\n\t\t\t\t\tif (\n\t\t\t\t\t\terror.message !==\n\t\t\t\t\t\tAWSS3ProviderUploadErrorStrings.UPLOAD_PAUSED_MESSAGE\n\t\t\t\t\t) {\n\t\t\t\t\t\tlogger.error(error.message);\n\t\t\t\t\t}\n\t\t\t\t\t// for axios' cancel error, we should re-throw it back so it's not considered an s3client error\n\t\t\t\t\t// if we return empty, or an abitrary error HttpResponse, it will be hard to debug down the line.\n\t\t\t\t\t//\n\t\t\t\t\t// for errors that does not have a 'response' object, it's very likely that it is an unexpected error for\n\t\t\t\t\t// example a disconnect. Without it we cannot meaningfully reconstruct a HttpResponse, and the AWS SDK might\n\t\t\t\t\t// consider the request successful by mistake. In this case we should also re-throw the error.\n\t\t\t\t\tif (axios.isCancel(error) || !hasErrorResponse(error)) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t\t// otherwise, we should re-construct an HttpResponse from the error, so that it can be passed down to other\n\t\t\t\t\t// aws sdk middleware (e.g retry, clock skew correction, error message serializing)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tresponse: new HttpResponse({\n\t\t\t\t\t\t\tstatusCode: error.response.status,\n\t\t\t\t\t\t\tbody: error.response?.data,\n\t\t\t\t\t\t\theaders: error.response?.headers,\n\t\t\t\t\t\t}),\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\trequestTimeout(requestTimeoutInMs),\n\t\t];\n\t\treturn Promise.race(raceOfPromises);\n\t}\n}\n\nfunction requestTimeout(timeoutInMs: number = 0): Promise {\n\treturn new Promise((resolve, reject) => {\n\t\tif (timeoutInMs) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst timeoutError = new Error(\n\t\t\t\t\t`Request did not complete within ${timeoutInMs} ms`\n\t\t\t\t);\n\t\t\t\ttimeoutError.name = 'TimeoutError';\n\t\t\t\treject(timeoutError);\n\t\t\t}, timeoutInMs);\n\t\t}\n\t});\n}\n","export const AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' &&\ntypeof Symbol.for === 'function'\n\t? Symbol.for('amplify_default')\n\t: '@@amplify_default') as Symbol;\n\nexport const SET_CONTENT_LENGTH_HEADER = 'contentLengthMiddleware';\n\nexport const localTestingStorageEndpoint = 'http://localhost:20005';\n\nexport const UPLOADS_STORAGE_KEY = '__uploadInProgress';\n","import { Hub } from '@aws-amplify/core';\nimport { AMPLIFY_SYMBOL } from './StorageConstants';\n\nexport const byteLength = (x: unknown) => {\n\tif (typeof x === 'string') {\n\t\treturn x.length;\n\t} else if (isArrayBuffer(x)) {\n\t\treturn x.byteLength;\n\t} else if (isBlob(x)) {\n\t\treturn x.size;\n\t} else {\n\t\tthrow new Error('Cannot determine byte length of ' + x);\n\t}\n};\n\nexport const dispatchStorageEvent = (\n\ttrack: boolean,\n\tevent: string,\n\tattrs: any,\n\tmetrics: any,\n\tmessage: string\n): void => {\n\tif (track) {\n\t\tconst data = { attrs };\n\t\tif (metrics) {\n\t\t\tdata['metrics'] = metrics;\n\t\t}\n\t\tHub.dispatch(\n\t\t\t'storage',\n\t\t\t{\n\t\t\t\tevent,\n\t\t\t\tdata,\n\t\t\t\tmessage,\n\t\t\t},\n\t\t\t'Storage',\n\t\t\tAMPLIFY_SYMBOL\n\t\t);\n\t}\n};\n\nexport const isFile = (x: unknown): x is File => {\n\treturn typeof x !== 'undefined' && x instanceof File;\n};\n\nexport const isBlob = (x: unknown): x is Blob => {\n\treturn typeof x !== 'undefined' && x instanceof Blob;\n};\n\nconst isArrayBuffer = (x: unknown): x is ArrayBuffer => {\n\treturn typeof x !== 'undefined' && x instanceof ArrayBuffer;\n};\n","import { Int64 as IInt64 } from \"@aws-sdk/types\";\nimport { toHex } from \"@aws-sdk/util-hex-encoding\";\n\nexport interface Int64 extends IInt64 {}\n\n/**\n * A lossless representation of a signed, 64-bit integer. Instances of this\n * class may be used in arithmetic expressions as if they were numeric\n * primitives, but the binary representation will be preserved unchanged as the\n * `bytes` property of the object. The bytes should be encoded as big-endian,\n * two's complement integers.\n */\nexport class Int64 {\n constructor(readonly bytes: Uint8Array) {\n if (bytes.byteLength !== 8) {\n throw new Error(\"Int64 buffers must be exactly 8 bytes\");\n }\n }\n\n static fromNumber(number: number): Int64 {\n if (number > 9223372036854775807 || number < -9223372036854775808) {\n throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`);\n }\n\n const bytes = new Uint8Array(8);\n for (let i = 7, remaining = Math.abs(Math.round(number)); i > -1 && remaining > 0; i--, remaining /= 256) {\n bytes[i] = remaining;\n }\n\n if (number < 0) {\n negate(bytes);\n }\n\n return new Int64(bytes);\n }\n\n /**\n * Called implicitly by infix arithmetic operators.\n */\n valueOf(): number {\n const bytes = this.bytes.slice(0);\n const negative = bytes[0] & 0b10000000;\n if (negative) {\n negate(bytes);\n }\n\n return parseInt(toHex(bytes), 16) * (negative ? -1 : 1);\n }\n\n toString() {\n return String(this.valueOf());\n }\n}\n\nfunction negate(bytes: Uint8Array): void {\n for (let i = 0; i < 8; i++) {\n bytes[i] ^= 0xff;\n }\n\n for (let i = 7; i > -1; i--) {\n bytes[i]++;\n if (bytes[i] !== 0) break;\n }\n}\n","import { Decoder, Encoder, MessageHeaders, MessageHeaderValue } from \"@aws-sdk/types\";\nimport { fromHex, toHex } from \"@aws-sdk/util-hex-encoding\";\n\nimport { Int64 } from \"./Int64\";\n\n/**\n * @internal\n */\nexport class HeaderMarshaller {\n constructor(private readonly toUtf8: Encoder, private readonly fromUtf8: Decoder) {}\n\n format(headers: MessageHeaders): Uint8Array {\n const chunks: Array = [];\n\n for (const headerName of Object.keys(headers)) {\n const bytes = this.fromUtf8(headerName);\n chunks.push(Uint8Array.from([bytes.byteLength]), bytes, this.formatHeaderValue(headers[headerName]));\n }\n\n const out = new Uint8Array(chunks.reduce((carry, bytes) => carry + bytes.byteLength, 0));\n let position = 0;\n for (const chunk of chunks) {\n out.set(chunk, position);\n position += chunk.byteLength;\n }\n\n return out;\n }\n\n private formatHeaderValue(header: MessageHeaderValue): Uint8Array {\n switch (header.type) {\n case \"boolean\":\n return Uint8Array.from([header.value ? HEADER_VALUE_TYPE.boolTrue : HEADER_VALUE_TYPE.boolFalse]);\n case \"byte\":\n return Uint8Array.from([HEADER_VALUE_TYPE.byte, header.value]);\n case \"short\":\n const shortView = new DataView(new ArrayBuffer(3));\n shortView.setUint8(0, HEADER_VALUE_TYPE.short);\n shortView.setInt16(1, header.value, false);\n return new Uint8Array(shortView.buffer);\n case \"integer\":\n const intView = new DataView(new ArrayBuffer(5));\n intView.setUint8(0, HEADER_VALUE_TYPE.integer);\n intView.setInt32(1, header.value, false);\n return new Uint8Array(intView.buffer);\n case \"long\":\n const longBytes = new Uint8Array(9);\n longBytes[0] = HEADER_VALUE_TYPE.long;\n longBytes.set(header.value.bytes, 1);\n return longBytes;\n case \"binary\":\n const binView = new DataView(new ArrayBuffer(3 + header.value.byteLength));\n binView.setUint8(0, HEADER_VALUE_TYPE.byteArray);\n binView.setUint16(1, header.value.byteLength, false);\n const binBytes = new Uint8Array(binView.buffer);\n binBytes.set(header.value, 3);\n return binBytes;\n case \"string\":\n const utf8Bytes = this.fromUtf8(header.value);\n const strView = new DataView(new ArrayBuffer(3 + utf8Bytes.byteLength));\n strView.setUint8(0, HEADER_VALUE_TYPE.string);\n strView.setUint16(1, utf8Bytes.byteLength, false);\n const strBytes = new Uint8Array(strView.buffer);\n strBytes.set(utf8Bytes, 3);\n return strBytes;\n case \"timestamp\":\n const tsBytes = new Uint8Array(9);\n tsBytes[0] = HEADER_VALUE_TYPE.timestamp;\n tsBytes.set(Int64.fromNumber(header.value.valueOf()).bytes, 1);\n return tsBytes;\n case \"uuid\":\n if (!UUID_PATTERN.test(header.value)) {\n throw new Error(`Invalid UUID received: ${header.value}`);\n }\n\n const uuidBytes = new Uint8Array(17);\n uuidBytes[0] = HEADER_VALUE_TYPE.uuid;\n uuidBytes.set(fromHex(header.value.replace(/\\-/g, \"\")), 1);\n return uuidBytes;\n }\n }\n\n parse(headers: DataView): MessageHeaders {\n const out: MessageHeaders = {};\n let position = 0;\n\n while (position < headers.byteLength) {\n const nameLength = headers.getUint8(position++);\n const name = this.toUtf8(new Uint8Array(headers.buffer, headers.byteOffset + position, nameLength));\n position += nameLength;\n\n switch (headers.getUint8(position++)) {\n case HEADER_VALUE_TYPE.boolTrue:\n out[name] = {\n type: BOOLEAN_TAG,\n value: true,\n };\n break;\n case HEADER_VALUE_TYPE.boolFalse:\n out[name] = {\n type: BOOLEAN_TAG,\n value: false,\n };\n break;\n case HEADER_VALUE_TYPE.byte:\n out[name] = {\n type: BYTE_TAG,\n value: headers.getInt8(position++),\n };\n break;\n case HEADER_VALUE_TYPE.short:\n out[name] = {\n type: SHORT_TAG,\n value: headers.getInt16(position, false),\n };\n position += 2;\n break;\n case HEADER_VALUE_TYPE.integer:\n out[name] = {\n type: INT_TAG,\n value: headers.getInt32(position, false),\n };\n position += 4;\n break;\n case HEADER_VALUE_TYPE.long:\n out[name] = {\n type: LONG_TAG,\n value: new Int64(new Uint8Array(headers.buffer, headers.byteOffset + position, 8)),\n };\n position += 8;\n break;\n case HEADER_VALUE_TYPE.byteArray:\n const binaryLength = headers.getUint16(position, false);\n position += 2;\n out[name] = {\n type: BINARY_TAG,\n value: new Uint8Array(headers.buffer, headers.byteOffset + position, binaryLength),\n };\n position += binaryLength;\n break;\n case HEADER_VALUE_TYPE.string:\n const stringLength = headers.getUint16(position, false);\n position += 2;\n out[name] = {\n type: STRING_TAG,\n value: this.toUtf8(new Uint8Array(headers.buffer, headers.byteOffset + position, stringLength)),\n };\n position += stringLength;\n break;\n case HEADER_VALUE_TYPE.timestamp:\n out[name] = {\n type: TIMESTAMP_TAG,\n value: new Date(new Int64(new Uint8Array(headers.buffer, headers.byteOffset + position, 8)).valueOf()),\n };\n position += 8;\n break;\n case HEADER_VALUE_TYPE.uuid:\n const uuidBytes = new Uint8Array(headers.buffer, headers.byteOffset + position, 16);\n position += 16;\n out[name] = {\n type: UUID_TAG,\n value: `${toHex(uuidBytes.subarray(0, 4))}-${toHex(uuidBytes.subarray(4, 6))}-${toHex(\n uuidBytes.subarray(6, 8)\n )}-${toHex(uuidBytes.subarray(8, 10))}-${toHex(uuidBytes.subarray(10))}`,\n };\n break;\n default:\n throw new Error(`Unrecognized header type tag`);\n }\n }\n\n return out;\n }\n}\n\nconst enum HEADER_VALUE_TYPE {\n boolTrue = 0,\n boolFalse,\n byte,\n short,\n integer,\n long,\n byteArray,\n string,\n timestamp,\n uuid,\n}\n\nconst BOOLEAN_TAG = \"boolean\";\nconst BYTE_TAG = \"byte\";\nconst SHORT_TAG = \"short\";\nconst INT_TAG = \"integer\";\nconst LONG_TAG = \"long\";\nconst BINARY_TAG = \"binary\";\nconst STRING_TAG = \"string\";\nconst TIMESTAMP_TAG = \"timestamp\";\nconst UUID_TAG = \"uuid\";\n\nconst UUID_PATTERN = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;\n","import { Crc32 } from \"@aws-crypto/crc32\";\nimport { Message, MessageHeaders } from \"@aws-sdk/types\";\nimport { Decoder, Encoder } from \"@aws-sdk/types\";\n\nimport { HeaderMarshaller } from \"./HeaderMarshaller\";\nimport { splitMessage } from \"./splitMessage\";\n\n/**\n * A marshaller that can convert binary-packed event stream messages into\n * JavaScript objects and back again into their binary format.\n */\nexport class EventStreamMarshaller {\n private readonly headerMarshaller: HeaderMarshaller;\n\n constructor(toUtf8: Encoder, fromUtf8: Decoder) {\n this.headerMarshaller = new HeaderMarshaller(toUtf8, fromUtf8);\n }\n\n /**\n * Convert a structured JavaScript object with tagged headers into a binary\n * event stream message.\n */\n marshall({ headers: rawHeaders, body }: Message): Uint8Array {\n const headers = this.headerMarshaller.format(rawHeaders);\n const length = headers.byteLength + body.byteLength + 16;\n\n const out = new Uint8Array(length);\n const view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n const checksum = new Crc32();\n\n // Format message\n view.setUint32(0, length, false);\n view.setUint32(4, headers.byteLength, false);\n view.setUint32(8, checksum.update(out.subarray(0, 8)).digest(), false);\n out.set(headers, 12);\n out.set(body, headers.byteLength + 12);\n\n // Write trailing message checksum\n view.setUint32(length - 4, checksum.update(out.subarray(8, length - 4)).digest(), false);\n\n return out;\n }\n\n /**\n * Convert a binary event stream message into a JavaScript object with an\n * opaque, binary body and tagged, parsed headers.\n */\n unmarshall(message: ArrayBufferView): Message {\n const { headers, body } = splitMessage(message);\n\n return { headers: this.headerMarshaller.parse(headers), body };\n }\n\n /**\n * Convert a structured JavaScript object with tagged headers into a binary\n * event stream message header.\n */\n formatHeaders(rawHeaders: MessageHeaders): Uint8Array {\n return this.headerMarshaller.format(rawHeaders);\n }\n}\n","import { Crc32 } from \"@aws-crypto/crc32\";\n\n// All prelude components are unsigned, 32-bit integers\nconst PRELUDE_MEMBER_LENGTH = 4;\n// The prelude consists of two components\nconst PRELUDE_LENGTH = PRELUDE_MEMBER_LENGTH * 2;\n// Checksums are always CRC32 hashes.\nconst CHECKSUM_LENGTH = 4;\n// Messages must include a full prelude, a prelude checksum, and a message checksum\nconst MINIMUM_MESSAGE_LENGTH = PRELUDE_LENGTH + CHECKSUM_LENGTH * 2;\n\n/**\n * @internal\n */\nexport interface MessageParts {\n headers: DataView;\n body: Uint8Array;\n}\n\n/**\n * @internal\n */\nexport function splitMessage({ byteLength, byteOffset, buffer }: ArrayBufferView): MessageParts {\n if (byteLength < MINIMUM_MESSAGE_LENGTH) {\n throw new Error(\"Provided message too short to accommodate event stream message overhead\");\n }\n\n const view = new DataView(buffer, byteOffset, byteLength);\n\n const messageLength = view.getUint32(0, false);\n\n if (byteLength !== messageLength) {\n throw new Error(\"Reported message length does not match received message length\");\n }\n\n const headerLength = view.getUint32(PRELUDE_MEMBER_LENGTH, false);\n const expectedPreludeChecksum = view.getUint32(PRELUDE_LENGTH, false);\n const expectedMessageChecksum = view.getUint32(byteLength - CHECKSUM_LENGTH, false);\n\n const checksummer = new Crc32().update(new Uint8Array(buffer, byteOffset, PRELUDE_LENGTH));\n if (expectedPreludeChecksum !== checksummer.digest()) {\n throw new Error(\n `The prelude checksum specified in the message (${expectedPreludeChecksum}) does not match the calculated CRC32 checksum (${checksummer.digest()})`\n );\n }\n\n checksummer.update(\n new Uint8Array(buffer, byteOffset + PRELUDE_LENGTH, byteLength - (PRELUDE_LENGTH + CHECKSUM_LENGTH))\n );\n if (expectedMessageChecksum !== checksummer.digest()) {\n throw new Error(\n `The message checksum (${checksummer.digest()}) did not match the expected value of ${expectedMessageChecksum}`\n );\n }\n\n return {\n headers: new DataView(buffer, byteOffset + PRELUDE_LENGTH + CHECKSUM_LENGTH, headerLength),\n body: new Uint8Array(\n buffer,\n byteOffset + PRELUDE_LENGTH + CHECKSUM_LENGTH + headerLength,\n messageLength - headerLength - (PRELUDE_LENGTH + CHECKSUM_LENGTH + CHECKSUM_LENGTH)\n ),\n };\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { EventStreamMarshaller as EventMarshaller } from \"@aws-sdk/eventstream-marshaller\";\nimport { Decoder, Encoder, EventStreamMarshaller as IEventStreamMarshaller, Message } from \"@aws-sdk/types\";\n\nimport { getChunkedStream } from \"./getChunkedStream\";\nimport { getUnmarshalledStream } from \"./getUnmarshalledStream\";\n\nexport interface EventStreamMarshaller extends IEventStreamMarshaller {}\n\nexport interface EventStreamMarshallerOptions {\n utf8Encoder: Encoder;\n utf8Decoder: Decoder;\n}\n\nexport class EventStreamMarshaller {\n private readonly eventMarshaller: EventMarshaller;\n private readonly utfEncoder: Encoder;\n constructor({ utf8Encoder, utf8Decoder }: EventStreamMarshallerOptions) {\n this.eventMarshaller = new EventMarshaller(utf8Encoder, utf8Decoder);\n this.utfEncoder = utf8Encoder;\n }\n\n deserialize(\n body: AsyncIterable,\n deserializer: (input: { [event: string]: Message }) => Promise\n ): AsyncIterable {\n const chunkedStream = getChunkedStream(body);\n const unmarshalledStream = getUnmarshalledStream(chunkedStream, {\n eventMarshaller: this.eventMarshaller,\n deserializer,\n toUtf8: this.utfEncoder,\n });\n return unmarshalledStream;\n }\n\n serialize(input: AsyncIterable, serializer: (event: T) => Message): AsyncIterable {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n const serializedIterator = async function* () {\n for await (const chunk of input) {\n const payloadBuf = self.eventMarshaller.marshall(serializer(chunk));\n yield payloadBuf;\n }\n // Ending frame\n yield new Uint8Array(0);\n };\n return {\n [Symbol.asyncIterator]: serializedIterator,\n };\n }\n}\n","export function getChunkedStream(source: AsyncIterable): AsyncIterable {\n let currentMessageTotalLength = 0;\n let currentMessagePendingLength = 0;\n let currentMessage: Uint8Array | null = null;\n let messageLengthBuffer: Uint8Array | null = null;\n const allocateMessage = (size: number) => {\n if (typeof size !== \"number\") {\n throw new Error(\"Attempted to allocate an event message where size was not a number: \" + size);\n }\n currentMessageTotalLength = size;\n currentMessagePendingLength = 4;\n currentMessage = new Uint8Array(size);\n const currentMessageView = new DataView(currentMessage.buffer);\n currentMessageView.setUint32(0, size, false); //set big-endian Uint32 to 0~3 bytes\n };\n\n const iterator = async function* () {\n const sourceIterator = source[Symbol.asyncIterator]();\n while (true) {\n const { value, done } = await sourceIterator.next();\n if (done) {\n if (!currentMessageTotalLength) {\n return;\n } else if (currentMessageTotalLength === currentMessagePendingLength) {\n yield currentMessage as Uint8Array;\n } else {\n throw new Error(\"Truncated event message received.\");\n }\n return;\n }\n\n const chunkLength = value.length;\n let currentOffset = 0;\n\n while (currentOffset < chunkLength) {\n // create new message if necessary\n if (!currentMessage) {\n // working on a new message, determine total length\n const bytesRemaining = chunkLength - currentOffset;\n // prevent edge case where total length spans 2 chunks\n if (!messageLengthBuffer) {\n messageLengthBuffer = new Uint8Array(4);\n }\n const numBytesForTotal = Math.min(\n 4 - currentMessagePendingLength, // remaining bytes to fill the messageLengthBuffer\n bytesRemaining // bytes left in chunk\n );\n\n messageLengthBuffer.set(\n // @ts-ignore error TS2532: Object is possibly 'undefined' for value\n value.slice(currentOffset, currentOffset + numBytesForTotal),\n currentMessagePendingLength\n );\n\n currentMessagePendingLength += numBytesForTotal;\n currentOffset += numBytesForTotal;\n\n if (currentMessagePendingLength < 4) {\n // not enough information to create the current message\n break;\n }\n allocateMessage(new DataView(messageLengthBuffer.buffer).getUint32(0, false));\n messageLengthBuffer = null;\n }\n\n // write data into current message\n const numBytesToWrite = Math.min(\n currentMessageTotalLength - currentMessagePendingLength, // number of bytes left to complete message\n chunkLength - currentOffset // number of bytes left in the original chunk\n );\n currentMessage!.set(\n // @ts-ignore error TS2532: Object is possibly 'undefined' for value\n value.slice(currentOffset, currentOffset + numBytesToWrite),\n currentMessagePendingLength\n );\n currentMessagePendingLength += numBytesToWrite;\n currentOffset += numBytesToWrite;\n\n // check if a message is ready to be pushed\n if (currentMessageTotalLength && currentMessageTotalLength === currentMessagePendingLength) {\n // push out the message\n yield currentMessage as Uint8Array;\n // cleanup\n currentMessage = null;\n currentMessageTotalLength = 0;\n currentMessagePendingLength = 0;\n }\n }\n }\n };\n\n return {\n [Symbol.asyncIterator]: iterator,\n };\n}\n","import { EventStreamMarshaller as EventMarshaller } from \"@aws-sdk/eventstream-marshaller\";\nimport { Encoder, Message } from \"@aws-sdk/types\";\n\nexport type UnmarshalledStreamOptions = {\n eventMarshaller: EventMarshaller;\n deserializer: (input: { [name: string]: Message }) => Promise;\n toUtf8: Encoder;\n};\n\nexport function getUnmarshalledStream(\n source: AsyncIterable,\n options: UnmarshalledStreamOptions\n): AsyncIterable {\n return {\n [Symbol.asyncIterator]: async function* () {\n for await (const chunk of source) {\n const message = options.eventMarshaller.unmarshall(chunk);\n const { value: messageType } = message.headers[\":message-type\"];\n if (messageType === \"error\") {\n // Unmodeled exception in event\n const unmodeledError = new Error((message.headers[\":error-message\"].value as string) || \"UnknownError\");\n unmodeledError.name = message.headers[\":error-code\"].value as string;\n throw unmodeledError;\n } else if (messageType === \"exception\") {\n // For modeled exception, push it to deserializer and throw after deserializing\n const code = message.headers[\":exception-type\"].value as string;\n const exception = { [code]: message };\n // Get parsed exception event in key(error code) value(structured error) pair.\n const deserializedException = await options.deserializer(exception);\n if (deserializedException.$unknown) {\n //this is an unmodeled exception then try parsing it with best effort\n const error = new Error(options.toUtf8(message.body));\n error.name = code;\n throw error;\n }\n throw deserializedException[code];\n } else if (messageType === \"event\") {\n const event = {\n [message.headers[\":event-type\"].value as string]: message,\n };\n const deserialized = await options.deserializer(event);\n if (deserialized.$unknown) continue;\n yield deserialized;\n } else {\n throw Error(`Unrecognizable event type: ${message.headers[\":event-type\"].value}`);\n }\n }\n },\n };\n}\n","import { EventStreamMarshaller as EventMarshaller } from \"@aws-sdk/eventstream-marshaller\";\nimport { EventStreamMarshaller as UniversalEventStreamMarshaller } from \"@aws-sdk/eventstream-serde-universal\";\nimport { Decoder, Encoder, EventStreamMarshaller as IEventStreamMarshaller, Message } from \"@aws-sdk/types\";\n\nimport { iterableToReadableStream, readableStreamtoIterable } from \"./utils\";\n\nexport interface EventStreamMarshaller extends IEventStreamMarshaller {}\n\nexport interface EventStreamMarshallerOptions {\n utf8Encoder: Encoder;\n utf8Decoder: Decoder;\n}\n\n/**\n * Utility class used to serialize and deserialize event streams in\n * browsers and ReactNative.\n *\n * In browsers where ReadableStream API is available:\n * * deserialize from ReadableStream to an async iterable of output structure\n * * serialize from async iterable of input structure to ReadableStream\n * In ReactNative where only async iterable API is available:\n * * deserialize from async iterable of binaries to async iterable of output structure\n * * serialize from async iterable of input structure to async iterable of binaries\n *\n * We use ReadableStream API in browsers because of the consistency with other\n * streaming operations, where ReadableStream API is used to denote streaming data.\n * Whereas in ReactNative, ReadableStream API is not available, we use async iterable\n * for streaming data although it has lower throughput.\n */\nexport class EventStreamMarshaller {\n private readonly eventMarshaller: EventMarshaller;\n private readonly universalMarshaller: UniversalEventStreamMarshaller;\n constructor({ utf8Encoder, utf8Decoder }: EventStreamMarshallerOptions) {\n this.eventMarshaller = new EventMarshaller(utf8Encoder, utf8Decoder);\n this.universalMarshaller = new UniversalEventStreamMarshaller({\n utf8Decoder,\n utf8Encoder,\n });\n }\n\n deserialize(\n body: ReadableStream | AsyncIterable,\n deserializer: (input: { [event: string]: Message }) => Promise\n ): AsyncIterable {\n const bodyIterable = isReadableStream(body) ? readableStreamtoIterable(body) : body;\n return this.universalMarshaller.deserialize(bodyIterable, deserializer);\n }\n\n /**\n * Generate a stream that serialize events into stream of binary chunks;\n *\n * Caveat is that streaming request payload doesn't work on browser with native\n * xhr or fetch handler currently because they don't support upload streaming.\n * reference:\n * * https://bugs.chromium.org/p/chromium/issues/detail?id=688906\n * * https://bugzilla.mozilla.org/show_bug.cgi?id=1387483\n *\n */\n serialize(input: AsyncIterable, serializer: (event: T) => Message): ReadableStream | AsyncIterable {\n const serialziedIterable = this.universalMarshaller.serialize(input, serializer);\n return typeof ReadableStream === \"function\" ? iterableToReadableStream(serialziedIterable) : serialziedIterable;\n }\n}\n\nconst isReadableStream = (body: any): body is ReadableStream =>\n typeof ReadableStream === \"function\" && body instanceof ReadableStream;\n","/**\n * A util function converting ReadableStream into an async iterable.\n * Reference: https://jakearchibald.com/2017/async-iterators-and-generators/#making-streams-iterate\n */\nexport const readableStreamtoIterable = (readableStream: ReadableStream): AsyncIterable => ({\n [Symbol.asyncIterator]: async function* () {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) return;\n yield value as T;\n }\n } finally {\n reader.releaseLock();\n }\n },\n});\n\n/**\n * A util function converting async iterable to a ReadableStream.\n */\nexport const iterableToReadableStream = (asyncIterable: AsyncIterable): ReadableStream => {\n const iterator = asyncIterable[Symbol.asyncIterator]();\n return new ReadableStream({\n async pull(controller) {\n const { done, value } = await iterator.next();\n if (done) {\n return controller.close();\n }\n controller.enqueue(value);\n },\n });\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export function blobReader(\n blob: Blob,\n onChunk: (chunk: Uint8Array) => void,\n chunkSize: number = 1024 * 1024\n): Promise {\n return new Promise((resolve, reject) => {\n const fileReader = new FileReader();\n\n fileReader.addEventListener(\"error\", reject);\n fileReader.addEventListener(\"abort\", reject);\n\n const size = blob.size;\n let totalBytesRead = 0;\n\n function read() {\n if (totalBytesRead >= size) {\n resolve();\n return;\n }\n fileReader.readAsArrayBuffer(blob.slice(totalBytesRead, Math.min(size, totalBytesRead + chunkSize)));\n }\n\n fileReader.addEventListener(\"load\", (event) => {\n const result = (event.target as any).result;\n onChunk(new Uint8Array(result));\n totalBytesRead += result.byteLength;\n // read the next block\n read();\n });\n\n // kick off the read\n read();\n });\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**\n * @internal\n */\nexport const BLOCK_SIZE = 64;\n\n/**\n * @internal\n */\nexport const DIGEST_LENGTH = 16;\n\n/**\n * @internal\n */\nexport const INIT = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476];\n","import { Hash, SourceData } from \"@aws-sdk/types\";\nimport { fromUtf8 } from \"@aws-sdk/util-utf8-browser\";\n\nimport { BLOCK_SIZE, DIGEST_LENGTH, INIT } from \"./constants\";\n\nexport class Md5 implements Hash {\n private state = Uint32Array.from(INIT);\n private buffer: DataView = new DataView(new ArrayBuffer(BLOCK_SIZE));\n private bufferLength = 0;\n private bytesHashed = 0;\n private finished = false;\n\n update(sourceData: SourceData): void {\n if (isEmptyData(sourceData)) {\n return;\n } else if (this.finished) {\n throw new Error(\"Attempted to update an already finished hash.\");\n }\n\n const data = convertToBuffer(sourceData);\n\n let position = 0;\n let { byteLength } = data;\n this.bytesHashed += byteLength;\n\n while (byteLength > 0) {\n this.buffer.setUint8(this.bufferLength++, data[position++]);\n byteLength--;\n\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n }\n\n async digest(): Promise {\n if (!this.finished) {\n const { buffer, bufferLength: undecoratedLength, bytesHashed } = this;\n const bitsHashed = bytesHashed * 8;\n buffer.setUint8(this.bufferLength++, 0b10000000);\n\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (let i = this.bufferLength; i < BLOCK_SIZE; i++) {\n buffer.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n\n for (let i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n buffer.setUint8(i, 0);\n }\n buffer.setUint32(BLOCK_SIZE - 8, bitsHashed >>> 0, true);\n buffer.setUint32(BLOCK_SIZE - 4, Math.floor(bitsHashed / 0x100000000), true);\n\n this.hashBuffer();\n\n this.finished = true;\n }\n\n const out = new DataView(new ArrayBuffer(DIGEST_LENGTH));\n for (let i = 0; i < 4; i++) {\n out.setUint32(i * 4, this.state[i], true);\n }\n\n return new Uint8Array(out.buffer, out.byteOffset, out.byteLength);\n }\n\n private hashBuffer(): void {\n const { buffer, state } = this;\n\n let a = state[0],\n b = state[1],\n c = state[2],\n d = state[3];\n\n a = ff(a, b, c, d, buffer.getUint32(0, true), 7, 0xd76aa478);\n d = ff(d, a, b, c, buffer.getUint32(4, true), 12, 0xe8c7b756);\n c = ff(c, d, a, b, buffer.getUint32(8, true), 17, 0x242070db);\n b = ff(b, c, d, a, buffer.getUint32(12, true), 22, 0xc1bdceee);\n a = ff(a, b, c, d, buffer.getUint32(16, true), 7, 0xf57c0faf);\n d = ff(d, a, b, c, buffer.getUint32(20, true), 12, 0x4787c62a);\n c = ff(c, d, a, b, buffer.getUint32(24, true), 17, 0xa8304613);\n b = ff(b, c, d, a, buffer.getUint32(28, true), 22, 0xfd469501);\n a = ff(a, b, c, d, buffer.getUint32(32, true), 7, 0x698098d8);\n d = ff(d, a, b, c, buffer.getUint32(36, true), 12, 0x8b44f7af);\n c = ff(c, d, a, b, buffer.getUint32(40, true), 17, 0xffff5bb1);\n b = ff(b, c, d, a, buffer.getUint32(44, true), 22, 0x895cd7be);\n a = ff(a, b, c, d, buffer.getUint32(48, true), 7, 0x6b901122);\n d = ff(d, a, b, c, buffer.getUint32(52, true), 12, 0xfd987193);\n c = ff(c, d, a, b, buffer.getUint32(56, true), 17, 0xa679438e);\n b = ff(b, c, d, a, buffer.getUint32(60, true), 22, 0x49b40821);\n\n a = gg(a, b, c, d, buffer.getUint32(4, true), 5, 0xf61e2562);\n d = gg(d, a, b, c, buffer.getUint32(24, true), 9, 0xc040b340);\n c = gg(c, d, a, b, buffer.getUint32(44, true), 14, 0x265e5a51);\n b = gg(b, c, d, a, buffer.getUint32(0, true), 20, 0xe9b6c7aa);\n a = gg(a, b, c, d, buffer.getUint32(20, true), 5, 0xd62f105d);\n d = gg(d, a, b, c, buffer.getUint32(40, true), 9, 0x02441453);\n c = gg(c, d, a, b, buffer.getUint32(60, true), 14, 0xd8a1e681);\n b = gg(b, c, d, a, buffer.getUint32(16, true), 20, 0xe7d3fbc8);\n a = gg(a, b, c, d, buffer.getUint32(36, true), 5, 0x21e1cde6);\n d = gg(d, a, b, c, buffer.getUint32(56, true), 9, 0xc33707d6);\n c = gg(c, d, a, b, buffer.getUint32(12, true), 14, 0xf4d50d87);\n b = gg(b, c, d, a, buffer.getUint32(32, true), 20, 0x455a14ed);\n a = gg(a, b, c, d, buffer.getUint32(52, true), 5, 0xa9e3e905);\n d = gg(d, a, b, c, buffer.getUint32(8, true), 9, 0xfcefa3f8);\n c = gg(c, d, a, b, buffer.getUint32(28, true), 14, 0x676f02d9);\n b = gg(b, c, d, a, buffer.getUint32(48, true), 20, 0x8d2a4c8a);\n\n a = hh(a, b, c, d, buffer.getUint32(20, true), 4, 0xfffa3942);\n d = hh(d, a, b, c, buffer.getUint32(32, true), 11, 0x8771f681);\n c = hh(c, d, a, b, buffer.getUint32(44, true), 16, 0x6d9d6122);\n b = hh(b, c, d, a, buffer.getUint32(56, true), 23, 0xfde5380c);\n a = hh(a, b, c, d, buffer.getUint32(4, true), 4, 0xa4beea44);\n d = hh(d, a, b, c, buffer.getUint32(16, true), 11, 0x4bdecfa9);\n c = hh(c, d, a, b, buffer.getUint32(28, true), 16, 0xf6bb4b60);\n b = hh(b, c, d, a, buffer.getUint32(40, true), 23, 0xbebfbc70);\n a = hh(a, b, c, d, buffer.getUint32(52, true), 4, 0x289b7ec6);\n d = hh(d, a, b, c, buffer.getUint32(0, true), 11, 0xeaa127fa);\n c = hh(c, d, a, b, buffer.getUint32(12, true), 16, 0xd4ef3085);\n b = hh(b, c, d, a, buffer.getUint32(24, true), 23, 0x04881d05);\n a = hh(a, b, c, d, buffer.getUint32(36, true), 4, 0xd9d4d039);\n d = hh(d, a, b, c, buffer.getUint32(48, true), 11, 0xe6db99e5);\n c = hh(c, d, a, b, buffer.getUint32(60, true), 16, 0x1fa27cf8);\n b = hh(b, c, d, a, buffer.getUint32(8, true), 23, 0xc4ac5665);\n\n a = ii(a, b, c, d, buffer.getUint32(0, true), 6, 0xf4292244);\n d = ii(d, a, b, c, buffer.getUint32(28, true), 10, 0x432aff97);\n c = ii(c, d, a, b, buffer.getUint32(56, true), 15, 0xab9423a7);\n b = ii(b, c, d, a, buffer.getUint32(20, true), 21, 0xfc93a039);\n a = ii(a, b, c, d, buffer.getUint32(48, true), 6, 0x655b59c3);\n d = ii(d, a, b, c, buffer.getUint32(12, true), 10, 0x8f0ccc92);\n c = ii(c, d, a, b, buffer.getUint32(40, true), 15, 0xffeff47d);\n b = ii(b, c, d, a, buffer.getUint32(4, true), 21, 0x85845dd1);\n a = ii(a, b, c, d, buffer.getUint32(32, true), 6, 0x6fa87e4f);\n d = ii(d, a, b, c, buffer.getUint32(60, true), 10, 0xfe2ce6e0);\n c = ii(c, d, a, b, buffer.getUint32(24, true), 15, 0xa3014314);\n b = ii(b, c, d, a, buffer.getUint32(52, true), 21, 0x4e0811a1);\n a = ii(a, b, c, d, buffer.getUint32(16, true), 6, 0xf7537e82);\n d = ii(d, a, b, c, buffer.getUint32(44, true), 10, 0xbd3af235);\n c = ii(c, d, a, b, buffer.getUint32(8, true), 15, 0x2ad7d2bb);\n b = ii(b, c, d, a, buffer.getUint32(36, true), 21, 0xeb86d391);\n\n state[0] = (a + state[0]) & 0xffffffff;\n state[1] = (b + state[1]) & 0xffffffff;\n state[2] = (c + state[2]) & 0xffffffff;\n state[3] = (d + state[3]) & 0xffffffff;\n }\n}\n\nfunction cmn(q: number, a: number, b: number, x: number, s: number, t: number) {\n a = (((a + q) & 0xffffffff) + ((x + t) & 0xffffffff)) & 0xffffffff;\n return (((a << s) | (a >>> (32 - s))) + b) & 0xffffffff;\n}\n\nfunction ff(a: number, b: number, c: number, d: number, x: number, s: number, t: number) {\n return cmn((b & c) | (~b & d), a, b, x, s, t);\n}\n\nfunction gg(a: number, b: number, c: number, d: number, x: number, s: number, t: number) {\n return cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\n\nfunction hh(a: number, b: number, c: number, d: number, x: number, s: number, t: number) {\n return cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction ii(a: number, b: number, c: number, d: number, x: number, s: number, t: number) {\n return cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nfunction isEmptyData(data: SourceData): boolean {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n\n return data.byteLength === 0;\n}\n\nfunction convertToBuffer(data: SourceData): Uint8Array {\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n\n return new Uint8Array(data);\n}\n","import { RegionInfo, RegionInfoProvider } from \"@aws-sdk/types\";\n\n// Partition default templates\nconst AWS_TEMPLATE = \"s3.{region}.amazonaws.com\";\nconst AWS_CN_TEMPLATE = \"s3.{region}.amazonaws.com.cn\";\nconst AWS_ISO_TEMPLATE = \"s3.{region}.c2s.ic.gov\";\nconst AWS_ISO_B_TEMPLATE = \"s3.{region}.sc2s.sgov.gov\";\nconst AWS_US_GOV_TEMPLATE = \"s3.{region}.amazonaws.com\";\n\n// Partition regions\nconst AWS_REGIONS = new Set([\n \"af-south-1\",\n \"ap-east-1\",\n \"ap-northeast-1\",\n \"ap-northeast-2\",\n \"ap-south-1\",\n \"ap-southeast-1\",\n \"ap-southeast-2\",\n \"ca-central-1\",\n \"eu-central-1\",\n \"eu-north-1\",\n \"eu-south-1\",\n \"eu-west-1\",\n \"eu-west-2\",\n \"eu-west-3\",\n \"me-south-1\",\n \"sa-east-1\",\n \"us-east-1\",\n \"us-east-2\",\n \"us-west-1\",\n \"us-west-2\",\n]);\nconst AWS_CN_REGIONS = new Set([\"cn-north-1\", \"cn-northwest-1\"]);\nconst AWS_ISO_REGIONS = new Set([\"us-iso-east-1\"]);\nconst AWS_ISO_B_REGIONS = new Set([\"us-isob-east-1\"]);\nconst AWS_US_GOV_REGIONS = new Set([\"us-gov-east-1\", \"us-gov-west-1\"]);\n\nexport const defaultRegionInfoProvider: RegionInfoProvider = (region: string, options?: any) => {\n let regionInfo: RegionInfo | undefined = undefined;\n switch (region) {\n // First, try to match exact region names.\n case \"af-south-1\":\n regionInfo = {\n hostname: \"s3.af-south-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"ap-east-1\":\n regionInfo = {\n hostname: \"s3.ap-east-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"ap-northeast-1\":\n regionInfo = {\n hostname: \"s3.ap-northeast-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"ap-northeast-2\":\n regionInfo = {\n hostname: \"s3.ap-northeast-2.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"ap-south-1\":\n regionInfo = {\n hostname: \"s3.ap-south-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"ap-southeast-1\":\n regionInfo = {\n hostname: \"s3.ap-southeast-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"ap-southeast-2\":\n regionInfo = {\n hostname: \"s3.ap-southeast-2.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"aws-global\":\n regionInfo = {\n hostname: \"s3.amazonaws.com\",\n partition: \"aws\",\n signingRegion: \"us-east-1\",\n };\n break;\n case \"ca-central-1\":\n regionInfo = {\n hostname: \"s3.ca-central-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"cn-north-1\":\n regionInfo = {\n hostname: \"s3.cn-north-1.amazonaws.com.cn\",\n partition: \"aws-cn\",\n };\n break;\n case \"cn-northwest-1\":\n regionInfo = {\n hostname: \"s3.cn-northwest-1.amazonaws.com.cn\",\n partition: \"aws-cn\",\n };\n break;\n case \"eu-central-1\":\n regionInfo = {\n hostname: \"s3.eu-central-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"eu-north-1\":\n regionInfo = {\n hostname: \"s3.eu-north-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"eu-south-1\":\n regionInfo = {\n hostname: \"s3.eu-south-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"eu-west-1\":\n regionInfo = {\n hostname: \"s3.eu-west-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"eu-west-2\":\n regionInfo = {\n hostname: \"s3.eu-west-2.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"eu-west-3\":\n regionInfo = {\n hostname: \"s3.eu-west-3.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"fips-us-gov-west-1\":\n regionInfo = {\n hostname: \"s3-fips.us-gov-west-1.amazonaws.com\",\n partition: \"aws-us-gov\",\n signingRegion: \"us-gov-west-1\",\n };\n break;\n case \"me-south-1\":\n regionInfo = {\n hostname: \"s3.me-south-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"s3-external-1\":\n regionInfo = {\n hostname: \"s3-external-1.amazonaws.com\",\n partition: \"aws\",\n signingRegion: \"us-east-1\",\n };\n break;\n case \"sa-east-1\":\n regionInfo = {\n hostname: \"s3.sa-east-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"us-east-1\":\n regionInfo = {\n hostname: \"s3.us-east-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"us-east-2\":\n regionInfo = {\n hostname: \"s3.us-east-2.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"us-gov-east-1\":\n regionInfo = {\n hostname: \"s3.us-gov-east-1.amazonaws.com\",\n partition: \"aws-us-gov\",\n };\n break;\n case \"us-gov-west-1\":\n regionInfo = {\n hostname: \"s3.us-gov-west-1.amazonaws.com\",\n partition: \"aws-us-gov\",\n };\n break;\n case \"us-iso-east-1\":\n regionInfo = {\n hostname: \"s3.us-iso-east-1.c2s.ic.gov\",\n partition: \"aws-iso\",\n };\n break;\n case \"us-isob-east-1\":\n regionInfo = {\n hostname: \"s3.us-isob-east-1.sc2s.sgov.gov\",\n partition: \"aws-iso-b\",\n };\n break;\n case \"us-west-1\":\n regionInfo = {\n hostname: \"s3.us-west-1.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n case \"us-west-2\":\n regionInfo = {\n hostname: \"s3.us-west-2.amazonaws.com\",\n partition: \"aws\",\n };\n break;\n // Next, try to match partition endpoints.\n default:\n if (AWS_REGIONS.has(region)) {\n regionInfo = {\n hostname: AWS_TEMPLATE.replace(\"{region}\", region),\n partition: \"aws\",\n };\n }\n if (AWS_CN_REGIONS.has(region)) {\n regionInfo = {\n hostname: AWS_CN_TEMPLATE.replace(\"{region}\", region),\n partition: \"aws-cn\",\n };\n }\n if (AWS_ISO_REGIONS.has(region)) {\n regionInfo = {\n hostname: AWS_ISO_TEMPLATE.replace(\"{region}\", region),\n partition: \"aws-iso\",\n };\n }\n if (AWS_ISO_B_REGIONS.has(region)) {\n regionInfo = {\n hostname: AWS_ISO_B_TEMPLATE.replace(\"{region}\", region),\n partition: \"aws-iso-b\",\n };\n }\n if (AWS_US_GOV_REGIONS.has(region)) {\n regionInfo = {\n hostname: AWS_US_GOV_TEMPLATE.replace(\"{region}\", region),\n partition: \"aws-us-gov\",\n };\n }\n // Finally, assume it's an AWS partition endpoint.\n if (regionInfo === undefined) {\n regionInfo = {\n hostname: AWS_TEMPLATE.replace(\"{region}\", region),\n partition: \"aws\",\n };\n }\n }\n return Promise.resolve({ signingService: \"s3\", ...regionInfo });\n};\n","import { defaultRegionInfoProvider } from \"./endpoints\";\nimport { Logger as __Logger } from \"@aws-sdk/types\";\nimport { parseUrl } from \"@aws-sdk/url-parser\";\n\n/**\n * @internal\n */\nexport const ClientSharedValues = {\n apiVersion: \"2006-03-01\",\n disableHostPrefix: false,\n logger: {} as __Logger,\n regionInfoProvider: defaultRegionInfoProvider,\n serviceId: \"S3\",\n signingEscapePath: false,\n urlParser: parseUrl,\n useArnRegion: false,\n};\n","import packageInfo from \"./package.json\";\n\nimport { Sha256 } from \"@aws-crypto/sha256-browser\";\nimport { eventStreamSerdeProvider } from \"@aws-sdk/eventstream-serde-browser\";\nimport { FetchHttpHandler, streamCollector } from \"@aws-sdk/fetch-http-handler\";\nimport { blobHasher as streamHasher } from \"@aws-sdk/hash-blob-browser\";\nimport { invalidProvider } from \"@aws-sdk/invalid-dependency\";\nimport { Md5 } from \"@aws-sdk/md5-js\";\nimport { DEFAULT_MAX_ATTEMPTS } from \"@aws-sdk/middleware-retry\";\nimport { fromBase64, toBase64 } from \"@aws-sdk/util-base64-browser\";\nimport { calculateBodyLength } from \"@aws-sdk/util-body-length-browser\";\nimport { defaultUserAgent } from \"@aws-sdk/util-user-agent-browser\";\nimport { fromUtf8, toUtf8 } from \"@aws-sdk/util-utf8-browser\";\nimport { ClientDefaults } from \"./S3Client\";\nimport { ClientSharedValues } from \"./runtimeConfig.shared\";\n\n/**\n * @internal\n */\nexport const ClientDefaultValues: Required = {\n ...ClientSharedValues,\n runtime: \"browser\",\n base64Decoder: fromBase64,\n base64Encoder: toBase64,\n bodyLengthChecker: calculateBodyLength,\n credentialDefaultProvider: (_: unknown) => () => Promise.reject(new Error(\"Credential is missing\")),\n defaultUserAgentProvider: defaultUserAgent({\n serviceId: ClientSharedValues.serviceId,\n clientVersion: packageInfo.version,\n }),\n eventStreamSerdeProvider,\n maxAttempts: DEFAULT_MAX_ATTEMPTS,\n md5: Md5,\n region: invalidProvider(\"Region is missing\"),\n requestHandler: new FetchHttpHandler(),\n sha256: Sha256,\n streamCollector,\n streamHasher,\n utf8Decoder: fromUtf8,\n utf8Encoder: toUtf8,\n};\n","import { Decoder, Encoder, EventSigner, EventStreamSerdeProvider, Provider } from \"@aws-sdk/types\";\n\nimport { EventStreamMarshaller } from \"./EventStreamMarshaller\";\n\n/** browser event stream serde utils provider */\nexport const eventStreamSerdeProvider: EventStreamSerdeProvider = (options: {\n utf8Encoder: Encoder;\n utf8Decoder: Decoder;\n eventSigner: EventSigner | Provider;\n}) => new EventStreamMarshaller(options);\n","import { blobReader } from \"@aws-sdk/chunked-blob-reader\";\nimport { HashConstructor, StreamHasher } from \"@aws-sdk/types\";\n\nexport const blobHasher: StreamHasher = async function blobHasher(\n hashCtor: HashConstructor,\n blob: Blob\n): Promise {\n const hash = new hashCtor();\n\n await blobReader(blob, (chunk) => {\n hash.update(chunk);\n });\n\n return hash.digest();\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { HttpRequest } from \"@aws-sdk/protocol-http\";\nimport {\n BuildHandler,\n BuildHandlerArguments,\n BuildHandlerOptions,\n BuildHandlerOutput,\n BuildMiddleware,\n MetadataBearer,\n Pluggable,\n} from \"@aws-sdk/types\";\n\ninterface PreviouslyResolved {\n runtime: string;\n}\n\nexport function addExpectContinueMiddleware(options: PreviouslyResolved): BuildMiddleware {\n return (next: BuildHandler): BuildHandler => async (\n args: BuildHandlerArguments\n ): Promise> => {\n const { request } = args;\n if (HttpRequest.isInstance(request) && request.body && options.runtime === \"node\") {\n request.headers = {\n ...request.headers,\n Expect: \"100-continue\",\n };\n }\n return next({\n ...args,\n request,\n });\n };\n}\n\nexport const addExpectContinueMiddlewareOptions: BuildHandlerOptions = {\n step: \"build\",\n tags: [\"SET_EXPECT_HEADER\", \"EXPECT_HEADER\"],\n name: \"addExpectContinueMiddleware\",\n override: true,\n};\n\nexport const getAddExpectContinuePlugin = (options: PreviouslyResolved): Pluggable => ({\n applyToStack: (clientStack) => {\n clientStack.add(addExpectContinueMiddleware(options), addExpectContinueMiddlewareOptions);\n },\n});\n","import {\n Encryption,\n GlacierJobParameters,\n Grant,\n ObjectCannedACL,\n RequestCharged,\n RequestPayer,\n ServerSideEncryption,\n StorageClass,\n Tagging,\n Tier,\n} from \"./models_0\";\nimport { SENSITIVE_STRING } from \"@aws-sdk/smithy-client\";\nimport { Readable } from \"stream\";\n\n/**\n *

A metadata key-value pair to store with an object.

\n */\nexport interface MetadataEntry {\n /**\n *

Name of the Object.

\n */\n Name?: string;\n\n /**\n *

Value of the Object.

\n */\n Value?: string;\n}\n\nexport namespace MetadataEntry {\n export const filterSensitiveLog = (obj: MetadataEntry): any => ({\n ...obj,\n });\n}\n\n/**\n *

Describes an Amazon S3 location that will receive the results of the restore request.

\n */\nexport interface S3Location {\n /**\n *

The name of the bucket where the restore results will be placed.

\n */\n BucketName: string | undefined;\n\n /**\n *

The prefix that is prepended to the restore results for this request.

\n */\n Prefix: string | undefined;\n\n /**\n *

Contains the type of server-side encryption used.

\n */\n Encryption?: Encryption;\n\n /**\n *

The canned ACL to apply to the restore results.

\n */\n CannedACL?: ObjectCannedACL | string;\n\n /**\n *

A list of grants that control access to the staged results.

\n */\n AccessControlList?: Grant[];\n\n /**\n *

The tag-set that is applied to the restore results.

\n */\n Tagging?: Tagging;\n\n /**\n *

A list of metadata to store with the restore results in S3.

\n */\n UserMetadata?: MetadataEntry[];\n\n /**\n *

The class of storage used to store the restore results.

\n */\n StorageClass?: StorageClass | string;\n}\n\nexport namespace S3Location {\n export const filterSensitiveLog = (obj: S3Location): any => ({\n ...obj,\n ...(obj.Encryption && { Encryption: Encryption.filterSensitiveLog(obj.Encryption) }),\n });\n}\n\n/**\n *

Describes the location where the restore job's output is stored.

\n */\nexport interface OutputLocation {\n /**\n *

Describes an S3 location that will receive the results of the restore request.

\n */\n S3?: S3Location;\n}\n\nexport namespace OutputLocation {\n export const filterSensitiveLog = (obj: OutputLocation): any => ({\n ...obj,\n ...(obj.S3 && { S3: S3Location.filterSensitiveLog(obj.S3) }),\n });\n}\n\nexport type ExpressionType = \"SQL\";\n\nexport type CompressionType = \"BZIP2\" | \"GZIP\" | \"NONE\";\n\nexport enum FileHeaderInfo {\n IGNORE = \"IGNORE\",\n NONE = \"NONE\",\n USE = \"USE\",\n}\n\n/**\n *

Describes how an uncompressed comma-separated values (CSV)-formatted input object is\n * formatted.

\n */\nexport interface CSVInput {\n /**\n *

Describes the first line of input. Valid values are:

\n *
    \n *
  • \n *

    \n * NONE: First line is not a header.

    \n *
  • \n *
  • \n *

    \n * IGNORE: First line is a header, but you can't use the header values\n * to indicate the column in an expression. You can use column position (such as _1, _2,\n * …) to indicate the column (SELECT s._1 FROM OBJECT s).

    \n *
  • \n *
  • \n *

    \n * Use: First line is a header, and you can use the header value to\n * identify a column in an expression (SELECT \"name\" FROM OBJECT).

    \n *
  • \n *
\n */\n FileHeaderInfo?: FileHeaderInfo | string;\n\n /**\n *

A single character used to indicate that a row should be ignored when the character is\n * present at the start of that row. You can specify any character to indicate a comment\n * line.

\n */\n Comments?: string;\n\n /**\n *

A single character used for escaping the quotation mark character inside an already\n * escaped value. For example, the value \"\"\" a , b \"\"\" is parsed as \" a , b \".

\n */\n QuoteEscapeCharacter?: string;\n\n /**\n *

A single character used to separate individual records in the input. Instead of the\n * default value, you can specify an arbitrary delimiter.

\n */\n RecordDelimiter?: string;\n\n /**\n *

A single character used to separate individual fields in a record. You can specify an\n * arbitrary delimiter.

\n */\n FieldDelimiter?: string;\n\n /**\n *

A single character used for escaping when the field delimiter is part of the value. For\n * example, if the value is a, b, Amazon S3 wraps this field value in quotation marks,\n * as follows: \" a , b \".

\n *

Type: String

\n *

Default: \"\n *

\n *

Ancestors: CSV\n *

\n */\n QuoteCharacter?: string;\n\n /**\n *

Specifies that CSV field values may contain quoted record delimiters and such records\n * should be allowed. Default value is FALSE. Setting this value to TRUE may lower\n * performance.

\n */\n AllowQuotedRecordDelimiter?: boolean;\n}\n\nexport namespace CSVInput {\n export const filterSensitiveLog = (obj: CSVInput): any => ({\n ...obj,\n });\n}\n\nexport enum JSONType {\n DOCUMENT = \"DOCUMENT\",\n LINES = \"LINES\",\n}\n\n/**\n *

Specifies JSON as object's input serialization format.

\n */\nexport interface JSONInput {\n /**\n *

The type of JSON. Valid values: Document, Lines.

\n */\n Type?: JSONType | string;\n}\n\nexport namespace JSONInput {\n export const filterSensitiveLog = (obj: JSONInput): any => ({\n ...obj,\n });\n}\n\n/**\n *

Container for Parquet.

\n */\nexport interface ParquetInput {}\n\nexport namespace ParquetInput {\n export const filterSensitiveLog = (obj: ParquetInput): any => ({\n ...obj,\n });\n}\n\n/**\n *

Describes the serialization format of the object.

\n */\nexport interface InputSerialization {\n /**\n *

Describes the serialization of a CSV-encoded object.

\n */\n CSV?: CSVInput;\n\n /**\n *

Specifies object's compression format. Valid values: NONE, GZIP, BZIP2. Default Value:\n * NONE.

\n */\n CompressionType?: CompressionType | string;\n\n /**\n *

Specifies JSON as object's input serialization format.

\n */\n JSON?: JSONInput;\n\n /**\n *

Specifies Parquet as object's input serialization format.

\n */\n Parquet?: ParquetInput;\n}\n\nexport namespace InputSerialization {\n export const filterSensitiveLog = (obj: InputSerialization): any => ({\n ...obj,\n });\n}\n\nexport enum QuoteFields {\n ALWAYS = \"ALWAYS\",\n ASNEEDED = \"ASNEEDED\",\n}\n\n/**\n *

Describes how uncompressed comma-separated values (CSV)-formatted results are\n * formatted.

\n */\nexport interface CSVOutput {\n /**\n *

Indicates whether to use quotation marks around output fields.

\n *
    \n *
  • \n *

    \n * ALWAYS: Always use quotation marks for output fields.

    \n *
  • \n *
  • \n *

    \n * ASNEEDED: Use quotation marks for output fields when needed.

    \n *
  • \n *
\n */\n QuoteFields?: QuoteFields | string;\n\n /**\n *

The single character used for escaping the quote character inside an already escaped\n * value.

\n */\n QuoteEscapeCharacter?: string;\n\n /**\n *

A single character used to separate individual records in the output. Instead of the\n * default value, you can specify an arbitrary delimiter.

\n */\n RecordDelimiter?: string;\n\n /**\n *

The value used to separate individual fields in a record. You can specify an arbitrary\n * delimiter.

\n */\n FieldDelimiter?: string;\n\n /**\n *

A single character used for escaping when the field delimiter is part of the value. For\n * example, if the value is a, b, Amazon S3 wraps this field value in quotation marks,\n * as follows: \" a , b \".

\n */\n QuoteCharacter?: string;\n}\n\nexport namespace CSVOutput {\n export const filterSensitiveLog = (obj: CSVOutput): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies JSON as request's output serialization format.

\n */\nexport interface JSONOutput {\n /**\n *

The value used to separate individual records in the output. If no value is specified,\n * Amazon S3 uses a newline character ('\\n').

\n */\n RecordDelimiter?: string;\n}\n\nexport namespace JSONOutput {\n export const filterSensitiveLog = (obj: JSONOutput): any => ({\n ...obj,\n });\n}\n\n/**\n *

Describes how results of the Select job are serialized.

\n */\nexport interface OutputSerialization {\n /**\n *

Describes the serialization of CSV-encoded Select results.

\n */\n CSV?: CSVOutput;\n\n /**\n *

Specifies JSON as request's output serialization format.

\n */\n JSON?: JSONOutput;\n}\n\nexport namespace OutputSerialization {\n export const filterSensitiveLog = (obj: OutputSerialization): any => ({\n ...obj,\n });\n}\n\n/**\n *

Describes the parameters for Select job types.

\n */\nexport interface SelectParameters {\n /**\n *

Describes the serialization format of the object.

\n */\n InputSerialization: InputSerialization | undefined;\n\n /**\n *

The type of the provided expression (for example, SQL).

\n */\n ExpressionType: ExpressionType | string | undefined;\n\n /**\n *

The expression that is used to query the object.

\n */\n Expression: string | undefined;\n\n /**\n *

Describes how the results of the Select job are serialized.

\n */\n OutputSerialization: OutputSerialization | undefined;\n}\n\nexport namespace SelectParameters {\n export const filterSensitiveLog = (obj: SelectParameters): any => ({\n ...obj,\n });\n}\n\nexport enum RestoreRequestType {\n SELECT = \"SELECT\",\n}\n\n/**\n *

Container for restore job parameters.

\n */\nexport interface RestoreRequest {\n /**\n *

Lifetime of the active copy in days. Do not use with restores that specify\n * OutputLocation.

\n *

The Days element is required for regular restores, and must not be provided for select\n * requests.

\n */\n Days?: number;\n\n /**\n *

S3 Glacier related parameters pertaining to this job. Do not use with restores that\n * specify OutputLocation.

\n */\n GlacierJobParameters?: GlacierJobParameters;\n\n /**\n *

Type of restore request.

\n */\n Type?: RestoreRequestType | string;\n\n /**\n *

Retrieval tier at which the restore will be processed.

\n */\n Tier?: Tier | string;\n\n /**\n *

The optional description for the job.

\n */\n Description?: string;\n\n /**\n *

Describes the parameters for Select job types.

\n */\n SelectParameters?: SelectParameters;\n\n /**\n *

Describes the location where the restore job's output is stored.

\n */\n OutputLocation?: OutputLocation;\n}\n\nexport namespace RestoreRequest {\n export const filterSensitiveLog = (obj: RestoreRequest): any => ({\n ...obj,\n ...(obj.OutputLocation && { OutputLocation: OutputLocation.filterSensitiveLog(obj.OutputLocation) }),\n });\n}\n\nexport interface RestoreObjectRequest {\n /**\n *

The bucket name containing the object to restore.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

Object key for which the operation was initiated.

\n */\n Key: string | undefined;\n\n /**\n *

VersionId used to reference a specific version of the object.

\n */\n VersionId?: string;\n\n /**\n *

Container for restore job parameters.

\n */\n RestoreRequest?: RestoreRequest;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace RestoreObjectRequest {\n export const filterSensitiveLog = (obj: RestoreObjectRequest): any => ({\n ...obj,\n ...(obj.RestoreRequest && { RestoreRequest: RestoreRequest.filterSensitiveLog(obj.RestoreRequest) }),\n });\n}\n\n/**\n *

\n */\nexport interface ContinuationEvent {}\n\nexport namespace ContinuationEvent {\n export const filterSensitiveLog = (obj: ContinuationEvent): any => ({\n ...obj,\n });\n}\n\n/**\n *

A message that indicates the request is complete and no more messages will be sent. You\n * should not assume that the request is complete until the client receives an\n * EndEvent.

\n */\nexport interface EndEvent {}\n\nexport namespace EndEvent {\n export const filterSensitiveLog = (obj: EndEvent): any => ({\n ...obj,\n });\n}\n\n/**\n *

This data type contains information about progress of an operation.

\n */\nexport interface Progress {\n /**\n *

The current number of object bytes scanned.

\n */\n BytesScanned?: number;\n\n /**\n *

The current number of uncompressed object bytes processed.

\n */\n BytesProcessed?: number;\n\n /**\n *

The current number of bytes of records payload data returned.

\n */\n BytesReturned?: number;\n}\n\nexport namespace Progress {\n export const filterSensitiveLog = (obj: Progress): any => ({\n ...obj,\n });\n}\n\n/**\n *

This data type contains information about the progress event of an operation.

\n */\nexport interface ProgressEvent {\n /**\n *

The Progress event details.

\n */\n Details?: Progress;\n}\n\nexport namespace ProgressEvent {\n export const filterSensitiveLog = (obj: ProgressEvent): any => ({\n ...obj,\n });\n}\n\n/**\n *

The container for the records event.

\n */\nexport interface RecordsEvent {\n /**\n *

The byte array of partial, one or more result records.

\n */\n Payload?: Uint8Array;\n}\n\nexport namespace RecordsEvent {\n export const filterSensitiveLog = (obj: RecordsEvent): any => ({\n ...obj,\n });\n}\n\n/**\n *

Container for the stats details.

\n */\nexport interface Stats {\n /**\n *

The total number of object bytes scanned.

\n */\n BytesScanned?: number;\n\n /**\n *

The total number of uncompressed object bytes processed.

\n */\n BytesProcessed?: number;\n\n /**\n *

The total number of bytes of records payload data returned.

\n */\n BytesReturned?: number;\n}\n\nexport namespace Stats {\n export const filterSensitiveLog = (obj: Stats): any => ({\n ...obj,\n });\n}\n\n/**\n *

Container for the Stats Event.

\n */\nexport interface StatsEvent {\n /**\n *

The Stats event details.

\n */\n Details?: Stats;\n}\n\nexport namespace StatsEvent {\n export const filterSensitiveLog = (obj: StatsEvent): any => ({\n ...obj,\n });\n}\n\n/**\n *

The container for selecting objects from a content event stream.

\n */\nexport type SelectObjectContentEventStream =\n | SelectObjectContentEventStream.ContMember\n | SelectObjectContentEventStream.EndMember\n | SelectObjectContentEventStream.ProgressMember\n | SelectObjectContentEventStream.RecordsMember\n | SelectObjectContentEventStream.StatsMember\n | SelectObjectContentEventStream.$UnknownMember;\n\nexport namespace SelectObjectContentEventStream {\n /**\n *

The Records Event.

\n */\n export interface RecordsMember {\n Records: RecordsEvent;\n Stats?: never;\n Progress?: never;\n Cont?: never;\n End?: never;\n $unknown?: never;\n }\n\n /**\n *

The Stats Event.

\n */\n export interface StatsMember {\n Records?: never;\n Stats: StatsEvent;\n Progress?: never;\n Cont?: never;\n End?: never;\n $unknown?: never;\n }\n\n /**\n *

The Progress Event.

\n */\n export interface ProgressMember {\n Records?: never;\n Stats?: never;\n Progress: ProgressEvent;\n Cont?: never;\n End?: never;\n $unknown?: never;\n }\n\n /**\n *

The Continuation Event.

\n */\n export interface ContMember {\n Records?: never;\n Stats?: never;\n Progress?: never;\n Cont: ContinuationEvent;\n End?: never;\n $unknown?: never;\n }\n\n /**\n *

The End Event.

\n */\n export interface EndMember {\n Records?: never;\n Stats?: never;\n Progress?: never;\n Cont?: never;\n End: EndEvent;\n $unknown?: never;\n }\n\n export interface $UnknownMember {\n Records?: never;\n Stats?: never;\n Progress?: never;\n Cont?: never;\n End?: never;\n $unknown: [string, any];\n }\n\n export interface Visitor {\n Records: (value: RecordsEvent) => T;\n Stats: (value: StatsEvent) => T;\n Progress: (value: ProgressEvent) => T;\n Cont: (value: ContinuationEvent) => T;\n End: (value: EndEvent) => T;\n _: (name: string, value: any) => T;\n }\n\n export const visit = (value: SelectObjectContentEventStream, visitor: Visitor): T => {\n if (value.Records !== undefined) return visitor.Records(value.Records);\n if (value.Stats !== undefined) return visitor.Stats(value.Stats);\n if (value.Progress !== undefined) return visitor.Progress(value.Progress);\n if (value.Cont !== undefined) return visitor.Cont(value.Cont);\n if (value.End !== undefined) return visitor.End(value.End);\n return visitor._(value.$unknown[0], value.$unknown[1]);\n };\n\n export const filterSensitiveLog = (obj: SelectObjectContentEventStream): any => {\n if (obj.Records !== undefined) return { Records: RecordsEvent.filterSensitiveLog(obj.Records) };\n if (obj.Stats !== undefined) return { Stats: StatsEvent.filterSensitiveLog(obj.Stats) };\n if (obj.Progress !== undefined) return { Progress: ProgressEvent.filterSensitiveLog(obj.Progress) };\n if (obj.Cont !== undefined) return { Cont: ContinuationEvent.filterSensitiveLog(obj.Cont) };\n if (obj.End !== undefined) return { End: EndEvent.filterSensitiveLog(obj.End) };\n if (obj.$unknown !== undefined) return { [obj.$unknown[0]]: \"UNKNOWN\" };\n };\n}\n\nexport interface SelectObjectContentOutput {\n /**\n *

The array of results.

\n */\n Payload?: AsyncIterable;\n}\n\nexport namespace SelectObjectContentOutput {\n export const filterSensitiveLog = (obj: SelectObjectContentOutput): any => ({\n ...obj,\n ...(obj.Payload && { Payload: \"STREAMING_CONTENT\" }),\n });\n}\n\n/**\n *

Container for specifying if periodic QueryProgress messages should be\n * sent.

\n */\nexport interface RequestProgress {\n /**\n *

Specifies whether periodic QueryProgress frames should be sent. Valid values: TRUE,\n * FALSE. Default value: FALSE.

\n */\n Enabled?: boolean;\n}\n\nexport namespace RequestProgress {\n export const filterSensitiveLog = (obj: RequestProgress): any => ({\n ...obj,\n });\n}\n\n/**\n *

Specifies the byte range of the object to get the records from. A record is processed\n * when its first byte is contained by the range. This parameter is optional, but when\n * specified, it must not be empty. See RFC 2616, Section 14.35.1 about how to specify the\n * start and end of the range.

\n */\nexport interface ScanRange {\n /**\n *

Specifies the start of the byte range. This parameter is optional. Valid values:\n * non-negative integers. The default value is 0. If only start is supplied, it means scan\n * from that point to the end of the file.For example;\n * 50 means scan\n * from byte 50 until the end of the file.

\n */\n Start?: number;\n\n /**\n *

Specifies the end of the byte range. This parameter is optional. Valid values:\n * non-negative integers. The default value is one less than the size of the object being\n * queried. If only the End parameter is supplied, it is interpreted to mean scan the last N\n * bytes of the file. For example,\n * 50 means scan the\n * last 50 bytes.

\n */\n End?: number;\n}\n\nexport namespace ScanRange {\n export const filterSensitiveLog = (obj: ScanRange): any => ({\n ...obj,\n });\n}\n\n/**\n *

Request to filter the contents of an Amazon S3 object based on a simple Structured Query\n * Language (SQL) statement. In the request, along with the SQL expression, you must specify a\n * data serialization format (JSON or CSV) of the object. Amazon S3 uses this to parse object data\n * into records. It returns only records that match the specified SQL expression. You must\n * also specify the data serialization format for the response. For more information, see\n * S3Select API Documentation.

\n */\nexport interface SelectObjectContentRequest {\n /**\n *

The S3 bucket.

\n */\n Bucket: string | undefined;\n\n /**\n *

The object key.

\n */\n Key: string | undefined;\n\n /**\n *

The SSE Algorithm used to encrypt the object. For more information, see Server-Side Encryption (Using Customer-Provided Encryption Keys.

\n */\n SSECustomerAlgorithm?: string;\n\n /**\n *

The SSE Customer Key. For more information, see Server-Side Encryption\n * (Using Customer-Provided Encryption Keys.

\n */\n SSECustomerKey?: string;\n\n /**\n *

The SSE Customer Key MD5. For more information, see Server-Side Encryption\n * (Using Customer-Provided Encryption Keys.

\n */\n SSECustomerKeyMD5?: string;\n\n /**\n *

The expression that is used to query the object.

\n */\n Expression: string | undefined;\n\n /**\n *

The type of the provided expression (for example, SQL).

\n */\n ExpressionType: ExpressionType | string | undefined;\n\n /**\n *

Specifies if periodic request progress information should be enabled.

\n */\n RequestProgress?: RequestProgress;\n\n /**\n *

Describes the format of the data in the object that is being queried.

\n */\n InputSerialization: InputSerialization | undefined;\n\n /**\n *

Describes the format of the data that you want Amazon S3 to return in response.

\n */\n OutputSerialization: OutputSerialization | undefined;\n\n /**\n *

Specifies the byte range of the object to get the records from. A record is processed\n * when its first byte is contained by the range. This parameter is optional, but when\n * specified, it must not be empty. See RFC 2616, Section 14.35.1 about how to specify the\n * start and end of the range.

\n *

\n * ScanRangemay be used in the following ways:

\n *
    \n *
  • \n *

    \n * 50100\n * - process only the records starting between the bytes 50 and 100 (inclusive, counting\n * from zero)

    \n *
  • \n *
  • \n *

    \n * 50 -\n * process only the records starting after the byte 50

    \n *
  • \n *
  • \n *

    \n * 50 -\n * process only the records within the last 50 bytes of the file.

    \n *
  • \n *
\n */\n ScanRange?: ScanRange;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace SelectObjectContentRequest {\n export const filterSensitiveLog = (obj: SelectObjectContentRequest): any => ({\n ...obj,\n ...(obj.SSECustomerKey && { SSECustomerKey: SENSITIVE_STRING }),\n });\n}\n\nexport interface UploadPartOutput {\n /**\n *

The server-side encryption algorithm used when storing this object in Amazon S3 (for example,\n * AES256, aws:kms).

\n */\n ServerSideEncryption?: ServerSideEncryption | string;\n\n /**\n *

Entity tag for the uploaded object.

\n */\n ETag?: string;\n\n /**\n *

If server-side encryption with a customer-provided encryption key was requested, the\n * response will include this header confirming the encryption algorithm used.

\n */\n SSECustomerAlgorithm?: string;\n\n /**\n *

If server-side encryption with a customer-provided encryption key was requested, the\n * response will include this header to provide round-trip message integrity verification of\n * the customer-provided encryption key.

\n */\n SSECustomerKeyMD5?: string;\n\n /**\n *

If present, specifies the ID of the AWS Key Management Service (AWS KMS) symmetric\n * customer managed customer master key (CMK) was used for the object.

\n */\n SSEKMSKeyId?: string;\n\n /**\n *

Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with AWS KMS (SSE-KMS).

\n */\n BucketKeyEnabled?: boolean;\n\n /**\n *

If present, indicates that the requester was successfully charged for the\n * request.

\n */\n RequestCharged?: RequestCharged | string;\n}\n\nexport namespace UploadPartOutput {\n export const filterSensitiveLog = (obj: UploadPartOutput): any => ({\n ...obj,\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n });\n}\n\nexport interface UploadPartRequest {\n /**\n *

Object data.

\n */\n Body?: Readable | ReadableStream | Blob;\n\n /**\n *

The name of the bucket to which the multipart upload was initiated.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

Size of the body in bytes. This parameter is useful when the size of the body cannot be\n * determined automatically.

\n */\n ContentLength?: number;\n\n /**\n *

The base64-encoded 128-bit MD5 digest of the part data. This parameter is auto-populated\n * when using the command from the CLI. This parameter is required if object lock parameters\n * are specified.

\n */\n ContentMD5?: string;\n\n /**\n *

Object key for which the multipart upload was initiated.

\n */\n Key: string | undefined;\n\n /**\n *

Part number of part being uploaded. This is a positive integer between 1 and\n * 10,000.

\n */\n PartNumber: number | undefined;\n\n /**\n *

Upload ID identifying the multipart upload whose part is being uploaded.

\n */\n UploadId: string | undefined;\n\n /**\n *

Specifies the algorithm to use to when encrypting the object (for example,\n * AES256).

\n */\n SSECustomerAlgorithm?: string;\n\n /**\n *

Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This\n * value is used to store the object and then it is discarded; Amazon S3 does not store the\n * encryption key. The key must be appropriate for use with the algorithm specified in the\n * x-amz-server-side-encryption-customer-algorithm header. This must be the\n * same encryption key specified in the initiate multipart upload request.

\n */\n SSECustomerKey?: string;\n\n /**\n *

Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses\n * this header for a message integrity check to ensure that the encryption key was transmitted\n * without error.

\n */\n SSECustomerKeyMD5?: string;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n}\n\nexport namespace UploadPartRequest {\n export const filterSensitiveLog = (obj: UploadPartRequest): any => ({\n ...obj,\n ...(obj.SSECustomerKey && { SSECustomerKey: SENSITIVE_STRING }),\n });\n}\n\n/**\n *

Container for all response elements.

\n */\nexport interface CopyPartResult {\n /**\n *

Entity tag of the object.

\n */\n ETag?: string;\n\n /**\n *

Date and time at which the object was uploaded.

\n */\n LastModified?: Date;\n}\n\nexport namespace CopyPartResult {\n export const filterSensitiveLog = (obj: CopyPartResult): any => ({\n ...obj,\n });\n}\n\nexport interface UploadPartCopyOutput {\n /**\n *

The version of the source object that was copied, if you have enabled versioning on the\n * source bucket.

\n */\n CopySourceVersionId?: string;\n\n /**\n *

Container for all response elements.

\n */\n CopyPartResult?: CopyPartResult;\n\n /**\n *

The server-side encryption algorithm used when storing this object in Amazon S3 (for example,\n * AES256, aws:kms).

\n */\n ServerSideEncryption?: ServerSideEncryption | string;\n\n /**\n *

If server-side encryption with a customer-provided encryption key was requested, the\n * response will include this header confirming the encryption algorithm used.

\n */\n SSECustomerAlgorithm?: string;\n\n /**\n *

If server-side encryption with a customer-provided encryption key was requested, the\n * response will include this header to provide round-trip message integrity verification of\n * the customer-provided encryption key.

\n */\n SSECustomerKeyMD5?: string;\n\n /**\n *

If present, specifies the ID of the AWS Key Management Service (AWS KMS) symmetric\n * customer managed customer master key (CMK) that was used for the object.

\n */\n SSEKMSKeyId?: string;\n\n /**\n *

Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with AWS KMS (SSE-KMS).

\n */\n BucketKeyEnabled?: boolean;\n\n /**\n *

If present, indicates that the requester was successfully charged for the\n * request.

\n */\n RequestCharged?: RequestCharged | string;\n}\n\nexport namespace UploadPartCopyOutput {\n export const filterSensitiveLog = (obj: UploadPartCopyOutput): any => ({\n ...obj,\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n });\n}\n\nexport interface UploadPartCopyRequest {\n /**\n *

The bucket name.

\n *

When using this API with an access point, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this operation with an access point through the AWS SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using Access Points in the Amazon Simple Storage Service Developer Guide.

\n *

When using this API with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using this operation using S3 on Outposts through the AWS SDKs, you provide the Outposts bucket ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see Using S3 on Outposts in the Amazon Simple Storage Service Developer Guide.

\n */\n Bucket: string | undefined;\n\n /**\n *

Specifies the source object for the copy operation. You specify the value in one of two\n * formats, depending on whether you want to access the source object through an access\n * point:

\n *
    \n *
  • \n *

    For objects not accessed through an access point, specify the name of the source\n * bucket and key of the source object, separated by a slash (/). For example, to copy\n * the object reports/january.pdf from the bucket\n * awsexamplebucket, use\n * awsexamplebucket/reports/january.pdf. The value must be URL\n * encoded.

    \n *
  • \n *
  • \n *

    For objects accessed through access points, specify the Amazon Resource Name (ARN) of the object as accessed through the access point, in the format arn:aws:s3:::accesspoint//object/. For example, to copy the object reports/january.pdf through access point my-access-point owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf. The value must be URL encoded.

    \n * \n *

    Amazon S3 supports copy operations using access points only when the source and destination buckets are in the same AWS Region.

    \n *
    \n *

    Alternatively, for objects accessed through Amazon S3 on Outposts, specify the ARN of the object as accessed in the format arn:aws:s3-outposts:::outpost//object/. For example, to copy the object reports/january.pdf through outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf. The value must be URL encoded.

    \n *
  • \n *
\n *

To copy a specific version of an object, append ?versionId=\n * to the value (for example,\n * awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893).\n * If you don't specify a version ID, Amazon S3 copies the latest version of the source\n * object.

\n */\n CopySource: string | undefined;\n\n /**\n *

Copies the object if its entity tag (ETag) matches the specified tag.

\n */\n CopySourceIfMatch?: string;\n\n /**\n *

Copies the object if it has been modified since the specified time.

\n */\n CopySourceIfModifiedSince?: Date;\n\n /**\n *

Copies the object if its entity tag (ETag) is different than the specified ETag.

\n */\n CopySourceIfNoneMatch?: string;\n\n /**\n *

Copies the object if it hasn't been modified since the specified time.

\n */\n CopySourceIfUnmodifiedSince?: Date;\n\n /**\n *

The range of bytes to copy from the source object. The range value must use the form\n * bytes=first-last, where the first and last are the zero-based byte offsets to copy. For\n * example, bytes=0-9 indicates that you want to copy the first 10 bytes of the source. You\n * can copy a range only if the source object is greater than 5 MB.

\n */\n CopySourceRange?: string;\n\n /**\n *

Object key for which the multipart upload was initiated.

\n */\n Key: string | undefined;\n\n /**\n *

Part number of part being copied. This is a positive integer between 1 and\n * 10,000.

\n */\n PartNumber: number | undefined;\n\n /**\n *

Upload ID identifying the multipart upload whose part is being copied.

\n */\n UploadId: string | undefined;\n\n /**\n *

Specifies the algorithm to use to when encrypting the object (for example,\n * AES256).

\n */\n SSECustomerAlgorithm?: string;\n\n /**\n *

Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This\n * value is used to store the object and then it is discarded; Amazon S3 does not store the\n * encryption key. The key must be appropriate for use with the algorithm specified in the\n * x-amz-server-side-encryption-customer-algorithm header. This must be the\n * same encryption key specified in the initiate multipart upload request.

\n */\n SSECustomerKey?: string;\n\n /**\n *

Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses\n * this header for a message integrity check to ensure that the encryption key was transmitted\n * without error.

\n */\n SSECustomerKeyMD5?: string;\n\n /**\n *

Specifies the algorithm to use when decrypting the source object (for example,\n * AES256).

\n */\n CopySourceSSECustomerAlgorithm?: string;\n\n /**\n *

Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source\n * object. The encryption key provided in this header must be one that was used when the\n * source object was created.

\n */\n CopySourceSSECustomerKey?: string;\n\n /**\n *

Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses\n * this header for a message integrity check to ensure that the encryption key was transmitted\n * without error.

\n */\n CopySourceSSECustomerKeyMD5?: string;\n\n /**\n *

Confirms that the requester knows that they will be charged for the request. Bucket\n * owners need not specify this parameter in their requests. For information about downloading\n * objects from requester pays buckets, see Downloading Objects in\n * Requestor Pays Buckets in the Amazon S3 Developer Guide.

\n */\n RequestPayer?: RequestPayer | string;\n\n /**\n *

The account id of the expected destination bucket owner. If the destination bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedBucketOwner?: string;\n\n /**\n *

The account id of the expected source bucket owner. If the source bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

\n */\n ExpectedSourceBucketOwner?: string;\n}\n\nexport namespace UploadPartCopyRequest {\n export const filterSensitiveLog = (obj: UploadPartCopyRequest): any => ({\n ...obj,\n ...(obj.SSECustomerKey && { SSECustomerKey: SENSITIVE_STRING }),\n ...(obj.CopySourceSSECustomerKey && { CopySourceSSECustomerKey: SENSITIVE_STRING }),\n });\n}\n","import {\n AbortMultipartUploadCommandInput,\n AbortMultipartUploadCommandOutput,\n} from \"./commands/AbortMultipartUploadCommand\";\nimport {\n CompleteMultipartUploadCommandInput,\n CompleteMultipartUploadCommandOutput,\n} from \"./commands/CompleteMultipartUploadCommand\";\nimport { CopyObjectCommandInput, CopyObjectCommandOutput } from \"./commands/CopyObjectCommand\";\nimport { CreateBucketCommandInput, CreateBucketCommandOutput } from \"./commands/CreateBucketCommand\";\nimport {\n CreateMultipartUploadCommandInput,\n CreateMultipartUploadCommandOutput,\n} from \"./commands/CreateMultipartUploadCommand\";\nimport {\n DeleteBucketAnalyticsConfigurationCommandInput,\n DeleteBucketAnalyticsConfigurationCommandOutput,\n} from \"./commands/DeleteBucketAnalyticsConfigurationCommand\";\nimport { DeleteBucketCommandInput, DeleteBucketCommandOutput } from \"./commands/DeleteBucketCommand\";\nimport { DeleteBucketCorsCommandInput, DeleteBucketCorsCommandOutput } from \"./commands/DeleteBucketCorsCommand\";\nimport {\n DeleteBucketEncryptionCommandInput,\n DeleteBucketEncryptionCommandOutput,\n} from \"./commands/DeleteBucketEncryptionCommand\";\nimport {\n DeleteBucketIntelligentTieringConfigurationCommandInput,\n DeleteBucketIntelligentTieringConfigurationCommandOutput,\n} from \"./commands/DeleteBucketIntelligentTieringConfigurationCommand\";\nimport {\n DeleteBucketInventoryConfigurationCommandInput,\n DeleteBucketInventoryConfigurationCommandOutput,\n} from \"./commands/DeleteBucketInventoryConfigurationCommand\";\nimport {\n DeleteBucketLifecycleCommandInput,\n DeleteBucketLifecycleCommandOutput,\n} from \"./commands/DeleteBucketLifecycleCommand\";\nimport {\n DeleteBucketMetricsConfigurationCommandInput,\n DeleteBucketMetricsConfigurationCommandOutput,\n} from \"./commands/DeleteBucketMetricsConfigurationCommand\";\nimport {\n DeleteBucketOwnershipControlsCommandInput,\n DeleteBucketOwnershipControlsCommandOutput,\n} from \"./commands/DeleteBucketOwnershipControlsCommand\";\nimport { DeleteBucketPolicyCommandInput, DeleteBucketPolicyCommandOutput } from \"./commands/DeleteBucketPolicyCommand\";\nimport {\n DeleteBucketReplicationCommandInput,\n DeleteBucketReplicationCommandOutput,\n} from \"./commands/DeleteBucketReplicationCommand\";\nimport {\n DeleteBucketTaggingCommandInput,\n DeleteBucketTaggingCommandOutput,\n} from \"./commands/DeleteBucketTaggingCommand\";\nimport {\n DeleteBucketWebsiteCommandInput,\n DeleteBucketWebsiteCommandOutput,\n} from \"./commands/DeleteBucketWebsiteCommand\";\nimport { DeleteObjectCommandInput, DeleteObjectCommandOutput } from \"./commands/DeleteObjectCommand\";\nimport {\n DeleteObjectTaggingCommandInput,\n DeleteObjectTaggingCommandOutput,\n} from \"./commands/DeleteObjectTaggingCommand\";\nimport { DeleteObjectsCommandInput, DeleteObjectsCommandOutput } from \"./commands/DeleteObjectsCommand\";\nimport {\n DeletePublicAccessBlockCommandInput,\n DeletePublicAccessBlockCommandOutput,\n} from \"./commands/DeletePublicAccessBlockCommand\";\nimport {\n GetBucketAccelerateConfigurationCommandInput,\n GetBucketAccelerateConfigurationCommandOutput,\n} from \"./commands/GetBucketAccelerateConfigurationCommand\";\nimport { GetBucketAclCommandInput, GetBucketAclCommandOutput } from \"./commands/GetBucketAclCommand\";\nimport {\n GetBucketAnalyticsConfigurationCommandInput,\n GetBucketAnalyticsConfigurationCommandOutput,\n} from \"./commands/GetBucketAnalyticsConfigurationCommand\";\nimport { GetBucketCorsCommandInput, GetBucketCorsCommandOutput } from \"./commands/GetBucketCorsCommand\";\nimport {\n GetBucketEncryptionCommandInput,\n GetBucketEncryptionCommandOutput,\n} from \"./commands/GetBucketEncryptionCommand\";\nimport {\n GetBucketIntelligentTieringConfigurationCommandInput,\n GetBucketIntelligentTieringConfigurationCommandOutput,\n} from \"./commands/GetBucketIntelligentTieringConfigurationCommand\";\nimport {\n GetBucketInventoryConfigurationCommandInput,\n GetBucketInventoryConfigurationCommandOutput,\n} from \"./commands/GetBucketInventoryConfigurationCommand\";\nimport {\n GetBucketLifecycleConfigurationCommandInput,\n GetBucketLifecycleConfigurationCommandOutput,\n} from \"./commands/GetBucketLifecycleConfigurationCommand\";\nimport { GetBucketLocationCommandInput, GetBucketLocationCommandOutput } from \"./commands/GetBucketLocationCommand\";\nimport { GetBucketLoggingCommandInput, GetBucketLoggingCommandOutput } from \"./commands/GetBucketLoggingCommand\";\nimport {\n GetBucketMetricsConfigurationCommandInput,\n GetBucketMetricsConfigurationCommandOutput,\n} from \"./commands/GetBucketMetricsConfigurationCommand\";\nimport {\n GetBucketNotificationConfigurationCommandInput,\n GetBucketNotificationConfigurationCommandOutput,\n} from \"./commands/GetBucketNotificationConfigurationCommand\";\nimport {\n GetBucketOwnershipControlsCommandInput,\n GetBucketOwnershipControlsCommandOutput,\n} from \"./commands/GetBucketOwnershipControlsCommand\";\nimport { GetBucketPolicyCommandInput, GetBucketPolicyCommandOutput } from \"./commands/GetBucketPolicyCommand\";\nimport {\n GetBucketPolicyStatusCommandInput,\n GetBucketPolicyStatusCommandOutput,\n} from \"./commands/GetBucketPolicyStatusCommand\";\nimport {\n GetBucketReplicationCommandInput,\n GetBucketReplicationCommandOutput,\n} from \"./commands/GetBucketReplicationCommand\";\nimport {\n GetBucketRequestPaymentCommandInput,\n GetBucketRequestPaymentCommandOutput,\n} from \"./commands/GetBucketRequestPaymentCommand\";\nimport { GetBucketTaggingCommandInput, GetBucketTaggingCommandOutput } from \"./commands/GetBucketTaggingCommand\";\nimport {\n GetBucketVersioningCommandInput,\n GetBucketVersioningCommandOutput,\n} from \"./commands/GetBucketVersioningCommand\";\nimport { GetBucketWebsiteCommandInput, GetBucketWebsiteCommandOutput } from \"./commands/GetBucketWebsiteCommand\";\nimport { GetObjectAclCommandInput, GetObjectAclCommandOutput } from \"./commands/GetObjectAclCommand\";\nimport { GetObjectCommandInput, GetObjectCommandOutput } from \"./commands/GetObjectCommand\";\nimport { GetObjectLegalHoldCommandInput, GetObjectLegalHoldCommandOutput } from \"./commands/GetObjectLegalHoldCommand\";\nimport {\n GetObjectLockConfigurationCommandInput,\n GetObjectLockConfigurationCommandOutput,\n} from \"./commands/GetObjectLockConfigurationCommand\";\nimport { GetObjectRetentionCommandInput, GetObjectRetentionCommandOutput } from \"./commands/GetObjectRetentionCommand\";\nimport { GetObjectTaggingCommandInput, GetObjectTaggingCommandOutput } from \"./commands/GetObjectTaggingCommand\";\nimport { GetObjectTorrentCommandInput, GetObjectTorrentCommandOutput } from \"./commands/GetObjectTorrentCommand\";\nimport {\n GetPublicAccessBlockCommandInput,\n GetPublicAccessBlockCommandOutput,\n} from \"./commands/GetPublicAccessBlockCommand\";\nimport { HeadBucketCommandInput, HeadBucketCommandOutput } from \"./commands/HeadBucketCommand\";\nimport { HeadObjectCommandInput, HeadObjectCommandOutput } from \"./commands/HeadObjectCommand\";\nimport {\n ListBucketAnalyticsConfigurationsCommandInput,\n ListBucketAnalyticsConfigurationsCommandOutput,\n} from \"./commands/ListBucketAnalyticsConfigurationsCommand\";\nimport {\n ListBucketIntelligentTieringConfigurationsCommandInput,\n ListBucketIntelligentTieringConfigurationsCommandOutput,\n} from \"./commands/ListBucketIntelligentTieringConfigurationsCommand\";\nimport {\n ListBucketInventoryConfigurationsCommandInput,\n ListBucketInventoryConfigurationsCommandOutput,\n} from \"./commands/ListBucketInventoryConfigurationsCommand\";\nimport {\n ListBucketMetricsConfigurationsCommandInput,\n ListBucketMetricsConfigurationsCommandOutput,\n} from \"./commands/ListBucketMetricsConfigurationsCommand\";\nimport { ListBucketsCommandInput, ListBucketsCommandOutput } from \"./commands/ListBucketsCommand\";\nimport {\n ListMultipartUploadsCommandInput,\n ListMultipartUploadsCommandOutput,\n} from \"./commands/ListMultipartUploadsCommand\";\nimport { ListObjectVersionsCommandInput, ListObjectVersionsCommandOutput } from \"./commands/ListObjectVersionsCommand\";\nimport { ListObjectsCommandInput, ListObjectsCommandOutput } from \"./commands/ListObjectsCommand\";\nimport { ListObjectsV2CommandInput, ListObjectsV2CommandOutput } from \"./commands/ListObjectsV2Command\";\nimport { ListPartsCommandInput, ListPartsCommandOutput } from \"./commands/ListPartsCommand\";\nimport {\n PutBucketAccelerateConfigurationCommandInput,\n PutBucketAccelerateConfigurationCommandOutput,\n} from \"./commands/PutBucketAccelerateConfigurationCommand\";\nimport { PutBucketAclCommandInput, PutBucketAclCommandOutput } from \"./commands/PutBucketAclCommand\";\nimport {\n PutBucketAnalyticsConfigurationCommandInput,\n PutBucketAnalyticsConfigurationCommandOutput,\n} from \"./commands/PutBucketAnalyticsConfigurationCommand\";\nimport { PutBucketCorsCommandInput, PutBucketCorsCommandOutput } from \"./commands/PutBucketCorsCommand\";\nimport {\n PutBucketEncryptionCommandInput,\n PutBucketEncryptionCommandOutput,\n} from \"./commands/PutBucketEncryptionCommand\";\nimport {\n PutBucketIntelligentTieringConfigurationCommandInput,\n PutBucketIntelligentTieringConfigurationCommandOutput,\n} from \"./commands/PutBucketIntelligentTieringConfigurationCommand\";\nimport {\n PutBucketInventoryConfigurationCommandInput,\n PutBucketInventoryConfigurationCommandOutput,\n} from \"./commands/PutBucketInventoryConfigurationCommand\";\nimport {\n PutBucketLifecycleConfigurationCommandInput,\n PutBucketLifecycleConfigurationCommandOutput,\n} from \"./commands/PutBucketLifecycleConfigurationCommand\";\nimport { PutBucketLoggingCommandInput, PutBucketLoggingCommandOutput } from \"./commands/PutBucketLoggingCommand\";\nimport {\n PutBucketMetricsConfigurationCommandInput,\n PutBucketMetricsConfigurationCommandOutput,\n} from \"./commands/PutBucketMetricsConfigurationCommand\";\nimport {\n PutBucketNotificationConfigurationCommandInput,\n PutBucketNotificationConfigurationCommandOutput,\n} from \"./commands/PutBucketNotificationConfigurationCommand\";\nimport {\n PutBucketOwnershipControlsCommandInput,\n PutBucketOwnershipControlsCommandOutput,\n} from \"./commands/PutBucketOwnershipControlsCommand\";\nimport { PutBucketPolicyCommandInput, PutBucketPolicyCommandOutput } from \"./commands/PutBucketPolicyCommand\";\nimport {\n PutBucketReplicationCommandInput,\n PutBucketReplicationCommandOutput,\n} from \"./commands/PutBucketReplicationCommand\";\nimport {\n PutBucketRequestPaymentCommandInput,\n PutBucketRequestPaymentCommandOutput,\n} from \"./commands/PutBucketRequestPaymentCommand\";\nimport { PutBucketTaggingCommandInput, PutBucketTaggingCommandOutput } from \"./commands/PutBucketTaggingCommand\";\nimport {\n PutBucketVersioningCommandInput,\n PutBucketVersioningCommandOutput,\n} from \"./commands/PutBucketVersioningCommand\";\nimport { PutBucketWebsiteCommandInput, PutBucketWebsiteCommandOutput } from \"./commands/PutBucketWebsiteCommand\";\nimport { PutObjectAclCommandInput, PutObjectAclCommandOutput } from \"./commands/PutObjectAclCommand\";\nimport { PutObjectCommandInput, PutObjectCommandOutput } from \"./commands/PutObjectCommand\";\nimport { PutObjectLegalHoldCommandInput, PutObjectLegalHoldCommandOutput } from \"./commands/PutObjectLegalHoldCommand\";\nimport {\n PutObjectLockConfigurationCommandInput,\n PutObjectLockConfigurationCommandOutput,\n} from \"./commands/PutObjectLockConfigurationCommand\";\nimport { PutObjectRetentionCommandInput, PutObjectRetentionCommandOutput } from \"./commands/PutObjectRetentionCommand\";\nimport { PutObjectTaggingCommandInput, PutObjectTaggingCommandOutput } from \"./commands/PutObjectTaggingCommand\";\nimport {\n PutPublicAccessBlockCommandInput,\n PutPublicAccessBlockCommandOutput,\n} from \"./commands/PutPublicAccessBlockCommand\";\nimport { RestoreObjectCommandInput, RestoreObjectCommandOutput } from \"./commands/RestoreObjectCommand\";\nimport {\n SelectObjectContentCommandInput,\n SelectObjectContentCommandOutput,\n} from \"./commands/SelectObjectContentCommand\";\nimport { UploadPartCommandInput, UploadPartCommandOutput } from \"./commands/UploadPartCommand\";\nimport { UploadPartCopyCommandInput, UploadPartCopyCommandOutput } from \"./commands/UploadPartCopyCommand\";\nimport { ClientDefaultValues as __ClientDefaultValues } from \"./runtimeConfig\";\nimport {\n EndpointsInputConfig,\n EndpointsResolvedConfig,\n RegionInputConfig,\n RegionResolvedConfig,\n resolveEndpointsConfig,\n resolveRegionConfig,\n} from \"@aws-sdk/config-resolver\";\nimport {\n EventStreamSerdeInputConfig,\n EventStreamSerdeResolvedConfig,\n resolveEventStreamSerdeConfig,\n} from \"@aws-sdk/eventstream-serde-config-resolver\";\nimport {\n BucketEndpointInputConfig,\n BucketEndpointResolvedConfig,\n resolveBucketEndpointConfig,\n} from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getContentLengthPlugin } from \"@aws-sdk/middleware-content-length\";\nimport { getAddExpectContinuePlugin } from \"@aws-sdk/middleware-expect-continue\";\nimport {\n HostHeaderInputConfig,\n HostHeaderResolvedConfig,\n getHostHeaderPlugin,\n resolveHostHeaderConfig,\n} from \"@aws-sdk/middleware-host-header\";\nimport { getLoggerPlugin } from \"@aws-sdk/middleware-logger\";\nimport { RetryInputConfig, RetryResolvedConfig, getRetryPlugin, resolveRetryConfig } from \"@aws-sdk/middleware-retry\";\nimport { getUseRegionalEndpointPlugin, getValidateBucketNamePlugin } from \"@aws-sdk/middleware-sdk-s3\";\nimport {\n AwsAuthInputConfig,\n AwsAuthResolvedConfig,\n getAwsAuthPlugin,\n resolveAwsAuthConfig,\n} from \"@aws-sdk/middleware-signing\";\nimport {\n UserAgentInputConfig,\n UserAgentResolvedConfig,\n getUserAgentPlugin,\n resolveUserAgentConfig,\n} from \"@aws-sdk/middleware-user-agent\";\nimport { HttpHandler as __HttpHandler } from \"@aws-sdk/protocol-http\";\nimport {\n Client as __Client,\n SmithyConfiguration as __SmithyConfiguration,\n SmithyResolvedConfiguration as __SmithyResolvedConfiguration,\n} from \"@aws-sdk/smithy-client\";\nimport {\n Provider,\n RegionInfoProvider,\n Credentials as __Credentials,\n Decoder as __Decoder,\n Encoder as __Encoder,\n EventStreamSerdeProvider as __EventStreamSerdeProvider,\n HashConstructor as __HashConstructor,\n HttpHandlerOptions as __HttpHandlerOptions,\n Logger as __Logger,\n Provider as __Provider,\n StreamCollector as __StreamCollector,\n StreamHasher as __StreamHasher,\n UrlParser as __UrlParser,\n UserAgent as __UserAgent,\n} from \"@aws-sdk/types\";\nimport { Readable } from \"stream\";\n\nexport type ServiceInputTypes =\n | AbortMultipartUploadCommandInput\n | CompleteMultipartUploadCommandInput\n | CopyObjectCommandInput\n | CreateBucketCommandInput\n | CreateMultipartUploadCommandInput\n | DeleteBucketAnalyticsConfigurationCommandInput\n | DeleteBucketCommandInput\n | DeleteBucketCorsCommandInput\n | DeleteBucketEncryptionCommandInput\n | DeleteBucketIntelligentTieringConfigurationCommandInput\n | DeleteBucketInventoryConfigurationCommandInput\n | DeleteBucketLifecycleCommandInput\n | DeleteBucketMetricsConfigurationCommandInput\n | DeleteBucketOwnershipControlsCommandInput\n | DeleteBucketPolicyCommandInput\n | DeleteBucketReplicationCommandInput\n | DeleteBucketTaggingCommandInput\n | DeleteBucketWebsiteCommandInput\n | DeleteObjectCommandInput\n | DeleteObjectTaggingCommandInput\n | DeleteObjectsCommandInput\n | DeletePublicAccessBlockCommandInput\n | GetBucketAccelerateConfigurationCommandInput\n | GetBucketAclCommandInput\n | GetBucketAnalyticsConfigurationCommandInput\n | GetBucketCorsCommandInput\n | GetBucketEncryptionCommandInput\n | GetBucketIntelligentTieringConfigurationCommandInput\n | GetBucketInventoryConfigurationCommandInput\n | GetBucketLifecycleConfigurationCommandInput\n | GetBucketLocationCommandInput\n | GetBucketLoggingCommandInput\n | GetBucketMetricsConfigurationCommandInput\n | GetBucketNotificationConfigurationCommandInput\n | GetBucketOwnershipControlsCommandInput\n | GetBucketPolicyCommandInput\n | GetBucketPolicyStatusCommandInput\n | GetBucketReplicationCommandInput\n | GetBucketRequestPaymentCommandInput\n | GetBucketTaggingCommandInput\n | GetBucketVersioningCommandInput\n | GetBucketWebsiteCommandInput\n | GetObjectAclCommandInput\n | GetObjectCommandInput\n | GetObjectLegalHoldCommandInput\n | GetObjectLockConfigurationCommandInput\n | GetObjectRetentionCommandInput\n | GetObjectTaggingCommandInput\n | GetObjectTorrentCommandInput\n | GetPublicAccessBlockCommandInput\n | HeadBucketCommandInput\n | HeadObjectCommandInput\n | ListBucketAnalyticsConfigurationsCommandInput\n | ListBucketIntelligentTieringConfigurationsCommandInput\n | ListBucketInventoryConfigurationsCommandInput\n | ListBucketMetricsConfigurationsCommandInput\n | ListBucketsCommandInput\n | ListMultipartUploadsCommandInput\n | ListObjectVersionsCommandInput\n | ListObjectsCommandInput\n | ListObjectsV2CommandInput\n | ListPartsCommandInput\n | PutBucketAccelerateConfigurationCommandInput\n | PutBucketAclCommandInput\n | PutBucketAnalyticsConfigurationCommandInput\n | PutBucketCorsCommandInput\n | PutBucketEncryptionCommandInput\n | PutBucketIntelligentTieringConfigurationCommandInput\n | PutBucketInventoryConfigurationCommandInput\n | PutBucketLifecycleConfigurationCommandInput\n | PutBucketLoggingCommandInput\n | PutBucketMetricsConfigurationCommandInput\n | PutBucketNotificationConfigurationCommandInput\n | PutBucketOwnershipControlsCommandInput\n | PutBucketPolicyCommandInput\n | PutBucketReplicationCommandInput\n | PutBucketRequestPaymentCommandInput\n | PutBucketTaggingCommandInput\n | PutBucketVersioningCommandInput\n | PutBucketWebsiteCommandInput\n | PutObjectAclCommandInput\n | PutObjectCommandInput\n | PutObjectLegalHoldCommandInput\n | PutObjectLockConfigurationCommandInput\n | PutObjectRetentionCommandInput\n | PutObjectTaggingCommandInput\n | PutPublicAccessBlockCommandInput\n | RestoreObjectCommandInput\n | SelectObjectContentCommandInput\n | UploadPartCommandInput\n | UploadPartCopyCommandInput;\n\nexport type ServiceOutputTypes =\n | AbortMultipartUploadCommandOutput\n | CompleteMultipartUploadCommandOutput\n | CopyObjectCommandOutput\n | CreateBucketCommandOutput\n | CreateMultipartUploadCommandOutput\n | DeleteBucketAnalyticsConfigurationCommandOutput\n | DeleteBucketCommandOutput\n | DeleteBucketCorsCommandOutput\n | DeleteBucketEncryptionCommandOutput\n | DeleteBucketIntelligentTieringConfigurationCommandOutput\n | DeleteBucketInventoryConfigurationCommandOutput\n | DeleteBucketLifecycleCommandOutput\n | DeleteBucketMetricsConfigurationCommandOutput\n | DeleteBucketOwnershipControlsCommandOutput\n | DeleteBucketPolicyCommandOutput\n | DeleteBucketReplicationCommandOutput\n | DeleteBucketTaggingCommandOutput\n | DeleteBucketWebsiteCommandOutput\n | DeleteObjectCommandOutput\n | DeleteObjectTaggingCommandOutput\n | DeleteObjectsCommandOutput\n | DeletePublicAccessBlockCommandOutput\n | GetBucketAccelerateConfigurationCommandOutput\n | GetBucketAclCommandOutput\n | GetBucketAnalyticsConfigurationCommandOutput\n | GetBucketCorsCommandOutput\n | GetBucketEncryptionCommandOutput\n | GetBucketIntelligentTieringConfigurationCommandOutput\n | GetBucketInventoryConfigurationCommandOutput\n | GetBucketLifecycleConfigurationCommandOutput\n | GetBucketLocationCommandOutput\n | GetBucketLoggingCommandOutput\n | GetBucketMetricsConfigurationCommandOutput\n | GetBucketNotificationConfigurationCommandOutput\n | GetBucketOwnershipControlsCommandOutput\n | GetBucketPolicyCommandOutput\n | GetBucketPolicyStatusCommandOutput\n | GetBucketReplicationCommandOutput\n | GetBucketRequestPaymentCommandOutput\n | GetBucketTaggingCommandOutput\n | GetBucketVersioningCommandOutput\n | GetBucketWebsiteCommandOutput\n | GetObjectAclCommandOutput\n | GetObjectCommandOutput\n | GetObjectLegalHoldCommandOutput\n | GetObjectLockConfigurationCommandOutput\n | GetObjectRetentionCommandOutput\n | GetObjectTaggingCommandOutput\n | GetObjectTorrentCommandOutput\n | GetPublicAccessBlockCommandOutput\n | HeadBucketCommandOutput\n | HeadObjectCommandOutput\n | ListBucketAnalyticsConfigurationsCommandOutput\n | ListBucketIntelligentTieringConfigurationsCommandOutput\n | ListBucketInventoryConfigurationsCommandOutput\n | ListBucketMetricsConfigurationsCommandOutput\n | ListBucketsCommandOutput\n | ListMultipartUploadsCommandOutput\n | ListObjectVersionsCommandOutput\n | ListObjectsCommandOutput\n | ListObjectsV2CommandOutput\n | ListPartsCommandOutput\n | PutBucketAccelerateConfigurationCommandOutput\n | PutBucketAclCommandOutput\n | PutBucketAnalyticsConfigurationCommandOutput\n | PutBucketCorsCommandOutput\n | PutBucketEncryptionCommandOutput\n | PutBucketIntelligentTieringConfigurationCommandOutput\n | PutBucketInventoryConfigurationCommandOutput\n | PutBucketLifecycleConfigurationCommandOutput\n | PutBucketLoggingCommandOutput\n | PutBucketMetricsConfigurationCommandOutput\n | PutBucketNotificationConfigurationCommandOutput\n | PutBucketOwnershipControlsCommandOutput\n | PutBucketPolicyCommandOutput\n | PutBucketReplicationCommandOutput\n | PutBucketRequestPaymentCommandOutput\n | PutBucketTaggingCommandOutput\n | PutBucketVersioningCommandOutput\n | PutBucketWebsiteCommandOutput\n | PutObjectAclCommandOutput\n | PutObjectCommandOutput\n | PutObjectLegalHoldCommandOutput\n | PutObjectLockConfigurationCommandOutput\n | PutObjectRetentionCommandOutput\n | PutObjectTaggingCommandOutput\n | PutPublicAccessBlockCommandOutput\n | RestoreObjectCommandOutput\n | SelectObjectContentCommandOutput\n | UploadPartCommandOutput\n | UploadPartCopyCommandOutput;\n\nexport interface ClientDefaults extends Partial<__SmithyResolvedConfiguration<__HttpHandlerOptions>> {\n /**\n * The HTTP handler to use. Fetch in browser and Https in Nodejs.\n */\n requestHandler?: __HttpHandler;\n\n /**\n * A constructor for a class implementing the @aws-sdk/types.Hash interface\n * that computes the SHA-256 HMAC or checksum of a string or binary buffer.\n */\n sha256?: __HashConstructor;\n\n /**\n * The function that will be used to convert strings into HTTP endpoints.\n */\n urlParser?: __UrlParser;\n\n /**\n * A function that can calculate the length of a request body.\n */\n bodyLengthChecker?: (body: any) => number | undefined;\n\n /**\n * A function that converts a stream into an array of bytes.\n */\n streamCollector?: __StreamCollector;\n\n /**\n * The function that will be used to convert a base64-encoded string to a byte array\n */\n base64Decoder?: __Decoder;\n\n /**\n * The function that will be used to convert binary data to a base64-encoded string\n */\n base64Encoder?: __Encoder;\n\n /**\n * The function that will be used to convert a UTF8-encoded string to a byte array\n */\n utf8Decoder?: __Decoder;\n\n /**\n * The function that will be used to convert binary data to a UTF-8 encoded string\n */\n utf8Encoder?: __Encoder;\n\n /**\n * The runtime environment\n */\n runtime?: string;\n\n /**\n * Disable dyanamically changing the endpoint of the client based on the hostPrefix\n * trait of an operation.\n */\n disableHostPrefix?: boolean;\n\n /**\n * Unique service identifier.\n * @internal\n */\n serviceId?: string;\n\n /**\n * Default credentials provider; Not available in browser runtime\n */\n credentialDefaultProvider?: (input: any) => __Provider<__Credentials>;\n\n /**\n * The AWS region to which this client will send requests\n */\n region?: string | __Provider;\n\n /**\n * Value for how many times a request will be made at most in case of retry.\n */\n maxAttempts?: number | __Provider;\n\n /**\n * Optional logger for logging debug/info/warn/error.\n */\n logger?: __Logger;\n\n /**\n * Fetch related hostname, signing name or signing region with given region.\n */\n regionInfoProvider?: RegionInfoProvider;\n\n /**\n * A constructor for a class implementing the @aws-sdk/types.Hash interface\n * that computes MD5 hashes\n */\n md5?: __HashConstructor;\n\n /**\n * A function that, given a hash constructor and a stream, calculates the\n * hash of the streamed value\n */\n streamHasher?: __StreamHasher | __StreamHasher;\n\n /**\n * Whether to escape request path when signing the request.\n */\n signingEscapePath?: boolean;\n\n /**\n * Whether to override the request region with the region inferred from requested resource's ARN. Defaults to false.\n */\n useArnRegion?: boolean | Provider;\n /**\n * The provider populating default tracking information to be sent with `user-agent`, `x-amz-user-agent` header\n * @internal\n */\n defaultUserAgentProvider?: Provider<__UserAgent>;\n\n /**\n * The function that provides necessary utilities for generating and parsing event stream\n */\n eventStreamSerdeProvider?: __EventStreamSerdeProvider;\n}\n\nexport type S3ClientConfig = Partial<__SmithyConfiguration<__HttpHandlerOptions>> &\n ClientDefaults &\n RegionInputConfig &\n EndpointsInputConfig &\n AwsAuthInputConfig &\n RetryInputConfig &\n HostHeaderInputConfig &\n BucketEndpointInputConfig &\n UserAgentInputConfig &\n EventStreamSerdeInputConfig;\n\nexport type S3ClientResolvedConfig = __SmithyResolvedConfiguration<__HttpHandlerOptions> &\n Required &\n RegionResolvedConfig &\n EndpointsResolvedConfig &\n AwsAuthResolvedConfig &\n RetryResolvedConfig &\n HostHeaderResolvedConfig &\n BucketEndpointResolvedConfig &\n UserAgentResolvedConfig &\n EventStreamSerdeResolvedConfig;\n\n/**\n *

\n */\nexport class S3Client extends __Client<\n __HttpHandlerOptions,\n ServiceInputTypes,\n ServiceOutputTypes,\n S3ClientResolvedConfig\n> {\n readonly config: S3ClientResolvedConfig;\n\n constructor(configuration: S3ClientConfig) {\n let _config_0 = {\n ...__ClientDefaultValues,\n ...configuration,\n };\n let _config_1 = resolveRegionConfig(_config_0);\n let _config_2 = resolveEndpointsConfig(_config_1);\n let _config_3 = resolveAwsAuthConfig(_config_2);\n let _config_4 = resolveRetryConfig(_config_3);\n let _config_5 = resolveHostHeaderConfig(_config_4);\n let _config_6 = resolveBucketEndpointConfig(_config_5);\n let _config_7 = resolveUserAgentConfig(_config_6);\n let _config_8 = resolveEventStreamSerdeConfig(_config_7);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use(getAwsAuthPlugin(this.config));\n this.middlewareStack.use(getRetryPlugin(this.config));\n this.middlewareStack.use(getContentLengthPlugin(this.config));\n this.middlewareStack.use(getHostHeaderPlugin(this.config));\n this.middlewareStack.use(getLoggerPlugin(this.config));\n this.middlewareStack.use(getValidateBucketNamePlugin(this.config));\n this.middlewareStack.use(getUseRegionalEndpointPlugin(this.config));\n this.middlewareStack.use(getAddExpectContinuePlugin(this.config));\n this.middlewareStack.use(getUserAgentPlugin(this.config));\n }\n\n destroy(): void {\n super.destroy();\n }\n}\n","import { EventStreamMarshaller, EventStreamSerdeProvider } from \"@aws-sdk/types\";\n\nexport interface EventStreamSerdeInputConfig {}\n\nexport interface EventStreamSerdeResolvedConfig {\n eventStreamMarshaller: EventStreamMarshaller;\n}\n\ninterface PreviouslyResolved {\n eventStreamSerdeProvider: EventStreamSerdeProvider;\n}\n\nexport const resolveEventStreamSerdeConfig = (\n input: T & PreviouslyResolved & EventStreamSerdeInputConfig\n): T & EventStreamSerdeResolvedConfig => ({\n ...input,\n eventStreamMarshaller: input.eventStreamSerdeProvider(input),\n});\n","import { LoadedConfigSelectors } from \"@aws-sdk/node-config-provider\";\nimport { Provider, RegionInfoProvider } from \"@aws-sdk/types\";\n\nexport interface BucketEndpointInputConfig {\n /**\n * Whether the provided endpoint addresses an individual bucket.\n */\n bucketEndpoint?: boolean;\n /**\n * Whether to force path style URLs for S3 objects (e.g., https://s3.amazonaws.com// instead of https://.s3.amazonaws.com/\n */\n forcePathStyle?: boolean;\n /**\n * Whether to use the S3 Transfer Acceleration endpoint by default\n */\n useAccelerateEndpoint?: boolean;\n /**\n * Enables IPv6/IPv4 dualstack endpoint. When a DNS lookup is performed on an endpoint of this type, it returns an “A” record with an IPv4 address and an “AAAA” record with an IPv6 address. In most cases the network stack in the client environment will automatically prefer the AAAA record and make a connection using the IPv6 address. Note, however, that currently on Windows, the IPv4 address will be preferred.\n */\n useDualstackEndpoint?: boolean;\n /**\n * Whether to override the request region with the region inferred from requested resource's ARN. Defaults to false\n */\n useArnRegion?: boolean | Provider;\n}\n\ninterface PreviouslyResolved {\n isCustomEndpoint: boolean;\n region: Provider;\n regionInfoProvider: RegionInfoProvider;\n}\n\nexport interface BucketEndpointResolvedConfig {\n isCustomEndpoint: boolean;\n bucketEndpoint: boolean;\n forcePathStyle: boolean;\n useAccelerateEndpoint: boolean;\n useDualstackEndpoint: boolean;\n useArnRegion: Provider;\n region: Provider;\n regionInfoProvider: RegionInfoProvider;\n}\n\nexport function resolveBucketEndpointConfig(\n input: T & PreviouslyResolved & BucketEndpointInputConfig\n): T & BucketEndpointResolvedConfig {\n const {\n bucketEndpoint = false,\n forcePathStyle = false,\n useAccelerateEndpoint = false,\n useDualstackEndpoint = false,\n useArnRegion = false,\n } = input;\n return {\n ...input,\n bucketEndpoint,\n forcePathStyle,\n useAccelerateEndpoint,\n useDualstackEndpoint,\n useArnRegion: typeof useArnRegion === \"function\" ? useArnRegion : () => Promise.resolve(useArnRegion),\n };\n}\n\nexport const NODE_USE_ARN_REGION_ENV_NAME = \"AWS_S3_USE_ARN_REGION\";\nexport const NODE_USE_ARN_REGION_INI_NAME = \"s3_use_arn_region\";\n\n/**\n * Config to load useArnRegion from environment variables and shared INI files\n *\n * @api private\n */\nexport const NODE_USE_ARN_REGION_CONFIG_OPTIONS: LoadedConfigSelectors = {\n environmentVariableSelector: (env: NodeJS.ProcessEnv) => {\n if (!Object.prototype.hasOwnProperty.call(env, NODE_USE_ARN_REGION_ENV_NAME)) return undefined;\n if (env[NODE_USE_ARN_REGION_ENV_NAME] === \"true\") return true;\n if (env[NODE_USE_ARN_REGION_ENV_NAME] === \"false\") return false;\n throw new Error(\n `Cannot load env ${NODE_USE_ARN_REGION_ENV_NAME}. Expected \"true\" or \"false\", got ${env[NODE_USE_ARN_REGION_ENV_NAME]}.`\n );\n },\n configFileSelector: (profile) => {\n if (!Object.prototype.hasOwnProperty.call(profile, NODE_USE_ARN_REGION_INI_NAME)) return undefined;\n if (profile[NODE_USE_ARN_REGION_INI_NAME] === \"true\") return true;\n if (profile[NODE_USE_ARN_REGION_INI_NAME] === \"false\") return false;\n throw new Error(\n `Cannot load shared config entry ${NODE_USE_ARN_REGION_INI_NAME}. Expected \"true\" or \"false\", got ${profile[NODE_USE_ARN_REGION_INI_NAME]}.`\n );\n },\n default: false,\n};\n","import {\n\tCredentials,\n\tICredentials,\n\tLogger,\n\tgetAmplifyUserAgent,\n} from '@aws-amplify/core';\nimport { StorageAccessLevel, CustomPrefix } from '../types';\nimport {\n\tInitializeMiddleware,\n\tInitializeHandlerOptions,\n\tFinalizeRequestHandlerOptions,\n\tFinalizeRequestMiddleware,\n\tHandlerExecutionContext,\n} from '@aws-sdk/types';\nimport { S3ClientConfig, S3Client } from '@aws-sdk/client-s3';\nimport { CancelTokenSource } from 'axios';\nimport * as events from 'events';\nimport { AxiosHttpHandler } from '../providers/axios-http-handler';\nimport {\n\tlocalTestingStorageEndpoint,\n\tSET_CONTENT_LENGTH_HEADER,\n} from './StorageConstants';\n\nconst logger = new Logger('S3ClientUtils');\n// placeholder credentials in order to satisfy type requirement, always results in 403 when used\nconst INVALID_CRED = { accessKeyId: '', secretAccessKey: '' };\n\nexport const getPrefix = (config: {\n\tcredentials: ICredentials;\n\tlevel?: StorageAccessLevel;\n\tcustomPrefix?: CustomPrefix;\n\tidentityId?: string;\n}): string => {\n\tconst { credentials, level, customPrefix, identityId } = config;\n\n\tconst resolvedCustomPrefix = customPrefix || {};\n\tconst resolvedIdentityId = identityId || credentials.identityId;\n\tconst privatePath =\n\t\t(resolvedCustomPrefix.private !== undefined\n\t\t\t? resolvedCustomPrefix.private\n\t\t\t: 'private/') +\n\t\tresolvedIdentityId +\n\t\t'/';\n\tconst protectedPath =\n\t\t(resolvedCustomPrefix.protected !== undefined\n\t\t\t? resolvedCustomPrefix.protected\n\t\t\t: 'protected/') +\n\t\tresolvedIdentityId +\n\t\t'/';\n\tconst publicPath =\n\t\tresolvedCustomPrefix.public !== undefined\n\t\t\t? resolvedCustomPrefix.public\n\t\t\t: 'public/';\n\n\tswitch (level) {\n\t\tcase 'private':\n\t\t\treturn privatePath;\n\t\tcase 'protected':\n\t\t\treturn protectedPath;\n\t\tdefault:\n\t\t\treturn publicPath;\n\t}\n};\n\nexport const createPrefixMiddleware = (\n\topt: Record,\n\tkey: string\n): InitializeMiddleware => (next, _context) => async args => {\n\tconst credentials = await Credentials.get();\n\tconst cred = Credentials.shear(credentials);\n\tconst prefix = getPrefix({ ...opt, credentials: cred });\n\tconst clonedInput = Object.assign({}, args.input);\n\tif (Object.prototype.hasOwnProperty.call(args.input, 'Key')) {\n\t\tclonedInput.Key = prefix + key;\n\t\targs.input = clonedInput;\n\t} else if (Object.prototype.hasOwnProperty.call(args.input, 'Prefix')) {\n\t\tclonedInput.Prefix = prefix + key;\n\t\targs.input = clonedInput;\n\t}\n\tconst result = next(args);\n\treturn result;\n};\n\nconst isTimeSkewedError = (err: any): boolean =>\n\terr.ServerTime &&\n\ttypeof err.Code === 'string' &&\n\terr.Code === 'RequestTimeTooSkewed';\n\n// we want to take the S3Client config in parameter so we can modify it's systemClockOffset\nexport const autoAdjustClockskewMiddleware = (\n\tconfig: S3ClientConfig\n): FinalizeRequestMiddleware => (\n\tnext,\n\t_context: HandlerExecutionContext\n) => async args => {\n\ttry {\n\t\treturn await next(args);\n\t} catch (err) {\n\t\tif (isTimeSkewedError(err)) {\n\t\t\tconst serverDate = new Date(err.ServerTime);\n\t\t\tconfig.systemClockOffset = serverDate.getTime() - Date.now();\n\t\t}\n\t\tthrow err;\n\t}\n};\n\nexport const autoAdjustClockskewMiddlewareOptions: FinalizeRequestHandlerOptions = {\n\tstep: 'finalizeRequest',\n\tname: 'autoAdjustClockskewMiddleware',\n};\n\nexport const prefixMiddlewareOptions: InitializeHandlerOptions = {\n\tstep: 'initialize',\n\tname: 'addPrefixMiddleware',\n};\n\nexport const credentialsProvider = async () => {\n\ttry {\n\t\tconst credentials = await Credentials.get();\n\t\tif (!credentials) return INVALID_CRED;\n\t\tconst cred = Credentials.shear(credentials);\n\t\tlogger.debug('credentials provider get credentials', cred);\n\t\treturn cred;\n\t} catch (error) {\n\t\tlogger.warn('credentials provider error', error);\n\t\treturn INVALID_CRED;\n\t}\n};\n\nexport const createS3Client = (\n\tconfig: {\n\t\tregion?: string;\n\t\tcancelTokenSource?: CancelTokenSource;\n\t\tdangerouslyConnectToHttpEndpointForTesting?: boolean;\n\t\tuseAccelerateEndpoint?: boolean;\n\t},\n\temitter?: events.EventEmitter\n): S3Client => {\n\tconst {\n\t\tregion,\n\t\tcancelTokenSource,\n\t\tdangerouslyConnectToHttpEndpointForTesting,\n\t\tuseAccelerateEndpoint,\n\t} = config;\n\tlet localTestingConfig = {};\n\n\tif (dangerouslyConnectToHttpEndpointForTesting) {\n\t\tlocalTestingConfig = {\n\t\t\tendpoint: localTestingStorageEndpoint,\n\t\t\ttls: false,\n\t\t\tbucketEndpoint: false,\n\t\t\tforcePathStyle: true,\n\t\t};\n\t}\n\n\tconst s3client = new S3Client({\n\t\tregion,\n\t\t// Using provider instead of a static credentials, so that if an upload task was in progress, but credentials gets\n\t\t// changed or invalidated (e.g user signed out), the subsequent requests will fail.\n\t\tcredentials: credentialsProvider,\n\t\tcustomUserAgent: getAmplifyUserAgent(),\n\t\t...localTestingConfig,\n\t\trequestHandler: new AxiosHttpHandler({}, emitter, cancelTokenSource),\n\t\tuseAccelerateEndpoint,\n\t});\n\ts3client.middlewareStack.remove(SET_CONTENT_LENGTH_HEADER);\n\treturn s3client;\n};\n","import { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from \"../S3Client\";\nimport { PutObjectOutput, PutObjectRequest } from \"../models/models_0\";\nimport { deserializeAws_restXmlPutObjectCommand, serializeAws_restXmlPutObjectCommand } from \"../protocols/Aws_restXml\";\nimport { getBucketEndpointPlugin } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { getSsecPlugin } from \"@aws-sdk/middleware-ssec\";\nimport { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from \"@aws-sdk/protocol-http\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nimport {\n FinalizeHandlerArguments,\n Handler,\n HandlerExecutionContext,\n MiddlewareStack,\n HttpHandlerOptions as __HttpHandlerOptions,\n MetadataBearer as __MetadataBearer,\n SerdeContext as __SerdeContext,\n} from \"@aws-sdk/types\";\n\nexport type PutObjectCommandInput = Omit & {\n Body?: PutObjectRequest[\"Body\"] | string | Uint8Array | Buffer;\n};\nexport type PutObjectCommandOutput = PutObjectOutput & __MetadataBearer;\n\n/**\n *

Adds an object to a bucket. You must have WRITE permissions on a bucket to add an object\n * to it.

\n *\n *\n *

Amazon S3 never adds partial objects; if you receive a success response, Amazon S3 added the\n * entire object to the bucket.

\n *\n *

Amazon S3 is a distributed system. If it receives multiple write requests for the same object\n * simultaneously, it overwrites all but the last object written. Amazon S3 does not provide object\n * locking; if you need this, make sure to build it into your application layer or use\n * versioning instead.

\n *\n *

To ensure that data is not corrupted traversing the network, use the\n * Content-MD5 header. When you use this header, Amazon S3 checks the object\n * against the provided MD5 value and, if they do not match, returns an error. Additionally,\n * you can calculate the MD5 while putting an object to Amazon S3 and compare the returned ETag to\n * the calculated MD5 value.

\n * \n *

The Content-MD5 header is required for any request to upload an object\n * with a retention period configured using Amazon S3 Object Lock. For more information about\n * Amazon S3 Object Lock, see Amazon S3 Object Lock Overview\n * in the Amazon Simple Storage Service Developer Guide.

\n *
\n *\n *\n *

\n * Server-side Encryption\n *

\n *

You can optionally request server-side encryption. With server-side encryption, Amazon S3 encrypts your data as it writes it to disks in its data centers and decrypts the data\n * when you access it. You have the option to provide your own encryption key or use AWS\n * managed encryption keys (SSE-S3 or SSE-KMS). For more information, see Using Server-Side\n * Encryption.

\n *

If you request server-side encryption using AWS Key Management Service (SSE-KMS), you can enable an S3 Bucket Key at the object-level. For more information, see Amazon S3 Bucket Keys in the Amazon Simple Storage Service Developer Guide.

\n *

\n * Access Control List (ACL)-Specific Request\n * Headers\n *

\n *

You can use headers to grant ACL- based permissions. By default, all objects are\n * private. Only the owner has full access control. When adding a new object, you can grant\n * permissions to individual AWS accounts or to predefined groups defined by Amazon S3. These\n * permissions are then added to the ACL on the object. For more information, see Access Control List\n * (ACL) Overview and Managing ACLs Using the REST\n * API.

\n *\n *

\n * Storage Class Options\n *

\n *

By default, Amazon S3 uses the STANDARD Storage Class to store newly created objects. The\n * STANDARD storage class provides high durability and high availability. Depending on\n * performance needs, you can specify a different Storage Class. Amazon S3 on Outposts only uses\n * the OUTPOSTS Storage Class. For more information, see Storage Classes in the Amazon S3\n * Service Developer Guide.

\n *\n *\n *

\n * Versioning\n *

\n *

If you enable versioning for a bucket, Amazon S3 automatically generates a unique version ID\n * for the object being stored. Amazon S3 returns this ID in the response. When you enable\n * versioning for a bucket, if Amazon S3 receives multiple write requests for the same object\n * simultaneously, it stores all of the objects.

\n *

For more information about versioning, see Adding Objects to\n * Versioning Enabled Buckets. For information about returning the versioning state\n * of a bucket, see GetBucketVersioning.

\n *\n *\n *

\n * Related Resources\n *

\n * \n */\nexport class PutObjectCommand extends $Command {\n // Start section: command_properties\n // End section: command_properties\n\n constructor(readonly input: PutObjectCommandInput) {\n // Start section: command_constructor\n super();\n // End section: command_constructor\n }\n\n /**\n * @internal\n */\n resolveMiddleware(\n clientStack: MiddlewareStack,\n configuration: S3ClientResolvedConfig,\n options?: __HttpHandlerOptions\n ): Handler {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use(getSsecPlugin(configuration));\n this.middlewareStack.use(getBucketEndpointPlugin(configuration));\n\n const stack = clientStack.concat(this.middlewareStack);\n\n const { logger } = configuration;\n const clientName = \"S3Client\";\n const commandName = \"PutObjectCommand\";\n const handlerExecutionContext: HandlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: PutObjectRequest.filterSensitiveLog,\n outputFilterSensitiveLog: PutObjectOutput.filterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve(\n (request: FinalizeHandlerArguments) =>\n requestHandler.handle(request.request as __HttpRequest, options || {}),\n handlerExecutionContext\n );\n }\n\n private serialize(input: PutObjectCommandInput, context: __SerdeContext): Promise<__HttpRequest> {\n return serializeAws_restXmlPutObjectCommand(input, context);\n }\n\n private deserialize(output: __HttpResponse, context: __SerdeContext): Promise {\n return deserializeAws_restXmlPutObjectCommand(output, context);\n }\n\n // Start section: command_body_extra\n // End section: command_body_extra\n}\n","import { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from \"../S3Client\";\nimport { CreateMultipartUploadOutput, CreateMultipartUploadRequest } from \"../models/models_0\";\nimport {\n deserializeAws_restXmlCreateMultipartUploadCommand,\n serializeAws_restXmlCreateMultipartUploadCommand,\n} from \"../protocols/Aws_restXml\";\nimport { getBucketEndpointPlugin } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { getSsecPlugin } from \"@aws-sdk/middleware-ssec\";\nimport { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from \"@aws-sdk/protocol-http\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nimport {\n FinalizeHandlerArguments,\n Handler,\n HandlerExecutionContext,\n MiddlewareStack,\n HttpHandlerOptions as __HttpHandlerOptions,\n MetadataBearer as __MetadataBearer,\n SerdeContext as __SerdeContext,\n} from \"@aws-sdk/types\";\n\nexport type CreateMultipartUploadCommandInput = CreateMultipartUploadRequest;\nexport type CreateMultipartUploadCommandOutput = CreateMultipartUploadOutput & __MetadataBearer;\n\n/**\n *

This operation initiates a multipart upload and returns an upload ID. This upload ID is\n * used to associate all of the parts in the specific multipart upload. You specify this\n * upload ID in each of your subsequent upload part requests (see UploadPart). You also include this\n * upload ID in the final request to either complete or abort the multipart upload\n * request.

\n *\n *

For more information about multipart uploads, see Multipart Upload Overview.

\n *\n *

If you have configured a lifecycle rule to abort incomplete multipart uploads, the\n * upload must complete within the number of days specified in the bucket lifecycle\n * configuration. Otherwise, the incomplete multipart upload becomes eligible for an abort\n * operation and Amazon S3 aborts the multipart upload. For more information, see Aborting\n * Incomplete Multipart Uploads Using a Bucket Lifecycle Policy.

\n *\n *

For information about the permissions required to use the multipart upload API, see\n * Multipart Upload API and\n * Permissions.

\n *\n *

For request signing, multipart upload is just a series of regular requests. You initiate\n * a multipart upload, send one or more requests to upload parts, and then complete the\n * multipart upload process. You sign each request individually. There is nothing special\n * about signing multipart upload requests. For more information about signing, see Authenticating\n * Requests (AWS Signature Version 4).

\n *\n * \n *

After you initiate a multipart upload and upload one or more parts, to stop being\n * charged for storing the uploaded parts, you must either complete or abort the multipart\n * upload. Amazon S3 frees up the space used to store the parts and stop charging you for\n * storing them only after you either complete or abort a multipart upload.

\n *
\n *\n *

You can optionally request server-side encryption. For server-side encryption, Amazon S3\n * encrypts your data as it writes it to disks in its data centers and decrypts it when you\n * access it. You can provide your own encryption key, or use AWS Key Management Service (AWS\n * KMS) customer master keys (CMKs) or Amazon S3-managed encryption keys. If you choose to provide\n * your own encryption key, the request headers you provide in UploadPart and UploadPartCopy requests must match the headers you used in the request to\n * initiate the upload by using CreateMultipartUpload.

\n *

To perform a multipart upload with encryption using an AWS KMS CMK, the requester must\n * have permission to the kms:Encrypt, kms:Decrypt,\n * kms:ReEncrypt*, kms:GenerateDataKey*, and\n * kms:DescribeKey actions on the key. These permissions are required because\n * Amazon S3 must decrypt and read data from the encrypted file parts before it completes the\n * multipart upload.

\n *\n *

If your AWS Identity and Access Management (IAM) user or role is in the same AWS account\n * as the AWS KMS CMK, then you must have these permissions on the key policy. If your IAM\n * user or role belongs to a different account than the key, then you must have the\n * permissions on both the key policy and your IAM user or role.

\n *\n *\n *

For more information, see Protecting\n * Data Using Server-Side Encryption.

\n *\n *
\n *
Access Permissions
\n *
\n *

When copying an object, you can optionally specify the accounts or groups that\n * should be granted specific permissions on the new object. There are two ways to\n * grant the permissions using the request headers:

\n *
    \n *
  • \n *

    Specify a canned ACL with the x-amz-acl request header. For\n * more information, see Canned ACL.

    \n *
  • \n *
  • \n *

    Specify access permissions explicitly with the\n * x-amz-grant-read, x-amz-grant-read-acp,\n * x-amz-grant-write-acp, and\n * x-amz-grant-full-control headers. These parameters map to\n * the set of permissions that Amazon S3 supports in an ACL. For more information,\n * see Access Control List (ACL)\n * Overview.

    \n *
  • \n *
\n *

You can use either a canned ACL or specify access permissions explicitly. You\n * cannot do both.

\n *
\n *
Server-Side- Encryption-Specific Request Headers
\n *
\n *

You can optionally tell Amazon S3 to encrypt data at rest using server-side\n * encryption. Server-side encryption is for data encryption at rest. Amazon S3 encrypts\n * your data as it writes it to disks in its data centers and decrypts it when you\n * access it. The option you use depends on whether you want to use AWS managed\n * encryption keys or provide your own encryption key.

\n *
    \n *
  • \n *

    Use encryption keys managed by Amazon S3 or customer master keys (CMKs) stored\n * in AWS Key Management Service (AWS KMS) – If you want AWS to manage the keys\n * used to encrypt data, specify the following headers in the request.

    \n *
      \n *
    • \n *

      x-amz-server-side-encryption

      \n *
    • \n *
    • \n *

      x-amz-server-side-encryption-aws-kms-key-id

      \n *
    • \n *
    • \n *

      x-amz-server-side-encryption-context

      \n *
    • \n *
    \n * \n *

    If you specify x-amz-server-side-encryption:aws:kms, but\n * don't provide x-amz-server-side-encryption-aws-kms-key-id,\n * Amazon S3 uses the AWS managed CMK in AWS KMS to protect the data.

    \n *
    \n * \n *

    All GET and PUT requests for an object protected by AWS KMS fail if\n * you don't make them with SSL or by using SigV4.

    \n *
    \n *

    For more information about server-side encryption with CMKs stored in AWS\n * KMS (SSE-KMS), see Protecting Data Using Server-Side Encryption with CMKs stored in AWS\n * KMS.

    \n *
  • \n *
  • \n *

    Use customer-provided encryption keys – If you want to manage your own\n * encryption keys, provide all the following headers in the request.

    \n *
      \n *
    • \n *

      x-amz-server-side-encryption-customer-algorithm

      \n *
    • \n *
    • \n *

      x-amz-server-side-encryption-customer-key

      \n *
    • \n *
    • \n *

      x-amz-server-side-encryption-customer-key-MD5

      \n *
    • \n *
    \n *

    For more information about server-side encryption with CMKs stored in AWS\n * KMS (SSE-KMS), see Protecting Data Using Server-Side Encryption with CMKs stored in AWS\n * KMS.

    \n *
  • \n *
\n *
\n *
Access-Control-List (ACL)-Specific Request Headers
\n *
\n *

You also can use the following access control–related headers with this\n * operation. By default, all objects are private. Only the owner has full access\n * control. When adding a new object, you can grant permissions to individual AWS\n * accounts or to predefined groups defined by Amazon S3. These permissions are then added\n * to the access control list (ACL) on the object. For more information, see Using ACLs. With this\n * operation, you can grant access permissions using one of the following two\n * methods:

\n *
    \n *
  • \n *

    Specify a canned ACL (x-amz-acl) — Amazon S3 supports a set of\n * predefined ACLs, known as canned ACLs. Each canned ACL\n * has a predefined set of grantees and permissions. For more information, see\n * Canned\n * ACL.

    \n *
  • \n *
  • \n *

    Specify access permissions explicitly — To explicitly grant access\n * permissions to specific AWS accounts or groups, use the following headers.\n * Each header maps to specific permissions that Amazon S3 supports in an ACL. For\n * more information, see Access\n * Control List (ACL) Overview. In the header, you specify a list of\n * grantees who get the specific permission. To grant permissions explicitly,\n * use:

    \n *
      \n *
    • \n *

      x-amz-grant-read

      \n *
    • \n *
    • \n *

      x-amz-grant-write

      \n *
    • \n *
    • \n *

      x-amz-grant-read-acp

      \n *
    • \n *
    • \n *

      x-amz-grant-write-acp

      \n *
    • \n *
    • \n *

      x-amz-grant-full-control

      \n *
    • \n *
    \n *

    You specify each grantee as a type=value pair, where the type is one of\n * the following:

    \n *
      \n *
    • \n *

      \n * id – if the value specified is the canonical user ID\n * of an AWS account

      \n *
    • \n *
    • \n *

      \n * uri – if you are granting permissions to a predefined\n * group

      \n *
    • \n *
    • \n *

      \n * emailAddress – if the value specified is the email\n * address of an AWS account

      \n * \n *

      Using email addresses to specify a grantee is only supported in the following AWS Regions:

      \n *
        \n *
      • \n *

        US East (N. Virginia)

        \n *
      • \n *
      • \n *

        US West (N. California)

        \n *
      • \n *
      • \n *

        US West (Oregon)

        \n *
      • \n *
      • \n *

        Asia Pacific (Singapore)

        \n *
      • \n *
      • \n *

        Asia Pacific (Sydney)

        \n *
      • \n *
      • \n *

        Asia Pacific (Tokyo)

        \n *
      • \n *
      • \n *

        Europe (Ireland)

        \n *
      • \n *
      • \n *

        South America (São Paulo)

        \n *
      • \n *
      \n *

      For a list of all the Amazon S3 supported Regions and endpoints, see Regions and Endpoints in the AWS General Reference.

      \n *
      \n *
    • \n *
    \n *

    For example, the following x-amz-grant-read header grants the AWS accounts identified by account IDs permissions to read object data and its metadata:

    \n *

    \n * x-amz-grant-read: id=\"11112222333\", id=\"444455556666\" \n *

    \n *
  • \n *
\n *\n *
\n *
\n *\n *

The following operations are related to CreateMultipartUpload:

\n * \n */\nexport class CreateMultipartUploadCommand extends $Command<\n CreateMultipartUploadCommandInput,\n CreateMultipartUploadCommandOutput,\n S3ClientResolvedConfig\n> {\n // Start section: command_properties\n // End section: command_properties\n\n constructor(readonly input: CreateMultipartUploadCommandInput) {\n // Start section: command_constructor\n super();\n // End section: command_constructor\n }\n\n /**\n * @internal\n */\n resolveMiddleware(\n clientStack: MiddlewareStack,\n configuration: S3ClientResolvedConfig,\n options?: __HttpHandlerOptions\n ): Handler {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use(getSsecPlugin(configuration));\n this.middlewareStack.use(getBucketEndpointPlugin(configuration));\n\n const stack = clientStack.concat(this.middlewareStack);\n\n const { logger } = configuration;\n const clientName = \"S3Client\";\n const commandName = \"CreateMultipartUploadCommand\";\n const handlerExecutionContext: HandlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: CreateMultipartUploadRequest.filterSensitiveLog,\n outputFilterSensitiveLog: CreateMultipartUploadOutput.filterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve(\n (request: FinalizeHandlerArguments) =>\n requestHandler.handle(request.request as __HttpRequest, options || {}),\n handlerExecutionContext\n );\n }\n\n private serialize(input: CreateMultipartUploadCommandInput, context: __SerdeContext): Promise<__HttpRequest> {\n return serializeAws_restXmlCreateMultipartUploadCommand(input, context);\n }\n\n private deserialize(output: __HttpResponse, context: __SerdeContext): Promise {\n return deserializeAws_restXmlCreateMultipartUploadCommand(output, context);\n }\n\n // Start section: command_body_extra\n // End section: command_body_extra\n}\n","import { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from \"../S3Client\";\nimport { UploadPartOutput, UploadPartRequest } from \"../models/models_1\";\nimport {\n deserializeAws_restXmlUploadPartCommand,\n serializeAws_restXmlUploadPartCommand,\n} from \"../protocols/Aws_restXml\";\nimport { getBucketEndpointPlugin } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { getSsecPlugin } from \"@aws-sdk/middleware-ssec\";\nimport { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from \"@aws-sdk/protocol-http\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nimport {\n FinalizeHandlerArguments,\n Handler,\n HandlerExecutionContext,\n MiddlewareStack,\n HttpHandlerOptions as __HttpHandlerOptions,\n MetadataBearer as __MetadataBearer,\n SerdeContext as __SerdeContext,\n} from \"@aws-sdk/types\";\n\nexport type UploadPartCommandInput = Omit & {\n Body?: UploadPartRequest[\"Body\"] | string | Uint8Array | Buffer;\n};\nexport type UploadPartCommandOutput = UploadPartOutput & __MetadataBearer;\n\n/**\n *

Uploads a part in a multipart upload.

\n * \n *

In this operation, you provide part data in your request. However, you have an option\n * to specify your existing Amazon S3 object as a data source for the part you are uploading. To\n * upload a part from an existing object, you use the UploadPartCopy operation.\n *

\n *
\n *\n *

You must initiate a multipart upload (see CreateMultipartUpload)\n * before you can upload any part. In response to your initiate request, Amazon S3 returns an\n * upload ID, a unique identifier, that you must include in your upload part request.

\n *

Part numbers can be any number from 1 to 10,000, inclusive. A part number uniquely\n * identifies a part and also defines its position within the object being created. If you\n * upload a new part using the same part number that was used with a previous part, the\n * previously uploaded part is overwritten. Each part must be at least 5 MB in size, except\n * the last part. There is no size limit on the last part of your multipart upload.

\n *

To ensure that data is not corrupted when traversing the network, specify the\n * Content-MD5 header in the upload part request. Amazon S3 checks the part data\n * against the provided MD5 value. If they do not match, Amazon S3 returns an error.

\n *\n *

If the upload request is signed with Signature Version 4, then AWS S3 uses the\n * x-amz-content-sha256 header as a checksum instead of\n * Content-MD5. For more information see Authenticating Requests: Using the Authorization Header (AWS Signature Version\n * 4).

\n *\n *\n *\n *

\n * Note: After you initiate multipart upload and upload\n * one or more parts, you must either complete or abort multipart upload in order to stop\n * getting charged for storage of the uploaded parts. Only after you either complete or abort\n * multipart upload, Amazon S3 frees up the parts storage and stops charging you for the parts\n * storage.

\n *\n *

For more information on multipart uploads, go to Multipart Upload Overview in the\n * Amazon Simple Storage Service Developer Guide .

\n *

For information on the permissions required to use the multipart upload API, go to\n * Multipart Upload API and\n * Permissions in the Amazon Simple Storage Service Developer Guide.

\n *\n *

You can optionally request server-side encryption where Amazon S3 encrypts your data as it\n * writes it to disks in its data centers and decrypts it for you when you access it. You have\n * the option of providing your own encryption key, or you can use the AWS managed encryption\n * keys. If you choose to provide your own encryption key, the request headers you provide in\n * the request must match the headers you used in the request to initiate the upload by using\n * CreateMultipartUpload. For more information, go to Using Server-Side Encryption in\n * the Amazon Simple Storage Service Developer Guide.

\n *\n *

Server-side encryption is supported by the S3 Multipart Upload actions. Unless you are\n * using a customer-provided encryption key, you don't need to specify the encryption\n * parameters in each UploadPart request. Instead, you only need to specify the server-side\n * encryption parameters in the initial Initiate Multipart request. For more information, see\n * CreateMultipartUpload.

\n *\n *

If you requested server-side encryption using a customer-provided encryption key in your\n * initiate multipart upload request, you must provide identical encryption information in\n * each part upload using the following headers.

\n *\n *\n *
    \n *
  • \n *

    x-amz-server-side-encryption-customer-algorithm

    \n *
  • \n *
  • \n *

    x-amz-server-side-encryption-customer-key

    \n *
  • \n *
  • \n *

    x-amz-server-side-encryption-customer-key-MD5

    \n *
  • \n *
\n *\n *

\n * Special Errors\n *

\n *
    \n *
  • \n *
      \n *
    • \n *

      \n * Code: NoSuchUpload\n *

      \n *
    • \n *
    • \n *

      \n * Cause: The specified multipart upload does not exist. The upload\n * ID might be invalid, or the multipart upload might have been aborted or\n * completed.\n *

      \n *
    • \n *
    • \n *

      \n * HTTP Status Code: 404 Not Found \n *

      \n *
    • \n *
    • \n *

      \n * SOAP Fault Code Prefix: Client\n *

      \n *
    • \n *
    \n *
  • \n *
\n *\n *\n *\n *\n *\n *\n *

\n * Related Resources\n *

\n * \n */\nexport class UploadPartCommand extends $Command<\n UploadPartCommandInput,\n UploadPartCommandOutput,\n S3ClientResolvedConfig\n> {\n // Start section: command_properties\n // End section: command_properties\n\n constructor(readonly input: UploadPartCommandInput) {\n // Start section: command_constructor\n super();\n // End section: command_constructor\n }\n\n /**\n * @internal\n */\n resolveMiddleware(\n clientStack: MiddlewareStack,\n configuration: S3ClientResolvedConfig,\n options?: __HttpHandlerOptions\n ): Handler {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use(getSsecPlugin(configuration));\n this.middlewareStack.use(getBucketEndpointPlugin(configuration));\n\n const stack = clientStack.concat(this.middlewareStack);\n\n const { logger } = configuration;\n const clientName = \"S3Client\";\n const commandName = \"UploadPartCommand\";\n const handlerExecutionContext: HandlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: UploadPartRequest.filterSensitiveLog,\n outputFilterSensitiveLog: UploadPartOutput.filterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve(\n (request: FinalizeHandlerArguments) =>\n requestHandler.handle(request.request as __HttpRequest, options || {}),\n handlerExecutionContext\n );\n }\n\n private serialize(input: UploadPartCommandInput, context: __SerdeContext): Promise<__HttpRequest> {\n return serializeAws_restXmlUploadPartCommand(input, context);\n }\n\n private deserialize(output: __HttpResponse, context: __SerdeContext): Promise {\n return deserializeAws_restXmlUploadPartCommand(output, context);\n }\n\n // Start section: command_body_extra\n // End section: command_body_extra\n}\n","import {\n\tUploadPartCommandInput,\n\tCompletedPart,\n\tS3Client,\n\tUploadPartCommand,\n\tCompleteMultipartUploadCommand,\n\tPart,\n\tAbortMultipartUploadCommand,\n\tListPartsCommand,\n\tCreateMultipartUploadCommand,\n\tPutObjectCommandInput,\n\tListObjectsV2Command,\n} from '@aws-sdk/client-s3';\nimport * as events from 'events';\nimport axios, { Canceler, CancelTokenSource } from 'axios';\nimport { HttpHandlerOptions } from '@aws-sdk/types';\nimport { Logger } from '@aws-amplify/core';\nimport { UploadTask } from '../types/Provider';\nimport { byteLength, isFile } from '../common/StorageUtils';\nimport { AWSS3ProviderUploadErrorStrings } from '../common/StorageErrorStrings';\nimport {\n\tSET_CONTENT_LENGTH_HEADER,\n\tUPLOADS_STORAGE_KEY,\n} from '../common/StorageConstants';\nimport { StorageAccessLevel } from '..';\n\nconst logger = new Logger('AWSS3UploadTask');\nexport enum AWSS3UploadTaskState {\n\tINIT,\n\tIN_PROGRESS,\n\tPAUSED,\n\tCANCELLED,\n\tCOMPLETED,\n}\n\nexport enum TaskEvents {\n\tCANCEL = 'cancel',\n\tUPLOAD_COMPLETE = 'uploadComplete',\n\tUPLOAD_PROGRESS = 'uploadPartProgress',\n\tERROR = 'error',\n}\n\nexport interface AWSS3UploadTaskParams {\n\ts3Client: S3Client;\n\tfile: Blob;\n\tstorage: Storage;\n\tlevel: StorageAccessLevel;\n\tparams: PutObjectCommandInput;\n\tprefixPromise: Promise;\n\temitter?: events.EventEmitter;\n}\n\nexport interface InProgressRequest {\n\tuploadPartInput: UploadPartCommandInput;\n\ts3Request: Promise;\n\tcancel: Canceler;\n}\n\nexport interface UploadTaskCompleteEvent {\n\tkey: string;\n}\n\nexport interface UploadTaskProgressEvent {\n\t/**\n\t * bytes that has been sent to S3 so far\n\t */\n\tloaded: number;\n\t/**\n\t * total bytes that needs to be sent to S3\n\t */\n\ttotal: number;\n}\n\nexport interface FileMetadata {\n\tbucket: string;\n\tfileName: string;\n\tkey: string;\n\t// Unix timestamp in ms\n\tlastTouched: number;\n\tuploadId: string;\n}\n\n// maximum number of parts per upload request according the S3 spec,\n// see: https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html\nconst MAX_PARTS = 10000;\n// 5MB in bytes\nconst PART_SIZE = 5 * 1024 * 1024;\nconst DEFAULT_QUEUE_SIZE = 4;\n\nfunction comparePartNumber(a: CompletedPart, b: CompletedPart) {\n\treturn a.PartNumber - b.PartNumber;\n}\n\nexport class AWSS3UploadTask implements UploadTask {\n\tprivate readonly emitter: events.EventEmitter;\n\tprivate readonly file: Blob;\n\tprivate readonly partSize: number = PART_SIZE;\n\tprivate readonly queueSize = DEFAULT_QUEUE_SIZE;\n\tprivate readonly s3client: S3Client;\n\tprivate readonly storage: Storage;\n\tprivate readonly storageSync: Promise;\n\tprivate readonly fileId: string;\n\tprivate readonly params: PutObjectCommandInput;\n\tprivate readonly prefixPromise: Promise;\n\tprivate inProgress: InProgressRequest[] = [];\n\tprivate completedParts: CompletedPart[] = [];\n\tprivate queued: UploadPartCommandInput[] = [];\n\tprivate bytesUploaded: number = 0;\n\tprivate totalBytes: number = 0;\n\tprivate uploadId: string;\n\n\tpublic state: AWSS3UploadTaskState = AWSS3UploadTaskState.INIT;\n\n\tconstructor({\n\t\ts3Client,\n\t\tfile,\n\t\temitter,\n\t\tstorage,\n\t\tparams,\n\t\tlevel,\n\t\tprefixPromise,\n\t}: AWSS3UploadTaskParams) {\n\t\tthis.prefixPromise = prefixPromise;\n\t\tthis.s3client = s3Client;\n\t\tthis.s3client.middlewareStack.remove(SET_CONTENT_LENGTH_HEADER);\n\t\tthis.storage = storage;\n\t\tthis.storageSync = Promise.resolve();\n\t\tif (typeof this.storage['sync'] === 'function') {\n\t\t\tthis.storageSync = this.storage['sync']();\n\t\t}\n\t\tthis.params = params;\n\t\tthis.file = file;\n\t\tthis.totalBytes = this.file.size;\n\t\tthis.bytesUploaded = 0;\n\t\tthis.emitter = emitter;\n\t\tthis.queued = [];\n\t\tthis.fileId = this._getFileId(level);\n\t\tthis._validateParams();\n\t\t// event emitter will re-throw an error if an event emits an error unless there's a listener, attaching a no-op\n\t\t// function to it unless user adds their own onError callback\n\t\tthis.emitter.on(TaskEvents.ERROR, () => {});\n\t}\n\n\tget percent() {\n\t\treturn (this.bytesUploaded / this.totalBytes) * 100;\n\t}\n\n\tget isInProgress() {\n\t\treturn this.state === AWSS3UploadTaskState.IN_PROGRESS;\n\t}\n\n\tprivate async _listSingleFile({\n\t\tkey,\n\t\tbucket,\n\t}: {\n\t\tkey: string;\n\t\tbucket: string;\n\t}) {\n\t\tconst listObjectRes = await this.s3client.send(\n\t\t\tnew ListObjectsV2Command({\n\t\t\t\tBucket: bucket,\n\t\t\t\tPrefix: key,\n\t\t\t})\n\t\t);\n\t\tconst { Contents = [] } = listObjectRes;\n\t\tconst prefix = await this.prefixPromise;\n\t\tconst obj = Contents.find(o => o.Key === `${prefix}${key}`);\n\t\treturn obj;\n\t}\n\n\tprivate _getFileId(level: StorageAccessLevel): string {\n\t\t// We should check if it's a File first because File is also instance of a Blob\n\t\tif (isFile(this.file)) {\n\t\t\treturn [\n\t\t\t\tthis.file.name,\n\t\t\t\tthis.file.lastModified,\n\t\t\t\tthis.file.size,\n\t\t\t\tthis.file.type,\n\t\t\t\tthis.params.Bucket,\n\t\t\t\tlevel,\n\t\t\t\tthis.params.Key,\n\t\t\t].join('-');\n\t\t} else {\n\t\t\treturn [\n\t\t\t\tthis.file.size,\n\t\t\t\tthis.file.type,\n\t\t\t\tthis.params.Bucket,\n\t\t\t\tlevel,\n\t\t\t\tthis.params.Key,\n\t\t\t].join('-');\n\t\t}\n\t}\n\n\tprivate async _findCachedUploadParts(): Promise<{\n\t\tparts: Part[];\n\t\tuploadId: string;\n\t}> {\n\t\tconst uploadRequests = await this._listCachedUploadTasks();\n\n\t\tif (\n\t\t\tObject.keys(uploadRequests).length === 0 ||\n\t\t\t!Object.prototype.hasOwnProperty.call(uploadRequests, this.fileId)\n\t\t) {\n\t\t\treturn { parts: [], uploadId: null };\n\t\t}\n\n\t\tconst cachedUploadFileData = uploadRequests[this.fileId];\n\t\tcachedUploadFileData.lastTouched = Date.now();\n\t\tthis.storage.setItem(UPLOADS_STORAGE_KEY, JSON.stringify(uploadRequests));\n\n\t\tconst listPartsOutput = await this.s3client.send(\n\t\t\tnew ListPartsCommand({\n\t\t\t\tBucket: this.params.Bucket,\n\t\t\t\tKey: this.params.Key,\n\t\t\t\tUploadId: cachedUploadFileData.uploadId,\n\t\t\t})\n\t\t);\n\n\t\treturn {\n\t\t\tparts: listPartsOutput.Parts || [],\n\t\t\tuploadId: cachedUploadFileData.uploadId,\n\t\t};\n\t}\n\n\tprivate _emitEvent(event: string, payload: T) {\n\t\tthis.emitter.emit(event, payload);\n\t}\n\n\tprivate _validateParams() {\n\t\tif (this.file.size / this.partSize > MAX_PARTS) {\n\t\t\tthrow new Error(\n\t\t\t\t`Too many parts. Number of parts is ${this.file.size /\n\t\t\t\t\tthis.partSize}, maximum is ${MAX_PARTS}.`\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate async _listCachedUploadTasks(): Promise<\n\t\tRecord\n\t> {\n\t\tawait this.storageSync;\n\t\tconst tasks = this.storage.getItem(UPLOADS_STORAGE_KEY) || '{}';\n\t\treturn JSON.parse(tasks);\n\t}\n\n\tprivate async _cache(fileMetadata: FileMetadata): Promise {\n\t\tconst uploadRequests = await this._listCachedUploadTasks();\n\t\tuploadRequests[this.fileId] = fileMetadata;\n\t\tthis.storage.setItem(UPLOADS_STORAGE_KEY, JSON.stringify(uploadRequests));\n\t}\n\n\tprivate async _isCached(): Promise {\n\t\treturn Object.prototype.hasOwnProperty.call(\n\t\t\tawait this._listCachedUploadTasks(),\n\t\t\tthis.fileId\n\t\t);\n\t}\n\n\tprivate async _removeFromCache(): Promise {\n\t\tconst uploadRequests = await this._listCachedUploadTasks();\n\t\tdelete uploadRequests[this.fileId];\n\t\tthis.storage.setItem(UPLOADS_STORAGE_KEY, JSON.stringify(uploadRequests));\n\t}\n\n\tprivate async _onPartUploadCompletion({\n\t\teTag,\n\t\tpartNumber,\n\t\tchunk,\n\t}: {\n\t\teTag: string;\n\t\tpartNumber: number;\n\t\tchunk: UploadPartCommandInput['Body'];\n\t}) {\n\t\tthis.completedParts.push({\n\t\t\tETag: eTag,\n\t\t\tPartNumber: partNumber,\n\t\t});\n\t\tthis.bytesUploaded += byteLength(chunk);\n\t\tthis._emitEvent(TaskEvents.UPLOAD_PROGRESS, {\n\t\t\tloaded: this.bytesUploaded,\n\t\t\ttotal: this.totalBytes,\n\t\t});\n\t\t// Remove the completed item from the inProgress array\n\t\tthis.inProgress = this.inProgress.filter(\n\t\t\tjob => job.uploadPartInput.PartNumber !== partNumber\n\t\t);\n\t\tif (this.queued.length && this.state !== AWSS3UploadTaskState.PAUSED)\n\t\t\tthis._startNextPart();\n\t\tif (this._isDone()) this._completeUpload();\n\t}\n\n\tprivate async _completeUpload() {\n\t\ttry {\n\t\t\tawait this.s3client.send(\n\t\t\t\tnew CompleteMultipartUploadCommand({\n\t\t\t\t\tBucket: this.params.Bucket,\n\t\t\t\t\tKey: this.params.Key,\n\t\t\t\t\tUploadId: this.uploadId,\n\t\t\t\t\tMultipartUpload: {\n\t\t\t\t\t\t// Parts are not always completed in order, we need to manually sort them\n\t\t\t\t\t\tParts: this.completedParts.sort(comparePartNumber),\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t);\n\t\t\tthis._verifyFileSize();\n\t\t\tthis._emitEvent(TaskEvents.UPLOAD_COMPLETE, {\n\t\t\t\tkey: `${this.params.Bucket}/${this.params.Key}`,\n\t\t\t});\n\t\t\tthis._removeFromCache();\n\t\t\tthis.state = AWSS3UploadTaskState.COMPLETED;\n\t\t} catch (err) {\n\t\t\tlogger.error('error completing upload', err);\n\t\t\tthis._emitEvent(TaskEvents.ERROR, err);\n\t\t}\n\t}\n\n\tprivate async _makeUploadPartRequest(\n\t\tinput: UploadPartCommandInput,\n\t\tcancelTokenSource: CancelTokenSource\n\t) {\n\t\ttry {\n\t\t\tconst res = await this.s3client.send(new UploadPartCommand(input), {\n\t\t\t\tcancelTokenSource,\n\t\t\t} as HttpHandlerOptions);\n\t\t\tawait this._onPartUploadCompletion({\n\t\t\t\teTag: res.ETag,\n\t\t\t\tpartNumber: input.PartNumber,\n\t\t\t\tchunk: input.Body,\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tif (this.state === AWSS3UploadTaskState.PAUSED) {\n\t\t\t\tlogger.log('upload paused');\n\t\t\t} else if (this.state === AWSS3UploadTaskState.CANCELLED) {\n\t\t\t\tlogger.log('upload aborted');\n\t\t\t} else {\n\t\t\t\tlogger.error('error starting next part of upload: ', err);\n\t\t\t}\n\t\t\t// axios' cancel will also throw an error, however we don't need to emit an event in that case as it's an\n\t\t\t// expected behavior\n\t\t\tif (\n\t\t\t\t!axios.isCancel(err) &&\n\t\t\t\terr.message !== AWSS3ProviderUploadErrorStrings.UPLOAD_PAUSED_MESSAGE\n\t\t\t) {\n\t\t\t\tthis._emitEvent(TaskEvents.ERROR, err);\n\t\t\t\tthis.pause();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _startNextPart() {\n\t\tif (this.queued.length > 0 && this.state !== AWSS3UploadTaskState.PAUSED) {\n\t\t\tconst cancelTokenSource = axios.CancelToken.source();\n\t\t\tconst nextPart = this.queued.shift();\n\t\t\tthis.inProgress.push({\n\t\t\t\tuploadPartInput: nextPart,\n\t\t\t\ts3Request: this._makeUploadPartRequest(nextPart, cancelTokenSource),\n\t\t\t\tcancel: cancelTokenSource.cancel,\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Verify on S3 side that the file size matches the one on the client side.\n\t *\n\t * @async\n\t * @throws throws an error if the file size does not match between local copy of the file and the file on s3.\n\t */\n\tprivate async _verifyFileSize() {\n\t\tconst obj = await this._listSingleFile({\n\t\t\tkey: this.params.Key,\n\t\t\tbucket: this.params.Bucket,\n\t\t});\n\t\tconst valid = Boolean(obj && obj.Size === this.file.size);\n\t\tif (!valid) {\n\t\t\tthrow new Error(\n\t\t\t\t'File size does not match between local file and file on s3'\n\t\t\t);\n\t\t}\n\t\treturn valid;\n\t}\n\n\tprivate _isDone() {\n\t\treturn (\n\t\t\t!this.queued.length &&\n\t\t\t!this.inProgress.length &&\n\t\t\tthis.bytesUploaded === this.totalBytes\n\t\t);\n\t}\n\n\tprivate _createParts() {\n\t\tconst size = this.file.size;\n\t\tconst parts: UploadPartCommandInput[] = [];\n\t\tfor (let bodyStart = 0; bodyStart < size; ) {\n\t\t\tconst bodyEnd = Math.min(bodyStart + this.partSize, size);\n\t\t\tparts.push({\n\t\t\t\tBody: this.file.slice(bodyStart, bodyEnd),\n\t\t\t\tKey: this.params.Key,\n\t\t\t\tBucket: this.params.Bucket,\n\t\t\t\tPartNumber: parts.length + 1,\n\t\t\t\tUploadId: this.uploadId,\n\t\t\t});\n\t\t\tbodyStart += this.partSize;\n\t\t}\n\t\treturn parts;\n\t}\n\n\tprivate _initCachedUploadParts(cachedParts: Part[]) {\n\t\tthis.bytesUploaded += cachedParts.reduce((acc, part) => acc + part.Size, 0);\n\t\t// Find the set of part numbers that have already been uploaded\n\t\tconst uploadedPartNumSet = new Set(\n\t\t\tcachedParts.map(part => part.PartNumber)\n\t\t);\n\t\tthis.queued = this.queued.filter(\n\t\t\tpart => !uploadedPartNumSet.has(part.PartNumber)\n\t\t);\n\t\tthis.completedParts = cachedParts.map(part => ({\n\t\t\tPartNumber: part.PartNumber,\n\t\t\tETag: part.ETag,\n\t\t}));\n\t\tthis._emitEvent(TaskEvents.UPLOAD_PROGRESS, {\n\t\t\tloaded: this.bytesUploaded,\n\t\t\ttotal: this.totalBytes,\n\t\t});\n\t}\n\n\tprivate async _initMultipartUpload() {\n\t\tconst res = await this.s3client.send(\n\t\t\tnew CreateMultipartUploadCommand(this.params)\n\t\t);\n\t\tthis._cache({\n\t\t\tuploadId: res.UploadId,\n\t\t\tlastTouched: Date.now(),\n\t\t\tbucket: this.params.Bucket,\n\t\t\tkey: this.params.Key,\n\t\t\tfileName: this.file instanceof File ? this.file.name : '',\n\t\t});\n\t\treturn res.UploadId;\n\t}\n\n\tprivate async _initializeUploadTask() {\n\t\tthis.state = AWSS3UploadTaskState.IN_PROGRESS;\n\t\ttry {\n\t\t\tif (await this._isCached()) {\n\t\t\t\tconst { parts, uploadId } = await this._findCachedUploadParts();\n\t\t\t\tthis.uploadId = uploadId;\n\t\t\t\tthis.queued = this._createParts();\n\t\t\t\tthis._initCachedUploadParts(parts);\n\t\t\t\tthis._startUpload();\n\t\t\t} else {\n\t\t\t\tif (!this.uploadId) {\n\t\t\t\t\tconst uploadId = await this._initMultipartUpload();\n\t\t\t\t\tthis.uploadId = uploadId;\n\t\t\t\t\tthis.queued = this._createParts();\n\t\t\t\t\tthis._startUpload();\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tif (!axios.isCancel(err)) {\n\t\t\t\tlogger.error('Error initializing the upload task', err);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic resume(): void {\n\t\tif (this.state === AWSS3UploadTaskState.CANCELLED) {\n\t\t\tlogger.warn('This task has already been cancelled');\n\t\t} else if (this.state === AWSS3UploadTaskState.COMPLETED) {\n\t\t\tlogger.warn('This task has already been completed');\n\t\t} else if (this.state === AWSS3UploadTaskState.IN_PROGRESS) {\n\t\t\tlogger.warn('Upload task already in progress');\n\t\t\t// first time running resume, find any cached parts on s3 or start a new multipart upload request before\n\t\t\t// starting the upload\n\t\t} else if (!this.uploadId) {\n\t\t\tthis._initializeUploadTask();\n\t\t} else {\n\t\t\tthis._startUpload();\n\t\t}\n\t}\n\n\tprivate _startUpload() {\n\t\tthis.state = AWSS3UploadTaskState.IN_PROGRESS;\n\t\tfor (let i = 0; i < this.queueSize; i++) {\n\t\t\tthis._startNextPart();\n\t\t}\n\t}\n\n\tasync _cancel(): Promise {\n\t\tif (this.state === AWSS3UploadTaskState.CANCELLED) {\n\t\t\tlogger.warn('This task has already been cancelled');\n\t\t\treturn false;\n\t\t} else if (this.state === AWSS3UploadTaskState.COMPLETED) {\n\t\t\tlogger.warn('This task has already been completed');\n\t\t\treturn false;\n\t\t} else {\n\t\t\tthis.pause();\n\t\t\tthis.queued = [];\n\t\t\tthis.completedParts = [];\n\t\t\tthis.bytesUploaded = 0;\n\t\t\tthis.state = AWSS3UploadTaskState.CANCELLED;\n\t\t\ttry {\n\t\t\t\tawait this.s3client.send(\n\t\t\t\t\tnew AbortMultipartUploadCommand({\n\t\t\t\t\t\tBucket: this.params.Bucket,\n\t\t\t\t\t\tKey: this.params.Key,\n\t\t\t\t\t\tUploadId: this.uploadId,\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t\tawait this._removeFromCache();\n\t\t\t\treturn true;\n\t\t\t} catch (err) {\n\t\t\t\tlogger.error('Error cancelling upload task', err);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * pause this particular upload task\n\t **/\n\tpublic pause(): void {\n\t\tif (this.state === AWSS3UploadTaskState.CANCELLED) {\n\t\t\tlogger.warn('This task has already been cancelled');\n\t\t} else if (this.state === AWSS3UploadTaskState.COMPLETED) {\n\t\t\tlogger.warn('This task has already been completed');\n\t\t} else if (this.state === AWSS3UploadTaskState.PAUSED) {\n\t\t\tlogger.warn('This task is already paused');\n\t\t}\n\t\tthis.state = AWSS3UploadTaskState.PAUSED;\n\t\t// Use axios cancel token to abort the part request immediately\n\t\t// Add the inProgress parts back to pending\n\t\tconst removedInProgressReq = this.inProgress.splice(\n\t\t\t0,\n\t\t\tthis.inProgress.length\n\t\t);\n\t\tremovedInProgressReq.forEach(req => {\n\t\t\treq.cancel(AWSS3ProviderUploadErrorStrings.UPLOAD_PAUSED_MESSAGE);\n\t\t});\n\t\t// Put all removed in progress parts back into the queue\n\t\tthis.queued.unshift(\n\t\t\t...removedInProgressReq.map(req => req.uploadPartInput)\n\t\t);\n\t}\n}\n","import { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from \"../S3Client\";\nimport { CompleteMultipartUploadOutput, CompleteMultipartUploadRequest } from \"../models/models_0\";\nimport {\n deserializeAws_restXmlCompleteMultipartUploadCommand,\n serializeAws_restXmlCompleteMultipartUploadCommand,\n} from \"../protocols/Aws_restXml\";\nimport { getBucketEndpointPlugin } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getThrow200ExceptionsPlugin } from \"@aws-sdk/middleware-sdk-s3\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from \"@aws-sdk/protocol-http\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nimport {\n FinalizeHandlerArguments,\n Handler,\n HandlerExecutionContext,\n MiddlewareStack,\n HttpHandlerOptions as __HttpHandlerOptions,\n MetadataBearer as __MetadataBearer,\n SerdeContext as __SerdeContext,\n} from \"@aws-sdk/types\";\n\nexport type CompleteMultipartUploadCommandInput = CompleteMultipartUploadRequest;\nexport type CompleteMultipartUploadCommandOutput = CompleteMultipartUploadOutput & __MetadataBearer;\n\n/**\n *

Completes a multipart upload by assembling previously uploaded parts.

\n *

You first initiate the multipart upload and then upload all parts using the UploadPart\n * operation. After successfully uploading all relevant parts of an upload, you call this\n * operation to complete the upload. Upon receiving this request, Amazon S3 concatenates all\n * the parts in ascending order by part number to create a new object. In the Complete\n * Multipart Upload request, you must provide the parts list. You must ensure that the parts\n * list is complete. This operation concatenates the parts that you provide in the list. For\n * each part in the list, you must provide the part number and the ETag value,\n * returned after that part was uploaded.

\n *

Processing of a Complete Multipart Upload request could take several minutes to\n * complete. After Amazon S3 begins processing the request, it sends an HTTP response header that\n * specifies a 200 OK response. While processing is in progress, Amazon S3 periodically sends white\n * space characters to keep the connection from timing out. Because a request could fail after\n * the initial 200 OK response has been sent, it is important that you check the response body\n * to determine whether the request succeeded.

\n *

Note that if CompleteMultipartUpload fails, applications should be prepared\n * to retry the failed requests. For more information, see Amazon S3 Error Best Practices.

\n *

For more information about multipart uploads, see Uploading Objects Using Multipart\n * Upload.

\n *

For information about permissions required to use the multipart upload API, see Multipart Upload API and\n * Permissions.

\n *\n *\n *

\n * CompleteMultipartUpload has the following special errors:

\n *
    \n *
  • \n *

    Error code: EntityTooSmall\n *

    \n *
      \n *
    • \n *

      Description: Your proposed upload is smaller than the minimum allowed object\n * size. Each part must be at least 5 MB in size, except the last part.

      \n *
    • \n *
    • \n *

      400 Bad Request

      \n *
    • \n *
    \n *
  • \n *
  • \n *

    Error code: InvalidPart\n *

    \n *
      \n *
    • \n *

      Description: One or more of the specified parts could not be found. The part\n * might not have been uploaded, or the specified entity tag might not have\n * matched the part's entity tag.

      \n *
    • \n *
    • \n *

      400 Bad Request

      \n *
    • \n *
    \n *
  • \n *
  • \n *

    Error code: InvalidPartOrder\n *

    \n *
      \n *
    • \n *

      Description: The list of parts was not in ascending order. The parts list\n * must be specified in order by part number.

      \n *
    • \n *
    • \n *

      400 Bad Request

      \n *
    • \n *
    \n *
  • \n *
  • \n *

    Error code: NoSuchUpload\n *

    \n *
      \n *
    • \n *

      Description: The specified multipart upload does not exist. The upload ID\n * might be invalid, or the multipart upload might have been aborted or\n * completed.

      \n *
    • \n *
    • \n *

      404 Not Found

      \n *
    • \n *
    \n *
  • \n *
\n *\n *

The following operations are related to CompleteMultipartUpload:

\n * \n */\nexport class CompleteMultipartUploadCommand extends $Command<\n CompleteMultipartUploadCommandInput,\n CompleteMultipartUploadCommandOutput,\n S3ClientResolvedConfig\n> {\n // Start section: command_properties\n // End section: command_properties\n\n constructor(readonly input: CompleteMultipartUploadCommandInput) {\n // Start section: command_constructor\n super();\n // End section: command_constructor\n }\n\n /**\n * @internal\n */\n resolveMiddleware(\n clientStack: MiddlewareStack,\n configuration: S3ClientResolvedConfig,\n options?: __HttpHandlerOptions\n ): Handler {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use(getThrow200ExceptionsPlugin(configuration));\n this.middlewareStack.use(getBucketEndpointPlugin(configuration));\n\n const stack = clientStack.concat(this.middlewareStack);\n\n const { logger } = configuration;\n const clientName = \"S3Client\";\n const commandName = \"CompleteMultipartUploadCommand\";\n const handlerExecutionContext: HandlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: CompleteMultipartUploadRequest.filterSensitiveLog,\n outputFilterSensitiveLog: CompleteMultipartUploadOutput.filterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve(\n (request: FinalizeHandlerArguments) =>\n requestHandler.handle(request.request as __HttpRequest, options || {}),\n handlerExecutionContext\n );\n }\n\n private serialize(input: CompleteMultipartUploadCommandInput, context: __SerdeContext): Promise<__HttpRequest> {\n return serializeAws_restXmlCompleteMultipartUploadCommand(input, context);\n }\n\n private deserialize(output: __HttpResponse, context: __SerdeContext): Promise {\n return deserializeAws_restXmlCompleteMultipartUploadCommand(output, context);\n }\n\n // Start section: command_body_extra\n // End section: command_body_extra\n}\n","import { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from \"../S3Client\";\nimport { AbortMultipartUploadOutput, AbortMultipartUploadRequest } from \"../models/models_0\";\nimport {\n deserializeAws_restXmlAbortMultipartUploadCommand,\n serializeAws_restXmlAbortMultipartUploadCommand,\n} from \"../protocols/Aws_restXml\";\nimport { getBucketEndpointPlugin } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from \"@aws-sdk/protocol-http\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nimport {\n FinalizeHandlerArguments,\n Handler,\n HandlerExecutionContext,\n MiddlewareStack,\n HttpHandlerOptions as __HttpHandlerOptions,\n MetadataBearer as __MetadataBearer,\n SerdeContext as __SerdeContext,\n} from \"@aws-sdk/types\";\n\nexport type AbortMultipartUploadCommandInput = AbortMultipartUploadRequest;\nexport type AbortMultipartUploadCommandOutput = AbortMultipartUploadOutput & __MetadataBearer;\n\n/**\n *

This operation aborts a multipart upload. After a multipart upload is aborted, no\n * additional parts can be uploaded using that upload ID. The storage consumed by any\n * previously uploaded parts will be freed. However, if any part uploads are currently in\n * progress, those part uploads might or might not succeed. As a result, it might be necessary\n * to abort a given multipart upload multiple times in order to completely free all storage\n * consumed by all parts.

\n *

To verify that all parts have been removed, so you don't get charged for the part\n * storage, you should call the ListParts operation and ensure that\n * the parts list is empty.

\n *

For information about permissions required to use the multipart upload API, see Multipart Upload API and\n * Permissions.

\n *

The following operations are related to AbortMultipartUpload:

\n * \n */\nexport class AbortMultipartUploadCommand extends $Command<\n AbortMultipartUploadCommandInput,\n AbortMultipartUploadCommandOutput,\n S3ClientResolvedConfig\n> {\n // Start section: command_properties\n // End section: command_properties\n\n constructor(readonly input: AbortMultipartUploadCommandInput) {\n // Start section: command_constructor\n super();\n // End section: command_constructor\n }\n\n /**\n * @internal\n */\n resolveMiddleware(\n clientStack: MiddlewareStack,\n configuration: S3ClientResolvedConfig,\n options?: __HttpHandlerOptions\n ): Handler {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use(getBucketEndpointPlugin(configuration));\n\n const stack = clientStack.concat(this.middlewareStack);\n\n const { logger } = configuration;\n const clientName = \"S3Client\";\n const commandName = \"AbortMultipartUploadCommand\";\n const handlerExecutionContext: HandlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: AbortMultipartUploadRequest.filterSensitiveLog,\n outputFilterSensitiveLog: AbortMultipartUploadOutput.filterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve(\n (request: FinalizeHandlerArguments) =>\n requestHandler.handle(request.request as __HttpRequest, options || {}),\n handlerExecutionContext\n );\n }\n\n private serialize(input: AbortMultipartUploadCommandInput, context: __SerdeContext): Promise<__HttpRequest> {\n return serializeAws_restXmlAbortMultipartUploadCommand(input, context);\n }\n\n private deserialize(output: __HttpResponse, context: __SerdeContext): Promise {\n return deserializeAws_restXmlAbortMultipartUploadCommand(output, context);\n }\n\n // Start section: command_body_extra\n // End section: command_body_extra\n}\n","import { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from \"../S3Client\";\nimport { ListPartsOutput, ListPartsRequest } from \"../models/models_0\";\nimport { deserializeAws_restXmlListPartsCommand, serializeAws_restXmlListPartsCommand } from \"../protocols/Aws_restXml\";\nimport { getBucketEndpointPlugin } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from \"@aws-sdk/protocol-http\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nimport {\n FinalizeHandlerArguments,\n Handler,\n HandlerExecutionContext,\n MiddlewareStack,\n HttpHandlerOptions as __HttpHandlerOptions,\n MetadataBearer as __MetadataBearer,\n SerdeContext as __SerdeContext,\n} from \"@aws-sdk/types\";\n\nexport type ListPartsCommandInput = ListPartsRequest;\nexport type ListPartsCommandOutput = ListPartsOutput & __MetadataBearer;\n\n/**\n *

Lists the parts that have been uploaded for a specific multipart upload. This operation\n * must include the upload ID, which you obtain by sending the initiate multipart upload\n * request (see CreateMultipartUpload).\n * This request returns a maximum of 1,000 uploaded parts. The default number of parts\n * returned is 1,000 parts. You can restrict the number of parts returned by specifying the\n * max-parts request parameter. If your multipart upload consists of more than\n * 1,000 parts, the response returns an IsTruncated field with the value of true,\n * and a NextPartNumberMarker element. In subsequent ListParts\n * requests you can include the part-number-marker query string parameter and set its value to\n * the NextPartNumberMarker field value from the previous response.

\n *\n *

For more information on multipart uploads, see Uploading Objects Using Multipart\n * Upload.

\n *\n *

For information on permissions required to use the multipart upload API, see Multipart Upload API and\n * Permissions.

\n *\n *

The following operations are related to ListParts:

\n * \n */\nexport class ListPartsCommand extends $Command {\n // Start section: command_properties\n // End section: command_properties\n\n constructor(readonly input: ListPartsCommandInput) {\n // Start section: command_constructor\n super();\n // End section: command_constructor\n }\n\n /**\n * @internal\n */\n resolveMiddleware(\n clientStack: MiddlewareStack,\n configuration: S3ClientResolvedConfig,\n options?: __HttpHandlerOptions\n ): Handler {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use(getBucketEndpointPlugin(configuration));\n\n const stack = clientStack.concat(this.middlewareStack);\n\n const { logger } = configuration;\n const clientName = \"S3Client\";\n const commandName = \"ListPartsCommand\";\n const handlerExecutionContext: HandlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: ListPartsRequest.filterSensitiveLog,\n outputFilterSensitiveLog: ListPartsOutput.filterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve(\n (request: FinalizeHandlerArguments) =>\n requestHandler.handle(request.request as __HttpRequest, options || {}),\n handlerExecutionContext\n );\n }\n\n private serialize(input: ListPartsCommandInput, context: __SerdeContext): Promise<__HttpRequest> {\n return serializeAws_restXmlListPartsCommand(input, context);\n }\n\n private deserialize(output: __HttpResponse, context: __SerdeContext): Promise {\n return deserializeAws_restXmlListPartsCommand(output, context);\n }\n\n // Start section: command_body_extra\n // End section: command_body_extra\n}\n","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nimport {\n\tPutObjectCommand,\n\tPutObjectRequest,\n\tCreateMultipartUploadCommand,\n\tUploadPartCommand,\n\tCompleteMultipartUploadCommand,\n\tCompleteMultipartUploadCommandInput,\n\tListPartsCommand,\n\tAbortMultipartUploadCommand,\n\tCompletedPart,\n\tS3Client,\n} from '@aws-sdk/client-s3';\nimport {\n\tSEND_UPLOAD_PROGRESS_EVENT,\n\tSEND_DOWNLOAD_PROGRESS_EVENT,\n\tAxiosHttpHandlerOptions,\n} from './axios-http-handler';\nimport * as events from 'events';\nimport {\n\tcreatePrefixMiddleware,\n\tprefixMiddlewareOptions,\n\tautoAdjustClockskewMiddleware,\n\tautoAdjustClockskewMiddlewareOptions,\n\tcreateS3Client,\n} from '../common/S3ClientUtils';\n\nconst logger = new Logger('AWSS3ProviderManagedUpload');\n\nexport declare interface Part {\n\tbodyPart: any;\n\tpartNumber: number;\n\temitter: events.EventEmitter;\n\tetag?: string;\n\t_lastUploadedBytes: number;\n}\n\nexport class AWSS3ProviderManagedUpload {\n\t// Defaults\n\tprotected minPartSize = 5 * 1024 * 1024; // in MB\n\tprivate queueSize = 4;\n\n\t// Data for current upload\n\tprivate body = null;\n\tprivate params: PutObjectRequest = null;\n\tprivate opts = null;\n\tprivate completedParts: CompletedPart[] = [];\n\tprivate s3client: S3Client;\n\tprivate uploadId = null;\n\n\t// Progress reporting\n\tprivate bytesUploaded = 0;\n\tprivate totalBytesToUpload = 0;\n\tprivate emitter: events.EventEmitter = null;\n\n\tconstructor(params: PutObjectRequest, opts, emitter: events.EventEmitter) {\n\t\tthis.params = params;\n\t\tthis.opts = opts;\n\t\tthis.emitter = emitter;\n\t\tthis.s3client = this._createNewS3Client(opts, emitter);\n\t}\n\n\tpublic async upload() {\n\t\ttry {\n\t\t\tthis.body = await this.validateAndSanitizeBody(this.params.Body);\n\t\t\tthis.totalBytesToUpload = this.byteLength(this.body);\n\t\t\tif (this.totalBytesToUpload <= this.minPartSize) {\n\t\t\t\t// Multipart upload is not required. Upload the sanitized body as is\n\t\t\t\tthis.params.Body = this.body;\n\t\t\t\tconst putObjectCommand = new PutObjectCommand(this.params);\n\t\t\t\treturn this.s3client.send(putObjectCommand);\n\t\t\t} else {\n\t\t\t\t// Step 1: Initiate the multi part upload\n\t\t\t\tthis.uploadId = await this.createMultiPartUpload();\n\n\t\t\t\t// Step 2: Upload chunks in parallel as requested\n\t\t\t\tconst numberOfPartsToUpload = Math.ceil(\n\t\t\t\t\tthis.totalBytesToUpload / this.minPartSize\n\t\t\t\t);\n\n\t\t\t\tconst parts: Part[] = this.createParts();\n\t\t\t\tfor (\n\t\t\t\t\tlet start = 0;\n\t\t\t\t\tstart < numberOfPartsToUpload;\n\t\t\t\t\tstart += this.queueSize\n\t\t\t\t) {\n\n\t\t\t\t\t// Upload as many as `queueSize` parts simultaneously\n\t\t\t\t\tawait this.uploadParts(\n\t\t\t\t\t\tthis.uploadId,\n\t\t\t\t\t\tparts.slice(start, start + this.queueSize)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tparts.map(part => {\n\t\t\t\t\tthis.removeEventListener(part);\n\t\t\t\t});\n\n\t\t\t\t// Step 3: Finalize the upload such that S3 can recreate the file\n\t\t\t\treturn await this.finishMultiPartUpload(this.uploadId);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\t// if any error is thrown, call cleanup\n\t\t\tawait this.cleanup(this.uploadId);\n\t\t\tlogger.error('Error. Cancelling the multipart upload.');\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate createParts(): Part[] {\n\t\ttry {\n\t\t\tconst parts: Part[] = [];\n\t\t\tfor (let bodyStart = 0; bodyStart < this.totalBytesToUpload; ) {\n\t\t\t\tconst bodyEnd = Math.min(\n\t\t\t\t\tbodyStart + this.minPartSize,\n\t\t\t\t\tthis.totalBytesToUpload\n\t\t\t\t);\n\t\t\t\tparts.push({\n\t\t\t\t\tbodyPart: this.body.slice(bodyStart, bodyEnd),\n\t\t\t\t\tpartNumber: parts.length + 1,\n\t\t\t\t\temitter: new events.EventEmitter(),\n\t\t\t\t\t_lastUploadedBytes: 0,\n\t\t\t\t});\n\t\t\t\tbodyStart += this.minPartSize;\n\t\t\t}\n\t\t\treturn parts;\n\t\t} catch (error) {\n\t\t\tlogger.error(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate async createMultiPartUpload() {\n\t\ttry {\n\t\t\tconst createMultiPartUploadCommand = new CreateMultipartUploadCommand(\n\t\t\t\tthis.params\n\t\t\t);\n\t\t\tconst response = await this.s3client.send(createMultiPartUploadCommand);\n\t\t\tlogger.debug(response.UploadId);\n\t\t\treturn response.UploadId;\n\t\t} catch (error) {\n\t\t\tlogger.error(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/**\n\t * @private Not to be extended outside of tests\n\t * @VisibleFotTesting\n\t */\n\tprotected async uploadParts(uploadId: string, parts: Part[]) {\n\t\ttry {\n\t\t\tconst allResults = await Promise.all(\n\t\t\t\tparts.map(async part => {\n\t\t\t\t\tthis.setupEventListener(part);\n\t\t\t\t\tconst options: AxiosHttpHandlerOptions = { emitter: part.emitter };\n\t\t\t\t\tconst {\n\t\t\t\t\t\tKey,\n\t\t\t\t\t\tBucket,\n\t\t\t\t\t\tSSECustomerAlgorithm,\n\t\t\t\t\t\tSSECustomerKey,\n\t\t\t\t\t\tSSECustomerKeyMD5,\n\t\t\t\t\t} = this.params;\n\t\t\t\t\tconst res = await this.s3client.send(\n\t\t\t\t\t\tnew UploadPartCommand({\n\t\t\t\t\t\t\tPartNumber: part.partNumber,\n\t\t\t\t\t\t\tBody: part.bodyPart,\n\t\t\t\t\t\t\tUploadId: uploadId,\n\t\t\t\t\t\t\tKey,\n\t\t\t\t\t\t\tBucket,\n\t\t\t\t\t\t\t...(SSECustomerAlgorithm && { SSECustomerAlgorithm }),\n\t\t\t\t\t\t\t...(SSECustomerKey && { SSECustomerKey }),\n\t\t\t\t\t\t\t...(SSECustomerKeyMD5 && { SSECustomerKeyMD5 }),\n\t\t\t\t\t\t}),\n\t\t\t\t\t\toptions\n\t\t\t\t\t);\n\t\t\t\t\treturn res;\n\t\t\t\t})\n\t\t\t);\n\t\t\t// The order of resolved promises is the same as input promise order.\n\t\t\tfor (let i = 0; i < allResults.length; i++) {\n\t\t\t\tthis.completedParts.push({\n\t\t\t\t\tPartNumber: parts[i].partNumber,\n\t\t\t\t\tETag: allResults[i].ETag,\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tlogger.error(\n\t\t\t\t'Error happened while uploading a part. Cancelling the multipart upload'\n\t\t\t);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate async finishMultiPartUpload(uploadId: string) {\n\t\tconst input: CompleteMultipartUploadCommandInput = {\n\t\t\tBucket: this.params.Bucket,\n\t\t\tKey: this.params.Key,\n\t\t\tUploadId: uploadId,\n\t\t\tMultipartUpload: { Parts: this.completedParts },\n\t\t};\n\t\tconst completeUploadCommand = new CompleteMultipartUploadCommand(input);\n\t\ttry {\n\t\t\tconst data = await this.s3client.send(completeUploadCommand);\n\t\t\treturn data.Key;\n\t\t} catch (error) {\n\t\t\tlogger.error('Error happened while finishing the upload.');\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate async cleanup(uploadId: string) {\n\t\t// Reset this's state\n\t\tthis.body = null;\n\t\tthis.completedParts = [];\n\t\tthis.bytesUploaded = 0;\n\t\tthis.totalBytesToUpload = 0;\n\n\t\tconst input = {\n\t\t\tBucket: this.params.Bucket,\n\t\t\tKey: this.params.Key,\n\t\t\tUploadId: uploadId,\n\t\t};\n\n\t\tawait this.s3client.send(new AbortMultipartUploadCommand(input));\n\n\t\t// verify that all parts are removed.\n\t\tconst data = await this.s3client.send(new ListPartsCommand(input));\n\n\t\tif (data && data.Parts && data.Parts.length > 0) {\n\t\t\tthrow new Error('Multipart upload clean up failed.');\n\t\t}\n\t}\n\n\tprivate removeEventListener(part: Part) {\n\t\tpart.emitter.removeAllListeners(SEND_UPLOAD_PROGRESS_EVENT);\n\t\tpart.emitter.removeAllListeners(SEND_DOWNLOAD_PROGRESS_EVENT);\n\t}\n\n\tprivate setupEventListener(part: Part) {\n\t\tpart.emitter.on(SEND_UPLOAD_PROGRESS_EVENT, progress => {\n\t\t\tthis.progressChanged(\n\t\t\t\tpart.partNumber,\n\t\t\t\tprogress.loaded - part._lastUploadedBytes\n\t\t\t);\n\t\t\tpart._lastUploadedBytes = progress.loaded;\n\t\t});\n\t}\n\n\tprivate progressChanged(partNumber: number, incrementalUpdate: number) {\n\t\tthis.bytesUploaded += incrementalUpdate;\n\t\tthis.emitter.emit(SEND_UPLOAD_PROGRESS_EVENT, {\n\t\t\tloaded: this.bytesUploaded,\n\t\t\ttotal: this.totalBytesToUpload,\n\t\t\tpart: partNumber,\n\t\t\tkey: this.params.Key,\n\t\t});\n\t}\n\n\tprivate byteLength(input: any) {\n\t\tif (input === null || input === undefined) return 0;\n\t\tif (typeof input.byteLength === 'number') {\n\t\t\treturn input.byteLength;\n\t\t} else if (typeof input.length === 'number') {\n\t\t\treturn input.length;\n\t\t} else if (typeof input.size === 'number') {\n\t\t\treturn input.size;\n\t\t} else if (typeof input.path === 'string') {\n\t\t\t/* NodeJs Support\n\t\t\treturn require('fs').lstatSync(input.path).size;\n\t\t\t*/\n\t\t} else {\n\t\t\tthrow new Error('Cannot determine length of ' + input);\n\t\t}\n\t}\n\n\tprivate async validateAndSanitizeBody(body: any): Promise {\n\t\tif (this.isGenericObject(body)) {\n\t\t\t// Any javascript object\n\t\t\treturn JSON.stringify(body);\n\t\t} else {\n\t\t\t// Files, arrayBuffer etc\n\t\t\treturn body;\n\t\t}\n\t\t/* TODO: streams and files for nodejs \n\t\tif (\n\t\t\ttypeof body.path === 'string' &&\n\t\t\trequire('fs').lstatSync(body.path).size > 0\n\t\t) {\n\t\t\treturn body;\n\t\t} */\n\t}\n\n\tprivate isGenericObject(body: any): body is Object {\n\t\tif (body !== null && typeof body === 'object') {\n\t\t\ttry {\n\t\t\t\treturn !(this.byteLength(body) >= 0);\n\t\t\t} catch (error) {\n\t\t\t\t// If we cannot determine the length of the body, consider it\n\t\t\t\t// as a generic object and upload a stringified version of it\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tprotected _createNewS3Client(config, emitter?: events.EventEmitter) {\n\t\tconst s3client = createS3Client(config, emitter);\n\t\ts3client.middlewareStack.add(\n\t\t\tcreatePrefixMiddleware(this.opts, this.params.Key),\n\t\t\tprefixMiddlewareOptions\n\t\t);\n\t\ts3client.middlewareStack.add(\n\t\t\tautoAdjustClockskewMiddleware(s3client.config),\n\t\t\tautoAdjustClockskewMiddlewareOptions\n\t\t);\n\t\treturn s3client;\n\t}\n}\n","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport {\n\tConsoleLogger as Logger,\n\tCredentials,\n\tParser,\n\tICredentials,\n\tStorageHelper,\n\tHub,\n} from '@aws-amplify/core';\nimport {\n\tS3Client,\n\tGetObjectCommand,\n\tDeleteObjectCommand,\n\tListObjectsV2Command,\n\tGetObjectCommandOutput,\n\tDeleteObjectCommandInput,\n\tCopyObjectCommandInput,\n\tCopyObjectCommand,\n\tPutObjectCommandInput,\n\tGetObjectCommandInput,\n\tListObjectsV2Request,\n} from '@aws-sdk/client-s3';\nimport { formatUrl } from '@aws-sdk/util-format-url';\nimport { createRequest } from '@aws-sdk/util-create-request';\nimport { S3RequestPresigner } from '@aws-sdk/s3-request-presigner';\nimport {\n\tSEND_DOWNLOAD_PROGRESS_EVENT,\n\tSEND_UPLOAD_PROGRESS_EVENT,\n} from './axios-http-handler';\nimport {\n\tStorageOptions,\n\tStorageProvider,\n\tS3ProviderGetConfig,\n\tS3ProviderGetOuput,\n\tS3ProviderPutConfig,\n\tS3ProviderRemoveConfig,\n\tS3ProviderListOutput,\n\tS3ProviderListConfig,\n\tS3ProviderCopyConfig,\n\tS3ProviderCopyOutput,\n\tS3CopySource,\n\tS3CopyDestination,\n\tStorageAccessLevel,\n\tCustomPrefix,\n\tS3ProviderRemoveOutput,\n\tS3ProviderPutOutput,\n\tResumableUploadConfig,\n\tUploadTask,\n\tS3ClientOptions,\n} from '../types';\nimport { StorageErrorStrings } from '../common/StorageErrorStrings';\nimport { dispatchStorageEvent } from '../common/StorageUtils';\nimport {\n\tcreatePrefixMiddleware,\n\tprefixMiddlewareOptions,\n\tgetPrefix,\n\tautoAdjustClockskewMiddleware,\n\tautoAdjustClockskewMiddlewareOptions,\n\tcreateS3Client,\n} from '../common/S3ClientUtils';\nimport { S3ProviderListOutputWithToken } from '.././types/AWSS3Provider';\nimport { AWSS3ProviderManagedUpload } from './AWSS3ProviderManagedUpload';\nimport { AWSS3UploadTask, TaskEvents } from './AWSS3UploadTask';\nimport { UPLOADS_STORAGE_KEY } from '../common/StorageConstants';\nimport * as events from 'events';\nimport { CancelTokenSource } from 'axios';\n\nconst logger = new Logger('AWSS3Provider');\n\nconst DEFAULT_STORAGE_LEVEL = 'public';\nconst DEFAULT_PRESIGN_EXPIRATION = 900;\n\ninterface AddTaskInput {\n\taccessLevel: StorageAccessLevel;\n\tfile: Blob;\n\tbucket: string;\n\temitter: events.EventEmitter;\n\tkey: string;\n\ts3Client: S3Client;\n\tparams?: PutObjectCommandInput;\n}\n\n/**\n * Provide storage methods to use AWS S3\n */\nexport class AWSS3Provider implements StorageProvider {\n\tstatic readonly CATEGORY = 'Storage';\n\tstatic readonly PROVIDER_NAME = 'AWSS3';\n\tprivate _config: StorageOptions;\n\tprivate _storage: Storage;\n\n\t/**\n\t * Initialize Storage with AWS configurations\n\t * @param {Object} config - Configuration object for storage\n\t */\n\tconstructor(config?: StorageOptions) {\n\t\tthis._config = config ? config : {};\n\t\tthis._storage = new StorageHelper().getStorage();\n\t\tHub.listen('auth', data => {\n\t\t\tconst { payload } = data;\n\t\t\tif (payload.event === 'signOut' || payload.event === 'signIn') {\n\t\t\t\tthis._storage.removeItem(UPLOADS_STORAGE_KEY);\n\t\t\t}\n\t\t});\n\t\tlogger.debug('Storage Options', this._config);\n\t}\n\n\t/**\n\t * get the category of the plugin\n\t */\n\tpublic getCategory(): string {\n\t\treturn AWSS3Provider.CATEGORY;\n\t}\n\n\t/**\n\t * get provider name of the plugin\n\t */\n\tgetProviderName(): 'AWSS3' {\n\t\treturn AWSS3Provider.PROVIDER_NAME;\n\t}\n\n\t/**\n\t * Configure Storage part with aws configuration\n\t * @param {Object} config - Configuration of the Storage\n\t * @return {Object} - Current configuration\n\t */\n\tpublic configure(config?): object {\n\t\tlogger.debug('configure Storage', config);\n\t\tif (!config) return this._config;\n\t\tconst amplifyConfig = Parser.parseMobilehubConfig(config);\n\t\tthis._config = Object.assign({}, this._config, amplifyConfig.Storage);\n\t\tif (!this._config.bucket) {\n\t\t\tlogger.debug('Do not have bucket yet');\n\t\t}\n\t\treturn this._config;\n\t}\n\n\tprivate startResumableUpload(\n\t\taddTaskInput: AddTaskInput,\n\t\tconfig: S3ProviderPutConfig & ResumableUploadConfig\n\t): UploadTask {\n\t\tconst { s3Client, emitter, key, file, params } = addTaskInput;\n\t\tconst {\n\t\t\tprogressCallback,\n\t\t\tcompleteCallback,\n\t\t\terrorCallback,\n\t\t\ttrack = false,\n\t\t} = config;\n\t\tif (!(file instanceof Blob)) {\n\t\t\tthrow new Error(StorageErrorStrings.INVALID_BLOB);\n\t\t}\n\n\t\temitter.on(TaskEvents.UPLOAD_PROGRESS, event => {\n\t\t\tif (progressCallback) {\n\t\t\t\tif (typeof progressCallback === 'function') {\n\t\t\t\t\tprogressCallback(event);\n\t\t\t\t} else {\n\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t'progressCallback should be a function, not a ' +\n\t\t\t\t\t\t\ttypeof progressCallback\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\temitter.on(TaskEvents.UPLOAD_COMPLETE, event => {\n\t\t\tif (completeCallback) {\n\t\t\t\tif (typeof completeCallback === 'function') {\n\t\t\t\t\tcompleteCallback(event);\n\t\t\t\t} else {\n\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t'completeCallback should be a function, not a ' +\n\t\t\t\t\t\t\ttypeof completeCallback\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\temitter.on(TaskEvents.ERROR, err => {\n\t\t\tif (errorCallback) {\n\t\t\t\tif (typeof errorCallback === 'function') {\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t} else {\n\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t'errorCallback should be a function, not a ' + typeof errorCallback\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// we want to keep this function sync so we defer this promise to AWSS3UploadTask to resolve when it's needed\n\t\t// when its doing a final check with _listSingleFile function\n\t\tconst prefixPromise: Promise = Credentials.get().then(\n\t\t\t(credentials: any) => {\n\t\t\t\tconst cred = Credentials.shear(credentials);\n\t\t\t\treturn getPrefix({\n\t\t\t\t\t...config,\n\t\t\t\t\tcredentials: cred,\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\n\t\tconst task = new AWSS3UploadTask({\n\t\t\ts3Client,\n\t\t\tfile,\n\t\t\temitter,\n\t\t\tlevel: config.level,\n\t\t\tstorage: this._storage,\n\t\t\tparams,\n\t\t\tprefixPromise,\n\t\t});\n\n\t\tdispatchStorageEvent(\n\t\t\ttrack,\n\t\t\t'upload',\n\t\t\t{ method: 'put', result: 'success' },\n\t\t\tnull,\n\t\t\t`Upload Task created successfully for ${key}`\n\t\t);\n\n\t\t// automatically start the upload task\n\t\ttask.resume();\n\n\t\treturn task;\n\t}\n\n\t/**\n\t * Copy an object from a source object to a new object within the same bucket. Can optionally copy files across\n\t * different level or identityId (if source object's level is 'protected').\n\t *\n\t * @async\n\t * @param {S3CopySource} src - Key and optionally access level and identityId of the source object.\n\t * @param {S3CopyDestination} dest - Key and optionally access level of the destination object.\n\t * @param {S3ProviderCopyConfig} [config] - Optional configuration for s3 commands.\n\t * @return {Promise} The key of the copied object.\n\t */\n\tpublic async copy(\n\t\tsrc: S3CopySource,\n\t\tdest: S3CopyDestination,\n\t\tconfig?: S3ProviderCopyConfig\n\t): Promise {\n\t\tconst credentialsOK = await this._ensureCredentials();\n\t\tif (!credentialsOK || !this._isWithCredentials(this._config)) {\n\t\t\tthrow new Error(StorageErrorStrings.NO_CREDENTIALS);\n\t\t}\n\t\tconst opt = Object.assign({}, this._config, config);\n\t\tconst {\n\t\t\tacl,\n\t\t\tbucket,\n\t\t\tcacheControl,\n\t\t\texpires,\n\t\t\ttrack,\n\t\t\tserverSideEncryption,\n\t\t\tSSECustomerAlgorithm,\n\t\t\tSSECustomerKey,\n\t\t\tSSECustomerKeyMD5,\n\t\t\tSSEKMSKeyId,\n\t\t} = opt;\n\t\tconst {\n\t\t\tlevel: srcLevel = DEFAULT_STORAGE_LEVEL,\n\t\t\tidentityId: srcIdentityId,\n\t\t\tkey: srcKey,\n\t\t} = src;\n\t\tconst { level: destLevel = DEFAULT_STORAGE_LEVEL, key: destKey } = dest;\n\t\tif (!srcKey || typeof srcKey !== 'string') {\n\t\t\tthrow new Error(StorageErrorStrings.NO_SRC_KEY);\n\t\t}\n\t\tif (!destKey || typeof destKey !== 'string') {\n\t\t\tthrow new Error(StorageErrorStrings.NO_DEST_KEY);\n\t\t}\n\t\tif (srcLevel !== 'protected' && srcIdentityId) {\n\t\t\tlogger.warn(\n\t\t\t\t`You may copy files from another user if the source level is \"protected\", currently it's ${srcLevel}`\n\t\t\t);\n\t\t}\n\t\tconst srcPrefix = this._prefix({\n\t\t\t...opt,\n\t\t\tlevel: srcLevel,\n\t\t\t...(srcIdentityId && { identityId: srcIdentityId }),\n\t\t});\n\t\tconst destPrefix = this._prefix({ ...opt, level: destLevel });\n\t\tconst finalSrcKey = `${bucket}/${srcPrefix}${srcKey}`;\n\t\tconst finalDestKey = `${destPrefix}${destKey}`;\n\t\tlogger.debug(`copying ${finalSrcKey} to ${finalDestKey}`);\n\n\t\tconst params: CopyObjectCommandInput = {\n\t\t\tBucket: bucket,\n\t\t\tCopySource: finalSrcKey,\n\t\t\tKey: finalDestKey,\n\t\t\t// Copies over metadata like contentType as well\n\t\t\tMetadataDirective: 'COPY',\n\t\t};\n\n\t\tif (cacheControl) params.CacheControl = cacheControl;\n\t\tif (expires) params.Expires = expires;\n\t\tif (serverSideEncryption) {\n\t\t\tparams.ServerSideEncryption = serverSideEncryption;\n\t\t}\n\t\tif (SSECustomerAlgorithm) {\n\t\t\tparams.SSECustomerAlgorithm = SSECustomerAlgorithm;\n\t\t}\n\t\tif (SSECustomerKey) {\n\t\t\tparams.SSECustomerKey = SSECustomerKey;\n\t\t}\n\t\tif (SSECustomerKeyMD5) {\n\t\t\tparams.SSECustomerKeyMD5 = SSECustomerKeyMD5;\n\t\t}\n\t\tif (SSEKMSKeyId) {\n\t\t\tparams.SSEKMSKeyId = SSEKMSKeyId;\n\t\t}\n\t\tif (acl) params.ACL = acl;\n\n\t\tconst s3 = this._createNewS3Client(opt);\n\t\ttry {\n\t\t\tawait s3.send(new CopyObjectCommand(params));\n\t\t\tdispatchStorageEvent(\n\t\t\t\ttrack,\n\t\t\t\t'copy',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'copy',\n\t\t\t\t\tresult: 'success',\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t`Copy success from ${srcKey} to ${destKey}`\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tkey: destKey,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tdispatchStorageEvent(\n\t\t\t\ttrack,\n\t\t\t\t'copy',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'copy',\n\t\t\t\t\tresult: 'failed',\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t`Copy failed from ${srcKey} to ${destKey}`\n\t\t\t);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/**\n\t * Get a presigned URL of the file or the object data when download:true\n\t *\n\t * @param {string} key - key of the object\n\t * @param {S3ProviderGetConfig} [config] - Optional configuration for the underlying S3 command\n\t * @return {Promise} - A promise resolves to Amazon S3 presigned URL or the\n\t * GetObjectCommandOutput if download is set to true on success\n\t */\n\tpublic async get(\n\t\tkey: string,\n\t\tconfig?: T\n\t): Promise>;\n\tpublic async get(\n\t\tkey: string,\n\t\tconfig?: S3ProviderGetConfig\n\t): Promise {\n\t\tconst credentialsOK = await this._ensureCredentials();\n\t\tif (!credentialsOK || !this._isWithCredentials(this._config)) {\n\t\t\tthrow new Error(StorageErrorStrings.NO_CREDENTIALS);\n\t\t}\n\t\tconst opt = Object.assign({}, this._config, config);\n\t\tconst {\n\t\t\tbucket,\n\t\t\tdownload,\n\t\t\tcacheControl,\n\t\t\tcontentDisposition,\n\t\t\tcontentEncoding,\n\t\t\tcontentLanguage,\n\t\t\tcontentType,\n\t\t\texpires,\n\t\t\ttrack,\n\t\t\tSSECustomerAlgorithm,\n\t\t\tSSECustomerKey,\n\t\t\tSSECustomerKeyMD5,\n\t\t\tprogressCallback,\n\t\t} = opt;\n\t\tconst prefix = this._prefix(opt);\n\t\tconst final_key = prefix + key;\n\t\tconst emitter = new events.EventEmitter();\n\t\tconst s3 = this._createNewS3Client(opt, emitter);\n\t\tlogger.debug('get ' + key + ' from ' + final_key);\n\n\t\tconst params: GetObjectCommandInput = {\n\t\t\tBucket: bucket,\n\t\t\tKey: final_key,\n\t\t};\n\n\t\t// See: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getObject-property\n\t\tif (cacheControl) params.ResponseCacheControl = cacheControl;\n\t\tif (contentDisposition)\n\t\t\tparams.ResponseContentDisposition = contentDisposition;\n\t\tif (contentEncoding) params.ResponseContentEncoding = contentEncoding;\n\t\tif (contentLanguage) params.ResponseContentLanguage = contentLanguage;\n\t\tif (contentType) params.ResponseContentType = contentType;\n\t\tif (SSECustomerAlgorithm) {\n\t\t\tparams.SSECustomerAlgorithm = SSECustomerAlgorithm;\n\t\t}\n\t\tif (SSECustomerKey) {\n\t\t\tparams.SSECustomerKey = SSECustomerKey;\n\t\t}\n\t\tif (SSECustomerKeyMD5) {\n\t\t\tparams.SSECustomerKeyMD5 = SSECustomerKeyMD5;\n\t\t}\n\n\t\tif (download === true) {\n\t\t\tconst getObjectCommand = new GetObjectCommand(params);\n\t\t\ttry {\n\t\t\t\tif (progressCallback) {\n\t\t\t\t\tif (typeof progressCallback === 'function') {\n\t\t\t\t\t\temitter.on(SEND_DOWNLOAD_PROGRESS_EVENT, progress => {\n\t\t\t\t\t\t\tprogressCallback(progress);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t\t'progressCallback should be a function, not a ' +\n\t\t\t\t\t\t\t\ttypeof progressCallback\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst response = await s3.send(getObjectCommand);\n\t\t\t\temitter.removeAllListeners(SEND_DOWNLOAD_PROGRESS_EVENT);\n\t\t\t\tdispatchStorageEvent(\n\t\t\t\t\ttrack,\n\t\t\t\t\t'download',\n\t\t\t\t\t{ method: 'get', result: 'success' },\n\t\t\t\t\t{\n\t\t\t\t\t\tfileSize: Number(response.Body['size'] || response.Body['length']),\n\t\t\t\t\t},\n\t\t\t\t\t`Download success for ${key}`\n\t\t\t\t);\n\t\t\t\treturn response;\n\t\t\t} catch (error) {\n\t\t\t\tdispatchStorageEvent(\n\t\t\t\t\ttrack,\n\t\t\t\t\t'download',\n\t\t\t\t\t{\n\t\t\t\t\t\tmethod: 'get',\n\t\t\t\t\t\tresult: 'failed',\n\t\t\t\t\t},\n\t\t\t\t\tnull,\n\t\t\t\t\t`Download failed with ${error.message}`\n\t\t\t\t);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst signer = new S3RequestPresigner({ ...s3.config });\n\t\t\tconst request = await createRequest(s3, new GetObjectCommand(params));\n\t\t\t// Default is 15 mins as defined in V2 AWS SDK\n\t\t\tconst url = formatUrl(\n\t\t\t\tawait signer.presign(request, {\n\t\t\t\t\texpiresIn: expires || DEFAULT_PRESIGN_EXPIRATION,\n\t\t\t\t})\n\t\t\t);\n\t\t\tdispatchStorageEvent(\n\t\t\t\ttrack,\n\t\t\t\t'getSignedUrl',\n\t\t\t\t{ method: 'get', result: 'success' },\n\t\t\t\tnull,\n\t\t\t\t`Signed URL: ${url}`\n\t\t\t);\n\t\t\treturn url;\n\t\t} catch (error) {\n\t\t\tlogger.warn('get signed url error', error);\n\t\t\tdispatchStorageEvent(\n\t\t\t\ttrack,\n\t\t\t\t'getSignedUrl',\n\t\t\t\t{ method: 'get', result: 'failed' },\n\t\t\t\tnull,\n\t\t\t\t`Could not get a signed URL for ${key}`\n\t\t\t);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/**\n\t * Put a file in S3 bucket specified to configure method\n\t * @param key - key of the object\n\t * @param object - File to be put in Amazon S3 bucket\n\t * @param [config] - Optional configuration for the underlying S3 command\n\t * @return an instance of AWSS3UploadTask or a promise that resolves to an object with the new object's key on\n\t * success.\n\t */\n\tpublic put(\n\t\tkey: string,\n\t\tobject: PutObjectCommandInput['Body'],\n\t\tconfig?: T\n\t): S3ProviderPutOutput {\n\t\tconst opt = Object.assign({}, this._config, config);\n\t\tconst { bucket, track, progressCallback, level, resumable } = opt;\n\t\tconst {\n\t\t\tcontentType,\n\t\t\tcontentDisposition,\n\t\t\tcontentEncoding,\n\t\t\tcacheControl,\n\t\t\texpires,\n\t\t\tmetadata,\n\t\t\ttagging,\n\t\t\tacl,\n\t\t} = opt;\n\t\tconst {\n\t\t\tserverSideEncryption,\n\t\t\tSSECustomerAlgorithm,\n\t\t\tSSECustomerKey,\n\t\t\tSSECustomerKeyMD5,\n\t\t\tSSEKMSKeyId,\n\t\t} = opt;\n\t\tconst type = contentType ? contentType : 'binary/octet-stream';\n\n\t\tconst params: PutObjectCommandInput = {\n\t\t\tBucket: bucket,\n\t\t\tKey: key,\n\t\t\tBody: object,\n\t\t\tContentType: type,\n\t\t};\n\t\tif (cacheControl) {\n\t\t\tparams.CacheControl = cacheControl;\n\t\t}\n\t\tif (contentDisposition) {\n\t\t\tparams.ContentDisposition = contentDisposition;\n\t\t}\n\t\tif (contentEncoding) {\n\t\t\tparams.ContentEncoding = contentEncoding;\n\t\t}\n\t\tif (expires) {\n\t\t\tparams.Expires = expires;\n\t\t}\n\t\tif (metadata) {\n\t\t\tparams.Metadata = metadata;\n\t\t}\n\t\tif (tagging) {\n\t\t\tparams.Tagging = tagging;\n\t\t}\n\t\tif (serverSideEncryption) {\n\t\t\tparams.ServerSideEncryption = serverSideEncryption;\n\t\t}\n\t\tif (SSECustomerAlgorithm) {\n\t\t\tparams.SSECustomerAlgorithm = SSECustomerAlgorithm;\n\t\t}\n\t\tif (SSECustomerKey) {\n\t\t\tparams.SSECustomerKey = SSECustomerKey;\n\t\t}\n\t\tif (SSECustomerKeyMD5) {\n\t\t\tparams.SSECustomerKeyMD5 = SSECustomerKeyMD5;\n\t\t}\n\t\tif (SSEKMSKeyId) {\n\t\t\tparams.SSEKMSKeyId = SSEKMSKeyId;\n\t\t}\n\n\t\tconst emitter = new events.EventEmitter();\n\t\tconst uploader = new AWSS3ProviderManagedUpload(params, opt, emitter);\n\n\t\tif (acl) {\n\t\t\tparams.ACL = acl;\n\t\t}\n\n\t\tif (resumable === true) {\n\t\t\tconst s3Client = this._createNewS3Client(opt);\n\t\t\t// we are using aws sdk middleware to inject the prefix to key, this way we don't have to call\n\t\t\t// this._ensureCredentials() which allows us to make this function sync so we can return non-Promise like UploadTask\n\t\t\ts3Client.middlewareStack.add(\n\t\t\t\tcreatePrefixMiddleware(opt, key),\n\t\t\t\tprefixMiddlewareOptions\n\t\t\t);\n\t\t\tconst addTaskInput: AddTaskInput = {\n\t\t\t\tbucket,\n\t\t\t\tkey,\n\t\t\t\ts3Client,\n\t\t\t\tfile: object as Blob,\n\t\t\t\temitter,\n\t\t\t\taccessLevel: level,\n\t\t\t\tparams,\n\t\t\t};\n\t\t\t// explicitly asserting the type here as Typescript could not infer that resumable is of type true\n\t\t\treturn this.startResumableUpload(\n\t\t\t\taddTaskInput,\n\t\t\t\tconfig as typeof config & { resumable: true }\n\t\t\t) as S3ProviderPutOutput;\n\t\t}\n\n\t\ttry {\n\t\t\tif (progressCallback) {\n\t\t\t\tif (typeof progressCallback === 'function') {\n\t\t\t\t\temitter.on(SEND_UPLOAD_PROGRESS_EVENT, progress => {\n\t\t\t\t\t\tprogressCallback(progress);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t'progressCallback should be a function, not a ' +\n\t\t\t\t\t\t\ttypeof progressCallback\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn uploader.upload().then(response => {\n\t\t\t\tlogger.debug('upload result', response);\n\t\t\t\tdispatchStorageEvent(\n\t\t\t\t\ttrack,\n\t\t\t\t\t'upload',\n\t\t\t\t\t{ method: 'put', result: 'success' },\n\t\t\t\t\tnull,\n\t\t\t\t\t`Upload success for ${key}`\n\t\t\t\t);\n\t\t\t\treturn { key };\n\t\t\t}) as S3ProviderPutOutput;\n\t\t} catch (error) {\n\t\t\tlogger.warn('error uploading', error);\n\t\t\tdispatchStorageEvent(\n\t\t\t\ttrack,\n\t\t\t\t'upload',\n\t\t\t\t{ method: 'put', result: 'failed' },\n\t\t\t\tnull,\n\t\t\t\t`Error uploading ${key}`\n\t\t\t);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/**\n\t * Remove the object for specified key\n\t * @param {string} key - key of the object\n\t * @param {S3ProviderRemoveConfig} [config] - Optional configuration for the underlying S3 command\n\t * @return {Promise} - Promise resolves upon successful removal of the object\n\t */\n\tpublic async remove(\n\t\tkey: string,\n\t\tconfig?: S3ProviderRemoveConfig\n\t): Promise {\n\t\tconst credentialsOK = await this._ensureCredentials();\n\t\tif (!credentialsOK || !this._isWithCredentials(this._config)) {\n\t\t\tthrow new Error(StorageErrorStrings.NO_CREDENTIALS);\n\t\t}\n\t\tconst opt = Object.assign({}, this._config, config);\n\t\tconst { bucket, track } = opt;\n\n\t\tconst prefix = this._prefix(opt);\n\t\tconst final_key = prefix + key;\n\t\tconst s3 = this._createNewS3Client(opt);\n\t\tlogger.debug('remove ' + key + ' from ' + final_key);\n\n\t\tconst params: DeleteObjectCommandInput = {\n\t\t\tBucket: bucket,\n\t\t\tKey: final_key,\n\t\t};\n\n\t\tconst deleteObjectCommand = new DeleteObjectCommand(params);\n\n\t\ttry {\n\t\t\tconst response = await s3.send(deleteObjectCommand);\n\t\t\tdispatchStorageEvent(\n\t\t\t\ttrack,\n\t\t\t\t'delete',\n\t\t\t\t{ method: 'remove', result: 'success' },\n\t\t\t\tnull,\n\t\t\t\t`Deleted ${key} successfully`\n\t\t\t);\n\t\t\treturn response;\n\t\t} catch (error) {\n\t\t\tdispatchStorageEvent(\n\t\t\t\ttrack,\n\t\t\t\t'delete',\n\t\t\t\t{ method: 'remove', result: 'failed' },\n\t\t\t\tnull,\n\t\t\t\t`Deletion of ${key} failed with ${error}`\n\t\t\t);\n\t\t\tthrow error;\n\t\t}\n\t}\n\tprivate async _list(\n\t\tparams: ListObjectsV2Request,\n\t\topt: S3ClientOptions,\n\t\tprefix: string\n\t): Promise {\n\t\tconst result: S3ProviderListOutputWithToken = {\n\t\t\tcontents: [],\n\t\t\tnextToken: '',\n\t\t};\n\t\tconst s3 = this._createNewS3Client(opt);\n\t\tconst listObjectsV2Command = new ListObjectsV2Command({ ...params });\n\t\tconst response = await s3.send(listObjectsV2Command);\n\t\tif (response && response.Contents) {\n\t\t\tresult.contents = response.Contents.map(item => {\n\t\t\t\treturn {\n\t\t\t\t\tkey: item.Key.substr(prefix.length),\n\t\t\t\t\teTag: item.ETag,\n\t\t\t\t\tlastModified: item.LastModified,\n\t\t\t\t\tsize: item.Size,\n\t\t\t\t};\n\t\t\t});\n\t\t\tresult.nextToken = response.NextContinuationToken;\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * List bucket objects relative to the level and prefix specified\n\t * @param {string} path - the path that contains objects\n\t * @param {S3ProviderListConfig} [config] - Optional configuration for the underlying S3 command\n\t * @return {Promise} - Promise resolves to list of keys, eTags, lastModified and file size for\n\t * all objects in path\n\t */\n\tpublic async list(\n\t\tpath: string,\n\t\tconfig?: S3ProviderListConfig\n\t): Promise {\n\t\tconst credentialsOK = await this._ensureCredentials();\n\t\tif (!credentialsOK || !this._isWithCredentials(this._config)) {\n\t\t\tthrow new Error(StorageErrorStrings.NO_CREDENTIALS);\n\t\t}\n\t\tconst opt: S3ClientOptions = Object.assign({}, this._config, config);\n\t\tconst { bucket, track, maxKeys } = opt;\n\t\tconst prefix = this._prefix(opt);\n\t\tconst final_path = prefix + path;\n\t\tlogger.debug('list ' + path + ' from ' + final_path);\n\t\ttry {\n\t\t\tconst list: S3ProviderListOutput = [];\n\t\t\tlet token: string;\n\t\t\tlet listResult: S3ProviderListOutputWithToken;\n\t\t\tconst params: ListObjectsV2Request = {\n\t\t\t\tBucket: bucket,\n\t\t\t\tPrefix: final_path,\n\t\t\t\tMaxKeys: 1000,\n\t\t\t};\n\t\t\tif (maxKeys === 'ALL') {\n\t\t\t\tdo {\n\t\t\t\t\tparams.ContinuationToken = token;\n\t\t\t\t\tparams.MaxKeys = 1000;\n\t\t\t\t\tlistResult = await this._list(params, opt, prefix);\n\t\t\t\t\tlist.push(...listResult.contents);\n\t\t\t\t\tif (listResult.nextToken) token = listResult.nextToken;\n\t\t\t\t} while (listResult.nextToken);\n\t\t\t} else {\n\t\t\t\tmaxKeys < 1000 || typeof maxKeys === 'string'\n\t\t\t\t\t? (params.MaxKeys = maxKeys)\n\t\t\t\t\t: (params.MaxKeys = 1000);\n\t\t\t\tlistResult = await this._list(params, opt, prefix);\n\t\t\t\tlist.push(...listResult.contents);\n\t\t\t\tif (maxKeys > 1000)\n\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t\"maxkeys can be from 0 - 1000 or 'ALL'. To list all files you can set maxKeys to 'ALL'.\"\n\t\t\t\t\t);\n\t\t\t}\n\t\t\tdispatchStorageEvent(\n\t\t\t\ttrack,\n\t\t\t\t'list',\n\t\t\t\t{ method: 'list', result: 'success' },\n\t\t\t\tnull,\n\t\t\t\t`${list.length} items returned from list operation`\n\t\t\t);\n\t\t\tlogger.debug('list', list);\n\t\t\treturn list;\n\t\t} catch (error) {\n\t\t\tlogger.warn('list error', error);\n\t\t\tdispatchStorageEvent(\n\t\t\t\ttrack,\n\t\t\t\t'list',\n\t\t\t\t{ method: 'list', result: 'failed' },\n\t\t\t\tnull,\n\t\t\t\t`Listing items failed: ${error.message}`\n\t\t\t);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate async _ensureCredentials(): Promise {\n\t\ttry {\n\t\t\tconst credentials = await Credentials.get();\n\t\t\tif (!credentials) return false;\n\t\t\tconst cred = Credentials.shear(credentials);\n\t\t\tlogger.debug('set credentials for storage', cred);\n\t\t\tthis._config.credentials = cred;\n\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\tlogger.warn('ensure credentials error', error);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate _isWithCredentials(\n\t\tconfig: StorageOptions\n\t): config is StorageOptions & { credentials: ICredentials } {\n\t\treturn typeof config === 'object' && config.hasOwnProperty('credentials');\n\t}\n\n\tprivate _prefix(config: {\n\t\tcredentials: ICredentials;\n\t\tlevel?: StorageAccessLevel;\n\t\tcustomPrefix?: CustomPrefix;\n\t\tidentityId?: string;\n\t}): string {\n\t\tconst { credentials, level } = config;\n\n\t\tconst customPrefix = config.customPrefix || {};\n\t\tconst identityId = config.identityId || credentials.identityId;\n\t\tconst privatePath =\n\t\t\t(customPrefix.private !== undefined ? customPrefix.private : 'private/') +\n\t\t\tidentityId +\n\t\t\t'/';\n\t\tconst protectedPath =\n\t\t\t(customPrefix.protected !== undefined\n\t\t\t\t? customPrefix.protected\n\t\t\t\t: 'protected/') +\n\t\t\tidentityId +\n\t\t\t'/';\n\t\tconst publicPath =\n\t\t\tcustomPrefix.public !== undefined ? customPrefix.public : 'public/';\n\n\t\tswitch (level) {\n\t\t\tcase 'private':\n\t\t\t\treturn privatePath;\n\t\t\tcase 'protected':\n\t\t\t\treturn protectedPath;\n\t\t\tdefault:\n\t\t\t\treturn publicPath;\n\t\t}\n\t}\n\n\t/**\n\t * Creates an S3 client with new V3 aws sdk\n\t */\n\tprivate _createNewS3Client(\n\t\tconfig: {\n\t\t\tregion?: string;\n\t\t\tcancelTokenSource?: CancelTokenSource;\n\t\t\tdangerouslyConnectToHttpEndpointForTesting?: boolean;\n\t\t\tuseAccelerateEndpoint?: boolean;\n\t\t},\n\t\temitter?: events.EventEmitter\n\t): S3Client {\n\t\tconst s3client = createS3Client(config, emitter);\n\t\ts3client.middlewareStack.add(\n\t\t\tautoAdjustClockskewMiddleware(s3client.config),\n\t\t\tautoAdjustClockskewMiddlewareOptions\n\t\t);\n\t\treturn s3client;\n\t}\n}\n\n/**\n * @deprecated use named import\n */\nexport default AWSS3Provider;\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport { ConsoleLogger as Logger, Parser } from '@aws-amplify/core';\nimport { AWSS3Provider } from './providers';\nimport {\n\tStorageCopySource,\n\tStorageCopyDestination,\n\tStorageGetConfig,\n\tStorageProvider,\n\tStoragePutConfig,\n\tStorageRemoveConfig,\n\tStorageListConfig,\n\tStorageCopyConfig,\n\tStorageProviderWithCopy,\n\tStorageGetOutput,\n\tStoragePutOutput,\n\tStorageRemoveOutput,\n\tStorageListOutput,\n\tStorageCopyOutput,\n\tUploadTask,\n} from './types';\nimport axios, { CancelTokenSource } from 'axios';\nimport { PutObjectCommandInput } from '@aws-sdk/client-s3';\nimport { AWSS3UploadTask } from './providers/AWSS3UploadTask';\n\nconst logger = new Logger('StorageClass');\n\nconst DEFAULT_PROVIDER = 'AWSS3';\n/**\n * Provide storage methods to use AWS S3\n */\nexport class Storage {\n\t/**\n\t * @private\n\t */\n\tprivate _config;\n\tprivate _pluggables: StorageProvider[];\n\n\t/**\n\t * Similar to the API module. This weak map allows users to cancel their in-flight request made using the Storage\n\t * module. For every get or put request, a unique cancel token will be generated and injected to it's underlying\n\t * AxiosHttpHandler. This map maintains a mapping of Request to CancelTokenSource. When .cancel is invoked, it will\n\t * attempt to retrieve it's corresponding cancelTokenSource and cancel the in-flight request.\n\t */\n\tprivate _cancelTokenSourceMap: WeakMap, CancelTokenSource>;\n\n\t/**\n\t * @public\n\t */\n\tpublic vault: Storage;\n\n\t/**\n\t * Initialize Storage\n\t * @param {Object} config - Configuration object for storage\n\t */\n\tconstructor() {\n\t\tthis._config = {};\n\t\tthis._pluggables = [];\n\t\tthis._cancelTokenSourceMap = new WeakMap, CancelTokenSource>();\n\t\tlogger.debug('Storage Options', this._config);\n\n\t\tthis.get = this.get.bind(this);\n\t\tthis.put = this.put.bind(this);\n\t\tthis.remove = this.remove.bind(this);\n\t\tthis.list = this.list.bind(this);\n\t}\n\n\tpublic getModuleName() {\n\t\treturn 'Storage';\n\t}\n\n\t/**\n\t * add plugin into Storage category\n\t * @param {Object} pluggable - an instance of the plugin\n\t */\n\tpublic addPluggable(pluggable: StorageProvider) {\n\t\tif (pluggable && pluggable.getCategory() === 'Storage') {\n\t\t\tthis._pluggables.push(pluggable);\n\t\t\tlet config = {};\n\n\t\t\tconfig = pluggable.configure(this._config[pluggable.getProviderName()]);\n\n\t\t\treturn config;\n\t\t}\n\t}\n\n\t/**\n\t * Get the plugin object\n\t * @param providerName - the name of the plugin\n\t */\n\tpublic getPluggable(providerName: string) {\n\t\tconst pluggable = this._pluggables.find(\n\t\t\tpluggable => pluggable.getProviderName() === providerName\n\t\t);\n\t\tif (pluggable === undefined) {\n\t\t\tlogger.debug('No plugin found with providerName', providerName);\n\t\t\treturn null;\n\t\t} else return pluggable;\n\t}\n\n\t/**\n\t * Remove the plugin object\n\t * @param providerName - the name of the plugin\n\t */\n\tpublic removePluggable(providerName: string) {\n\t\tthis._pluggables = this._pluggables.filter(\n\t\t\tpluggable => pluggable.getProviderName() !== providerName\n\t\t);\n\t\treturn;\n\t}\n\n\t/**\n\t * Configure Storage\n\t * @param {Object} config - Configuration object for storage\n\t * @return {Object} - Current configuration\n\t */\n\tconfigure(config?) {\n\t\tlogger.debug('configure Storage');\n\t\tif (!config) return this._config;\n\n\t\tconst amplifyConfig = Parser.parseMobilehubConfig(config);\n\n\t\tconst storageKeysFromConfig = Object.keys(amplifyConfig.Storage);\n\n\t\tconst storageArrayKeys = [\n\t\t\t'bucket',\n\t\t\t'region',\n\t\t\t'level',\n\t\t\t'track',\n\t\t\t'customPrefix',\n\t\t\t'serverSideEncryption',\n\t\t\t'SSECustomerAlgorithm',\n\t\t\t'SSECustomerKey',\n\t\t\t'SSECustomerKeyMD5',\n\t\t\t'SSEKMSKeyId',\n\t\t];\n\n\t\tconst isInStorageArrayKeys = (k: string) =>\n\t\t\tstorageArrayKeys.some(x => x === k);\n\t\tconst checkConfigKeysFromArray = (k: string[]) =>\n\t\t\tk.find(k => isInStorageArrayKeys(k));\n\n\t\tif (\n\t\t\tstorageKeysFromConfig &&\n\t\t\tcheckConfigKeysFromArray(storageKeysFromConfig) &&\n\t\t\t!amplifyConfig.Storage[DEFAULT_PROVIDER]\n\t\t) {\n\t\t\tamplifyConfig.Storage[DEFAULT_PROVIDER] = {};\n\t\t}\n\n\t\tObject.entries(amplifyConfig.Storage).map(([key, value]) => {\n\t\t\tif (key && isInStorageArrayKeys(key) && value !== undefined) {\n\t\t\t\tamplifyConfig.Storage[DEFAULT_PROVIDER][key] = value;\n\t\t\t\tdelete amplifyConfig.Storage[key];\n\t\t\t}\n\t\t});\n\n\t\t// only update new values for each provider\n\t\tObject.keys(amplifyConfig.Storage).forEach(providerName => {\n\t\t\tif (typeof amplifyConfig.Storage[providerName] !== 'string') {\n\t\t\t\tthis._config[providerName] = {\n\t\t\t\t\t...this._config[providerName],\n\t\t\t\t\t...amplifyConfig.Storage[providerName],\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\n\t\tthis._pluggables.forEach(pluggable => {\n\t\t\tpluggable.configure(this._config[pluggable.getProviderName()]);\n\t\t});\n\n\t\tif (this._pluggables.length === 0) {\n\t\t\tthis.addPluggable(new AWSS3Provider());\n\t\t}\n\n\t\treturn this._config;\n\t}\n\n\tprivate getCancellableTokenSource(): CancelTokenSource {\n\t\treturn axios.CancelToken.source();\n\t}\n\n\tprivate updateRequestToBeCancellable(\n\t\trequest: Promise,\n\t\tcancelTokenSource: CancelTokenSource\n\t) {\n\t\tthis._cancelTokenSourceMap.set(request, cancelTokenSource);\n\t}\n\n\tprivate isUploadTask(x: unknown): x is UploadTask {\n\t\treturn (\n\t\t\ttypeof x !== 'undefined' &&\n\t\t\ttypeof x['pause'] === 'function' &&\n\t\t\ttypeof x['resume'] === 'function'\n\t\t);\n\t}\n\n\t/**\n\t * Cancels an inflight request\n\t *\n\t * @param request - The request to cancel\n\t * @param [message] - A message to include in the cancelation exception\n\t */\n\tpublic cancel(request: UploadTask, message?: string): Promise;\n\tpublic cancel(request: Promise, message?: string): void;\n\tpublic cancel(\n\t\trequest: Promise | UploadTask,\n\t\tmessage?: string\n\t): void | Promise {\n\t\tif (request instanceof AWSS3UploadTask) {\n\t\t\treturn request._cancel();\n\t\t}\n\t\tconst cancelTokenSource = this._cancelTokenSourceMap.get(\n\t\t\trequest as Promise\n\t\t);\n\t\tif (cancelTokenSource) {\n\t\t\tcancelTokenSource.cancel(message);\n\t\t} else {\n\t\t\tlogger.debug('The request does not map to any cancel token');\n\t\t}\n\t}\n\n\t/**\n\t * Copies a file from src to dest.\n\t *\n\t * @param src - The source object.\n\t * @param dest - The destination object.\n\t * @param [config] - config for the Storage operation.\n\t * @return A promise resolves to the copied object's key.\n\t */\n\tpublic copy>(\n\t\tsrc: StorageCopySource,\n\t\tdest: StorageCopyDestination,\n\t\tconfig?: StorageCopyConfig\n\t): StorageCopyOutput;\n\tpublic copy(\n\t\tsrc: Parameters[0],\n\t\tdest: Parameters[1],\n\t\tconfig?: StorageCopyConfig\n\t): StorageCopyOutput {\n\t\tconst provider = config?.provider || DEFAULT_PROVIDER;\n\t\tconst prov = this._pluggables.find(\n\t\t\tpluggable => pluggable.getProviderName() === provider\n\t\t);\n\t\tif (prov === undefined) {\n\t\t\tlogger.debug('No plugin found with providerName', provider);\n\t\t\treturn Promise.reject(\n\t\t\t\t'No plugin found in Storage for the provider'\n\t\t\t) as StorageCopyOutput;\n\t\t}\n\t\tconst cancelTokenSource = this.getCancellableTokenSource();\n\t\tif (typeof prov.copy !== 'function') {\n\t\t\treturn Promise.reject(\n\t\t\t\t`.copy is not implemented on provider ${prov.getProviderName()}`\n\t\t\t) as StorageCopyOutput;\n\t\t}\n\t\tconst responsePromise = prov.copy(src, dest, {\n\t\t\t...config,\n\t\t\tcancelTokenSource,\n\t\t});\n\t\tthis.updateRequestToBeCancellable(responsePromise, cancelTokenSource);\n\t\treturn responsePromise as StorageCopyOutput;\n\t}\n\n\t/**\n\t * Get a presigned URL of the file or the object data when download:true\n\t *\n\t * @param key - key of the object\n\t * @param [config] - config for the Storage operation.\n\t * @return - A promise resolves to either a presigned url or the object\n\t */\n\t// Adding & { download?: boolean }, if not T extends { download: true } ? ... : ... will not work properly\n\tpublic get & { download?: boolean }>(\n\t\tkey: string,\n\t\tconfig?: StorageGetConfig\n\t): StorageGetOutput;\n\tpublic get<\n\t\tT extends StorageProvider | { [key: string]: any; download?: boolean }\n\t>(key: string, config?: StorageGetConfig): StorageGetOutput {\n\t\tconst provider = config?.provider || DEFAULT_PROVIDER;\n\t\tconst prov = this._pluggables.find(\n\t\t\tpluggable => pluggable.getProviderName() === provider\n\t\t);\n\t\tif (prov === undefined) {\n\t\t\tlogger.debug('No plugin found with providerName', provider);\n\t\t\treturn Promise.reject(\n\t\t\t\t'No plugin found in Storage for the provider'\n\t\t\t) as StorageGetOutput;\n\t\t}\n\t\tconst cancelTokenSource = this.getCancellableTokenSource();\n\t\tconst responsePromise = prov.get(key, {\n\t\t\t...config,\n\t\t\tcancelTokenSource,\n\t\t});\n\t\tthis.updateRequestToBeCancellable(responsePromise, cancelTokenSource);\n\t\treturn responsePromise as StorageGetOutput;\n\t}\n\n\tpublic isCancelError(error: any) {\n\t\treturn axios.isCancel(error);\n\t}\n\n\t/**\n\t * Put a file in storage bucket specified to configure method\n\t * @param key - key of the object\n\t * @param object - File to be put in bucket\n\t * @param [config] - { level : private|protected|public, contentType: MIME Types,\n\t * progressCallback: function }\n\t * @return - promise resolves to object on success\n\t */\n\tpublic put>(\n\t\tkey: string,\n\t\tobject: any,\n\t\tconfig?: StoragePutConfig\n\t): StoragePutOutput;\n\tpublic put(\n\t\tkey: string,\n\t\tobject: Omit,\n\t\tconfig?: StoragePutConfig\n\t): StoragePutOutput {\n\t\tconst provider = config?.provider || DEFAULT_PROVIDER;\n\t\tconst prov = this._pluggables.find(\n\t\t\tpluggable => pluggable.getProviderName() === provider\n\t\t);\n\t\tif (prov === undefined) {\n\t\t\tlogger.debug('No plugin found with providerName', provider);\n\t\t\treturn Promise.reject(\n\t\t\t\t'No plugin found in Storage for the provider'\n\t\t\t) as StoragePutOutput;\n\t\t}\n\t\tconst cancelTokenSource = this.getCancellableTokenSource();\n\t\tconst response = prov.put(key, object, {\n\t\t\t...config,\n\t\t\tcancelTokenSource,\n\t\t});\n\t\tif (!this.isUploadTask(response)) {\n\t\t\tthis.updateRequestToBeCancellable(response, cancelTokenSource);\n\t\t}\n\t\treturn response as StoragePutOutput;\n\t}\n\n\t/**\n\t * Remove the object for specified key\n\t * @param key - key of the object\n\t * @param [config] - { level : private|protected|public }\n\t * @return - Promise resolves upon successful removal of the object\n\t */\n\tpublic remove>(\n\t\tkey: string,\n\t\tconfig?: StorageRemoveConfig\n\t): StorageRemoveOutput;\n\tpublic remove(\n\t\tkey: string,\n\t\tconfig?: StorageRemoveConfig\n\t): StorageRemoveOutput {\n\t\tconst provider = config?.provider || DEFAULT_PROVIDER;\n\t\tconst prov = this._pluggables.find(\n\t\t\tpluggable => pluggable.getProviderName() === provider\n\t\t);\n\t\tif (prov === undefined) {\n\t\t\tlogger.debug('No plugin found with providerName', provider);\n\t\t\treturn Promise.reject(\n\t\t\t\t'No plugin found in Storage for the provider'\n\t\t\t) as StorageRemoveOutput;\n\t\t}\n\t\treturn prov.remove(key, config) as StorageRemoveOutput;\n\t}\n\n\t/**\n\t * List bucket objects relative to the level and prefix specified\n\t * @param path - the path that contains objects\n\t * @param [config] - { level : private|protected|public, maxKeys: NUMBER }\n\t * @return - Promise resolves to list of keys for all objects in path\n\t */\n\tpublic list>(\n\t\tkey: string,\n\t\tconfig?: StorageListConfig\n\t): StorageListOutput;\n\tpublic list(\n\t\tpath: string,\n\t\tconfig?: StorageListConfig\n\t): StorageListOutput {\n\t\tconst provider = config?.provider || DEFAULT_PROVIDER;\n\t\tconst prov = this._pluggables.find(\n\t\t\tpluggable => pluggable.getProviderName() === provider\n\t\t);\n\t\tif (prov === undefined) {\n\t\t\tlogger.debug('No plugin found with providerName', provider);\n\t\t\treturn Promise.reject(\n\t\t\t\t'No plugin found in Storage for the provider'\n\t\t\t) as StorageListOutput;\n\t\t}\n\t\treturn prov.list(path, config) as StorageListOutput;\n\t}\n}\n\n/**\n * @deprecated use named import\n */\nexport default Storage;\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport { Storage as StorageClass } from './Storage';\n\nimport { Amplify, ConsoleLogger as Logger } from '@aws-amplify/core';\n\nconst logger = new Logger('Storage');\n\nlet _instance: StorageClass = null;\n\nconst getInstance = () => {\n\tif (_instance) {\n\t\treturn _instance;\n\t}\n\tlogger.debug('Create Storage Instance, debug');\n\t_instance = new StorageClass();\n\t_instance.vault = new StorageClass();\n\n\tconst old_configure = _instance.configure;\n\t_instance.configure = options => {\n\t\tlogger.debug('storage configure called');\n\t\tconst vaultConfig = { ...old_configure.call(_instance, options) };\n\n\t\t// set level private for each provider for the vault\n\t\tObject.keys(vaultConfig).forEach(providerName => {\n\t\t\tif (typeof vaultConfig[providerName] !== 'string') {\n\t\t\t\tvaultConfig[providerName] = {\n\t\t\t\t\t...vaultConfig[providerName],\n\t\t\t\t\tlevel: 'private',\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t\tlogger.debug('storage vault configure called');\n\t\t_instance.vault.configure(vaultConfig);\n\t};\n\treturn _instance;\n};\n\nexport const Storage: StorageClass = getInstance();\nAmplify.register(Storage);\n\n/**\n * @deprecated use named import\n */\nexport default Storage;\n\nexport { StorageClass };\nexport * from './providers';\nexport * from './types';\n","/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nimport { Amplify, ServiceWorker } from '@aws-amplify/core';\nimport { Auth } from '@aws-amplify/auth';\nimport { Cache } from '@aws-amplify/cache';\n\n/** Always importing Auth when users import Amplify such that\n\tfor unauthenticated access (no sign in and sign up),\n\tusers don't have to import Auth explicitly **/\nAmplify.Auth = Auth;\nAmplify.Cache = Cache;\nAmplify.ServiceWorker = ServiceWorker;\n\nexport {\n\tAnalytics,\n\tAnalyticsProvider,\n\tAWSPinpointProvider,\n\tAWSKinesisProvider,\n\tAWSKinesisFirehoseProvider,\n\tAmazonPersonalizeProvider,\n} from '@aws-amplify/analytics';\n\nexport { Auth } from '@aws-amplify/auth';\nexport { Storage, StorageClass } from '@aws-amplify/storage';\nexport { API, APIClass, graphqlOperation } from '@aws-amplify/api';\nexport {\n\tAuthModeStrategyType,\n\tDataStore,\n\tPredicates,\n\tSortDirection,\n\tsyncExpression,\n} from '@aws-amplify/datastore';\nexport { PubSub } from '@aws-amplify/pubsub';\nexport { Interactions } from '@aws-amplify/interactions';\nexport * from '@aws-amplify/ui';\nexport { XR } from '@aws-amplify/xr';\nexport { Predictions } from '@aws-amplify/predictions';\nexport {\n\tConsoleLogger as Logger,\n\tHub,\n\tJS,\n\tClientDevice,\n\tSigner,\n\tI18n,\n\tServiceWorker,\n\tAWSCloudWatchProvider,\n} from '@aws-amplify/core';\nexport { withSSRContext } from './withSSRContext';\nexport { Geo } from '@aws-amplify/geo';\n\nexport { Cache };\nexport { Amplify };\n\n/**\n * @deprecated use named import\n */\nexport default Amplify;\n","/* eslint-disable */\n// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.\n\nconst awsmobile = {\n \"aws_project_region\": \"us-west-2\",\n \"aws_mobile_analytics_app_id\": \"4bdf8de742ae4f3189411d9a2509baae\",\n \"aws_mobile_analytics_app_region\": \"us-west-2\",\n \"Analytics\": {\n \"AWSPinpoint\": {\n \"appId\": \"4bdf8de742ae4f3189411d9a2509baae\",\n \"region\": \"us-west-2\"\n }\n },\n \"aws_cloud_logic_custom\": [\n {\n \"name\": \"mappingApi\",\n \"endpoint\": \"https://qujyencst6.execute-api.us-west-2.amazonaws.com/dev\",\n \"region\": \"us-west-2\"\n }\n ],\n \"aws_cognito_identity_pool_id\": \"us-west-2:9fd9c7e8-165f-4be9-b267-ca76ffd65c94\",\n \"aws_cognito_region\": \"us-west-2\",\n \"aws_user_pools_id\": \"us-west-2_4Iv3rf3z8\",\n \"aws_user_pools_web_client_id\": \"12u15amg17uija47e1jnlq51nt\",\n \"oauth\": {},\n \"aws_cognito_username_attributes\": [],\n \"aws_cognito_social_providers\": [],\n \"aws_cognito_signup_attributes\": [\n \"EMAIL\"\n ],\n \"aws_cognito_mfa_configuration\": \"OFF\",\n \"aws_cognito_mfa_types\": [\n \"SMS\"\n ],\n \"aws_cognito_password_protection_settings\": {\n \"passwordPolicyMinLength\": 8,\n \"passwordPolicyCharacters\": []\n },\n \"aws_cognito_verification_mechanisms\": [\n \"EMAIL\"\n ]\n};\n\n\nexport default awsmobile;\n","import React from 'react';\nimport { APP_NAME } from '../constants/global';\n\nexport const MappingTitle: React.FC = () => {\n return

{APP_NAME}

;\n};\n","import React, { useEffect, useState } from 'react';\nimport { APP_NAME } from '../../constants/global';\nimport { useAuth } from '../../services/AuthHooks';\n\nconst SignupForm: React.FC = () => {\n useEffect(() => {\n document.title = `${APP_NAME} - Sign up`;\n }, []);\n\n const { signUp, confirmSignUp } = useAuth();\n\n const [username, setUsername] = useState('');\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n\n const [isSignedUp, setIsSignedUp] = useState(false);\n\n const onSubmitSignup = (e: React.SyntheticEvent) => {\n e.preventDefault();\n signUp(username, email, password).then(res =>\n res ? setIsSignedUp(true) : setIsSignedUp(false)\n );\n };\n\n return (\n
\n {isSignedUp ? (\n \n ) : (\n
\n

Sign up

\n

username

\n setUsername(e.target.value)}\n placeholder=\"Your Username\"\n type=\"username\"\n id=\"username\"\n name=\"username\"\n />\n

email

\n setEmail(e.target.value)}\n placeholder=\"Your Email\"\n type=\"email\"\n id=\"email\"\n name=\"email\"\n />\n\n

password

\n setPassword(e.target.value)}\n placeholder=\"Your Password\"\n type=\"password\"\n id=\"password\"\n name=\"password\"\n />\n\n
\n \n
\n \n )}\n
\n );\n};\ninterface VerificationFormProps {\n confirmSignUp: (username: string, code: string) => Promise;\n}\n\nconst VerificationForm: React.FC = ({ confirmSignUp }) => {\n const [confirmUsername, setConfirmUsername] = useState('');\n const [verificationCode, setVerificationCode] = useState('');\n\n const onConfirm = (e: React.SyntheticEvent) => {\n e.preventDefault();\n confirmSignUp(confirmUsername, verificationCode);\n };\n return (\n
\n

username

\n setConfirmUsername(e.target.value)}\n placeholder=\"Your Username\"\n type=\"username\"\n id=\"username\"\n name=\"username\"\n />\n

verification code

\n setVerificationCode(e.target.value)}\n placeholder=\"Your Verification Code\"\n />\n
\n \n
\n \n );\n};\n\nexport default SignupForm;\n","import { useEffect, useState } from 'react';\nimport { APP_NAME } from '../../constants/global';\nimport { useAuth } from '../../services/AuthHooks';\n\nconst LoginForm: React.FC = () => {\n useEffect(() => {\n document.title = `${APP_NAME} - Login`;\n }, []);\n\n const { signIn } = useAuth();\n\n const [username, setUsername] = useState('');\n const [password, setPassword] = useState('');\n\n const onSubmit = (e: React.SyntheticEvent) => {\n e.preventDefault();\n signIn(username, password);\n };\n\n return (\n
\n

Login

\n

username

\n setUsername(e.target.value)}\n placeholder=\"Your Username\"\n type=\"username\"\n id=\"username\"\n name=\"username\"\n />\n\n

password

\n setPassword(e.target.value)}\n placeholder=\"Your Password\"\n type=\"password\"\n id=\"password\"\n name=\"password\"\n />\n\n
\n \n
\n \n );\n};\n\nexport default LoginForm;\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { APP_NAME } from '../../constants/global';\n\ninterface Props {\n isLogin: boolean;\n}\n\nconst HomeFooter: React.FC = ({ isLogin }) => {\n const history = useHistory();\n //Go to signup\n const handleClick = () => {\n isLogin ? history.push('/auth/signup') : history.push('/auth/login');\n };\n return (\n
\n

{APP_NAME} | Privacy

\n

\n {isLogin ? 'Create an account ' : 'Login in '}\n \n

\n
\n );\n};\n\nexport default HomeFooter;\n","import React from 'react';\nimport { MappingTitle } from '../../components/MappingTitle';\nimport logo from '../../assets/map-logo.png';\nimport SignupForm from './SignupForm';\nimport LoginForm from './LoginForm';\nimport HomeFooter from './HomeFooter';\n\ninterface HomeProps {\n isLogin: boolean;\n}\n\nconst Home: React.FC = ({ isLogin }) => {\n return (\n
\n
\n \n
\n
{isLogin ? : }
\n
\n \n
\n\n
\n
\n \"Network\n
\n
\n
\n );\n};\n\nexport default Home;\n","\n\nimport { useContext } from \"react\";\nimport { Route, Redirect } from \"react-router-dom\";\nimport { AuthContext } from \"./AuthProvider\";\n\n\nconst PrivateRoute = ({ component: RouteComponent, ...rest}) => {\n const {authenticated} = useContext(AuthContext);\n\n return (\n \n authenticated ? (\n \n ) : (\n \n )\n }\n />\n );\n }\n\nexport default PrivateRoute","import React from 'react';\n\nconst UnknownPage: React.FC = () => {\n return (\n
\n

Unknown

\n
\n );\n};\n\nexport default UnknownPage;\n","import { useState, useEffect, useContext } from 'react';\nimport { API, Auth } from 'aws-amplify';\nimport { toastError, toastSuccess } from '../helpers/functions/toasts';\nimport { AuthContext } from '../services/AuthProvider';\n\nexport const useFetchScheduleAHandler = (path: string, params: any) => {\n const [data, setData] = useState();\n const [error, setError] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n\n\n useEffect(() => {\n setIsLoading(true);\n setError(false);\n //test\n const fetchData = async (): Promise => {\n if (params === null) {\n setIsLoading(false);\n return params;\n }\n try {\n const user = await Auth.currentAuthenticatedUser();\n const token = user.signInUserSession.idToken.jwtToken;\n \n const requestInfo = {\n body: { artistID: params.artistID, trackList: params.trackList, saveIsrcs: params.saveIsrcs, artistName: params.artistName },\n headers: {\n Authorization: token\n }\n };\n const res = await API.post('mappingApi', path, requestInfo);\n\n if (res) {\n setData(res);\n if (params.saveIsrcs) {\n toastSuccess('Catalogue value tableau report will be updated, please watch out for an email within 24 hours!', 10000);\n }\n else {\n toastSuccess('Schedule A created successfully');\n }\n } else {\n setError(true);\n }\n } catch (error) {\n console.log(error);\n toastError('Error creating schedule A, please try again');\n setError(true);\n }\n setIsLoading(false);\n };\n\n fetchData();\n }, [params]);\n\n return {\n data,\n error,\n isLoading\n };\n};\n","/* eslint-disable no-undef */\nexport const JSONToCSVConvertor = (JSONData, ReportTitle, ShowLabel) => {\n //If JSONData is not an object then JSON.parse will parse the JSON string in an Object\n var arrData =\n typeof JSONData !== \"object\" ? JSON.parse(JSONData) : JSONData;\n\n var CSV = \"\";\n\n //This condition will generate the Label/Header\n if (ShowLabel) {\n var row = \"\";\n\n //This loop will extract the label from 1st index of on array\n for (var index in arrData[0]) {\n //Now convert each value to string and comma-seprated\n row += index + \",\";\n }\n\n row = row.slice(0, -1);\n\n //append Label row with line break\n CSV += row + \"\\r\\n\";\n }\n\n //1st loop is to extract each row\n for (var i = 0; i < arrData.length; i++) {\n let row = \"\";\n\n //2nd loop will extract each column and convert it in string comma-seprated\n for (let index in arrData[i]) {\n row += '\"' + arrData[i][index] + '\",';\n }\n\n row.slice(0, row.length - 1);\n\n //add a line break after each row\n CSV += row + \"\\r\\n\";\n }\n\n if (CSV === \"\") {\n\n alert(\"Invalid data\");\n return;\n }\n\n //Generate a file name\n var fileName = \"\";\n //this will remove the blank-spaces from the title and replace it with an underscore\n fileName += ReportTitle.replace(/ /g, \"_\");\n\n //Initialize file format you want csv or xls\n var uri = \"data:text/csv;charset=utf-8,\" + escape(CSV);\n\n // Now the little tricky part.\n // you can use either>> window.open(uri);\n // but this will not work in some browsers\n // or you will not get the correct file extension\n\n //this trick will generate a temp tag\n var link = document.createElement(\"a\");\n link.href = uri;\n\n //set the visibility hidden so it will not effect on your web-layout\n link.style = \"visibility:hidden\";\n link.download = fileName + \".csv\";\n\n //this part will append the anchor tag and remove it after automatic click\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n};\n\n\n\n","import { getAlbumTracks, getArtistAlbums, getSeveralAlbums, getSeveralTracks } from \"../../services/spotifyService\";\nimport { chunkArray, objectInObjectArray } from \"./arrayOfObjects\";\nimport { toastError } from \"./toasts\";\n\nexport function getAllArtistAlbums(artist: string): Promise[]> {\n return new Promise((resolve, reject) => {\n const albums: Record[] = [];\n const getAlbums = async (offset = 0) => {\n const result = await getArtistAlbums(artist, offset);\n \n if (result===\"error\") {\n toastError('Could not a establish a connection to Spotify, please try again!');\n reject(\"error\");\n return;\n }\n const data = result.data;\n albums.push(...data.items);\n if (data.next) {\n getAlbums(offset + 50);\n } else {\n resolve(albums);\n }\n };\n getAlbums();\n });\n}\n\nexport function getAllTracks(album: Record): Promise[]> {\n return new Promise((resolve, reject) => {\n const tracks:any = [];\n const getTracks = async (offset = 0) => {\n const result = await getAlbumTracks(album.id, offset);\n if (result===\"error\") {\n toastError('Could not a establish a connection to Spotify, please try again!');\n reject(\"error\");\n return;\n }\n const data = result.data;\n tracks.push(...data.items);\n \n if (data.next) {\n getTracks(offset + 50);\n } else {\n resolve(tracks);\n }\n };\n getTracks();\n });\n}\n\nexport function getFullMetaDataAlbums(albums: Record[]): Promise[]> {\n return new Promise((resolve, reject) => {\n const fullMetaDataAlbums: Record[] = [];\n const getAlbums = async (offset = 0) => {\n const albumIds = albums.map(album => album.id).slice(offset, offset + 20).join(',');\n const result = await getSeveralAlbums(albumIds);\n if (result===\"error\") {\n toastError('Could not a establish a connection to Spotify, please try again!');\n reject(\"error\");\n return;\n }\n const data = result.data;\n fullMetaDataAlbums.push(...data.albums);\n if (offset + 20 < albums.length) {\n getAlbums(offset + 20);\n } else {\n resolve(fullMetaDataAlbums);\n }\n };\n getAlbums();\n });\n}\n\nexport async function getArtistTracks(artist: string): Promise[]> {\n const albums = await getAllArtistAlbums(artist);\n\n const fullMetaDataAlbums = await getFullMetaDataAlbums(albums);\n\n console.log(fullMetaDataAlbums);\n\n // Collect all track IDs from the albums\n const allTrackIds = (await Promise.all(fullMetaDataAlbums.map(album => getAllTracks(album))))\n .flat()\n .map(track => track.id);\n\n // Chunk the track IDs array into chunks of 50\n const trackIdChunks = chunkArray(allTrackIds, 50);\n\n // Fetch details for each chunk of track IDs\n const trackDetailsPromises = trackIdChunks.map(chunk => {\n const chunkedTrackIds = chunk.join(',');\n return getSeveralTracks(chunkedTrackIds);\n });\n\n const fetchedTrackDetails = await Promise.all(trackDetailsPromises);\n\n // Extract and concatenate track objects from each response\n const tracks = fetchedTrackDetails\n .filter(response => response !== 'error') // Assuming 'error' is your error flag\n .flatMap(response => response !== 'error' && response.data.tracks) // Adjust according to the actual structure of your response\n .filter(track => track); // Filter out any potential undefined or null entries\n return mergeAlbumsAndTracks(fullMetaDataAlbums, tracks);\n}\n\nfunction mergeAlbumsAndTracks(albums: Record[], tracks: Record[]): Record[] {\n return tracks.map((track) => {\n const album = albums.filter((album) => track.album.id === album.id);\n return { ...track, album: album[0] };\n });\n}\nexport function groupTracksByAlbum(tracks: Record[]): Record[] {\n const albums: Record[] = [];\n\n tracks.forEach((track) => {\n const album = track.album;\n const albumIndex = albums.findIndex((a) => a.id === album.id);\n\n if (albumIndex === -1) {\n albums.push({ ...album, tracks: [track] });\n } else {\n albums[albumIndex].tracks.push(track);\n }\n });\n\n return albums.sort((a, b) => b.release_date.localeCompare(a.release_date));\n}\n\nexport function getUniqueTrackNames(tracks: Record[]): string[] {\n const trackNames: string[] = tracks.map((track) => track.name);\n\n return Array.from(new Set(trackNames).values());\n}\n\n","import { Document, Paragraph, TextRun, HeadingLevel, AlignmentType, Table, TableRow, TableCell, UnderlineType} from \"docx\";\nimport { IScheduleA } from \"./ScheduleAHooks\";\n\n// Documents contain sections, you can have multiple sections per document, go here to learn more about sections\n// This simple example will only contain one section\n\n\n\nconst generateScheduleA = (scheduleAInput: IScheduleA[]): Document =>{\n const children: (Table | Paragraph)[] = []\n for (const album of scheduleAInput){\n const table = new Table({\n columnWidths: [1000, 2000, 1000,2000, 2200,1000],\n rows: [\n new TableRow({\n children: [\n new TableCell({\n children: [new Paragraph({children:[ new TextRun({text: \"Track Number\", bold:true})],alignment: AlignmentType.CENTER})]\n }),\n new TableCell({\n children: [new Paragraph({children:[ new TextRun({text: \"Title of Master\", bold:true})],alignment: AlignmentType.CENTER})]\n }),\n new TableCell({\n children: [new Paragraph({ children:[new TextRun({text: \"Percentage Owned by Artist\", bold:true})], alignment: AlignmentType.CENTER})]\n }),\n new TableCell({\n children: [new Paragraph({ children:[new TextRun({text: \"Third Party Co-Owners and Percentages\", bold:true})], alignment: AlignmentType.CENTER})]\n }),\n new TableCell({\n children: [new Paragraph({ children:[new TextRun({text: \"Third Party Royalty Participant(s) entitled to a share of Artist's Net Receipts\", bold:true})], alignment: AlignmentType.CENTER})]\n }),\n new TableCell({\n children: [new Paragraph({ children:[new TextRun({text: \"Third Party Participant's Share of Net Receipts\", bold:true})], alignment: AlignmentType.CENTER})]\n }),\n ],\n }),\n ...tracks(album)\n \n ],\n });\n children.push(new Paragraph({text:\"\"}))\n children.push(new Paragraph({\n children:[new TextRun({text: `${album.albumName}`, color:\"#000000\", underline: {type: UnderlineType.SINGLE }})],\n alignment: AlignmentType.LEFT\n }))\n children.push(new Paragraph({text:\"\"}))\n children.push(table)\n \n\n }\n\n const doc = new Document({\n sections:[\n {\n children: [\n\n createHeading('Schedule \"A\"', HeadingLevel.HEADING_2),\n createHeading(\"The Existing Masters\", HeadingLevel.HEADING_1),\n ...children\n ]\n }\n ]\n })\n return doc \n\n}\n\nconst tracks = (album:IScheduleA): TableRow[]=>{\n const arr: TableRow[] = [];\n album.albumTracks.map((track)=>{\n if(track.isChecked){\n arr.push(new TableRow({\n \n children: [\n new TableCell({\n children: [new Paragraph(`${track.trackNumber}`)],\n \n }),\n new TableCell({ \n children: [new Paragraph(`${track.name}`)]\n \n }),\n new TableCell({\n children: [new Paragraph(\"\")],\n \n }),\n new TableCell({\n children: [new Paragraph(\"\")],\n \n }),\n new TableCell({\n children: [new Paragraph(\"\")],\n \n }),\n new TableCell({\n children: [new Paragraph(\"\")],\n \n })\n ]\n \n }))\n }\n })\n\n return arr\n}\n\nconst createHeading = (text: string, heading: HeadingLevel): Paragraph =>{\n return new Paragraph({\n children:[new TextRun({text: text, color:\"#000000\"})],\n alignment: AlignmentType.CENTER,\n heading: heading\n });\n }\n\nexport {generateScheduleA}\n\n","import { Packer } from 'docx';\nimport saveAs from 'file-saver';\nimport { useContext, useEffect, useState } from 'react';\nimport { useFetchScheduleAHandler } from '../../../dataHandlers/scheduleAHandler';\nimport { JSONToCSVConvertor } from '../../../helpers/functions/JSONToCSVConvertor';\nimport { getAllArtistAlbums, getArtistTracks, getUniqueTrackNames, groupTracksByAlbum } from '../../../helpers/functions/spotifyHelpers';\nimport { useComponentVisible } from '../../../helpers/hooks/ComponentVisibleHooks';\nimport { generateScheduleA } from './ScheduleADocx';\nimport { AuthContext } from '../../../services/AuthProvider';\n\nexport interface IScheduleAAlbumTracks {\n name: string;\n isChecked: boolean;\n trackId: string;\n trackNumber: string;\n}\nexport interface IScheduleA {\n albumId: string;\n albumName: string;\n albumType: string;\n releaseDate: string;\n albumTracks: IScheduleAAlbumTracks[];\n}\n\nexport interface IScheduleATrack {\n email: string;\n track: string;\n artistId: string;\n artistName: string;\n isrc: string;\n row: number;\n isChecked:boolean;\n}\n\nexport const useScheduleA = () => {\n const [search, setSearch] = useState(null);\n const [artist, setArtist] = useState(null);\n const [scheduleA, setScheduleA] = useState();\n const [metaData, setMetaData] = useState();\n const [copyrightData, setCopyRightData] = useState();\n const [trackList, setTrackList] = useState(null);\n const [trackListIsLoading, setTrackListIsLoading] = useState(false); \n const [albumList, setAlbumList] = useState();\n const [saveIsrcs, setSaveIsrcs] = useState(false); \n const { ref, isComponentVisible, setIsComponentVisible } = useComponentVisible(false);\n const {user } = useContext(AuthContext);\n \n const { data: incomingData, isLoading: dataIsLoading, error } = useFetchScheduleAHandler(\n '/scheduleA',\n search\n );\n \n useEffect(() => {\n if (artist) {\n setTrackListIsLoading(true);\n getTrackList();\n } else {\n setTrackList(null);\n }\n }, [artist]);\n\n useEffect(() => {\n if (!dataIsLoading && incomingData) {\n setScheduleA(incomingData.scheduleA);\n setMetaData(incomingData.metaData);\n setCopyRightData(incomingData.copyrightData);\n }\n }, [incomingData, dataIsLoading]);\n\n useEffect(() => {\n if (scheduleA) {\n if (checkScheduleA()) {\n generateFiles();\n } else {\n setIsComponentVisible(true);\n }\n }\n }, [scheduleA, metaData]);\n\n const generateFiles = () => {\n createScheduleA();\n JSONToCSVConvertor(metaData, `metaData_${artist.name}`, true);\n JSONToCSVConvertor(copyrightData, `copyrightData_${artist.name}`, true);\n setIsComponentVisible(false);\n };\n const atLeastOneTrackSelected = (arrayOfObjects: any[]) => {\n if (arrayOfObjects) {\n for (const obj of arrayOfObjects) {\n if (obj.isChecked) {\n return true;\n }\n }\n }\n return false;\n };\n\n const getTrackList = () => {\n if (!artist) {\n return;\n }\n\n getArtistTracks(artist.id).then((tracks: Record[]) => {\n setAlbumList(groupTracksByAlbum(tracks)); \n setTrackListIsLoading(false);\n const tracksWithUniqueIsrc = tracks.filter(\n (track: Record, index: number, self: Record[]) =>\n index === self.findIndex((t: Record) => t.external_ids.isrc === track.external_ids.isrc)\n );\n const trackList: IScheduleATrack[] = [];\n\n let rowNumber = 0;\n for (let i = 0; i < tracksWithUniqueIsrc.length; i++) {\n trackList.push({\n email: user.attributes.email,\n track: tracksWithUniqueIsrc[i].name,\n artistId: artist.id,\n artistName: artist.name,\n isrc: tracksWithUniqueIsrc[i].external_ids.isrc,\n row: rowNumber,\n isChecked: false\n });\n rowNumber++;\n }\n \n setTrackList(trackList);\n });\n };\n\n const createScheduleA = () => {\n const doc = generateScheduleA(scheduleA);\n Packer.toBlob(doc).then(blob => {\n saveAs(blob, `scheduleA_${artist.name}.docx`);\n });\n };\n\n const checkScheduleA = () => {\n for (const album of scheduleA) {\n for (const track of album.albumTracks) {\n if (!track.isChecked) {\n return false;\n }\n }\n }\n return true;\n };\n\n return {\n scheduleA,\n search,\n artist,\n metaData,\n dataIsLoading,\n trackList,\n ref,\n isComponentVisible,\n trackListIsLoading,\n saveIsrcs,\n albumList,\n setSaveIsrcs,\n generateFiles,\n setIsComponentVisible,\n setTrackList,\n atLeastOneTrackSelected,\n setArtist,\n setSearch\n };\n};\n","import { useEffect, useState } from 'react';\nimport SearchSuggestion from '../../../components/SearchSuggestion';\nimport { useComponentVisible } from '../../../helpers/hooks/ComponentVisibleHooks';\n\ninterface ScheduleASearchArtistProps {\n placeholder: string;\n artist: any;\n setArtist: React.Dispatch;\n}\nconst ScheduleASearchArtist: React.FC = ({\n placeholder,\n artist,\n setArtist\n}) => {\n const { ref, isComponentVisible, setIsComponentVisible } = useComponentVisible(false);\n const [input, setInput] = useState('');\n const [newArtist, setNewArtist] = useState(false); //handle getting rid of suggestions when new artist is set\n\n useEffect(() => {\n if (artist) {\n setInput(artist['name']);\n setNewArtist(!newArtist);\n }\n }, [artist]);\n\n useEffect(() => {\n setIsComponentVisible(false);\n }, [newArtist]);\n\n return (\n
\n \n setInput(e.target.value)}\n />\n \n
\n {' '}\n \n
\n
\n );\n};\n\nexport default ScheduleASearchArtist;\n","import React, { ReactElement } from 'react';\n\ninterface ModalProps {\n show: boolean;\n children: ReactElement;\n refObj: React.MutableRefObject;\n}\nconst Modal: React.FC = ({ refObj, show, children }) => {\n return show ? (\n
\n
\n {children}\n
\n
\n ) : (\n <>\n );\n};\nexport default Modal;\n","import React from 'react';\nimport clsx, { ClassValue } from 'clsx';\nimport close from '../../../assets/close.png';\n\ninterface Props {\n children?: React.ReactNode;\n className?: ClassValue;\n onClickComponentVisible: (visible: boolean) => void;\n}\n\nexport function Explanation({ children, className, onClickComponentVisible }: Props) {\n return (\n
\n \n
\n
\n

Questions & Answers

\n

\n This schedule A tool only outputs tracks & albums that are live in the{' '}\n US market. This means that it is possible that there\n are albums that might be missed because they are not live in the US market.\n

\n
    \n
  1. \n \n
  2. \n
  3. \n \n
  4. \n
  5. \n \n
  6. \n
  7. \n \n
  8. \n
\n
\n
\n {children}\n
\n );\n // ) : null;\n}\n\nconst QandA = ({\n question,\n answer,\n solution\n}: {\n question: string;\n answer: string;\n solution?: string;\n}) => {\n return (\n
\n

{question}

\n

\n answer: {answer}\n

\n {solution ? (\n

\n solution: {solution}\n

\n ) : null}\n
\n );\n};\n","var i=Object.defineProperty;var d=(t,e,n)=>e in t?i(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var r=(t,e,n)=>(d(t,typeof e!=\"symbol\"?e+\"\":e,n),n);class o{constructor(){r(this,\"current\",this.detect());r(this,\"handoffState\",\"pending\");r(this,\"currentId\",0)}set(e){this.current!==e&&(this.handoffState=\"pending\",this.currentId=0,this.current=e)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return this.current===\"server\"}get isClient(){return this.current===\"client\"}detect(){return typeof window==\"undefined\"||typeof document==\"undefined\"?\"server\":\"client\"}handoff(){this.handoffState===\"pending\"&&(this.handoffState=\"complete\")}get isHandoffComplete(){return this.handoffState===\"complete\"}}let s=new o;export{s as env};\n","import{useEffect as t,useLayoutEffect as c}from\"react\";import{env as i}from'../utils/env.js';let l=(e,f)=>{i.isServer?t(e,f):c(e,f)};export{l as useIsoMorphicEffect};\n","import a from\"react\";import{useLatestValue as n}from'./use-latest-value.js';let o=function(t){let e=n(t);return a.useCallback((...r)=>e.current(...r),[e])};export{o as useEvent};\n","import{useRef as t}from\"react\";import{useIsoMorphicEffect as o}from'./use-iso-morphic-effect.js';function s(e){let r=t(e);return o(()=>{r.current=e},[e]),r}export{s as useLatestValue};\n","var o;import t from\"react\";import{env as r}from'../utils/env.js';import{useIsoMorphicEffect as d}from'./use-iso-morphic-effect.js';import{useServerHandoffComplete as f}from'./use-server-handoff-complete.js';let I=(o=t.useId)!=null?o:function(){let n=f(),[e,u]=t.useState(n?()=>r.nextId():null);return d(()=>{e===null&&u(r.nextId())},[e]),e!=null?\"\"+e:void 0};export{I as useId};\n","import*as t from\"react\";import{env as f}from'../utils/env.js';function s(){let r=typeof document==\"undefined\";return\"useSyncExternalStore\"in t?(o=>o.useSyncExternalStore)(t)(()=>()=>{},()=>!1,()=>!r):!1}function l(){let r=s(),[e,n]=t.useState(f.isHandoffComplete);return e&&f.isHandoffComplete===!1&&n(!1),t.useEffect(()=>{e!==!0&&n(!0)},[e]),t.useEffect(()=>f.handoff(),[]),r?!1:e}export{l as useServerHandoffComplete};\n","import{useState as o}from\"react\";import{useIsoMorphicEffect as r}from'./use-iso-morphic-effect.js';function i(t){var n;if(t.type)return t.type;let e=(n=t.as)!=null?n:\"button\";if(typeof e==\"string\"&&e.toLowerCase()===\"button\")return\"button\"}function T(t,e){let[n,u]=o(()=>i(t));return r(()=>{u(i(t))},[t.type,t.as]),r(()=>{n||e.current&&e.current instanceof HTMLButtonElement&&!e.current.hasAttribute(\"type\")&&u(\"button\")},[n,e]),n}export{T as useResolveButtonType};\n","import{useEffect as l,useRef as i}from\"react\";import{useEvent as r}from'./use-event.js';let u=Symbol();function T(t,n=!0){return Object.assign(t,{[u]:n})}function y(...t){let n=i(t);l(()=>{n.current=t},[t]);let c=r(e=>{for(let o of n.current)o!=null&&(typeof o==\"function\"?o(e):o.current=e)});return t.every(e=>e==null||(e==null?void 0:e[u]))?void 0:c}export{T as optionalRef,y as useSyncRefs};\n","import t,{createContext as l,useContext as p}from\"react\";let n=l(null);n.displayName=\"OpenClosedContext\";var d=(e=>(e[e.Open=1]=\"Open\",e[e.Closed=2]=\"Closed\",e[e.Closing=4]=\"Closing\",e[e.Opening=8]=\"Opening\",e))(d||{});function u(){return p(n)}function s({value:o,children:r}){return t.createElement(n.Provider,{value:o},r)}export{s as OpenClosedProvider,d as State,u as useOpenClosed};\n","function r(n){let e=n.parentElement,l=null;for(;e&&!(e instanceof HTMLFieldSetElement);)e instanceof HTMLLegendElement&&(l=e),e=e.parentElement;let t=(e==null?void 0:e.getAttribute(\"disabled\"))===\"\";return t&&i(l)?!1:t}function i(n){if(!n)return!1;let e=n.previousElementSibling;for(;e!==null;){if(e instanceof HTMLLegendElement)return!1;e=e.previousElementSibling}return!0}export{r as isDisabledReactIssue7711};\n","function u(r,n,...a){if(r in n){let e=n[r];return typeof e==\"function\"?e(...a):e}let t=new Error(`Tried to handle \"${r}\" but there is no handler defined. Only defined handlers are: ${Object.keys(n).map(e=>`\"${e}\"`).join(\", \")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,u),t}export{u as match};\n","import{env as n}from'./env.js';function o(r){return n.isServer?null:r instanceof Node?r.ownerDocument:r!=null&&r.hasOwnProperty(\"current\")&&r.current instanceof Node?r.current.ownerDocument:document}export{o as getOwnerDocument};\n","function t(...r){return Array.from(new Set(r.flatMap(n=>typeof n==\"string\"?n.split(\" \"):[]))).filter(Boolean).join(\" \")}export{t as classNames};\n","import{cloneElement as N,createElement as E,forwardRef as h,Fragment as g,isValidElement as P,useCallback as j,useRef as S}from\"react\";import{classNames as b}from'./class-names.js';import{match as w}from'./match.js';var O=(n=>(n[n.None=0]=\"None\",n[n.RenderStrategy=1]=\"RenderStrategy\",n[n.Static=2]=\"Static\",n))(O||{}),v=(e=>(e[e.Unmount=0]=\"Unmount\",e[e.Hidden=1]=\"Hidden\",e))(v||{});function C({ourProps:r,theirProps:t,slot:e,defaultTag:n,features:o,visible:a=!0,name:f,mergeRefs:l}){l=l!=null?l:k;let s=R(t,r);if(a)return m(s,e,n,f,l);let y=o!=null?o:0;if(y&2){let{static:u=!1,...d}=s;if(u)return m(d,e,n,f,l)}if(y&1){let{unmount:u=!0,...d}=s;return w(u?0:1,{[0](){return null},[1](){return m({...d,hidden:!0,style:{display:\"none\"}},e,n,f,l)}})}return m(s,e,n,f,l)}function m(r,t={},e,n,o){let{as:a=e,children:f,refName:l=\"ref\",...s}=F(r,[\"unmount\",\"static\"]),y=r.ref!==void 0?{[l]:r.ref}:{},u=typeof f==\"function\"?f(t):f;\"className\"in s&&s.className&&typeof s.className==\"function\"&&(s.className=s.className(t));let d={};if(t){let i=!1,c=[];for(let[T,p]of Object.entries(t))typeof p==\"boolean\"&&(i=!0),p===!0&&c.push(T);i&&(d[\"data-headlessui-state\"]=c.join(\" \"))}if(a===g&&Object.keys(x(s)).length>0){if(!P(u)||Array.isArray(u)&&u.length>1)throw new Error(['Passing props on \"Fragment\"!',\"\",`The current component <${n} /> is rendering a \"Fragment\".`,\"However we need to passthrough the following props:\",Object.keys(s).map(p=>` - ${p}`).join(`\n`),\"\",\"You can apply a few solutions:\",['Add an `as=\"...\"` prop, to ensure that we render an actual element instead of a \"Fragment\".',\"Render a single element as the child so that we can forward the props onto that element.\"].map(p=>` - ${p}`).join(`\n`)].join(`\n`));let i=u.props,c=typeof(i==null?void 0:i.className)==\"function\"?(...p)=>b(i==null?void 0:i.className(...p),s.className):b(i==null?void 0:i.className,s.className),T=c?{className:c}:{};return N(u,Object.assign({},R(u.props,x(F(s,[\"ref\"]))),d,y,{ref:o(u.ref,y.ref)},T))}return E(a,Object.assign({},F(s,[\"ref\"]),a!==g&&y,a!==g&&d),u)}function I(){let r=S([]),t=j(e=>{for(let n of r.current)n!=null&&(typeof n==\"function\"?n(e):n.current=e)},[]);return(...e)=>{if(!e.every(n=>n==null))return r.current=e,t}}function k(...r){return r.every(t=>t==null)?void 0:t=>{for(let e of r)e!=null&&(typeof e==\"function\"?e(t):e.current=t)}}function R(...r){var n;if(r.length===0)return{};if(r.length===1)return r[0];let t={},e={};for(let o of r)for(let a in o)a.startsWith(\"on\")&&typeof o[a]==\"function\"?((n=e[a])!=null||(e[a]=[]),e[a].push(o[a])):t[a]=o[a];if(t.disabled||t[\"aria-disabled\"])return Object.assign(t,Object.fromEntries(Object.keys(e).map(o=>[o,void 0])));for(let o in e)Object.assign(t,{[o](a,...f){let l=e[o];for(let s of l){if((a instanceof Event||(a==null?void 0:a.nativeEvent)instanceof Event)&&a.defaultPrevented)return;s(a,...f)}}});return t}function U(r){var t;return Object.assign(h(r),{displayName:(t=r.displayName)!=null?t:r.name})}function x(r){let t=Object.assign({},r);for(let e in t)t[e]===void 0&&delete t[e];return t}function F(r,t=[]){let e=Object.assign({},r);for(let n of t)n in e&&delete e[n];return e}export{O as Features,v as RenderStrategy,x as compact,U as forwardRefWithAs,C as render,I as useMergeRefsFn};\n","var t;import r from\"react\";let a=(t=r.startTransition)!=null?t:function(i){i()};export{a as startTransition};\n","var o=(r=>(r.Space=\" \",r.Enter=\"Enter\",r.Escape=\"Escape\",r.Backspace=\"Backspace\",r.Delete=\"Delete\",r.ArrowLeft=\"ArrowLeft\",r.ArrowUp=\"ArrowUp\",r.ArrowRight=\"ArrowRight\",r.ArrowDown=\"ArrowDown\",r.Home=\"Home\",r.End=\"End\",r.PageUp=\"PageUp\",r.PageDown=\"PageDown\",r.Tab=\"Tab\",r))(o||{});export{o as Keys};\n","import E,{createContext as I,Fragment as H,useContext as x,useEffect as h,useMemo as S,useReducer as G,useRef as R}from\"react\";import{useEvent as A}from'../../hooks/use-event.js';import{useId as U}from'../../hooks/use-id.js';import{useResolveButtonType as j}from'../../hooks/use-resolve-button-type.js';import{optionalRef as W,useSyncRefs as L}from'../../hooks/use-sync-refs.js';import{OpenClosedProvider as $,State as b,useOpenClosed as J}from'../../internal/open-closed.js';import{isDisabledReactIssue7711 as X}from'../../utils/bugs.js';import{match as O}from'../../utils/match.js';import{getOwnerDocument as q}from'../../utils/owner.js';import{Features as w,forwardRefWithAs as B,render as k,useMergeRefsFn as N}from'../../utils/render.js';import{startTransition as z}from'../../utils/start-transition.js';import{Keys as g}from'../keyboard.js';var Q=(o=>(o[o.Open=0]=\"Open\",o[o.Closed=1]=\"Closed\",o))(Q||{}),V=(t=>(t[t.ToggleDisclosure=0]=\"ToggleDisclosure\",t[t.CloseDisclosure=1]=\"CloseDisclosure\",t[t.SetButtonId=2]=\"SetButtonId\",t[t.SetPanelId=3]=\"SetPanelId\",t[t.LinkPanel=4]=\"LinkPanel\",t[t.UnlinkPanel=5]=\"UnlinkPanel\",t))(V||{});let Y={[0]:e=>({...e,disclosureState:O(e.disclosureState,{[0]:1,[1]:0})}),[1]:e=>e.disclosureState===1?e:{...e,disclosureState:1},[4](e){return e.linkedPanel===!0?e:{...e,linkedPanel:!0}},[5](e){return e.linkedPanel===!1?e:{...e,linkedPanel:!1}},[2](e,n){return e.buttonId===n.buttonId?e:{...e,buttonId:n.buttonId}},[3](e,n){return e.panelId===n.panelId?e:{...e,panelId:n.panelId}}},M=I(null);M.displayName=\"DisclosureContext\";function _(e){let n=x(M);if(n===null){let o=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(o,_),o}return n}let v=I(null);v.displayName=\"DisclosureAPIContext\";function K(e){let n=x(v);if(n===null){let o=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(o,K),o}return n}let F=I(null);F.displayName=\"DisclosurePanelContext\";function Z(){return x(F)}function ee(e,n){return O(n.type,Y,e,n)}let te=H;function ne(e,n){let{defaultOpen:o=!1,...i}=e,f=R(null),l=L(n,W(u=>{f.current=u},e.as===void 0||e.as===H)),t=R(null),d=R(null),s=G(ee,{disclosureState:o?0:1,linkedPanel:!1,buttonRef:d,panelRef:t,buttonId:null,panelId:null}),[{disclosureState:c,buttonId:a},D]=s,p=A(u=>{D({type:1});let y=q(f);if(!y||!a)return;let r=(()=>u?u instanceof HTMLElement?u:u.current instanceof HTMLElement?u.current:y.getElementById(a):y.getElementById(a))();r==null||r.focus()}),P=S(()=>({close:p}),[p]),T=S(()=>({open:c===0,close:p}),[c,p]),C={ref:l};return E.createElement(M.Provider,{value:s},E.createElement(v.Provider,{value:P},E.createElement($,{value:O(c,{[0]:b.Open,[1]:b.Closed})},k({ourProps:C,theirProps:i,slot:T,defaultTag:te,name:\"Disclosure\"}))))}let le=\"button\";function oe(e,n){let o=U(),{id:i=`headlessui-disclosure-button-${o}`,...f}=e,[l,t]=_(\"Disclosure.Button\"),d=Z(),s=d===null?!1:d===l.panelId,c=R(null),a=L(c,n,s?null:l.buttonRef),D=N();h(()=>{if(!s)return t({type:2,buttonId:i}),()=>{t({type:2,buttonId:null})}},[i,t,s]);let p=A(r=>{var m;if(s){if(l.disclosureState===1)return;switch(r.key){case g.Space:case g.Enter:r.preventDefault(),r.stopPropagation(),t({type:0}),(m=l.buttonRef.current)==null||m.focus();break}}else switch(r.key){case g.Space:case g.Enter:r.preventDefault(),r.stopPropagation(),t({type:0});break}}),P=A(r=>{switch(r.key){case g.Space:r.preventDefault();break}}),T=A(r=>{var m;X(r.currentTarget)||e.disabled||(s?(t({type:0}),(m=l.buttonRef.current)==null||m.focus()):t({type:0}))}),C=S(()=>({open:l.disclosureState===0}),[l]),u=j(e,c),y=s?{ref:a,type:u,onKeyDown:p,onClick:T}:{ref:a,id:i,type:u,\"aria-expanded\":l.disclosureState===0,\"aria-controls\":l.linkedPanel?l.panelId:void 0,onKeyDown:p,onKeyUp:P,onClick:T};return k({mergeRefs:D,ourProps:y,theirProps:f,slot:C,defaultTag:le,name:\"Disclosure.Button\"})}let re=\"div\",se=w.RenderStrategy|w.Static;function ue(e,n){let o=U(),{id:i=`headlessui-disclosure-panel-${o}`,...f}=e,[l,t]=_(\"Disclosure.Panel\"),{close:d}=K(\"Disclosure.Panel\"),s=N(),c=L(n,l.panelRef,T=>{z(()=>t({type:T?4:5}))});h(()=>(t({type:3,panelId:i}),()=>{t({type:3,panelId:null})}),[i,t]);let a=J(),D=(()=>a!==null?(a&b.Open)===b.Open:l.disclosureState===0)(),p=S(()=>({open:l.disclosureState===0,close:d}),[l,d]),P={ref:c,id:i};return E.createElement(F.Provider,{value:l.panelId},k({mergeRefs:s,ourProps:P,theirProps:f,slot:p,defaultTag:re,features:se,visible:D,name:\"Disclosure.Panel\"}))}let ie=B(ne),ae=B(oe),pe=B(ue),Ae=Object.assign(ie,{Button:ae,Panel:pe});export{Ae as Disclosure};\n","import React from 'react';\nimport { IScheduleA, IScheduleAAlbumTracks, useScheduleA } from './ScheduleAHooks';\nimport ScheduleASearchArtist from './ScheduleASearchArtist';\nimport Loading from '../../../components/Loading';\nimport Modal from '../../../components/Modal';\nimport { Explanation } from './Explanation';\nimport { useComponentVisible } from '../../../helpers/hooks/ComponentVisibleHooks';\nimport { Disclosure } from '@headlessui/react';\nimport downArrow from '../../../assets/down-arrow.png';\nimport upArrow from '../../../assets/up-arrow.png';\nimport clsx from 'clsx';\n\nexport const ScheduleABuilder: React.FC = () => {\n const {\n scheduleA,\n artist,\n dataIsLoading,\n trackListIsLoading,\n trackList,\n ref,\n isComponentVisible,\n saveIsrcs,\n albumList,\n setSaveIsrcs,\n setIsComponentVisible,\n generateFiles,\n setTrackList,\n setArtist,\n setSearch,\n atLeastOneTrackSelected\n } = useScheduleA();\n\n const {\n ref: instructionsRef,\n isComponentVisible: instructionsIsComponentVisible,\n setIsComponentVisible: setInstructionsIsComponentVisible\n } = useComponentVisible(false);\n\n const handleIsComponentVisible = (visible: boolean) => {\n setInstructionsIsComponentVisible(visible);\n };\n\n const formValidation = (): boolean => {\n return (artist && trackList) !== null && atLeastOneTrackSelected(trackList);\n };\n const handleSubmit = (event: React.FormEvent) => {\n event.preventDefault();\n if (formValidation()) {\n setSearch({\n artistID: artist.id,\n trackList: trackList,\n artistName: artist.name,\n saveIsrcs: saveIsrcs,\n });\n }\n };\n\n const handleTrackChange = (isChecked: boolean, isrc: string) => {\n const trackIndex = trackList?.findIndex((t) => t.isrc === isrc);\n if (trackIndex !== undefined && trackList) {\n const newTrackList = [...trackList];\n newTrackList[trackIndex].isChecked = isChecked;\n setTrackList(newTrackList);\n }\n }\n\n const handleSelectAllOnAlbum = (checked: boolean, albumId: string) => {\n const album = albumList?.find((a) => a.id === albumId);\n if (album) {\n const newTrackList = trackList?.map((t) => {\n if (album.tracks.find((track: any) => track.external_ids.isrc === t.isrc)) {\n return { ...t, isChecked: checked };\n }\n return t;\n });\n setTrackList(newTrackList);\n }\n };\n\n const handleSelectAll = (checked: boolean) => {\n const newTrackList = trackList?.map((t) => {\n return { ...t, isChecked: checked };\n });\n setTrackList(newTrackList);\n }\n\n const isAllSelected = trackList?.every((t) => t.isChecked);\n\n const isAllSelectedOnAlbum = (albumId: string) => {\n const album = albumList?.find((a) => a.id === albumId);\n if (album) {\n const selectedTracks = album.tracks.filter((track: any) => {\n return trackList?.find((t) => t.isrc === track.external_ids.isrc && t.isChecked);\n });\n return selectedTracks.length === album.tracks.length;\n }\n return false;\n }\n\n const getNumberOfTracksSelectedOnAlbum = (albumId: string) => {\n const album = albumList?.find((a) => a.id === albumId);\n if (album) {\n const selectedTracks = album.tracks.filter((track: any) => {\n return trackList?.find((t) => t.isrc === track.external_ids.isrc && t.isChecked);\n });\n return selectedTracks.length;\n }\n return 0;\n }\n\n\n\n return (\n \n }\n />\n handleIsComponentVisible(true)}\n >\n Read Me\n \n
\n

Schedule \"A\" Creator

\n
\n\n
\n
\n {dataIsLoading || trackListIsLoading ? : <>}{' '}\n
\n
\n \n Generate Schedule A\n \n
\n
\n
\n
\n setSaveIsrcs(e)}\n step={1. Do you want to update the catalogue value tableau report (used by A&R)?}\n isChecked={saveIsrcs}\n />\n \n
\n
\n 2. Who is the artist?}\n />\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n {albumList ? (\n
\n
\n

{albumList?.length} releases

\n { handleSelectAll(e.target.checked)}}\n />\n
\n \n {\n albumList.map((album, idx) => {\n return \n {({ open }) => (\n
\n \n
\n
\n {album.name}\n
\n
\n

{album.name}

\n
\n

{getNumberOfTracksSelectedOnAlbum(album.id)} / {album.total_tracks }

\n e.stopPropagation()}\n onChange={e =>{ handleSelectAllOnAlbum(e.target.checked, album.id)}}\n />\n
\n
\n

{album.album_type} • {album.release_date} • {album.total_tracks} songs

\n

{album.label} (US label)

\n
\n \n
\n \n
\n
\n \n
    \n {album.tracks.map((track: any) =>
  1. \n

    {track.track_number}.

    \n
    \n t.isrc === track.external_ids.isrc)?.isChecked}\n onChange={e => handleTrackChange(e.target.checked, track.external_ids.isrc)}\n />\n
    \n

    t.isrc === track.external_ids.isrc)?.isChecked ? 'text-black' : 'text-gray-20', 'text-lg font-bold')}>{track.name}

    \n

    {track.artists.map((artist: any) => artist.name).join(', ')}

    \n
    \n
    \n
  2. \n )}\n
\n \n
\n \n
\n )}\n
\n })\n }
\n ) : (\n null\n )}\n
\n \n }\n />\n
\n \n \n );\n};\n\ninterface StepHeaderProps {\n onChange?: (isChecked: boolean) => void\n step: React.ReactNode;\n isChecked?: boolean;\n}\nconst StepHeader: React.FC = ({ step, isChecked, onChange }) => {\n return (\n
\n

{step}

\n {isChecked !== undefined ? : null}\n \n
\n );\n};\n\ninterface ScheduleAPopUpProps {\n albums: IScheduleA[];\n generateFiles: () => void;\n setIsComponentVisible: React.Dispatch>;\n}\n\nconst ScheduleAPopUp: React.FC = ({\n albums,\n setIsComponentVisible,\n generateFiles\n}) => {\n const atLeastOneTrackNotSelected = (albumTracks: IScheduleAAlbumTracks[]) => {\n if (albumTracks) {\n for (const track of albumTracks) {\n if (!track.isChecked) {\n return true;\n }\n }\n }\n return false;\n };\n\n return (\n
\n

\n {' '}\n You may have missed some tracks, are you sure you want to continue?{' '}\n {' '}\n or{' '}\n {\n setIsComponentVisible(false);\n }}\n >\n no\n {' '}\n

\n
\n {albums.map((album, albIdx) => {\n return atLeastOneTrackNotSelected(album.albumTracks) ? (\n
    \n \n {album.albumName} ({album.albumType})\n \n {album.albumTracks.map((track, trackIdx) => {\n return (\n
  1. \n {track.name} -{' '}\n \n {track.isChecked ? 'selected' : 'not selected'}\n \n
  2. \n );\n })}\n
\n ) : (\n <>\n );\n })}\n
\n
\n
\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport './App.css';\nimport NavBar from './components/NavBar';\nimport { CommunityContainer } from './views/Mapping/Community/CommunityContainer';\nimport {\n BrowserRouter as Router,\n Switch,\n Route,\n Link,\n Redirect\n} from \"react-router-dom\";\nimport { GenreContainer } from './views/Mapping/Genre/GenreContainer';\nimport { toast } from 'react-toastify';\nimport \"react-toastify/dist/ReactToastify.css\"\nimport { ConnectionContainer } from './views/Mapping/Connection/ConnectionContainer';\nimport { NettwerkContainer } from './views/Mapping/Nettwerk/NettwerkContainer';\nimport Amplify, { Analytics, API, Auth } from 'aws-amplify';\nimport awsconfig from './aws-exports';\nimport Home from './views/Auth/Home'; \nimport { AuthProvider } from './services/AuthProvider';\nimport PrivateRoute from './services/PrivateRoute';\nimport UnknownPage from './components/UnknownPage';\nimport { ScheduleABuilder } from './views/AnR/ScheduleA/ScheduleABuilderContainer';\nimport { Graph } from './components/graph/Graph';\n\n\n\n\nAmplify.configure(awsconfig)\ntoast.configure() //configures toast to run on App DOM\n\n\n// Auth.currentAuthenticatedUser()\n// .then(user => {\n// Analytics.autoTrack('pageView', {\n// enable: true,\n// attributes: {\n// userEmail:user.attributes.email\n// },\n// metrics:{\n// userEmail:user.attributes.email\n// }\n// })\n// });\n\nfunction App() {\n\n return (\n \n \n \n {/* \n \n */}\n \n \n \n \n \n \n {/* {return loggedIn ? : }}/> */}\n \n {/* */}\n { \"Communities\" }\n \n \n \n );\n}\n\nconst MappingRoutes = () => {\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n );\n \n};\n\nconst AuthRoutes = () => {\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n\nconst AnRRoutes = () => {\n return (\n \n \n \n \n \n );\n}; \nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"names":["Object","defineProperty","exports","value","_default","graphData","directed","nodes","edges","matrix","nodeMap","Error","forEach","node","i","id","push","edge","source","target","sIndex","tIndex","enumerable","get","_index","GADDIAsync","connectedComponentAsync","detectAllCyclesAsync","detectAllDirectedCycleAsync","detectAllUndirectedCycleAsync","detectCycleAsync","detectDirectedCycleAsync","dijkstraAsync","findAllPathAsync","findShortestPathAsync","floydWarshallAsync","getAdjMatrixAsync","getDegreeAsync","getInDegreeAsync","getNeighborsAsync","getOutDegreeAsync","labelPropagationAsync","louvainAsync","minimumSpanningTreeAsync","pageRankAsync","require","obj","_queue","__esModule","default","_util","startNodeId","originalCallbacks","callbacks","initiatedCallback","stubCallback","allowTraversalCallback","seen","_a","next","allowTraversal","enter","leave","initCallbacks","nodeQueue","enqueue","previousNode","_loop_1","currentNode","dequeue","current","previous","getNeighbors","undefined","nextNode","isEmpty","detectStrongConnectComponents","detectConnectedComponents","_b","allComponents","visited","nodeStack","getComponent","neighbors","neighbor","targetNode","filter","length","component","pop","inStack","indices","lowLink","index","n","map","indexOf","_loop_2","targetNodeID","Math","min","tmpNode","_i","nodes_1","secondReg","dateReg","getOutDegree","getInDegree","degree","degrees","inDegree","outDegree","nodeId","_typeof","Symbol","iterator","constructor","prototype","detectAllUndirectedCycle","detectAllDirectedCycle","detectAllCycles","_dfs","_connectedComponent","nodeInterop","cache","_getRequireWildcardCache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","key","hasOwnProperty","call","desc","set","_interopRequireWildcard","WeakMap","cacheBabelInterop","cacheNodeInterop","nodeIds","include","allCycles","components_1","root","rootId","stack","parent_1","used","Set","curNode","curNodeId","_c","neighborId","find","cycleValid","cyclePath","p","size","findIndex","cycle","add","path","blocked","B","idx2Node","node2Idx","circuit","start","adjList","closed","thisNode","delete","clear","unblock","getMinComponentAdj","components","minCompIdx","minIdx","Infinity","comp","j","nodeIdx_1","c","nodeIdx","subgraphNodes","sccs","scc","startNode","dfsParentMap","unvisitedSet","visitingSet","visitedSet","currentCycleNode","previousCycleNode","keys","firsetUnVisitedKey","depthFirstSearchRecursive","_tslib","_util2","weightPropertyName","marks","D","prevs","nodeNum","minNode","minDis","minVertex","minNodeId","getOutEdgesNodeId","getEdgesByNodeId","edgeTarget","edgeSource","w","weight","paths","findAllPaths","allPath","foundPaths","prevPaths","prevPaths_1","prePath","isArray","__spreadArray","findShortestPath","findAllPath","_dijkstra","end","isVisited","children","child","shift","_adjacentMatrix","adjacentMatrix","dist","k","_struct","DFSedge","fromNode","toNode","fromNodeLabel","edgeLabel","toNodeLabel","this","nodeEdgeNodeLabel","nodeLabel1","VACANT_NODE_LABEL","VACANT_EDGE_LABEL","nodeLabel2","equalTo","other","formNode","notEqualTo","DFScode","rmpath","dfsEdgeList","aLength","pushBack","toGraph","graphId","VACANT_GRAPH_ID","graph","Graph","dfsEdge","fromNodeId","toNodeId","addNode","addEdge","buildRmpath","oldFrom","fromNodeIdx","toNodeIdx","getNodeNum","History","pdfs","his","nodesUsed","edgesUsed","e","from","to","preNode","reverse","hasNode","hasEdge","GSpan","graphs","minSupport","minNodeNum","_d","maxNodeNum","_e","top","_f","_g","verbose","dfsCode","support","frequentSize1Subgraphs","frequentSubgraphs","counter","reportDF","findForwardRootEdges","_this","result","label","findBackwardEdge","edge1","edge2","history","edge2ToEdges","edgeLength","findForwardPureEdges","rightmostEdge","minNodeLabel","rightmostEdgeToId","findForwardRmpathEdges","newToNodeLabel","getSupport","projected","graphMap","pro","findMinLabel","minLabel","isMin","console","log","dfsCodeMin","otherNode","concat","projectIsMin","maxToC","backwardRoot","flag","newTo","backwardEdge","minBackwardEdgeLabel","idx_1","forwardRoot","newFrom","forwardPureEdges","pathLength","forwardRmpathEdges","forwardMinEdgeNodeLabel","idx","report","clone","subGraphMining","_loop_3","generate1EdgeFrequentSubGraphs","nodeLabelCounter","nodeEdgeNodeCounter","nodeLableCounted","nodeEdgeNodeLabelCounted","nodeLabel","graphNodeKey","graphKey","tmp","graphNodeEdgeNodeKey","nodeEdgeNodeKey","g","run","DEFAULT_LABEL_NAME","params","nodeLabelProp","edgeLabelProp","formattedGraphs","fGraph","nodeIdxMap","sourceIdx","targetIdx","formatGraphs","calculator","toGraphDatas","VACANT_NODE_ID","VACANT_EDGE_ID","Node","Edge","AUTO_EDGE_ID","edgeMap","edgeIdAutoIncrease","nodeLabelMap","edgeLabelMap","rEdge","_floydWarshall","_interopRequireDefault","_gSpan","findKNeighborUnits","spm","units","row","findKNeighborUnit","unitNodeIdxs","labelCountMap","v","count","dists","sort","a","b","nodeIdxs","neighborNum","nodeLabelCountMap","getIntersectNeighborInducedGraph","nodePairMap","neighborUnits","cachedInducedGraphMap","pair","startUnitNodeIds","endUnitNodeIds","endSet","intersect","x","intersectIdMap","intersectLength","getMatchedCount","structure","sourceLabel","targetLabel","strNodeLabel1","strNodeLabel2","strEdgeLabel","getNodeMaps","getEdgeMaps","uniqueId","sourceNode","getSpmMap","iId","jId","getNDSDist","node1","node2","spDist","kNeighborUnits","cachedNDSMap","cachedInterInducedGraph","interInducedGraph","pairMap","distance","stashPatternNodeLabelDegreeMap","minPatternNodeLabelDegreeMap","neighborLabel","patternNodeMap","patternNodeLabelMap","minPatternNodeLabelDegree","minPatternNodeLabelInDegree","minPatternNodeLabelOutDegree","patternNodeWithLabel","patternNodeDegree","patternNodeInDegree","patternNodeOutDegree","pattern","patternSpm","spmMap","patternSpmMap","patternEdgeLabelMap","patternSpmSpread","max","apply","patternKNeighborUnits","nodePairsMap","maxNodePairNum","nodePairNumEachNode","ceil","foundNodePairCount","unit","nodePairForICount","outerLoopCount","oidx","floor","random","innerLoopCount","findNodePairsRandomly","intGMap","freStructures","slice","structureNum","matchedCountMap","subStructureCount","structures","maxOffset","representClusterType","countMapI","sortedGraphKeys","clusters","totalCount","aveCount","aveIntraDist","aveCounts","graphsInCluster","aveIntraPerCluster","graphsNum","graphKey1","graph1Count","graphKey2","abs","aveInterDist","aveCount1","aveCount2","offset","structureCountMap","findRepresentStructure","dsG","ndsDist","beginPNode","candidates","maxNodeNumWithSameLabel","pLabel","nodesWithSameLabel","patternIntGraphMap","patternNDSDist","patternNDSDistMap","patternSpDist","patternSpDistBack","label2","maxDist","patternNodesWithLabel2","patternNodePairMap","nodeWithLabel2","distBack","currentPatternNDSDistArray","patternIntGraph","_loop_4","m","cNode","graphNeighborUnit","graphNeighborUnitCountMap","patternLabel2Num","splice","prune2Invalid","cNodePairMap","neighborNode","currentNDSDistArray","intGraph","prune3Invalid","candidateGraphs","candidate","neighborNodes","unmatched","distToCandidate","keyBack","distFromCandidate","ndsToCandidate","patternKey","undirectedLengthsToBeginPNode","undirectedLengthsToBeginPNodeLabelMap","candidateGraph","candidateNodeLabelCountMap","candidateNodeMap","q","cNodeLabel","candidateEdges","edgeLabelCountMap","pattenrEdgeLabelNum","prunedByEdgeLabel","label_1","candidateEdgeNum","candidateGraphInvalid","_loop_5","patternEdgesWithLabel","edgeMatched","patternEdge","patternSource","patternTarget","lengthsToCandidate","targetId","targetNodeLabel","nLabel","degreeChanged","loopCount","o","cgNode","nodeDegree","nodeInDegree","nodeOutDegree","y","cedge","currentLength","cg1","cg1EdgeMap","_loop_6","cg2","cg2EdgeMap","same","maxIteration","cid","clusterId","adjMatrix","ks","iid","entry","jid","iter","changed","neighborClusters","neighborWeight","neighborClusterId","maxWeight","bestClusterIds","selfClusterIdx","selfCluster","nodeInSelfClusterIdx","randomIdx","bestCluster","cluster","clusterEdges","clusterEdgeMap","sourceClusterId","targetClusterId","newEdgeId","newEdge","clustersArray","_vector","_nodeProperties","_dataPreprocessing","getModularity","param","modularity","clusteri","getInertialModularity","allPropertiesWeight","totalProperties","avgProperties","avg","normalize","variance","propertiesi","squareEuclideanDistance","squareEuclideanDistanceInfo","propertiesj","inertialModularity","clusterj","clusterInertial","pow","Number","toFixed","threshold","propertyKey","involvedKeys","uninvolvedKeys","inertialWeight","properties","originIndex","nodeTypeInfo_1","every","Array","nodeType","getAllProperties","oneHot","String","totalModularity","previousModularity","finalNodes","finalClusters","increaseWithinThreshold","sumTot","bestIncrease","commonParam","kiin","selfClusterNodes","scNode","scNodeIdx","removeModurarity","selfClusterNodesAfterRemove","propertiesWeightRemove","nodeRemove","removeInertialModularity","nodeNeighborIds","neighborNodeId","neighborCluster","clusterNodes","neighborClusterKiin","cNodeIdx","addModurarity","clusterNodesAfterAdd","propertiesWeightAdd","nodeAdd","addInertialModularity","increase","previousClusterId_1","neighborClusterSumTot_1","selfClusterSumTot_1","newClusterIdMap","clusterIdx","newId","item","nodeInfo","_unionFind","_binaryHeap","primMST","selectedEdges","currNode","edgeQueue","insert","currEdge","delMin","kruskalMST","weightEdges","disjointSet","curEdge","connected","union","algo","prim","kruskal","_degree","epsilon","linkProb","currentRank","leakedRank","maxIterations","nodesCount","curRanks","prevRanks","defaultCompare","MinBinaryHeap","compareFn","list","getLeft","getRight","getParent","bottom","moveDown","moveUp","parent","element","left","right","LinkedListNode","defaultComparator","toString","callback","LinkedList","comparator","head","tail","compare","prepend","newNode","append","deleteNode","deleteTail","deletedTail","deleteHead","deletedHead","fromArray","values","toArray","prevNode","_linkedList","Queue","linkedList","peek","removeHead","UnionFind","items","items_1","rootA","rootB","DistanceType","type","currentEdges","random1","split","substr","random2","getDistance","getAllKeyValueMap","_types","dataList","data","uniq","allKeyValueMap","includes","oneHotCode","isAllNumber","code","keyValue","allKeyValue","valueIndex","subCode","otherItem","distanceType","EuclideanDistance","euclideanDistance","getPropertyWeight","getAllSortProperties","_time","propertyKeyInfo","match","isNaN","sortKeys","processProperty","propertyKeys","allProperties","Vector","arr","getArr","otherVector","otherArr","res","subtract","negate","sqrt","error","cloneArr","norm2","dot","equal","_gaddi","_bfs","_detectCycle","_findPath","_labelPropagation","_louvain","_mts","_pageRank","MESSAGE","ALGORITHM","pageRank","breadthFirstSearch","connectedComponent","depthFirstSearch","detectCycle","detectDirectedCycle","dijkstra","floydWarshall","getAdjMatrix","getDegree","labelPropagation","louvain","GADDI","minimumSpanningTree","SUCCESS","FAILURE","_constant","arguments","Promise","resolve","reject","worker","postMessage","_algorithmType","onmessage","event","terminate","_createWorker","algorithm","ctx","self","asyncGeneratorStep","gen","_next","_throw","arg","info","done","then","fn","args","err","_toPropertyKey","input","hint","toPrimitive","TypeError","_defineProperty","configurable","writable","instance","Constructor","_defineProperties","props","descriptor","protoProps","staticProps","entitySequence","createEntity","gl","AST_TOKEN_TYPES","AST_NODE_TYPES","STORAGE_CLASS","Target","ConfigService","_classCallCheck","config","_createClass","navigator","test","userAgent","createCanvas","document","createElement","Kernel","engine","configService","model","dirty","compiledBundle","initPromise","_this$configService$g","canvas","engineOptions","init","_objectSpread","antialiasing","bundle","JSON","parse","stringify","dispatch","context","name","isNumberLikeData","_isNumber","_isTypedArray","_isArray","existedDefine","defines","existedBinding","uniforms","isReferer","storageClass","Uniform","updateUniform","updateBuffer","setBinding","_execute","_asyncToGenerator","_regeneratorRuntime","_callee","iteration","_this2","_args","_context","prev","compile","beginFrame","_ref","_ref2","confirmInput","endFrame","abrupt","stop","_getOutput","_callee2","_context2","readData","_compile","_callee3","shader","_context3","supportWebGPU","useWGSL","WGSL","GLSL450","GLSL100","shaders","define","runtime","valuePlaceHolder","replace","uniform","StorageBuffer","sizePerElement","FloatArray","Vector4FloatArray","Float32Array","output","fill","createComputeModel","sent","ReglAttribute","options","attribute","buffer","stride","normalized","divisor","subData","destroy","primitiveMap","_primitiveMap","POINTS","LINES","LINE_LOOP","LINE_STRIP","TRIANGLES","TRIANGLE_FAN","TRIANGLE_STRIP","usageMap","_usageMap","STATIC_DRAW","DYNAMIC_DRAW","STREAM_DRAW","dataTypeMap","_dataTypeMap","BYTE","UNSIGNED_INT","INT","UNSIGNED_BYTE","UNSIGNED_SHORT","FLOAT","formatMap","_formatMap","ALPHA","LUMINANCE","LUMINANCE_ALPHA","RGB","RGBA","RGBA4","RGB5_A1","RGB565","DEPTH_COMPONENT","DEPTH_STENCIL","mipmapMap","_mipmapMap","DONT_CARE","NICEST","FASTEST","filterMap","_filterMap","NEAREST","LINEAR","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_LINEAR","LINEAR_MIPMAP_NEAREST","NEAREST_MIPMAP_NEAREST","wrapModeMap","_wrapModeMap","REPEAT","CLAMP_TO_EDGE","MIRRORED_REPEAT","colorSpaceMap","_colorSpaceMap","NONE","BROWSER_DEFAULT_WEBGL","depthFuncMap","_depthFuncMap","NEVER","ALWAYS","LESS","LEQUAL","GREATER","GEQUAL","EQUAL","NOTEQUAL","blendEquationMap","_blendEquationMap","FUNC_ADD","MIN_EXT","MAX_EXT","FUNC_SUBTRACT","FUNC_REVERSE_SUBTRACT","blendFuncMap","_blendFuncMap","ZERO","ONE","SRC_COLOR","ONE_MINUS_SRC_COLOR","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","DST_COLOR","ONE_MINUS_DST_COLOR","DST_ALPHA","ONE_MINUS_DST_ALPHA","CONSTANT_COLOR","ONE_MINUS_CONSTANT_COLOR","CONSTANT_ALPHA","ONE_MINUS_CONSTANT_ALPHA","SRC_ALPHA_SATURATE","stencilFuncMap","_stencilFuncMap","stencilOpMap","_stencilOpMap","KEEP","REPLACE","INVERT","INCR","DECR","INCR_WRAP","DECR_WRAP","cullFaceMap","_cullFaceMap","FRONT","BACK","ReglBuffer","reGl","usage","subdata","_arrayLikeToArray","len","arr2","_toConsumableArray","minLen","textureId","ReglComputeModel","entity","texFBO","computeCommand","textureCache","outputTextureName","swapOutputTextureName","compiledPingpong","dynamicPingpong","calcDataTexture","_this$textureCache$na","width","textureWidth","isOutput","needPingpong","texture","_this$getOuputDataTex","getOuputDataTexture","texelCount","u_OutputTextureSize","u_OutputTexelCount","textureSize","drawParams","attributes","a_Position","a_TexCoord","frag","vert","primitive","swap","framebuffer","color","use","_readData","pixels","_this$getOuputDataTex2","originalDataLength","elementsPerTexel","_this$getOuputDataTex3","typedArrayConstructor","formattedPixels","_this3","read","inputName","inputModel","bufferName","_this$calcDataTexture","paddingData","createSwapOutputDataTexture","outputTextureUniformName","cloneDataTexture","height","paddingTexelCount","ReglElements","elements","ReglFramebuffer","colors","framebufferOptions","depth","stencil","resize","extractUniforms","extractedUniforms","uniformName","extractUniformsRecursively","uniformValue","prefix","_isPlainObject","childName","ReglModel","drawCommand","vs","fs","blend","cull","instances","scissor","viewport","reglUniforms","prop","reglAttributes","defineStmts","generateDefines","initDepthDrawParams","initBlendDrawParams","initStencilDrawParams","initCullDrawParams","reglDrawProps","BYTES_PER_ELEMENT","enable","mask","func","range","equation","_blend$color","srcRGB","srcAlpha","dstRGB","dstAlpha","rgb","alpha","_ref3","_stencil$mask","_stencil$func","cmp","ref","_stencil$opFront","opFront","fail","zfail","zpass","_stencil$opBack","opBack","_ref4","_cull$face","face","join","ReglTexture2D","_options$type","_options$flipY","flipY","_options$format","format","_options$mipmap","mipmap","_options$wrapS","wrapS","_options$wrapT","wrapT","_options$aniso","aniso","_options$alignment","alignment","_options$premultiplyA","premultiplyAlpha","_options$mag","mag","_options$min","_options$colorSpace","colorSpace","textureOptions","_texture","bind","WebGLEngine","$canvas","inited","createModel","all","load","_x2","_x","createAttribute","createBuffer","createElements","createTexture2D","createFramebuffer","useFramebuffer","drawCommands","_x3","_options$framebuffer","reglClearOptions","setScissor","_gl","box","SCISSOR_TEST","disable","_refresh","readPixels","readPixelsOptions","getCanvas","getGLContext","_init","_callee4","cfg","_context4","regl","antialias","premultipliedAlpha","pixelRatio","extensions","optionalExtensions","profile","onDone","r","_x4","limits","readFloat","World","_createEntity","precompiledBundle","kernel","setBundle","world","setConfig","setEngine","GraphEnum","incrementOrInitEntry","val","decrementOrRemoveEntry","edgeArgsToId","isDirected","v_","w_","EDGE_KEY_DELIM","DEFAULT_EDGE_NAME","edgeArgsToObj","strV","strW","edgeObj","edgeObjToId","isFunction","nodeToJSON","edgeToJSON","write","json","multigraph","isMultigraph","compound","isCompound","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptors","defineProperties","defaultOption","GRAPH_NODE","nodeCountNum","edgeCountNum","defaultNodeLabelFn","defaultEdgeLabelFn","parentMap","childrenMap","nodesLabelMap","Map","inEdgesMap","outEdgesMap","predecessorsMap","successorsMap","edgesMap","edgesLabelsMap","setGraph","setDefaultNodeLabel","newDefault","nodeCount","sources","_this$inEdgesMap$get","sinks","_this$outEdgesMap$get","setNodes","setNode","checkCompound","_this$parentMap","removeFromParentsChildList","targetParent","setParent","_this$parentMap2","_this$childrenMap","realParent","checkNode","realParentChilren","_this$childrenMap2","predecessors","preds","successors","succs","_this$predecessors","isLeaf","_this$neighbors","_this$successors","filterNodes","copyGraph","setEdgeObj","findParent","setDefaultEdgeLabel","edgeCount","setEdge","setPath","reduce","edgeFromArgs","removeEdgeObj","removeEdge","inEdges","u","inV","outEdges","outW","nodeEdges","_this$inEdges","toJSON","resultOptions","_childrenMap$get","_this$parentMap3","_this$children","_this$childrenMap3","cleanEdge","inE","outE","_this$inEdgesMap$get2","_this$outEdgesMap$get2","edgeId","freeze","_edgeArgsToObj","_get","Reflect","property","receiver","base","_superPropBase","_getPrototypeOf","_setPrototypeOf","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","NewTarget","_possibleConstructorReturn","ReferenceError","_assertThisInitialized","getPrototypeOf","fromJSON","GraphWithEvent","_Graph","subClass","superClass","create","_inherits","_super","_len","_key","eventPool","_len2","_key2","emitEvent","PriorityQueue","keyIndice","priority","originI","originJ","innerDecrease","_arr$parent","heapify","l","largest","removeMin","decrease","weightFn","parents","pq","updateNeighbors","pri","edgeWeight","POSITIVE_INFINITY","_graph$nodeEdges","resultComponents","componentsArr","waitingList","_graph$successors","_graph$predecessors","doDFS","postorder","order","results","_slicedToArray","_arrayWithHoles","_s","_arr","_n","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","DEFAULT_WEIGHT_FUNC","runDijkstra","edgeFn","vEntry","wEntry","predecessor","entries","dfs","onStack","lowlink","_visited$get","_wEntry","cmpt","tarjan","_wrapNativeSuper","Class","_cache","Function","Wrapper","_construct","Parent","CycleException","_Error","visit","topsort","d","nodek","rowK","nodei","rowI","nodej","ik","kj","ij","altDistance","runFloydWarshall","containSameNodes","aGraph","bGraph","aNodes","aNode","containSameEdges","aEdges","aEdge","getSameNodes","getSameEdges","isGraphOptionSame","containAllSameNodes","containAllSameEdges","isGraphSame","isGraphContainsAnother","originGraph","targetGraph","isGraph","isSimpleGraph","edgeStack","_sort2","isNullGraph","hasSelfLoop","isGraphComplement","getGraphComplement","complementGraph","factory","modules","installedModules","__webpack_require__","moduleId","module","getter","s","__WEBPACK_IMPORTED_MODULE_0__is_type__","__webpack_exports__","isFinite","__WEBPACK_IMPORTED_MODULE_0__is_array__","__WEBPACK_IMPORTED_MODULE_1__is_object__","mix","assign","str","__WEBPACK_IMPORTED_MODULE_0__is_object_like__","__WEBPACK_IMPORTED_MODULE_1__is_type__","proto","__WEBPACK_IMPORTED_MODULE_0__is_nil__","hierarchy","Layout","rootNode","execute","__WEBPACK_IMPORTED_MODULE_0__is_array_like__","__WEBPACK_IMPORTED_MODULE_0__each__","__WEBPACK_IMPORTED_MODULE_1__is_array_like__","_mix","src1","src2","src3","separateTree","VALID_DIRECTIONS","HORIZONTAL_DIRECTIONS","DEFAULT_DIRECTION","layoutAlgrithm","direction","isHorizontal","right2left","bottom2top","_separateTree","translate","bb","getBoundingBox","fixedRoot","hgap","vgap","util","DEFAULT_OPTIONS","getId","getPreH","preH","getPreV","preV","getHGap","getVGap","getChildren","getHeight","PEM","getWidth","me","addGap","isRoot","eachNode","DFTraverse","BFTraverse","MAX_VALUE","tx","ty","isolated","collapsed","__WEBPACK_IMPORTED_MODULE_1__keys__","attrs","_keys","__WEBPACK_IMPORTED_MODULE_1__is_function__","indexes","last","__WEBPACK_IMPORTED_MODULE_0__contains__","__WEBPACK_IMPORTED_MODULE_1__each__","resultArr","__WEBPACK_IMPORTED_MODULE_2__group_by__","condition","paramsCondition_1","unique","__WEBPACK_IMPORTED_MODULE_1__is_array__","__WEBPACK_IMPORTED_MODULE_2__is_function__","predicate","objectProto","Ctor","__WEBPACK_IMPORTED_MODULE_2__is_string__","isEqual","rst","valueKeys","otherKeys","treeSize","rightTreeSize","round","getSide","side","compactBox","dendrogram","indented","mindmap","TreeLayout","nonLayeredTidyTree","doTreeLayout","CompactBoxTreeLayout","_TreeLayout","__WEBPACK_IMPORTED_MODULE_1__difference__","__WEBPACK_IMPORTED_MODULE_2__find__","__WEBPACK_IMPORTED_MODULE_3__find_index__","__WEBPACK_IMPORTED_MODULE_4__first_value__","__WEBPACK_IMPORTED_MODULE_5__flatten__","__WEBPACK_IMPORTED_MODULE_6__flatten_deep__","__WEBPACK_IMPORTED_MODULE_7__get_range__","__WEBPACK_IMPORTED_MODULE_8__pull__","__WEBPACK_IMPORTED_MODULE_9__pull_at__","__WEBPACK_IMPORTED_MODULE_10__reduce__","__WEBPACK_IMPORTED_MODULE_11__remove__","__WEBPACK_IMPORTED_MODULE_12__sort_by__","__WEBPACK_IMPORTED_MODULE_13__union__","__WEBPACK_IMPORTED_MODULE_14__uniq__","__WEBPACK_IMPORTED_MODULE_15__values_of_key__","__WEBPACK_IMPORTED_MODULE_16__head__","__WEBPACK_IMPORTED_MODULE_17__last__","__WEBPACK_IMPORTED_MODULE_18__starts_with__","__WEBPACK_IMPORTED_MODULE_19__ends_with__","__WEBPACK_IMPORTED_MODULE_20__filter__","__WEBPACK_IMPORTED_MODULE_21__every__","__WEBPACK_IMPORTED_MODULE_22__some__","__WEBPACK_IMPORTED_MODULE_23__group__","__WEBPACK_IMPORTED_MODULE_24__group_by__","__WEBPACK_IMPORTED_MODULE_25__group_to_map__","__WEBPACK_IMPORTED_MODULE_26__get_wrap_behavior__","__WEBPACK_IMPORTED_MODULE_27__wrap_behavior__","__WEBPACK_IMPORTED_MODULE_28__number2color__","__WEBPACK_IMPORTED_MODULE_29__parse_radius__","__WEBPACK_IMPORTED_MODULE_30__clamp__","__WEBPACK_IMPORTED_MODULE_31__fixed_base__","__WEBPACK_IMPORTED_MODULE_32__is_decimal__","__WEBPACK_IMPORTED_MODULE_33__is_even__","__WEBPACK_IMPORTED_MODULE_34__is_integer__","__WEBPACK_IMPORTED_MODULE_35__is_negative__","__WEBPACK_IMPORTED_MODULE_36__is_number_equal__","__WEBPACK_IMPORTED_MODULE_37__is_odd__","__WEBPACK_IMPORTED_MODULE_38__is_positive__","__WEBPACK_IMPORTED_MODULE_39__max_by__","__WEBPACK_IMPORTED_MODULE_40__min_by__","__WEBPACK_IMPORTED_MODULE_41__mod__","__WEBPACK_IMPORTED_MODULE_42__to_degree__","__WEBPACK_IMPORTED_MODULE_43__to_integer__","__WEBPACK_IMPORTED_MODULE_44__to_radian__","__WEBPACK_IMPORTED_MODULE_45__for_in__","__WEBPACK_IMPORTED_MODULE_46__has__","__WEBPACK_IMPORTED_MODULE_47__has_key__","__WEBPACK_IMPORTED_MODULE_48__has_value__","__WEBPACK_IMPORTED_MODULE_49__keys__","__WEBPACK_IMPORTED_MODULE_50__is_match__","__WEBPACK_IMPORTED_MODULE_51__values__","__WEBPACK_IMPORTED_MODULE_52__lower_case__","__WEBPACK_IMPORTED_MODULE_53__lower_first__","__WEBPACK_IMPORTED_MODULE_54__substitute__","__WEBPACK_IMPORTED_MODULE_55__upper_case__","__WEBPACK_IMPORTED_MODULE_56__upper_first__","__WEBPACK_IMPORTED_MODULE_57__get_type__","__WEBPACK_IMPORTED_MODULE_58__is_arguments__","__WEBPACK_IMPORTED_MODULE_59__is_array__","__WEBPACK_IMPORTED_MODULE_60__is_array_like__","__WEBPACK_IMPORTED_MODULE_61__is_boolean__","__WEBPACK_IMPORTED_MODULE_62__is_date__","__WEBPACK_IMPORTED_MODULE_63__is_error__","__WEBPACK_IMPORTED_MODULE_64__is_function__","__WEBPACK_IMPORTED_MODULE_65__is_finite__","__WEBPACK_IMPORTED_MODULE_66__is_nil__","__WEBPACK_IMPORTED_MODULE_67__is_null__","__WEBPACK_IMPORTED_MODULE_68__is_number__","__WEBPACK_IMPORTED_MODULE_69__is_object__","__WEBPACK_IMPORTED_MODULE_70__is_object_like__","__WEBPACK_IMPORTED_MODULE_71__is_plain_object__","__WEBPACK_IMPORTED_MODULE_72__is_prototype__","__WEBPACK_IMPORTED_MODULE_73__is_reg_exp__","__WEBPACK_IMPORTED_MODULE_74__is_string__","__WEBPACK_IMPORTED_MODULE_75__is_type__","__WEBPACK_IMPORTED_MODULE_76__is_undefined__","__WEBPACK_IMPORTED_MODULE_77__is_element__","__WEBPACK_IMPORTED_MODULE_78__request_animation_frame__","__WEBPACK_IMPORTED_MODULE_79__clear_animation_frame__","__WEBPACK_IMPORTED_MODULE_80__augment__","__WEBPACK_IMPORTED_MODULE_81__clone__","__WEBPACK_IMPORTED_MODULE_82__debounce__","__WEBPACK_IMPORTED_MODULE_83__memoize__","__WEBPACK_IMPORTED_MODULE_84__deep_mix__","__WEBPACK_IMPORTED_MODULE_85__each__","__WEBPACK_IMPORTED_MODULE_86__extend__","__WEBPACK_IMPORTED_MODULE_87__index_of__","__WEBPACK_IMPORTED_MODULE_88__is_empty__","__WEBPACK_IMPORTED_MODULE_89__is_equal__","__WEBPACK_IMPORTED_MODULE_90__is_equal_with__","__WEBPACK_IMPORTED_MODULE_91__map__","__WEBPACK_IMPORTED_MODULE_92__map_values__","__WEBPACK_IMPORTED_MODULE_93__mix__","__WEBPACK_IMPORTED_MODULE_94__get__","__WEBPACK_IMPORTED_MODULE_95__set__","__WEBPACK_IMPORTED_MODULE_96__pick__","__WEBPACK_IMPORTED_MODULE_97__throttle__","__WEBPACK_IMPORTED_MODULE_98__to_array__","__WEBPACK_IMPORTED_MODULE_99__to_string__","__WEBPACK_IMPORTED_MODULE_100__unique_id__","__WEBPACK_IMPORTED_MODULE_101__noop__","__WEBPACK_IMPORTED_MODULE_102__identity__","__WEBPACK_IMPORTED_MODULE_103__size__","__WEBPACK_IMPORTED_MODULE_104__cache__","__WEBPACK_IMPORTED_MODULE_0__filter__","__WEBPACK_IMPORTED_MODULE_1__contains__","__WEBPACK_IMPORTED_MODULE_0__is_function__","__WEBPACK_IMPORTED_MODULE_1__is_match__","__WEBPACK_IMPORTED_MODULE_2__is_array__","__WEBPACK_IMPORTED_MODULE_3__is_plain_object__","_predicate","fromIndex","flattenDeep","__WEBPACK_IMPORTED_MODULE_1__filter__","arrPrototype","__WEBPACK_IMPORTED_MODULE_2__is_plain_object__","__WEBPACK_IMPORTED_MODULE_1__pull_at__","__WEBPACK_IMPORTED_MODULE_1__is_string__","comparer","keys_1","__WEBPACK_IMPORTED_MODULE_0__uniq__","__WEBPACK_IMPORTED_MODULE_2__is_nil__","tmpMap","__WEBPACK_IMPORTED_MODULE_0__group_to_map__","groups","array","action","method","numColorCache","num","radius","r1","r2","r3","r4","parseFloat","__WEBPACK_IMPORTED_MODULE_0__is_number__","isInteger","precision","maxData","minData","DEGREE","PI","radian","parseInt","RADIAN","__WEBPACK_IMPORTED_MODULE_0__has__","__WEBPACK_IMPORTED_MODULE_1__values__","__WEBPACK_IMPORTED_MODULE_0__to_string__","toLowerCase","charAt","substring","toUpperCase","Element","HTMLDocument","window","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","f","setTimeout","handler","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","msCancelAnimationFrame","clearTimeout","__WEBPACK_IMPORTED_MODULE_0__mix__","wait","immediate","timeout","later","callNow","resolver","memoized","__WEBPACK_IMPORTED_MODULE_1__is_plain_object__","_deepMix","src","level","maxLevel","subclass","superclass","overrides","staticOverrides","Tmp","superObj","__WEBPACK_IMPORTED_MODULE_2__get_type__","__WEBPACK_IMPORTED_MODULE_3__is_prototype__","__WEBPACK_IMPORTED_MODULE_1__is_equal__","identity","__WEBPACK_IMPORTED_MODULE_0__is_string__","defaultValue","keyArr","__WEBPACK_IMPORTED_MODULE_0__is_object__","__WEBPACK_IMPORTED_MODULE_2__is_number__","leading","Date","now","throttled","remaining","trailing","cancel","default_1","def","WrappedTree","h","cs","prelim","mod","change","tl","tr","el","er","msel","mser","moveRight","move","getMin","convertBack","converted","layer","setExtremes","t","separate","ih","sr","mssr","cl","mscl","low","nxt","moveSubtree","sy","cy","nextRightContour","nextLeftContour","modsumcl","li","diff","setLeftThread","modsumsr","ri","setRightThread","si","nr","distributeExtra","updateIYL","wt","firstWalk","positionRoot","secondWalk","modsum","modsumdelta","addChildSpacing","DendrogramLayout","leftChild","rightChild","nodeSep","nodeSize","rankSep","subTreeSep","prevLeaf","maxDepth","wrappedTreeFromNode","childrenCount","childWT","originNode","getDrawingDepth","drawingDepth","depths","minChildDepth","position","indentedTree","IndentedLayout","_options$indent","indent","_options$dropCap","dropCap","bbox","displacementX","positionNode","MindmapLayout","totalHeight","_subTreeSep","getSubTreeSep","thirdWalk","first","childrenHeight","childrenTotalHeight","startY","registy_1","registerLayout","unRegisterLayout","getLayoutByName","__exportStar","Base","combos","comboEdges","hiddenNodes","hiddenEdges","hiddenCombos","vedges","positions","destroyed","onLayoutEnd","layout","reloadData","executeWithWorker","getDefaultCfg","updateCfg","getType","base_1","util_1","compareDegree","aDegree","bDegree","CircularLayout","startRadius","endRadius","startAngle","endAngle","clockwise","divisions","ordering","angleRatio","__extends","innerWidth","innerHeight","center","paramNodeSpacing","nodeSpacing","paramNodeSize","angleStep","nodeSpacing_1","getFuncByUnknownType","nodeSize_1","maxNodeSize_1","nSize","length_1","astep","layoutNodes","topologyOrdering","degreeOrdering","divN","angle","cos","sin","cnodes","orderedCNodes","resNodes","pickFlags","_","getEdgeTerminal","sourceChildren","targetChildren","initHierarchy","cnode","connect","foundChild","childIdx","ii","orderedNodes","constants_1","_1","ComboCombinedLayout","comboPadding","comboTrees","initVals","comboMap","combo","innerGraphs","getInnerGraphs","outerNodeIds","outerNodes","nodeAncestorIdMap","allHaveNoPosition","cTree","innerNode","oNode","__assign","fx","fy","mass","traverseTreeUp","comboId","outerEdges","sourceAncestorId","targetAncestorId","outerData","outerLayout","GForceLayout","gravity","factor","linkDistance","outerLayoutType","kg","preventOverlap","animate","FORCE_LAYOUT_TYPE_MAP","MDSLayout","GridLayout","outerNode","innerGraph","innerGraphIds","spacing","innerGraphLayout","innerLayout","ConcentricLayout","sortBy","ctree","treeNode","padding","innerGraphNodes","itemType","oriNode","innerGraphNodeIds_1","innerGraphData","minNodeSize_1","isNumber","getLayoutBBox","minX","minY","maxX","maxY","center_1","innerGraphSize","treeNodeSize","nodeSizeFunc","spacingFunc","radius_1","radius_2","isObject","comboPaddingFunc","ComboForceLayout","comboGravity","alphaMin","alphaDecay","alphaTarget","velocityDecay","edgeStrength","nodeStrength","preventNodeOverlap","preventComboOverlap","collideStrength","nodeCollideStrength","comboCollideStrength","comboSpacing","optimizeRangeFactor","onTick","depthAttractiveForceScale","depthRepulsiveForceScale","bias","oriComboMap","indexMap","previousLayouted","speed","comboTree","initPos","displacements","applyCalculate","applyComboCenterForce","meanCenter","centerOffset","mapped","empty","cx","getComboMap","nodeSpacingFunc","comboSpacingFunc","linkDistanceFunc","edgeStrengthFunc","nodeStrengthFunc","treeChildren","oriCombo","childCombo","gravityScale","comboX","comboY","vecX","vecY","vecMap","vx","vy","vl2","vl","updateComboSizes","calRepulsive","calAttractive","comboNonOverlapping","nodeMinX","nodeMinY","nodeMaxX","nodeMaxY","minSize","maxLength","cv","cu","rv","ru","ru2","rv2","vnodes","unodes_1","sqrtl","ll","xl_1","yl_1","rratio_1","irratio_1","vn","vindex","un","uindex","scale","depthDiff","depthParam","rj","rj2","rratio","xl","yl","uIndex","vIndex","minNodeSpacing","equidistant","sweep","maxLevelDiff","maxNodeSize","maxNodeSpacing","counterclockwise","isString","values_1","n1","n2","maxValueNode","levels","currentLevel","minDist","firstLvlHasMulti","rStep","dTheta","dcos","dsin","rMin","rDeltaMax_1","rr_1","rDelta","rr","theta","RUN","END","ERROR","TICK","GPURUN","GPUEND","index_1","__importDefault","graph_1","DagreLayout","rankdir","nodesep","ranksep","controlPoints","sortByCombo","edgeLabelSpace","radial","layoutNode","align","nodesepFunc","ranksepFunc","focusNode","begin","nodeComboMap","ranksepfunc","getFunc","nodesepfunc","horisep","vertisep","verti","hori","parentId","comboEdge","targets","prevGraph","preset","keepNodeOrder","nodeOrder","dBegin","minX_1","minY_1","coord","points","point","getRadialPos_1","getRadialPos","focusId","focusLayer_1","_rank","layers_1","dim_1","sizeDim_1","min_1","max_1","it","currentNodesep","totalWidth","maxSize","diffLayer","diffLayerAbs","leftPos","rightPos","radiusMap_1","rangeLength_1","range_1","processNodes_1","layerNodes","propsMaxRanksep","arcRange","maxRanksep","newX","newY","_order","currentNodeRanksep","isFirstLevel_1","leftRatio","otherDim_1","newControlPoints_1","sourceOtherDimValue_1","otherDimDist_1","sourceRadius_1","radiusDist_1","cRadius","newPos","ndata","dimValue","rangeLength","dimRatio","layout_1","time","notime","greedy_fas_1","dfsFAS","fas","acyclicer","forwardName","reversed","undo","addBorderNode","sg","sgNode","rank","borderType","curr","addDummyNode","borderLeft","borderRight","minRank","maxRank","swapWidthHeight","swapWidthHeightOne","reverseY","reverseYOne","swapXY","swapXYOne","adjust","rankDir","filterOutLinks","unlink","List","shortcut","strs","sentinel","list_1","graphlib_1","StateGraph","DEFAULT_WEIGHT_FN","doGreedyFAS","buckets","zeroIdx","removeNode","collectPredecessors","uEntry","in","out","assignBucket","buildState","fasGraph","maxIn","maxOut","prevWeight","rangeMax","state","flat","acyclic_1","normalize_1","rank_1","parent_dummy_chains_1","nesting_graph_1","add_border_segments_1","coordinate_system_1","order_1","position_1","init_data_order_1","runLayout","opts","removeSelfEdges","asNonCompoundGraph","injectEdgeLabelProxies","removeEmptyRanks","cleanup","normalizeRanks","assignRankMinMax","removeEdgeLabelProxies","insertSelfEdges","positionSelfEdges","removeBorderNodes","fixupEdgeLabelCoords","translateGraph","assignNodeIntersects","reversePointsForReversedEdges","inheritOrder","currG","prevG","fixorder","updateInputGraph","inputGraph","layoutGraph","inputLabel","layoutLabel","graphNumAttrs","graphDefaults","edgesep","graphAttrs","nodeNumAttrs","nodeDefaults","edgeNumAttrs","edgeDefaults","minlen","labeloffset","labelpos","edgeAttrs","buildLayoutGraph","canonicalize","pickedProperties","selectNumberAttrs","defaultNode","defaultAttrs","makeSpaceForEdgeLabels","borderTop","borderBottom","dummy","labelRank","graphLabel","marginX","marginx","marginY","marginy","getExtremes","p1","p2","nodeV","nodeW","unshift","intersectRect","selfEdges","layers","buildLayerMatrix","orderShift","selfEdge","selfNode","dx","dy","newAttrs","debugTiming","message","childNode","childTop","childBottom","thisWeight","nestingEdge","treeDepths","sumWeights","nestingRoot","nodeRankFactor","normalizeEdge","vRank","wRank","dummyChains","origLabel","currentV","cg","rootPrev","prevChild","movable","result_1","sum","nodeU","barycenter","createRootNode","relationship","twoLayerCrossCount","northLayer","southLayer","southPos","zipObject","southEntries","unsort","pos","firstIndex","tree","cc","weightSum","layering","init_order_1","cross_count_1","build_layer_graph_1","add_subgraph_constraints_1","sort_subgraph_1","util_2","buildLayerGraphs","ranks","sweepLayerGraphs","layerGraphs","biasRight","usePrev","lg","sorted","lnode","assignOrder","mxRank","range1","range2","downLayerGraphs","upLayerGraphs","best","bestCC","lastBest","simpleNodes","nodeRanks","orderedVs","fixOrderNodes","doResolveConflicts","sourceSet","merged","mergeEntries","indegree","filtered","picked","mappedEntries","entryV","entryW","barycenter_1","resolve_conflicts_1","sort_1","sortSubgraph","bl","br","subgraphs","barycenters","subgraphResult","mergeBarycenters","expandSubgraphs","blPred","brPred","vss","consumeUnsortable","unsortable","iindex","compareWithBias","parts","partition","sortable","lhs","rhs","vsIndex","postorderNums","lim","dfsBothOrder","startV","pathData","lca","vPath","wPath","findPath","pathIdx","pathV","ascending","BlockGraph","conflicts","prevLayer","k0","scanPos","prevLayerLength","lastNode","findOtherInnerSegmentNode","k1","scanNode","uLabel","uPos","addConflict","scan","south","southEnd","prevNorthBorder","nextNorthBorder","uNode","north","nextNorthPos","prevNorthPos","southLookahead","vv","ww","conflictsV","neighborFn","prevIdx","ws","mp","il","hasConflict","reverseSep","xs","blockG","buildBlockGraph","iterate","setXsFunc","nextNodesFunc","elem","acc","blockGraph","sepFn","sep","vRoot","uRoot","prevMax","alignCoordinates","xss","alignTo","alignToVals","alignToMin","alignToMax","horiz","delta","xsVals","minBy","NEGATIVE_INFINITY","halfWidth","ul","adjustedLayering","findType1Conflicts","findType2Conflicts","inner","verticalAlignment","horizontalCompaction","smallestWidth","findSmallestWidthAlignment","balance","edgeSep","vLabel","wLabel","bk_1","ng","prevY","heights","maxHeight","positionY","xsKey","positionX","feasibleTree","tightTree","findMinSlackEdge","slack","shiftRanks","edgeV","feasibleTreeWithLayer","tightTreeWithLayer","feasible_tree_1","network_simplex_1","longestPathRanker","longestPath","tightTreeRanker","longestPathWithLayer","networkSimplexRanker","ranker","preorder","assignCutValue","cutvalue","calcCutValue","childIsTail","graphEdge","cutValue","isOutEdge","pointsToHead","otherWeight","isTreeEdge","otherCutValue","dfsAssignLowLim","nextLim","useNextLim","tailLabel","flip","isDescendant","initLowLimValues","initCutValues","updateRanks","flipped","rootLabel","og","simplify","leaveEdge","enterEdge","exchangeEdges","forwardVisited","dfsForward","nextRank","currRank","simplified","simpleLabel","weightsMap","sucs","weightMap","rect","sx","layeringNodes","rankMax","va","vb","valueA","valueB","collection","dagre_compound_1","DagreCompoundLayout","anchorPoint","getDataByOrder","hc","getLayoutConfig","graphDef","graphOption","graphSettings","renderInfo","buildGraph","flattenedRenderInfo","flatGraph","updatePosition","getNodePath","fullPath","settings","pre","cur","matchedNodes","matchedCombos","metaWidth","metaHeight","subSceneMeta","subScene","meta","paddingTop","paddingRight","paddingBottom","paddingLeft","expanded","graphMetaConfig","labelHeight","mergeConfig","LAYOUT_CONFIG","flattenedGraph","updateNodePosition","updateEdgePosition","getBegin","flattenedNodes","flattenedEdges","coreBox","HierarchyNodeType","META","ROOT_NAME","offsetX","offsetY","fixSize","fixCollapseSize","OP","anchorPoints_1","outEdge","firstPoint","anchorPointX","anchorPointY","baseEdgeList","baseEdge","sourceAnchor","inEdge","lastPoint","targetAnchor","anchorPoints","sourceEdge","sortedEdges","getEdges","sourceNodePath","targetNodePath","lastExistingSource_1","fNode","lastExistingTarget_1","NodeType","some","oedge","layoutOrder","d3Force","__importStar","forceGrid_1","mysqlWorkbench_1","dagre_1","noLeafNodes","temp","noLeafEdge","nodesTmp","nodeMinGap","found","copyNodes","copyEdges","simulation","forceSimulation","force","forceLink","forceManyBody","forceCenter","forceX","forceY","on","scalex","scaley","sizeTemp","grid_1","CELL_W","CELL_H","nodeWidth","nodeHeight","grid","gridpoint","occupyNearest","findGridByNodeId","column","realAdd","addGridSize","additionColumn","cells","insertColumn","additionRow","insertRow","columnNum","cell","rowNum","Grid","gridSize","DEFAULT_CELL_W","DEFAULT_CELL_H","MIN_DIST","occupied","sqdist","columnIndex","rowIndex","getNodes","core_1","ERLayout","OVERLAP_QUOT","M_PI_2","nodeEdgeMap","T","calcNodePair","nodeA","nodeB","isLinked","areaA","areaB","x11","y11","x12","y12","x21","y21","x22","y22","cx1","cy1","cx2","cy2","isHoriz","dcx","qr","atan2","l1","l2","aqr","newHoriz","M_PI","distanceToNode","calcEnergy","energy","isCorrectPosition","newPosition","relateEdges","relateNodes","otherNodeId","atan","newDelta","isVer","newIsVer","shuffle","foundSmallerEnergy","wsteps","hsteps","nodeEnergy","calcNodeEnergy","ns","rdm","relateEdge","minEnergy","deSameCount","de","prevEnergy","ea","constant","templateForce","groupBy","forceNodeSize","forceCharge","forceLinkDistance","forceLinkStrength","nodesMap","links","centerX","centerY","foci","none","templateNodes","template","enableGrouping","strength","tick","getFocisFromTemplate","initialize","net","gnodes","glinks","dNodes","clustersCounts","clustersLinks","sumforceNodeSize","tmpCount","computeClustersNodeCounts","dClusterLinks","clusterLinks","sourceID","targetID","getLinkKey","computeClustersLinkCounts","sourceTerminal","targetTerminal","getGroupsGraph","forceCollide","iterations","initializeWithForce","genNodesMap","getFocis","force_in_a_box_1","ForceLayout","clusterNodeStrength","clusterEdgeStrength","clusterEdgeDistance","clusterNodeSize","clusterFociStrength","workerEnabled","ticking","clustering","expectKeys","clusterForce","edgeForce","overlapProcess","restart","nodeForce","isInWorker","warn","totalTicks","totalTicksFloat","getSimulationTicks","currentTick","LAYOUT_MESSAGE","WorkerGlobalScope","d3_quadtree_1","accumulate","quad","accWeight","accX","accY","coulombDisScale2","accArray","weightParam","mappedNode","nodeData","quadtree","visitAfter","x1","y1","x2","y2","len2","len3","computeForce","ForceNBody_1","proccessToFunc","defaultV","Force2Layout","coulombDisScale","damping","maxSpeed","minMovement","interval","distanceThresholdMode","judgingDistance","centripetalOptions","leaf","single","others","getMass","propsGetMass","getCentripetalOptions","sameTypeLeafMap","leafCluster","nodeClusterBy","propsClusterNodeStrength","getClusterNodeStrength","getSameTypeLeafMap","relativeNodesType_1","relativeLeafNodes","sameTypeLeafNodes","centerNode","getAvgNodePosition","centerNodeInfo_1","sameTypeNodes","enableTick","defSpringLen","degreesMap","getDegreeMap","massWeight","nodeSpacingFunc_1","tDegree","sDegree","edgeInfos","elf","velArray","maxIter","runOneStep","iter_1","timeInterval","setInterval","clearInterval","monitor","calGravity","stepInterval","updateVelocity","calTotalEnergy","speed2","forceNBody","vecLength","direX","direY","sourceMassRatio","targetMassRatio","disX","disY","defaultGravity","nodeLength","getCenter","centriCenter","centerStrength","centriX","centriY","singleStrength","leafStrength","othersStrength","vLength","param2","distX","distY","distanceMagnitude","getCoreNodeAndRelativeLeafNodes","Body","rx","ry","distanceTo","bo","hypot","setPos","resetForce","addForce","F","contains","nenwMass","body_1","quad_1","quadTree_1","ForceAtlas2Layout","kr","mode","dissuadeHubs","barnesHut","ksmax","tao","prune","sizes","updateNodesByForces","nonLoopEdges","esize","idMap","edgeEndsIdMap","Es","sIdx","tIdx","forces","preForces","bodies","getAttrForces","getOptRepGraForces","getRepGraForces","updatePos","prevoIter","dir","eucliDis","Fa1","Fa2","krPrime","dir_1","eucliDis_1","Fr","Fg","minx","maxx","miny","maxy","quadParams","xmid","ymid","massCenter","quadTree","updateForce","swgns","trans","swgG","traG","minus","minusNorm","addNorm","preSG","sn","absForce","dnx","dny","Quad","getLength","halfLen","NW","NE","SW","SE","QuadTree","body","_isExternal","_putBody","FruchtermanLayout","clusterGravity","clusterMap","area","maxDisplace","k2","clusterGravity_1","distLength","gravityForce","limitedDist","vecLengthSqr","sign","common","previousPos","reachMoveThreshold","movement","ni","massi","nj","lengthSqr","nVecLength","massj","paramOverlap","massSource","massTarget","customCenterOpt","g_webgpu_1","gpu_1","fruchtermanShader_1","FruchtermanGPULayout","clusterField","attributesToTextureData","attributeArray","clusterCount","numParticles","buildTextureData","maxEdgePerVetex","nodesEdgesArray","supportCompute","clusterCenters","kernelFruchterman","createKernel","fruchtermanBundle","setDispatch","u_Data","u_K","u_K2","u_Gravity","u_ClusterGravity","u_Speed","u_MaxDisplace","u_Clustering","u_Center","u_AttributeArray","u_ClusterCenters","MAX_EDGE_PER_VERTEX","VERTEX_COUNT","kernelCluster","clusterBundle","u_NodeAttributes","CLUSTER_COUNT","__awaiter","getOutput","finalParticleData","vertexEdgeData","math_1","gForceShader_1","GForceGPULayout","buildTextureDataWithTwoEdgeAttr","masses","nodeStrengths","centerXs","centerYs","centerGravities","fxs","fys","nodeGravity","customCenter","nodeAttributeArray1","arrayToTextureData","nodeAttributeArray2","initPreviousData","kernelGForce","gForceBundle","u_damping","u_maxSpeed","u_minMovement","u_coulombDisScale","u_factor","u_NodeAttributeArray1","u_NodeAttributeArray2","u_AveMovement","u_interval","kernelAveMovement","aveMovementBundle","preventOverlapPadding","condense","col","cellWidth","cellHeight","cellUsed","id2manPos","rows","cols","oRows","oCols","columns","splits","sm","small","large","nodeH","rcPos","getPos","moveToNextCell","random_1","RandomLayout","gForce_1","force2_1","force_1","circular_1","dagreCompound_1","radial_1","RadialLayout","concentric_1","mds_1","fruchterman_1","fruchterman_2","gForce_2","comboForce_1","comboCombined_1","forceAtlas2_1","er_1","Layouts","layoutClass","layoutInstance","correctLayers","minLayer","hasLayerNodes","layerOffset_1","fruchterman","forceAtlas2","gForce","force2","dagre","dagreCompound","circular","concentric","mds","comboForce","comboCombined","ml_matrix_1","distances","handleInfinity","scaledD","scaleMatrix","scaledDistances","runMDS","M","Matrix","mul","rowMeans","mean","colMeans","totalMean","subRowVector","subColumnVector","ret","SingularValueDecomposition","eigenValues","diagonalMatrix","diagonal","leftSingularVectors","maxDistance","MDS","dimension","eigenValues_1","radialNonoverlapForce_1","getEDistance","unitRadius","strictRadial","maxPreventOverlapIteration","sortStrength","focusIndex","getIndexById","maxToFocus","focusNodeD","semiWidth","semiHeight","maxRadius","maxD","radii","eIdealD","eIdealDisMatrix","eIdealDistances","W","getWeightMatrix","weights","nonoverlapForceParams","focusID","nonoverlapForce","eIdealDis","oneIteration","vparam","originDis","reciODis","xMolecule","yMolecule","denominator","edis","reciEdis","idealDis","reciR","linkDis","newRow","iValue","jValue","charCodeAt","link","step","RadialNonoverlapForce","disp","getRepulsion","updatePositions","vecx","vecy","di","vpx","vpy","diLength","acos","tdispLength","nfDis","layoutOverride","GLayout","defaultCfg","number_1","resultIsNumber","dataArray","nodeDict","mapIdPos","dests","dest","attrs1","attrs2","attributeNames","attributeNum","attributteStringMap","valueArrays","itemNum","valueArray","array_1","object_1","terminal","ratio","traverseUp","halfSize","totalNodes","getCoreNode","getRelativeNodeIds","coreNode","relativeNodes","typeName","getSameTypeNodes","getTime","cp_1","cp_2","camelizeRE","cacheStringFunction","gl_matrix_1","leftTranslate","transMat","mat3","fromTranslation","multiply","leftRotate","rad","rotateMat","fromRotation","leftScale","scaleMat","fromScaling","v1","v2","actions","a1","isArrayLike","isType","each","isNil","isObjectLike","isPlainObject","isMatch","filterValues","getMax","pullAt","groupToMap","paramscondition_1","isNumberEqual","maxItem","minItem","isPrototype","isArraylike","memoize","text","font","fontSize","fontFamily","fontWeight","fontStyle","fontVariant","getContext","measureText","__spreadArrays","maxWidth","currentText","currentWidth","PLACEHOLDER_WIDTH","measureTextWidth","leftText","leftWidth","v4","uuid","byteToHex","buf","bth","getRandomValues","crypto","msCrypto","rnds8","Uint8Array","rnds","_nodeId","_clockseq","rng","bytesToUuid","_lastMSecs","_lastNSecs","clockseq","seedBytes","msecs","nsecs","dt","tmh","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","defaults","Cancel","onCanceled","requestData","requestHeaders","headers","responseType","cancelToken","unsubscribe","signal","removeEventListener","isFormData","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","baseURL","url","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","open","paramsSerializer","onreadystatechange","readyState","responseURL","onabort","onerror","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","isStandardBrowserEnv","xsrfValue","withCredentials","xsrfCookieName","xsrfHeaderName","setRequestHeader","isUndefined","onDownloadProgress","addEventListener","onUploadProgress","upload","abort","subscribe","aborted","send","Axios","axios","createInstance","defaultConfig","extend","instanceConfig","CancelToken","isCancel","VERSION","promises","spread","isAxiosError","__CANCEL__","executor","resolvePromise","promise","token","_listeners","onfulfilled","_resolve","reason","throwIfRequested","listener","InterceptorManager","dispatchRequest","validator","validators","interceptors","configOrUrl","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","fulfilled","rejected","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","getUri","handlers","eject","isAbsoluteURL","combineURLs","requestedURL","enhanceError","transformData","throwIfCancellationRequested","transformRequest","merge","adapter","transformResponse","description","number","fileName","lineNumber","columnNumber","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","validateStatus","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","process","getDefaultAdapter","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","isURLSearchParams","rawValue","parser","encoder","trim","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","encode","serializedParams","isDate","toISOString","hashmarkIndex","relativeURL","expires","domain","secure","cookie","toGMTString","RegExp","decodeURIComponent","remove","payload","originURL","msie","urlParsingNode","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","line","thing","deprecatedWarnings","version","formatMessage","opt","schema","allowUnknown","ArrayBuffer","isView","pipe","product","assignValue","stripBOM","content","RawSha256","Int32Array","INIT","bufferLength","bytesHashed","finished","update","byteLength","MAX_HASHABLE_LENGTH","BLOCK_SIZE","hashBuffer","digest","bitsHashed","bufferView","DataView","byteOffset","undecoratedLength","setUint8","setUint32","DIGEST_LENGTH","state0","state1","state2","state3","state4","state5","state6","state7","t1_1","t2_1","t1","KEY","t2","Uint32Array","RawSha256_1","util_utf8_browser_1","Sha256","secret","outer","convertToBuffer","bufferHash","bufferFromSecret","toHash","isEmptyData","digestSync","fromUtf8","TextEncoder","textEncoderFromUtf8","bytes","surrogatePair","jsFromUtf8","toUtf8","TextDecoder","decode","textEncoderToUtf8","decoded","byte","fromCharCode","nextByte","encoded","byteValue","jsToUtf8","extendStatics","__","__rest","propertyIsEnumerable","__decorate","decorators","decorate","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","_arguments","P","generator","__generator","trys","ops","verb","op","__createBinding","__values","__read","ar","__spread","jl","__await","__asyncGenerator","asyncIterator","resume","fulfill","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__classPrivateFieldGet","privateMap","__classPrivateFieldSet","ReflectOwnKeys","R","ReflectApply","getOwnPropertyNames","NumberIsNaN","EventEmitter","once","emitter","errorListener","removeListener","eventTargetAgnosticAddListener","flags","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","that","_addListener","events","existing","warning","newListener","emit","warned","onceWrapper","fired","wrapFn","_onceWrap","wrapped","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","copy","wrapListener","RangeError","setMaxListeners","getMaxListeners","doError","listeners","addListener","prependListener","prependOnceListener","originalListener","spliceOne","off","removeAllListeners","rawListeners","eventNames","toStringTag","button","signInButton","googleSignInButton","signInButtonIcon","auth0SignInButton","facebookSignInButton","amazonSignInButton","oAuthSignInButton","signInButtonContent","formContainer","formSection","formField","formRow","radio","navBar","navRight","nav","navItem","photoPickerButton","photoPlaceholder","photoPlaceholderIcon","container","actionRow","sectionHeader","sectionHeaderHint","sectionBody","sectionHeaderContent","sectionFooter","sectionFooterPrimaryContent","sectionFooterSecondaryContent","selectInput","strike","strikeContent","toast","toastClose","totpQrcode","sumerianSceneContainer","sumerianScene","loadingOverlay","loadingContainer","loadingLogo","loadingSceneName","loadingBar","loadingBarFill","sceneErrorText","sceneBar","sceneName","sceneActions","actionButton","tooltip","actionIcon","autoShowTooltip","msSubtleCryptoMethods","quacksLikeAnMsWindow","subtle","subtle_1","methodName","tslib_1","SHA_256_HASH","ie11Sha256_1","webCryptoSha256_1","sha256_js_1","supports_web_crypto_1","ie11_detection_1","util_locate_window_1","supportsWebCrypto","locateWindow","isMsWindow","encoding","isEmptyData_1","operation","keyOperation","importKey","toArrayBufferView","SHA_256_HMAC_ALGO","oncomplete","getKeyPromise","keyData","catch","finish","typedArray","EMPTY_DATA_SHA_256","subtleCryptoMethods","supportsSecureRandom","supportsSubtleCrypto","generateKey","encrypt","iv","additionalData","tagLength","Buffer","convertToBuffer_1","numToUint8_1","numToUint8","uint32ArrayFrom_1","uint32ArrayFrom","a_lookUpTable","return_array","AwsCrc32","crc32","Crc32","checksum","data_1","data_1_1","lookupTable","aws_crc32_1","fallbackWindow","boundClass","boundMethod","definingProperty","boundFn","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","axiosKeys","pkg","currentVerArr","isOlderVersion","thanVersion","pkgVersionArr","destVer","isDeprecated","FormData","URLSearchParams","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","maxChunkLength","encodeChunk","lookup","getFirstMatch","getSecondMatch","matchAndReturnConst","getWindowsVersionName","getMacOSVersionName","getAndroidVersionName","getVersionPrecision","compareVersions","getBrowserAlias","BROWSER_ALIASES_MAP","getBrowserTypeByAlias","BROWSER_MAP","ENGINE_MAP","OS_MAP","PLATFORMS_MAP","Bada","BlackBerry","Chrome","Chromium","Electron","Epiphany","Firefox","Focus","Generic","Googlebot","Maxthon","Opera","PhantomJS","Puffin","QupZilla","QQ","QQLite","Safari","Sailfish","SeaMonkey","Sleipnir","Swing","Tizen","Vivaldi","WeChat","Roku","amazon_silk","android","bada","blackberry","chrome","chromium","electron","epiphany","firefox","focus","generic","googlebot","google_search","ie","k_meleon","maxthon","mz","naver","opera","opera_coast","phantomjs","puffin","qupzilla","qq","qqlite","safari","sailfish","samsung_internet","seamonkey","sleipnir","swing","tizen","uc","vivaldi","webos","wechat","yandex","tablet","mobile","desktop","tv","WindowsPhone","Windows","MacOS","iOS","Android","WebOS","Linux","ChromeOS","PlayStation4","EdgeHTML","Blink","Trident","Presto","Gecko","WebKit","getParser","getResult","_ua","parsedResult","getUA","parseBrowser","browser","describe","getBrowser","getBrowserName","getBrowserVersion","getOS","os","parseOS","getOSName","getOSVersion","getPlatform","platform","parsePlatform","getPlatformType","getEngine","parseEngine","getEngineName","satisfies","isOS","isPlatform","isBrowser","compareVersion","isEngine","is","versionName","vendor","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","encodingOrOffset","allocUnsafe","fromArrayLike","fromArrayBuffer","string","isEncoding","actual","fromString","checked","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","bidirectionalIndexOf","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","hi","lo","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","global","foo","subarray","typedArraySupport","poolSize","_augment","species","alloc","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","toHex","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","stringtrim","base64clean","dst","cssKeywords","reverseKeywords","convert","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","gray","rdif","gdif","bdif","diffc","currentClosestKeyword","currentClosestDistance","z","t3","smin","lmin","sl","vmin","wh","z2","hr","ansi","mult","rem","colorString","char","integer","hue","chroma","mg","pure","conversions","route","fromModel","routes","toModel","wrappedFn","conversion","wrapRounded","wrapRaw","deriveBFS","models","queue","adjacents","adjacent","wrapConversion","colorNames","swizzle","reverseNames","clamp","hexDouble","hexAlpha","i2","rgba","percent","hsla","hwba","_slice","skippedModels","hashedModelKeys","limiters","Color","valpha","newArr","zeroArray","hashedKeys","getset","channel","modifier","maxfn","assertArray","places","percentString","unitArray","unitObject","roundTo","roundToPlace","red","green","blue","saturationl","lightness","saturationv","white","wblack","cyan","magenta","yellow","black","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","contrastRatio","isDark","isLight","lighten","darken","saturate","desaturate","whiten","blacken","grayscale","fade","opaquer","rotate","mixinColor","color1","w1","w2","newAlpha","CryptoJS","globalThis","cryptoSecureRandomInt","randomBytes","subtype","C","C_lib","lib","mixIn","$super","propertyName","WordArray","words","sigBytes","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","thatByte","nBytes","C_enc","enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","escape","utf8Str","BufferedBlockAlgorithm","reset","_data","_nDataBytes","_append","_process","doFlush","processedWords","dataWords","dataSigBytes","blockSize","nBlocksReady","nWordsReady","_minBufferSize","nBytesReady","_doProcessBlock","C_algo","Hasher","_doReset","messageUpdate","finalize","_doFinalize","_createHelper","hasher","_createHmacHelper","HMAC","parseLoop","base64Str","base64StrLength","reverseMap","bitsCombined","Base64","_map","base64Chars","triplet","paddingChar","_reverseMap","paddingIndex","undef","HmacSHA256","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","superInit","subInit","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Float64Array","typedArrayByteLength","H","K","isPrime","sqrtN","getFractionalBits","nPrime","SHA256","_hash","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","nBitsTotal","nBitsLeft","xi","yi","ri2","prepare","x0","y0","jiggle","_nodes","_random","nodeById","strengths","initializeStrength","initializeDistance","noop","Dispatch","parseTypenames","typenames","types","typename","initialAngle","stepper","timer","lcg","initializeNodes","initializeForce","randomSource","d2","closest","distanceMin2","distanceMax2","theta2","distanceMin","distanceMax","radiuses","xz","yz","xm","ym","xp","yp","_root","_x0","_y0","_x1","_y1","_y","defaultX","defaultY","Quadtree","NaN","addAll","leaf_copy","treeProto","cover","extent","x3","y3","quads","retainer","removeAll","taskHead","taskTail","frame","clockLast","clockNow","clockSkew","clock","performance","setFrame","clearNow","Timer","_call","delay","wake","timerFlush","t0","sleep","nap","poke","maxLabelWidth","labelOffset","bridge","NODE","BRIDGE","INCLUDE","EXCLUDE","UNSPECIFIED","CORE","SERIES","__data__","N","O","I","S","G","A","L","U","exec","IE_PROTO","$","Y","J","X","Q","V","ee","Z","ne","te","ue","fe","ve","le","we","je","xe","Ne","Oe","ke","Ie","Se","Ce","Ge","Be","Ae","Le","Re","Te","De","Pe","ze","Fe","Ue","Ve","He","We","binding","qe","isTypedArray","Ye","Je","Xe","Me","Ke","Qe","Ze","en","nn","tn","rn","cn","dn","hn","ln","pn","gn","yn","bn","wn","En","xn","Nn","On","kn","In","Sn","Mn","Cn","Gn","Bn","An","Ln","Rn","Tn","Dn","zn","Fn","Vn","Hn","Wn","Yn","Jn","Un","lastIndex","$n","qn","Xn","Kn","Qn","et","isMap","nt","rt","isSet","ot","at","Pn","jn","mn","an","ct","st","ft","ht","lt","vt","pt","gt","mt","Et","_t","jt","xt","Nt","Ot","kt","It","St","Ct","Gt","Mt","Bt","Lt","Tt","Dt","Rt","At","Pt","zt","Ft","Ut","Vt","Cache","so","$t","Ht","Wt","qt","Yt","Jt","Xt","Kt","Qt","Zt","or","ir","ur","cr","dr","fr","lr","vr","pr","yr","mr","wr","Er","_r","xr","Nr","Ir","Sr","Mr","Cr","Gr","Br","Ar","Lr","Rr","Dr","Or","Tr","isConcatSpreadable","Ur","Vr","$r","Hr","Wr","Yr","Jr","Xr","Kr","Qr","no","Zr","eo","oo","ao","uo","io","fo","co","jr","transform","ho","vo","_isDirected","_isMultigraph","_isCompound","_label","_defaultNodeLabelFn","_defaultEdgeLabelFn","_parent","_children","_in","_preds","_out","_sucs","_edgeObjs","_edgeLabels","po","go","yo","mo","_nodeCount","_edgeCount","_removeFromParentsChildList","wo","Eo","_o","jo","No","Oo","_keyIndices","_decrease","_swap","_heapify","ko","Io","Mo","Bo","Ao","Lo","Ro","To","Do","Po","zo","alg","dijkstraAll","findCycles","isAcyclic","graphlib","Vi","Fo","Vo","$o","Ho","Wo","Yo","Jo","Xo","Ko","Qo","ei","Zo","ti","qo","oi","ci","fi","vi","pi","gi","bi","wi","mi","Ei","ji","ki","Si","Ii","Mi","Ci","Gi","Ai","Bi","Ri","Di","criteria","Li","Ti","Pi","zi","cloneDeep","flatten","forIn","mapValues","pick","Ui","Hi","Wi","qi","_prev","_sentinel","Yi","Ji","Xi","Qi","Zi","na","Ki","ta","ra","oa","successorWeights","predecessorWeights","ia","aa","ua","ca","sa","da","fa","ha","la","pa","ga","ya","ba","ma","wa","Ea","xa","Oa","Ia","ka","ja","Na","Sa","Ma","Ga","Ba","La","Ra","Da","Pa","za","Ua","Va","Fa","Ha","Wa","Xa","Ka","qa","Ya","Ja","Qa","nu","tu","$a","iu","ou","Za","eu","au","du","fu","yu","su","hu","lu","vu","pu","gu","mu","wu","Eu","_u","xu","Nu","Ou","ku","Iu","Su","Mu","Cu","Gu","Bu","Au","Lu","Ca","Aa","Ta","bu","debug","debugOrdering","style","Ru","Tu","Du","cardinality","isGroupNode","parentNode","attr","inputs","Pu","Fu","bridgeGraph","metaGraph","Hu","getFirstChild","leaves","Uu","inbound","addBaseEdge","Vu","$u","Wu","graphOptions","getNodeMap","getBridgeGraph","getChildName","getPredecessors","getOneWayEdges","getSuccessors","Yu","Ju","hasSubHierarchy","Qu","buildSubHierarchy","getRenderInfoNodes","getSubHierarchy","coreGraph","getOrCreateRenderNodeByName","Ku","getRenderNodeByName","Xu","adjoiningMetaEdge","getNodeByName","outboxWidth","displayName","metaEdge","Zu","ec","nc","tc","rc","isChild","rankDirection","getPath","qu","zu","ac","oc","parentNodeName","ic","renderInfoEdge","adjoiningEdge","for","SlowBuffer","INSPECT_MAX_BYTES","SharedArrayBuffer","E","toLocaleString","BigInt","readUintLE","readUintBE","readUint8","readUint16LE","readUint16BE","readUint32LE","readUint32BE","readBigUInt64LE","readBigUInt64BE","readBigInt64LE","readBigInt64BE","writeUintLE","writeUintBE","writeUint8","writeUint16LE","writeUint16BE","writeUint32LE","writeUint32BE","writeBigUInt64LE","writeBigUInt64BE","writeBigInt64LE","writeBigInt64BE","copyWithin","super","ERR_OUT_OF_RANGE","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","LN2","MutationObserver","WebKitMutationObserver","createTextNode","observe","characterData","setImmediate","MessageChannel","removeChild","documentElement","appendChild","port1","port2","super_","getTypeOf","uint8array","compressedSize","uncompressedSize","compression","compressedContent","getContentWorker","uncompressWorker","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","binary","createFolders","date","compressionOptions","comment","unixPermissions","dosPermissions","_pako","_pakoAction","_pakoOptions","inherits","processChunk","_createPako","transformTo","flush","cleanUp","onData","file","utf8encode","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","fileRecord","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","DATA_DESCRIPTOR","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","openedSource","closedSource","CENTRAL_DIRECTORY_END","prepareNextSource","isPaused","pause","registerPrevious","generatedError","lock","generateWorker","_compressWorker","files","loadAsync","external","decompressed","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","prepareContent","fileNameStr","fileCommentStr","unsafeOriginalName","newBufferFrom","allocBuffer","_upstreamEnded","_bindStream","_stream","Readable","_helper","_read","folder","generate","generateInternalStream","mimeType","checkSupport","generateAsync","generateNodeStream","toNodejsStream","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","checkIndex","setIndex","skip","readInt","readString","readDate","UTC","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","propName","dataIsReady","_tickScheduled","_tickAndRepeat","isFinished","_tick","extraStreamInfo","isLocked","mergeStreamInfo","nodestream","_internalType","_outputType","_mimeType","_worker","newBlob","objectMode","arraybuffer","nodebuffer","blob","Blob","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","FileReader","onload","readAsArrayBuffer","loadOptions","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_dataBinary","internalStream","_decompressWorker","async","nodeStream","outcome","callFulfilled","otherCallFulfilled","callRejected","otherCallRejected","finally","race","chunkSize","windowBits","memLevel","strategy","gzip","msg","ended","chunks","strm","avail_out","deflateInit2","header","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","next_in","avail_in","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","inflateSetDictionary","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","pending","pending_buf","pending_out","total_out","_tr_flush_block","block_start","strstart","max_chain_length","prev_length","nice_match","w_size","w_mask","good_match","lookahead","match_start","window_size","hash_size","wrap","adler","total_in","ins_h","hash_shift","hash_mask","match_length","_tr_tally","max_lazy_match","last_lit","prev_match","match_available","good_length","max_lazy","nice_length","max_chain","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","data_type","_tr_init","deflateInit","deflateReset","deflateResetKeep","hcrc","extra","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","sane","havedict","check","total","wbits","ncode","nlen","ndist","have","work","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","fun","nextTick","title","env","argv","versions","cwd","chdir","umask","SAXParser","SAXStream","createStream","MAX_BUFFER_LENGTH","bufferCheckPosition","lowercase","lowercasetags","looseCase","tags","closedRoot","sawRoot","tag","strict","noscript","BEGIN","strictEntities","ENTITIES","XML_ENTITIES","attribList","xmlns","trackPosition","EVENTS","BEGIN_WHITESPACE","TEXT","textNode","TEXT_ENTITY","OPEN_WAKA","startTagPosition","SCRIPT","SCRIPT_ENDING","script","CLOSE_TAG","SGML_DECL","sgmlDecl","OPEN_TAG","tagName","PROC_INST","procInstName","procInstBody","CDATA","cdata","COMMENT","DOCTYPE","doctype","SGML_DECL_QUOTED","DOCTYPE_DTD","DOCTYPE_QUOTED","DOCTYPE_DTD_QUOTED","COMMENT_ENDING","COMMENT_ENDED","CDATA_ENDING","CDATA_ENDING_2","PROC_INST_ENDING","PROC_INST_BODY","OPEN_TAG_SLASH","ATTRIB","attribName","attribValue","ATTRIB_NAME","ATTRIB_VALUE","ATTRIB_NAME_SAW_WHITE","ATTRIB_VALUE_QUOTED","ATTRIB_VALUE_UNQUOTED","ATTRIB_VALUE_ENTITY_Q","ATTRIB_VALUE_CLOSED","ATTRIB_VALUE_ENTITY_U","CLOSE_TAG_SAW_WHITE","close","Stream","_parser","readable","onend","_decoder","xml","STATE","COMMENT_STARTING","amp","quot","apos","AElig","Aacute","Acirc","Agrave","Aring","Atilde","Auml","Ccedil","ETH","Eacute","Ecirc","Egrave","Euml","Iacute","Icirc","Igrave","Iuml","Ntilde","Oacute","Ocirc","Ograve","Oslash","Otilde","Ouml","THORN","Uacute","Ucirc","Ugrave","Uuml","Yacute","aacute","acirc","aelig","agrave","aring","atilde","auml","ccedil","eacute","ecirc","egrave","eth","euml","iacute","icirc","igrave","iuml","ntilde","oacute","ocirc","ograve","oslash","otilde","ouml","szlig","thorn","uacute","ucirc","ugrave","uuml","yacute","yuml","reg","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","ordf","laquo","not","shy","macr","deg","plusmn","sup1","sup2","sup3","acute","micro","para","middot","cedil","ordm","raquo","frac14","frac12","frac34","iquest","times","divide","OElig","oelig","Scaron","scaron","Yuml","fnof","circ","tilde","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Omicron","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","beta","gamma","zeta","eta","iota","kappa","lambda","omicron","rho","sigmaf","sigma","tau","upsilon","phi","chi","psi","omega","thetasym","upsih","piv","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","bull","hellip","permil","prime","Prime","lsaquo","rsaquo","oline","frasl","euro","image","weierp","real","trade","alefsym","larr","uarr","rarr","darr","harr","crarr","lArr","uArr","rArr","dArr","hArr","forall","part","exist","nabla","isin","notin","prod","lowast","radic","infin","ang","and","cap","cup","int","there4","sim","cong","asymp","equiv","ge","sup","nsub","sube","supe","oplus","otimes","perp","sdot","lceil","rceil","lfloor","rfloor","lang","rang","loz","spades","clubs","hearts","diams","local","uri","isSelfClosing","fromCodePoint","importScripts","attachEvent","clearImmediate","Writable","Duplex","Transform","PassThrough","pipeline","_isStdio","allowHalfOpen","_writableState","highWaterMark","getBuffer","_readableState","_transform","ReadableState","debuglog","getHighWaterMark","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","decoder","_destroy","_undestroy","undestroy","setEncoding","consume","stdout","stderr","hasUnpiped","needDrain","unpipe","_fromList","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","_transformState","transforming","writecb","writechunk","afterTransform","needTransform","writeencoding","_flush","_write","pendingcb","corkedRequestsFree","WritableState","deprecate","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","writableObjectMode","finalCalled","ending","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","errorEmitted","bufferedRequest","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","final","_final","isBuf","allBuffers","chunk","hasInstance","cork","uncork","setDefaultEncoding","stream","custom","_getString","_getBuffer","customInspect","ERR_STREAM_PREMATURE_CLOSE","req","setHeader","ERR_MISSING_ARGS","ERR_INVALID_OPT_VALUE","fillLast","lastNeed","lastTotal","lastChar","vw","rq","EL","NY","convertInchesToTwip","convertMillimetersToTwip","dateTimeValue","sF","decimalNumber","vH","eighthPointMeasureValue","LV","hexColorValue","dg","hpsMeasureValue","KR","longHexNumber","mA","measurementOrPercentValue","aB","percentageValue","wp","pointMeasureValue","gg","positiveUniversalMeasureValue","_p","shortHexNumber","G0","signedHpsMeasureValue","Rg","signedTwipsMeasureValue","xb","twipsMeasureValue","Jd","uCharHexNumber","xD","uniqueNumericId","universalMeasureValue","KC","unsignedDecimalNumber","f$","localStorage","trace","xml2js","xml2json","js2xml","json2xml","spaces","ignoreAttributes","attributesFn","noQuotesForNativeAttributes","attributeNameFn","indentAttributes","attributeValueFn","ignoreDeclaration","attributesKey","ignoreInstruction","instructionNameFn","instructionFn","ignoreComment","commentFn","ignoreCdata","cdataFn","ignoreDoctype","doctypeFn","ignoreText","textFn","elementNameFn","elementsKey","fullTagEmptyElementFn","fullTagEmptyElement","typeKey","indentText","indentCdata","indentInstruction","commentKey","doctypeKey","cdataKey","textKey","nameKey","instructionKey","parentKey","declarationKey","copyOptions","ensureFlagExists","ensureSpacesExists","ensureKeyExists","checkFnExists","compact","ensureAlwaysArrayExists","alwaysArray","instructionHasAttributes","addParent","nativeTypeAttributes","alwaysChildren","captureSpacesBetweenElements","nativeType","sanitize","note","onopentag","ontext","oncomment","onclosetag","oncdata","ondoctype","onprocessinginstruction","_elem","icount","indents","interrupt","_attr","_cdata","declaration","standalone","AbstractNumbering","Alignment","AlignmentAttributes","AlignmentType","Attributes","BaseEmphasisMark","BaseXmlComponent","Bookmark","BookmarkEnd","BookmarkStart","Border","BorderElement","BorderStyle","Column","ColumnAttributes","ColumnBreak","Columns","ColumnsAttributes","zr","Comment","CommentRangeEnd","CommentRangeStart","CommentReference","Comments","ConcreteHyperlink","ConcreteNumbering","DeletedTextRun","DocGridAttributes","Document","DocumentAttributes","DocumentBackground","DocumentBackgroundAttributes","DocumentDefaults","DocumentGrid","DocumentGridType","DotEmphasisMark","Drawing","DropCapType","EMPTY_OBJECT","EmphasisMark","EmphasisMarkType","ExternalHyperlink","File","FootNoteReferenceRunAttributes","FootNotes","Footer","FooterWrapper","FootnoteReference","FootnoteReferenceRun","FrameAnchorType","FrameProperties","FramePropertiesAttributes","FrameWrap","GridSpan","Header","HeaderFooterReference","HeaderFooterReferenceType","HeaderFooterType","HeaderWrapper","Fi","HeadingLevel","HeightRule","$s","HorizontalPosition","HorizontalPositionAlign","HorizontalPositionRelativeFrom","HpsMeasureElement","HyperlinkType","IgnoreIfEmptyXmlComponent","ImageRun","ImportDotx","ImportedRootElementAttributes","ImportedXmlComponent","Indent","InitializableXmlComponent","InsertedTextRun","InternalHyperlink","LeaderType","Level","LevelBase","$i","LevelForOverride","LevelFormat","LevelOverride","LevelSuffix","LineNumberAttributes","LineNumberRestartFormat","LineNumberType","LineRuleType","MathAccentCharacter","MathAngledBrackets","bs","MathBase","MathCurlyBrackets","ys","MathDegree","MathDenominator","MathFraction","MathFunction","ls","MathFunctionName","MathFunctionProperties","us","MathIntegral","MathLimitLocation","MathNAryProperties","MathNumerator","MathPreSubSuperScript","ts","MathPreSubSuperScriptProperties","es","MathRadical","as","MathRadicalProperties","MathRoundBrackets","MathRun","MathSquareBrackets","gs","MathSubScript","MathSubScriptElement","MathSubScriptProperties","Zn","MathSubSuperScript","MathSubSuperScriptProperties","MathSum","MathSuperScript","MathSuperScriptElement","MathSuperScriptProperties","Media","NumberFormat","NumberProperties","NumberValueElement","Numbering","OnOffElement","OutlineLevel","OverlapType","Gs","Packer","PageBorderDisplay","PageBorderOffsetFrom","PageBorderZOrder","PageBorders","PageBreak","PageBreakBefore","PageMargin","PageMarginAttributes","PageNumber","PageNumberSeparator","PageNumberType","PageNumberTypeAttributes","PageOrientation","PageReference","PageSize","PageSizeAttributes","PageTextDirection","PageTextDirectionType","Paragraph","ParagraphProperties","ParagraphPropertiesDefaults","PrettifyType","RelativeHorizontalPosition","Ws","RelativeVerticalPosition","Ks","Run","RunFonts","ae","RunProperties","pe","RunPropertiesChange","RunPropertiesDefaults","SectionProperties","SectionType","SectionTypeAttributes","SequentialIdentifier","Shading","ShadingType","SimpleField","SimpleMailMergeField","SimplePos","SpaceType","Spacing","StringContainer","StringEnumValueElement","StringValueElement","Style","StyleForCharacter","StyleForParagraph","StyleLevel","Styles","SymbolRun","be","TDirection","Fs","Tab","TabAttributes","TabStop","gr","TabStopItem","TabStopPosition","TabStopType","Table","TableAnchorType","js","TableBorders","zs","TableCell","Ms","TableCellBorders","Cs","TableFloatOptionsAttributes","qs","TableFloatProperties","Zs","TableLayout","Js","TableLayoutType","Vs","TableOfContents","Go","TableProperties","Qs","TableRow","TableRowHeight","TableRowHeightAttributes","TableRowProperties","TableWidthElement","Rs","TextDirection","Ss","TextRun","TextWrappingSide","Ee","TextWrappingType","ThematicBreak","Type","Underline","he","UnderlineType","VerticalAlign","VerticalAlignAttributes","VerticalAlignElement","VerticalMerge","Ds","VerticalMergeType","As","VerticalPosition","VerticalPositionAlign","VerticalPositionRelativeFrom","WORKAROUND","WORKAROUND2","WORKAROUND3","WORKAROUND4","rs","WidthType","WrapNone","WrapSquare","WrapTight","WrapTopAndBottom","XmlAttributeComponent","XmlComponent","convertToXmlComponent","sectionMarginDefaults","sectionPageSizeDefaults","rootKey","seal","prepForXml","addChildElement","xmlKeys","space","sz","rsidR","rsidRPr","rsidSect","footer","gutter","linePitch","static","START","CENTER","BOTH","MEDIUM_KASHIDA","DISTRIBUTE","NUM_TAB","HIGH_KASHIDA","LOW_KASHIDA","THAI_DISTRIBUTE","LEFT","RIGHT","JUSTIFIED","SINGLE","DASH_DOT_STROKED","DASHED","DASH_SMALL_GAP","DOT_DASH","DOT_DOT_DASH","DOTTED","DOUBLE","DOUBLE_WAVE","INSET","NIL","OUTSET","THICK","THICK_THIN_LARGE_GAP","THICK_THIN_MEDIUM_GAP","THICK_THIN_SMALL_GAP","THIN_THICK_LARGE_GAP","THIN_THICK_MEDIUM_GAP","THIN_THICK_SMALL_GAP","THIN_THICK_THIN_LARGE_GAP","THIN_THICK_THIN_MEDIUM_GAP","THIN_THICK_THIN_SMALL_GAP","THREE_D_EMBOSS","THREE_D_ENGRAVE","TRIPLE","WAVE","hanging","firstLine","SEPARATE","INSIDE","OUTSIDE","BOTTOM","TOP","DECIMAL","UPPER_ROMAN","LOWER_ROMAN","UPPER_LETTER","LOWER_LETTER","ORDINAL","CARDINAL_TEXT","ORDINAL_TEXT","HEX","CHICAGO","IDEOGRAPH_DIGITAL","JAPANESE_COUNTING","AIUEO","IROHA","DECIMAL_FULL_WIDTH","DECIMAL_HALF_WIDTH","JAPANESE_LEGAL","JAPANESE_DIGITAL_TEN_THOUSAND","DECIMAL_ENCLOSED_CIRCLE","DECIMAL_FULL_WIDTH_2","AIUEO_FULL_WIDTH","IROHA_FULL_WIDTH","DECIMAL_ZERO","BULLET","GANADA","CHOSUNG","DECIMAL_ENCLOSED_FULL_STOP","DECIMAL_ENCLOSED_PAREN","DECIMAL_ENCLOSED_CIRCLE_CHINESE","IDEOGRAPH_ENCLOSED_CIRCLE","IDEOGRAPH_TRADITIONAL","IDEOGRAPH_ZODIAC","IDEOGRAPH_ZODIAC_TRADITIONAL","TAIWANESE_COUNTING","IDEOGRAPH_LEGAL_TRADITIONAL","TAIWANESE_COUNTING_THOUSAND","TAIWANESE_DIGITAL","CHINESE_COUNTING","CHINESE_LEGAL_SIMPLIFIED","CHINESE_COUNTING_TEN_THOUSAND","KOREAN_DIGITAL","KOREAN_COUNTING","KOREAN_LEGAL","KOREAN_DIGITAL_2","VIETNAMESE_COUNTING","RUSSIAN_LOWER","RUSSIAN_UPPER","NUMBER_IN_DASH","HEBREW_1","HEBREW_2","ARABIC_ALPHA","ARABIC_ABJAD","HINDI_VOWELS","HINDI_CONSONANTS","HINDI_NUMBERS","HINDI_COUNTING","THAI_LETTERS","THAI_NUMBERS","THAI_COUNTING","BAHT_TEXT","DOLLAR_TEXT","DEFAULT","PRESERVE","CLEAR","DIAGONAL_CROSS","DIAGONAL_STRIPE","HORIZONTAL_CROSS","HORIZONTAL_STRIPE","PERCENT_5","PERCENT_10","PERCENT_12","PERCENT_15","PERCENT_20","PERCENT_25","PERCENT_30","PERCENT_35","PERCENT_37","PERCENT_40","PERCENT_45","PERCENT_50","PERCENT_55","PERCENT_60","PERCENT_62","PERCENT_65","PERCENT_70","PERCENT_75","PERCENT_80","PERCENT_85","PERCENT_87","PERCENT_90","PERCENT_95","REVERSE_DIAGONAL_STRIPE","SOLID","THIN_DIAGONAL_CROSS","THIN_DIAGONAL_STRIPE","THIN_HORIZONTAL_CROSS","THIN_REVERSE_DIAGONAL_STRIPE","THIN_VERTICAL_STRIPE","VERTICAL_STRIPE","author","DOT","re","se","oe","ascii","eastAsia","hAnsi","ce","WORDS","DOTTEDHEAVY","DASH","DASHEDHEAVY","DASHLONG","DASHLONGHEAVY","DOTDASH","DASHDOTHEAVY","DOTDOTDASH","DASHDOTDOTHEAVY","WAVYHEAVY","WAVYDOUBLE","bold","boldComplexScript","italics","italicsComplexScript","underline","emphasisMark","sizeComplexScript","rightToLeft","smallCaps","allCaps","doubleStrike","subScript","superScript","highlight","highlightComplexScript","characterSpacing","emboss","imprint","shading","revision","border","vanish","specVanish","CURRENT","TOTAL_PAGES","TOTAL_PAGES_IN_SECTION","break","symbolfont","ye","CHARACTER","COLUMN","INSIDE_MARGIN","LEFT_MARGIN","MARGIN","OUTSIDE_MARGIN","PAGE","RIGHT_MARGIN","BOTTOM_MARGIN","LINE","PARAGRAPH","TOP_MARGIN","$e","relativeFrom","relative","embed","cstate","tt","noChangeAspect","noChangeArrowheads","ut","descr","flipVertical","flipHorizontal","rotation","yt","vertical","horizontal","extents","emus","bt","prst","bwMode","form","pic","SQUARE","TIGHT","TOP_AND_BOTTOM","BOTH_SIDES","LARGEST","distT","distB","distL","distR","wrapText","allowOverlap","behindDoc","layoutInCell","locked","relativeHeight","simplePos","behindDocument","lockAnchor","verticalPosition","horizontalPosition","floating","margins","zIndex","docProperties","mediaData","graphic","transformation","inline","convertDataURIToBinary","imageData","altText","addImage","atob","instr","initials","_ref5","_ref6","AT_LEAST","EXACTLY","EXACT","AUTO","after","before","lineRule","HEADING_1","HEADING_2","HEADING_3","HEADING_4","HEADING_5","HEADING_6","TITLE","BAR","NUM","HYPHEN","MIDDLE_DOT","UNDERSCORE","MAX","leader","_ref7","targetMode","EXTERNAL","anchor","INTERNAL","linkId","Pr","hyperlink","useRelativePosition","verticalAlign","FIRST","EVEN","HEADER","FOOTER","equalWidth","_ref8","LINES_AND_CHARS","SNAP_TO_CHARS","charSpace","NEW_PAGE","NEW_SECTION","CONTINUOUS","countBy","_ref9","ALL_PAGES","FIRST_PAGE","NOT_FIRST_PAGE","display","offsetFrom","zOrder","pageBorders","pageBorderTop","pageBorderLeft","pageBorderBottom","pageBorderRight","PERIOD","COLON","EM_DASH","EN_DASH","formatType","separator","_ref10","PORTRAIT","LANDSCAPE","orientation","LEFT_TO_RIGHT_TOP_TO_BOTTOM","TOP_TO_BOTTOM_RIGHT_TO_LEFT","NEXT_PAGE","NEXT_COLUMN","EVEN_PAGE","ODD_PAGE","GUTTER","WIDTH","HEIGHT","ORIENTATION","page","margin","pageNumbers","borders","textDirection","headerWrapperGroup","footerWrapperGroup","lineNumbers","titlePage","addHeaderFooterGroup","View","ReferenceId","even","sections","addSection","createSectionParagraph","_ref11","wpc","mc","wp14","w10","w14","w15","wpg","wpi","wne","wps","Ignorable","cp","dc","dcterms","dcmitype","xsi","cx3","cx4","cx5","cx6","cx7","cx8","aink","am3d","w16cex","w16cid","w16","w16sdtdh","w16se","themeColor","themeShade","themeTint","background","addRelationship","createRelationship","RelationshipCount","relationships","Relationships","DROP","AROUND","NOT_BESIDE","THROUGH","anchorLock","anchorHorizontal","anchorVertical","spaceHorizontal","spaceVertical","rule","alignmentX","alignmentY","lines","numberingReferences","heading","bullet","numbering","keepNext","keepLines","pageBreakBefore","widowControl","reference","thematicBreak","wordWrap","rightTabStop","tabStops","leftTabStop","bidirectional","contextualSpacing","outlineLevel","suppressLineNumbers","viewWrapper","createConcreteNumberingInstance","addRunToFront","numerator","accent","hide","ss","hs","character","ps","ds","ms","beginningCharacter","endingCharacter","Ts","DXA","PERCENTAGE","Is","_ref12","TABLE","TABLE_CELL","Ns","_ref13","marginUnitType","Os","CONTINUE","RESTART","Ls","BOTTOM_TO_TOP_LEFT_TO_RIGHT","Ps","Bs","columnSpan","verticalMerge","rowSpan","Us","Hs","insideHorizontal","insideVertical","Xs","INLINE","OVERLAP","horizontalAnchor","verticalAnchor","absoluteHorizontalPosition","relativeHorizontalPosition","absoluteVerticalPosition","relativeVerticalPosition","bottomFromText","topFromText","leftFromText","rightFromText","overlap","AUTOFIT","FIXED","Ys","float","visuallyRightToLeft","cellMargin","_ref14","columnWidths","CellCount","addCellToColumnIndex","ATLEAST","cantSplit","tableHeader","addCellToIndex","columnIndexToRootIndex","rootIndexToColumnIndex","ai","contentType","extension","ui","partName","addFooter","addHeader","subject","creator","keywords","lastModifiedBy","fmtid","pid","nextId","addCustomProperty","refId","media","SEPERATOR","CONTINUATION_SEPERATOR","Ni","Oi","createFootNote","footnotess","addMedia","IDEOGRAPH__DIGITAL","DECIMAL_FULL_WIDTH2","DECIMAL_ENCLOSED_FULLSTOP","DECIMAL_ENCLOSED_PARENTHESES","CHINESE_COUNTING_THOUSAND","KOREAN_DIGITAL2","HEBREW1","HEBREW2","CUSTOM","ilvl","tentative","NOTHING","SPACE","TAB","_ref15","suffix","isLegalNumberingStyle","paragraphProperties","paragraph","runProperties","abstractNumId","restartNumberingAfterBreak","numId","overrideLevel","ro","abstractNumberingMap","concreteNumberingMap","referenceConfigMap","ReferenceConfig","useSingleBorderforContiguousCells","wordPerfectJustification","noTabStopForHangingIndent","noLeading","spaceForUnderline","noColumnBalance","balanceSingleByteDoubleByteWidth","noExtraLineSpacing","doNotLeaveBackslashAlone","underlineTrailingSpaces","doNotExpandShiftReturn","spacingInWholePoints","lineWrapLikeWord6","printBodyTextBeforeHeader","printColorsBlack","spaceWidth","showBreaksInFrames","subFontBySize","suppressBottomSpacing","suppressTopSpacing","suppressSpacingAtTopOfPage","suppressTopSpacingWP","suppressSpBfAfterPgBrk","swapBordersFacingPages","convertMailMergeEsc","truncateFontHeightsLikeWP6","macWordSmallCaps","usePrinterMetrics","doNotSuppressParagraphBorders","wrapTrailSpaces","footnoteLayoutLikeWW8","shapeLayoutLikeWW8","alignTablesRowByRow","forgetLastTabAlignment","adjustLineHeightInTable","autoSpaceLikeWord95","noSpaceRaiseLower","doNotUseHTMLParagraphAutoSpacing","layoutRawTableWidth","layoutTableRowsApart","useWord97LineBreakRules","doNotBreakWrappedTables","doNotSnapToGridInCell","selectFieldWithFirstOrLastCharacter","applyBreakingRules","doNotWrapTextWithPunctuation","doNotUseEastAsianBreakRules","useWord2002TableStyleRules","growAutofit","useFELayout","useNormalStyleForList","doNotUseIndentAsNumberingTabStop","useAlternateEastAsianLineBreakRules","allowSpaceOfSameStyleInTable","doNotSuppressIndentation","doNotAutofitConstrainedTables","autofitToFirstFixedWidthCell","underlineTabInNumberingList","displayHangulFixedWidth","splitPgBreakAndParaMark","doNotVerticallyAlignCellWithSp","doNotBreakConstrainedForcedTable","ignoreVerticalAlignmentInTextboxes","useAnsiKerningPairs","cachedColumnBalance","trackRevisions","evenAndOddHeaders","updateFields","compatibility","compatibilityModeVersion","styleId","customStyle","basedOn","uiPriority","semiHidden","unhideWhenUsed","quickFormat","xo","So","Co","initialStyles","importedStyles","paragraphStyles","characterStyles","runPropertiesDefaults","paragraphPropertiesDefaults","newInstance","Uo","heading1","heading2","heading3","heading4","heading5","heading6","strong","listParagraph","footnoteReference","footnoteText","footnoteTextChar","currentRelationshipId","footers","coreProperties","comments","fileRelationships","customProperties","appProperties","footnotesWrapper","contentTypes","documentWrapper","compatabilityModeVersion","evenAndOddHeaderAndFooters","features","externalStyles","styles","addDefaultRelationships","addHeaderToDocument","addFooterToDocument","footnotes","_ref16","createHeader","createFooter","CoreProperties","FileRelationships","Headers","Footers","ContentTypes","CustomProperties","AppProperties","Settings","captionLabel","entriesFromBookmark","captionLabelIncludingNumbers","sequenceAndPageNumbersSeparator","tcFieldIdentifier","tcFieldLevelRange","pageNumbersEntryLevelsRange","headingStyleRange","entryAndPageNumberSeparator","seqFieldIdentifierForPrefix","stylesWithLevels","styleName","useAppliedParagraphOutlineLevel","preserveTabInEntries","preserveNewLineInEntries","hideTabAndPageNumbersInWebView","deletedTextRunWrapper","getMediaData","throw","WITH_2_BLANKS","WITH_4_BLANKS","WITH_TAB","compiler","formatter","imageReplacer","numberingReplacer","xmlifyFile","Properties","HeaderRelationships","FooterRelationships","FootNotesRelationships","IMAGE","HYPERLINK","extract","extractDocumentRefs","findReferenceFiles","createHeaders","createFooters","titlePageIsDefined","checkIfTitlePageIsDefined","addRelationshipToWrapper","Relationship","_attributes","parseRefId","Id","buildOptions","defaultOptions","attributeNamePrefix","attrNodeName","textNodeName","cdataTagName","cdataPositionChar","indentBy","supressEmptyNode","tagValueProcessor","attrValueProcessor","Parser","isAttribute","attrPrefixLen","isCDATA","replaceCDATAstr","replaceCDATAarr","processTextOrObjNode","indentate","tagEndChar","newLine","buildTextNode","buildEmptyTextNode","buildObjNode","buildEmptyObjNode","buildTextValNode","buildObjectNode","j2x","attrStr","repeat","startsWith","jObj","rootNodeName","arrLen","chars","nilChar","missingChar","nilPremitive","missingPremitive","emptyChar","emptyValue","boundryChar","objStart","arrStart","arrayEnd","charsArr","e_schema","getValue","hasValidData","attrsMap","itemSchema","arr_len","arr_i","processValue","isAppChar","ch","x2j","convert2nimn","convertToJson","parentTagName","alwaysCreateTextNode","isEmptyObject","isExist","asArray","isTagNameInArrayMode","tagname","arrayMode","_cToJsonStr","convertToJsonString","nodeToJson","xmlToNodeobj","x2xmlnode","xmlData","givenOptions","validationOption","validate","parseTrueNumberOnly","parseNodeValue","numParseOptions","leadingZeros","traversableObj","getTraversalObj","convertTonimn","j2xParser","parseToNimn","nameStartChar","nameRegexp","regexName","newOptions","isName","getAllMatches","regex","allmatches","startIndex","allowBooleanAttributes","readPI","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","tagFound","reachedRoot","tagStartPos","closingTag","readAttributeStr","attrStrStart","isValid","validateAttributeString","tagClosed","otg","openPos","afterAmp","validateAmpersand","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","attrName","validateAttrName","validateNumberAmpersand","addChild","xmlNode","toNumber","ignoreNameSpace","parseAttributeValue","trimValues","stopNodes","processTagValue","parseValue","resolveNameSpace","shouldParse","newval","attrsRegx","buildAttributesMap","attrCollection","closingIndexForOpeningTag","attrBoundary","tagExp","findClosingIndex","errMsg","closingIndex","xmlObj","textData","closeIndex","colonIndex","separatorIndex","shouldBuildAttributesMap","autoBom","dispatchEvent","MouseEvent","createEvent","initMouseEvent","saveAs","HTMLAnchorElement","URL","webkitURL","download","rel","origin","createObjectURL","revokeObjectURL","msSaveOrOpenBlob","innerText","HTMLElement","readAsDataURL","EPSILON","ARRAY_TYPE","RANDOM","setMatrixArrayType","toRadian","glMatrix","fromValues","m00","m01","m10","m11","transpose","invert","a0","a2","a3","det","adjoint","determinant","b0","b1","b2","b3","v0","frob","LDU","exactEquals","multiplyScalar","multiplyScalarAndAdd","ab","ad","atx","aty","a4","a5","b4","b5","m02","m03","m12","m13","m20","m21","m22","m23","m30","m31","m32","m33","a01","a02","a03","a12","a13","a23","a00","a10","a11","a20","a21","a22","a30","a31","a32","a33","b00","b01","b02","b03","b04","b05","b06","b07","b08","b09","b10","b11","axis","b12","b20","b21","b22","rotateX","rotateY","rotateZ","fromXRotation","fromYRotation","fromZRotation","fromRotationTranslation","xx","xy","yy","zz","wx","wy","wz","fromQuat2","translation","bx","by","bz","bw","ax","ay","az","aw","magnitude","getTranslation","mat","getScaling","getRotation","scaling","is1","is2","is3","sm11","sm12","sm13","sm21","sm22","sm23","sm31","sm32","sm33","fromRotationTranslationScale","fromRotationTranslationScaleOrigin","ox","oy","oz","out0","out1","out2","out4","out5","out6","out8","out9","out10","fromQuat","yx","zx","zy","frustum","near","far","rl","tb","nf","perspectiveNO","fovy","aspect","tan","perspective","perspectiveZO","perspectiveFromFieldOfView","fov","upTan","upDegrees","downTan","downDegrees","leftTan","leftDegrees","rightTan","rightDegrees","xScale","yScale","orthoNO","ortho","orthoZO","lookAt","eye","up","z0","z1","eyex","eyey","eyez","upx","upy","upz","centerx","centery","centerz","targetTo","a6","a7","a8","a9","a14","a15","b6","b7","b8","b9","b13","b14","b15","scaleAndAdd","squaredDistance","squaredLength","inverse","cross","lerp","v3","s1","s2","transformMat4","transformQuat","qx","qy","qz","qw","ix","iy","iz","iw","div","sqrDist","sqrLen","vec","setAxisAngle","getAxisAngle","out_axis","getAngle","dotproduct","calculateW","exp","slerp","cosom","sinom","scale0","scale1","u1","u2","u3","sqrt1MinusU1","sqrtU1","invDot","conjugate","fromMat3","fRoot","fTrace","fromEuler","halfToRad","cz","vec4","rotationTo","tmpvec3","vec3","xUnitVec3","yUnitVec3","sqlerp","temp1","temp2","setAxes","matr","view","dq","fromRotationTranslationValues","fromMat4","quat","mat4","getReal","getDual","setReal","setDual","ax1","ay1","az1","aw1","bx1","by1","bz1","ax2","ay2","az2","aw2","rotateByQuatAppend","rotateByQuatPrepend","rotateAroundAxis","axisLength","ax0","ay0","az0","aw0","bw1","bx0","by0","bz0","bw0","sqlen","a_dot_b","fromMat2d","normalFromMat4","projection","transformMat2","transformMat2d","transformMat3","p0","sinC","cosC","cosine","hermite","factorTimes2","factor1","factor2","factor3","factor4","bezier","inverseFactor","inverseFactorTimesTwo","zScale","uvx","uvy","uvz","uuvx","uuvy","uuvz","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","render","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","isLE","mLen","eLen","eMax","eBias","nBits","containers","styleElements","insertCss","css","styleElement","querySelector","containerId","createStyleElement","insertBefore","childNodes","styleSheet","cssText","textContent","denyList","fetch","OldCookies","Cookies","api","noConflict","converter","toUTCString","stringifiedAttributes","attributeName","jar","getJSON","withConverter","getRawTag","objectToString","symToStringTag","baseGetTag","isLength","typedArrayTags","freeGlobal","getPrototype","overArg","nativeObjectToString","isOwn","unmasked","freeExports","freeModule","freeProcess","nodeUtil","freeSelf","funcProto","funcToString","objectCtorString","baseIsTypedArray","baseUnary","nodeIsTypedArray","isAnyArray","endsWith","_options$fromIndex","_options$toIndex","toIndex","maxValue","minValue","rescale","currentMin","currentMax","autoMinMax","_options$max","indentData","inspectMatrixWithOptions","maxRows","maxColumns","maxNumSize","padMinus","inspectData","maxI","maxJ","loop","formatNumber","formatNumber2","padEnd","fix","toExponential","checkRowIndex","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkRowIndices","rowIndices","checkColumnIndices","columnIndices","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","newArray","checkNonEmpty","AbstractMatrix","newRows","newColumns","newData","newMatrix","zeros","matrix1","matrix2","checkMatrix","isMatrix","klass","to2DArray","isRowVector","isColumnVector","isVector","isSquare","isSymmetric","isEchelonForm","previousColumn","isReducedEchelonForm","echelonForm","iMax","swapRows","reducedEchelonForm","maxRow","pivot","setSubMatrix","neg","mulS","getRow","getRowVector","rowVector","setRow","row1","row2","getColumn","getColumnVector","columnVector","setColumn","swapColumns","column1","column2","addRowVector","mulRowVector","divRowVector","addColumnVector","mulColumnVector","divColumnVector","mulRow","mulColumn","maxIndex","minIndex","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","diag","norm","cumulativeSum","vector2","vector1","mmul","Bcolj","strassen2x2","m1","m2","m3","m4","m5","c00","c01","c10","c11","strassen3x3","m6","m7","m8","m9","m14","m15","m16","m17","m18","c02","c12","c20","c21","c22","mmulStrassen","c1","c2","resultat","blockMult","halfRows","halfCols","subMatrix","scaleRows","scaleColumns","flipRows","middle","flipColumns","kroneckerProduct","kroneckerSum","AxI","IxB","sortRows","compareFunction","compareNumbers","sortColumns","subMatrixRow","subMatrixColumn","selection","sumByRow","sumByColumn","sumAll","productByRow","productByColumn","productAll","unbiased","sum1","sum2","varianceByRow","varianceByColumn","varianceAll","standardDeviation","centerByRow","centerByColumn","centerAll","getScaleByRow","scaleByRow","getScaleByColumn","scaleByColumn","divider","getScaleAll","scaleAll","rand","randomInt","randInt","tensorProduct","nRows","nColumns","arrayData","removeRow","addRow","removeColumn","addColumn","addS","addM","subS","subM","subtractS","subtractM","mulM","multiplyS","multiplyM","divS","divM","divideS","divideM","modS","modM","modulus","modulusS","modulusM","andS","andM","orS","orM","xor","xorS","xorM","leftShift","leftShiftS","leftShiftM","signPropagatingRightShift","signPropagatingRightShiftS","signPropagatingRightShiftM","rightShift","rightShiftS","rightShiftM","zeroFillRightShift","zeroFillRightShiftS","zeroFillRightShiftM","acosh","asin","asinh","atanh","cbrt","clz32","cosh","expm1","fround","log1p","log10","log2","sinh","tanh","trunc","arg0","powS","powM","installMathOperations","BaseView","MatrixColumnView","MatrixColumnSelectionView","MatrixFlipColumnView","MatrixFlipRowView","MatrixRowView","MatrixRowSelectionView","MatrixSelectionView","MatrixSubView","MatrixTransposeView","WrapperMatrix1D","_calculateIndex","WrapperMatrix2D","LuDecomposition","LUcolj","kmax","pivotVector","pivotSign","LU","isSingular","solve","lowerTriangularMatrix","upperTriangularMatrix","pivotPermutationVector","hypotenuse","QrDecomposition","rdiag","nrm","QR","Rdiag","isFullRank","orthogonalMatrix","computeLeftSingularVectors","computeRightSingularVectors","autoTranspose","wantu","wantv","swapped","aux","nct","nrt","mrc","pp","eps","kase","MIN_VALUE","sp","spm1","epm1","sk","ek","scols","rightSingularVectors","VL","vrows","urows","VLU","solveForDiagonal","vcols","ucols","tol","useSVD","leftHandSide","rightHandSide","subMatrix0","subMatrix1","subMatrix2","xrange","exception","dependenciesOneRow","thresholdValue","thresholdError","returnArray","linearDependencies","Abis","pseudoInverse","svdSolution","SVD","covariance","xMatrix","yMatrix","yIsSame","cov","correlation","sdx","sdy","corr","EigenvalueDecomposition","assumeSymmetric","hh","tred2","dl1","c3","el1","tst1","tql2","ort","high","orthes","notlast","cdivres","exshift","cdiv","hqr2","realEigenvalues","imaginaryEigenvalues","eigenvectorMatrix","CholeskyDecomposition","positiveDefinite","isPositiveDefinite","nipals","scaleScores","terminationCriteria","tOld","xResidual","residual","yResidual","betas","propIsEnumerable","toObject","test1","test2","test3","letter","shouldUseNative","PahoMQTT","setItem","getItem","removeItem","MESSAGE_TYPE","errorStr","validKey","INVALID_TYPE","scope","OK","CONNECT_TIMEOUT","SUBSCRIBE_TIMEOUT","UNSUBSCRIBE_TIMEOUT","PING_TIMEOUT","INTERNAL_ERROR","CONNACK_RETURNCODE","SOCKET_ERROR","SOCKET_CLOSE","MALFORMED_UTF","UNSUPPORTED","INVALID_STATE","INVALID_ARGUMENT","UNSUPPORTED_OPERATION","INVALID_STORED_DATA","INVALID_MQTT_MESSAGE_TYPE","MALFORMED_UNICODE","BUFFER_FULL","CONNACK_RC","substitutions","field","part1","part2","MqttProtoIdentifierv3","MqttProtoIdentifierv4","WireMessage","decodeMessage","digit","startingPos","messageInfo","remLength","multiplier","endPos","wireMessage","sessionPresent","returnCode","qos","readUint16","topicName","parseUTF8","messageIdentifier","Message","retained","duplicate","destinationName","payloadMessage","writeUint16","writeString","utf8Length","stringToUTF8","UTF8Length","charCode","lowCharCode","utf16","byte1","byte2","byte3","byte4","willMessagePayloadBytes","topicStrLength","destinationNameLength","mqttVersion","clientId","willMessage","payloadBytes","userName","topics","requestedQos","mbi","numBytes","encodeMBI","byteStream","connectFlags","cleanSession","keepAliveInterval","Pinger","client","_client","_keepAliveInterval","isReset","pingReq","doTimeout","pinger","doPing","_trace","socket","_disconnected","Timeout","timeoutSeconds","ClientImpl","WebSocket","_wsuri","_localKey","_msg_queue","_buffered_msg_queue","_sentMessages","_receivedMessages","_notify_msg_sent","_message_identifier","_sequence","restore","maxMessageIdentifier","connectOptions","hostIndex","onConnected","onConnectionLost","onMessageDelivered","onMessageArrived","traceFunction","_connectTimeout","sendPinger","receivePinger","_reconnectInterval","_reconnecting","_reconnectTimeout","disconnectedPublishing","disconnectedBufferSize","receiveBuffer","_traceBuffer","_MAX_TRACE_ENTRIES","connectOptionsMasked","_traceMask","uris","_doConnect","subscribeOptions","onSuccess","grantedQos","invocationContext","onFailure","errorCode","errorMessage","timeOut","_requires_ack","_schedule_message","unsubscribeOptions","sequence","disconnect","getTraceLog","startTrace","stopTrace","wsurl","useSSL","uriParts","binaryType","onopen","_on_socket_open","_on_socket_message","_on_socket_error","onclose","_on_socket_close","_process_queue","store","storedMessage","pubRecReceived","messageBytes","payloadHex","_socket_send","messageCount","messages","_deframeMessages","_handleMessage","errorStack","sentMessage","receivedMessage","sequencedMessages","msgId","pubRelMessage","reconnected","_connected","_receivePublish","_receiveMessage","pubCompMessage","wireMessageMasked","pubAckMessage","pubRecMessage","reconnect","_reconnect","errorText","mqttVersionExplicit","record","severity","traceObject","masked","traceObjectMasked","newPayload","newDestinationName","newQos","newRetained","newTopic","newDuplicate","Client","ipv6AddSBracket","clientIdLength","newOnConnected","newDisconnectedPublishing","newDisconnectedBufferSize","newOnConnectionLost","newOnMessageDelivered","newOnMessageArrived","hosts","ports","stringPayload","usingURIs","ipv6","topic","publish","isConnected","isarray","pathToRegexp","tokensToFunction","tokensToRegExp","PATH_REGEXP","tokens","defaultDelimiter","delimiter","escaped","capture","group","asterisk","partial","optional","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","segment","attachKeys","sensitive","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","componentName","propFullName","getShim","isRequired","ReactPropTypes","bigint","bool","symbol","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","eq","regexp","maxKeys","kstr","vstr","stringifyPrimitive","_react","_react2","_core","_metaProps","CSVDownload","_React$Component","buildURI","_props","enclosingCharacter","uFEFF","specs","Component","_extends","CSVLink","isAsync","preventDefault","filename","csvData","toCSV","msSaveBlob","onClick","proceed","handleLegacy","asyncOnClick","handleAsyncClick","handleSyncClick","_this4","_props2","rest","_objectWithoutProperties","handleClick","isSafari","isJsons","isArrays","jsonsHeaders","jsons2arrays","jsons","headerLabels","headerKeys","getHeaderValue","foundValue","elementOrEmpty","joiner","arrays2csv","jsons2csv","string2csv","csv","dataURI","_Download2","_Link2","PropsNotForwarded","_propTypes","acceptsBooleans","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","removeAttribute","setAttributeNS","xlinkHref","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","prepareStackTrace","_render","$$typeof","_payload","nodeName","_valueTracker","setValue","stopTracking","activeElement","defaultChecked","_wrapperState","initialChecked","initialValue","controlled","cb","ownerDocument","eb","Children","db","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","kb","lb","mb","nb","ob","namespaceURI","innerHTML","firstChild","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","lineHeight","opacity","orphans","tabSize","widows","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","rb","sb","setProperty","ub","menuitem","img","keygen","track","wbr","wb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","$b","memoizedState","dehydrated","sibling","bc","fc","gc","jc","kc","lc","pc","qc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","sc","pointerId","vc","wc","lanePriority","unstable_runWithPriority","hydrate","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","animation","transition","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","bd","cd","dd","unstable_UserBlockingPriority","ed","fd","gd","hd","jd","kd","ld","md","nd","od","keyCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","stopPropagation","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","clipboardData","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","locale","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","documentMode","datetime","email","month","tel","week","oninput","detachEvent","nextSibling","compareDocumentPosition","HTMLIFrameElement","contentWindow","contentEditable","selectionStart","selectionEnd","anchorNode","defaultView","getSelection","anchorOffset","focusOffset","Yb","af","bf","cf","df","passive","Nb","ef","ff","parentWindow","gf","hf","jf","kf","lf","mf","autoFocus","__html","of","pf","qf","rf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","eg","fg","hg","ig","jg","ReactCurrentBatchConfig","pg","qg","rg","_currentValue","childLanes","tg","dependencies","firstContext","lanes","ug","vg","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","effects","yg","zg","eventTime","lane","Ag","Bg","Cg","Dg","Eg","refs","Gg","Kg","isMounted","_reactInternals","enqueueSetState","Hg","Ig","Jg","enqueueReplaceState","enqueueForceUpdate","Lg","shouldComponentUpdate","isPureReactComponent","Mg","updater","Ng","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Og","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Pg","Qg","_owner","_stringRef","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","Vg","implementation","Wg","Xg","Yg","Zg","$g","ah","bh","dh","eh","fh","gh","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","th","uh","_workInProgressVersionPrimary","vh","ReactCurrentDispatcher","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","useState","getSnapshot","useEffect","setSnapshot","Oh","Ph","Qh","Rh","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","readContext","useCallback","useContext","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useDebugValue","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ReactCurrentOwner","baseLanes","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","pendingContext","retryLane","fallback","unstable_avoidThisFallback","unstable_expectedLoadTime","isBackwards","rendering","renderingStartTime","tailMode","wasMultiple","multiple","onclick","createElementNS","componentDidCatch","componentStack","WeakSet","__reactInternalSnapshotBeforeUpdate","aj","bj","onCommitFiberUnmount","componentWillUnmount","cj","dj","ej","fj","gj","hj","_reactRootContainer","jj","lj","mj","oj","pj","qj","sj","tj","uj","vj","wj","ck","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","ak","bk","dk","rangeCount","focusedElem","selectionRange","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","onCommitFiberRoot","fk","gk","isReactComponent","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","ok","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","hasAttribute","uk","hk","_calculateChangedBits","unstable_observedBits","unmount","querySelectorAll","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","yk","isDisabled","supportsFiber","inject","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","checkDCE","_inputRange","activeTrack","disabledInputRange","inputRange","labelContainer","maxLabel","slider","sliderContainer","valueLabel","valueTransformer","_utils","_keyCodes","InputRange","startValue","trackNode","isSliderDragging","lastKeyMoved","allowSameValues","_propTypes2","ariaLabelledby","ariaControls","classNames","draggableTrack","formatLabel","_rangePropType2","onChangeStart","onChange","onChangeComplete","_valuePropType2","_defaultClassNames2","removeDocumentMouseUpListener","removeDocumentTouchEndListener","getClientRect","getValueFromProps","isMultiValue","getPositionsFromValues","getTrackClientRect","currentValues","isWithinRange","hasStepDifference","getValueFromPosition","transformedValues","getStepValueFromValue","updateValues","shouldUpdate","updateValue","handleMouseUp","handleTouchEnd","getPositionFromEvent","prevEvent","_props$value","stepValue","prevPosition","prevValue","LEFT_ARROW","DOWN_ARROW","decrementValue","RIGHT_ARROW","UP_ARROW","incrementValue","_props2$value","getKeyByPosition","isDefined","handleInteractionStart","handleInteractionEnd","addDocumentMouseUpListener","addDocumentTouchEndListener","percentages","getPercentagesFromValues","getKeys","percentage","_props3","_slider2","onSliderDrag","handleSliderDrag","onSliderKeyDown","handleSliderKeyDown","captialize","_this5","componentClassName","getComponentClassName","className","onKeyDown","handleKeyDown","onKeyUp","handleKeyUp","onMouseDown","handleMouseDown","onTouchStart","handleTouchStart","_label2","_track2","onTrackDrag","handleTrackDrag","onTrackMouseDown","handleTrackMouseDown","renderSliders","renderHiddenInputs","Label","labelValue","Slider","removeDocumentMouseMoveListener","removeDocumentTouchMoveListener","handleMouseMove","handleTouchMove","addDocumentMouseMoveListener","addDocumentTouchMoveListener","getStyle","draggable","role","tabIndex","Track","trackDragEvent","getBoundingClientRect","activeTrackStyle","getActiveTrackStyle","getPercentageFromPosition","clientRect","sizePerc","getPercentageFromValue","getPositionFromValue","valuePerStep","pointA","pointB","xDiff","yDiff","numA","numB","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","__self","__source","jsx","jsxs","setState","forceUpdate","_status","_result","IsSomeRendererActing","only","PureComponent","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","createFactory","createRef","forwardRef","isValidElement","lazy","memo","unstable_forceFrameRate","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","isArrayish","hexRegex","numRegex","consider","decimalPoint","eNotation","trimZeros","numStr","trimmedStr","skipLike","numTrimmedByZeros","pack","__setModuleDefault","kind","__classPrivateFieldIn","credentials","pairs","dec","tryDecode","fieldContentRegExp","maxAge","httpOnly","sameSite","punycode","maxInt","regexPunycode","regexNonASCII","regexSeparators","errors","stringFromCharCode","mapDomain","ucs2decode","ucs2encode","digitToBasic","adapt","numPoints","firstTime","baseMinusTMin","basic","oldi","baseMinusT","inputLength","handledCPCount","basicLength","currentValue","handledCPCountPlusOne","qMinusT","Url","slashes","query","urlParse","protocolPattern","portPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","parseQueryString","slashesDenoteHost","isNull","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","domainArray","newOut","esc","qm","resolveObject","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","isAbsolute","Observable","hasSymbols","hasSymbol","getSymbol","observable","SymbolIterator","SymbolObservable","SymbolSpecies","getMethod","getSpecies","ctor","isObservable","hostReportError","cleanupSubscription","subscription","_cleanup","closeSubscription","_observer","_state","notifySubscription","observer","onNotify","flushSubscription","Subscription","subscriber","subscriptionObserver","SubscriptionObserver","_subscription","_subscriber","complete","hasSeed","hasValue","seed","startNext","_this6","subscriptions","completeIfDone","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_item","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","_sent","dispatchException","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","mark","awrap","skipTempReset","rootRecord","rval","handle","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","__webpack_module_cache__","cachedModule","loaded","__webpack_modules__","leafPrototypes","definition","chunkId","miniCssF","inProgress","dataWebpackPrefix","needAttach","scripts","getElementsByTagName","getAttribute","charset","onScriptComplete","doneFns","nmd","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","chunkLoadingGlobal","_inheritsLoose","toParts","fromParts","isToAbs","isFromAbs","valueEqual","aValue","bValue","invariant","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","resolvePathname","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","notifyListeners","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","supportsHistory","needsHashChangeListener","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","allKeys","revertPop","initialLocation","createHref","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","baseTag","pushHashPath","nextPaths","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","nextIndex","nextEntries","canGo","excluded","sourceKeys","MAX_SIGNED_31_BIT_INT","commonjsGlobal","createEventEmitter","newValue","changedBits","React","calculateChangedBits","contextProp","getUniqueId","nextProps","oldValue","objectIs","_Provider$childContex","_React$Component2","onUpdate","_Consumer$contextType","createNamedContext","historyContext","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","isExact","Lifecycle","onMount","prevProps","onUnmount","cacheCount","generatePath","compilePath","Redirect","computedMatch","_ref$push","cache$1","cacheCount$1","matchPath","_options","_options$exact","_options$strict","_options$sensitive","matched","cacheKey","pathCache","compilePath$1","_compilePath","Route","context$1","_this$props","isEmptyChildren","createURL","staticHandler","Switch","useHistory","useLocation","BrowserRouter","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","forwardedRef","innerRef","navigate","_onClick","_objectWithoutPropertiesLoose","ex","isModifiedEvent","Link","_ref2$component","__RouterContext","isDuplicateNavigation","forwardRefShim$1","forwardRef$1","CognitoHostedUIIdentityProvider","AuthErrorTypes","GRAPHQL_AUTH_MODE","ariaCurrent","_ref$ariaCurrent","activeClassName","_ref$activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","isFederatedSignInOptions","isCognitoHostedOpts","oauth","redirectSignIn","LOG_TYPE","LOG_LEVELS","VERBOSE","DEBUG","INFO","WARN","ConsoleLogger","_pluggables","_padding","_ts","getMinutes","getSeconds","getMilliseconds","configure","_config","_log","logger_level_name","LOG_LEVEL","logger_level","type_level","plugin","logEvent","timestamp","pushLogs","addPluggable","pluggable","getCategoryName","listPluggables","logger","Logger","AMPLIFY_SYMBOL","HubClass","patterns","protectedChannels","pattern_1","holder","ampSymbol","capsule","patternInfo","_toListeners","listenerName","onHubCapsule","isLegacyCallback","payloadStr_1","dispatchingCapsule","Hub","dataMemory","MemoryStorage","StorageHelper","storageWindow","getStorage","MIME_MAP","sortByField","dirX","a_val","b_val","objectLessAttributes","less","filenameToContentType","defVal","mime","isTextFile","generateRandomString","makeQuerablePromise","isResolved","isPending","isRejected","isFullfilled","isWebWorker","selfContext","browserOrNode","transferKeyToLowerCase","whiteListForItself","whiteListForChildren","isStrictObject","transferKeyToUpperCase","JS","NonRetryableError","nonRetryable","MAX_DELAY_MS","jitteredExponentialRetry","functionToRetry","maxDelayMs","onTerminate","delayFn","attempt","terminated","wakeUp","lastError","err_1","retryIn_1","retry","jitteredBackoff","waitForInit","rej","auth2","GoogleOAuth","initialized","refreshGoogleToken","_refreshGoogleTokenImpl","getAuthInstance","googleAuth","googleUser","currentUser","isSignedIn","reloadAuthResponse","authResponse","id_token","expires_at","FacebookOAuth","refreshFacebookToken","_refreshFacebookTokenImpl","getLoginStatus","fbResponse","accessToken","expiresIn","GoogleOAuthClass","FacebookOAuthClass","LoggerClass","Amplify","AmplifyClass","_components","_modules","Auth","Analytics","API","Credentials","Storage","I18n","PubSub","Interactions","Pushnotification","UI","XR","Predictions","DataStore","Geo","ServiceWorker","register","getModuleName","adopt","AmbiguousRoleResolutionType","CognitoIdentityProvider","CreateIdentityPoolInput","IdentityPool","InternalErrorException","InvalidParameterException","LimitExceededException","NotAuthorizedException","ResourceConflictException","TooManyRequestsException","DeleteIdentitiesInput","ErrorCode","UnprocessedIdentityId","DeleteIdentitiesResponse","DeleteIdentityPoolInput","ResourceNotFoundException","DescribeIdentityInput","IdentityDescription","DescribeIdentityPoolInput","ExternalServiceException","GetCredentialsForIdentityInput","GetCredentialsForIdentityResponse","InvalidIdentityPoolConfigurationException","GetIdInput","GetIdResponse","GetIdentityPoolRolesInput","MappingRuleMatchType","MappingRule","RulesConfigurationType","RoleMappingType","RoleMapping","GetIdentityPoolRolesResponse","GetOpenIdTokenInput","GetOpenIdTokenResponse","DeveloperUserAlreadyRegisteredException","GetOpenIdTokenForDeveloperIdentityInput","GetOpenIdTokenForDeveloperIdentityResponse","ListIdentitiesInput","ListIdentitiesResponse","ListIdentityPoolsInput","IdentityPoolShortDescription","ListIdentityPoolsResponse","ListTagsForResourceInput","ListTagsForResourceResponse","LookupDeveloperIdentityInput","LookupDeveloperIdentityResponse","MergeDeveloperIdentitiesInput","MergeDeveloperIdentitiesResponse","ConcurrentModificationException","SetIdentityPoolRolesInput","TagResourceInput","TagResourceResponse","UnlinkDeveloperIdentityInput","UnlinkIdentityInput","UntagResourceInput","UntagResourceResponse","filterSensitiveLog","HttpResponse","statusCode","isInstance","resp","HttpRequest","cloned","carry","paramName","deserializeAws_json1_1GetCredentialsForIdentityCommandError","parseBody","parsedOutput","_l","_m","loadRestJsonErrorCode","deserializeAws_json1_1ExternalServiceExceptionResponse","$metadata","deserializeMetadata","deserializeAws_json1_1InternalErrorExceptionResponse","deserializeAws_json1_1InvalidIdentityPoolConfigurationExceptionResponse","deserializeAws_json1_1InvalidParameterExceptionResponse","deserializeAws_json1_1NotAuthorizedExceptionResponse","deserializeAws_json1_1ResourceConflictExceptionResponse","_h","deserializeAws_json1_1ResourceNotFoundExceptionResponse","_j","deserializeAws_json1_1TooManyRequestsExceptionResponse","_k","parsedBody","Code","$fault","deserializeAws_json1_1GetIdCommandError","deserializeAws_json1_1LimitExceededExceptionResponse","deserialized","deserializeAws_json1_1ExternalServiceException","deserializeAws_json1_1InternalErrorException","deserializeAws_json1_1InvalidIdentityPoolConfigurationException","deserializeAws_json1_1InvalidParameterException","deserializeAws_json1_1LimitExceededException","deserializeAws_json1_1NotAuthorizedException","deserializeAws_json1_1ResourceConflictException","deserializeAws_json1_1ResourceNotFoundException","deserializeAws_json1_1TooManyRequestsException","serializeAws_json1_1GetCredentialsForIdentityInput","CustomRoleArn","IdentityId","Logins","serializeAws_json1_1LoginsMap","serializeAws_json1_1GetIdInput","AccountId","IdentityPoolId","deserializeAws_json1_1Credentials","AccessKeyId","Expiration","SecretKey","SessionToken","deserializeAws_json1_1GetCredentialsForIdentityResponse","deserializeAws_json1_1GetIdResponse","httpStatusCode","requestId","extendedRequestId","cfId","collectBody","streamBody","streamCollector","buildHttpRpcRequest","resolvedHostname","endpoint","contents","__HttpRequest","utf8Encoder","collectBodyString","sanitizeErrorCode","cleanValue","headerKey","findKey","deserializerMiddlewareOption","override","serializerMiddlewareOption","getSerdePlugin","serializer","deserializer","applyToStack","commandStack","deserializerMiddleware","serializerMiddleware","constructStack","absoluteEntries","relativeEntries","entriesNameSet","cloneTo","toStack","middleware","addRelativeTo","expandRelativeMiddlewareList","expandedMiddlewareList","getMiddlewareList","normalizedAbsoluteEntries","normalizedRelativeEntries","normalizedEntriesNameMap","normalizedEntry","toMiddleware","relation","stepWeights","priorityWeights","wholeList","expendedMiddlewareList","toOverrideIndex","toOverride","toRemove","isRemoved","filterCb","removeByName","removeByReference","removeByTag","serialize","build","finalizeRequest","deserialize","normal","middlewareStack","command","optionsOrCb","resolveMiddleware","requestHandler","Command","extendedEncodeURIComponent","getArrayIfSingleItem","mayBeArray","getValueFromTextNode","StringWrapper","LazyJsonString","deserializeJSON","days","months","dateToUtcString","year","dayOfWeek","getUTCDay","dayOfMonthInt","hoursInt","minutesInt","secondsInt","SENSITIVE_STRING","GetCredentialsForIdentityCommand","clientStack","configuration","handlerExecutionContext","clientName","commandName","inputFilterSensitiveLog","outputFilterSensitiveLog","serializeAws_json1_1GetCredentialsForIdentityCommand","deserializeAws_json1_1GetCredentialsForIdentityCommand","$Command","ProviderError","tryNextLink","resolveLogins","logins","tokenOrProvider","resolvedPairs","fromCognitoIdentity","parameters","customRoleArn","identityId","throwOnMissingCredentials","throwOnMissingAccessKeyId","throwOnMissingSecretKey","accessKeyId","secretAccessKey","sessionToken","expiration","GetIdCommand","serializeAws_json1_1GetIdCommand","deserializeAws_json1_1GetIdCommand","STORE_NAME","IndexedDbStorage","dbName","withObjectStore","onsuccess","put","getDb","openDbRequest","indexedDB","onblocked","onupgradeneeded","createObjectStore","keyPath","transaction","objectStore","InMemoryStorage","inMemoryStorage","fromCognitoIdentityPool","accountId","identityPoolId","userIdentifier","provider","throwOnMissingId","escapeUri","hexEncode","buildQueryString","iLen","qsEntry","FetchHttpHandler","requestTimeout","abortSignal","requestTimeoutInMs","abortError","queryString","requestOptions","AbortController","timeoutInMs","fetchRequest","Request","raceOfPromises","fetchHeaders","transformedHeaders","timeoutError","alphabetByEncoding","alphabetByValue","fromBase64","totalByteLength","dataView","bitLength","chunkOffset","toBase64","bitClusterCount","readToBase64","arrayBuffer","collectBlob","getReader","isDone","prior","collectStream","commaIndex","dataOffset","invalidProvider","retryMiddleware","retryStrategy","retryMiddlewareOptions","getRetryPlugin","CLOCK_SKEW_ERROR_CODES","THROTTLING_ERROR_CODES","TRANSIENT_ERROR_CODES","TRANSIENT_ERROR_STATUS_CODES","isThrottlingError","$retryable","throttling","defaultDelayDecider","delayBase","attempts","defaultRetryDecider","isRetryableByTrait","isClockSkewError","isTransientError","DEFAULT_RETRY_MODE","StandardRetryStrategy","maxAttemptsProvider","retryDecider","delayDecider","retryQuota","initialRetryTokens","MAX_CAPACITY","availableCapacity","getCapacityAmount","hasRetryTokens","retrieveRetryTokens","capacityAmount","releaseRetryTokens","capacityReleaseAmount","getDefaultRetryQuota","shouldRetry","maxAttempts","getMaxAttempts","totalDelay","this_1","retryTokenAmount","totalRetryDelay","delay_1","resolveRetryConfig","normalizeMaxAttempts","promisified_1","calculateBodyLength","defaultUserAgent","serviceId","clientVersion","parsedUA","bowser","AWS_TEMPLATE","AWS_REGIONS","AWS_CN_REGIONS","AWS_ISO_REGIONS","AWS_ISO_B_REGIONS","AWS_US_GOV_REGIONS","parseUrl","ClientSharedValues","apiVersion","disableHostPrefix","regionInfoProvider","region","regionInfo","signingRegion","signingService","urlParser","ClientDefaultValues","base64Decoder","base64Encoder","bodyLengthChecker","credentialDefaultProvider","defaultUserAgentProvider","sha256","utf8Decoder","resolveEndpointsConfig","tls","normalizeEndpoint","getEndPointFromRegion","isCustomEndpoint","promisified_2","resolveRegionConfig","normalizeRegion","CONTENT_LENGTH_HEADER","contentLengthMiddlewareOptions","getContentLengthPlugin","contentLengthMiddleware","hostHeaderMiddlewareOptions","getHostHeaderPlugin","handlerProtocol","hostHeaderMiddleware","loggerMiddleware","outputWithoutMetadata","loggerMiddlewareOptions","getLoggerPlugin","SHORT_TO_HEX","HEX_TO_SHORT","encodedByte","AMZ_DATE_QUERY_PARAM","SIGNATURE_QUERY_PARAM","TOKEN_QUERY_PARAM","AUTH_HEADER","AMZ_DATE_HEADER","GENERATED_HEADERS","SIGNATURE_HEADER","SHA256_HEADER","TOKEN_HEADER","ALWAYS_UNSIGNABLE_HEADERS","authorization","connection","expect","pragma","referer","trailer","upgrade","PROXY_HEADER_PATTERN","SEC_HEADER_PATTERN","ALGORITHM_IDENTIFIER","EVENT_ALGORITHM_IDENTIFIER","KEY_TYPE_IDENTIFIER","signingKeyCache","cacheQueue","createScope","shortDate","service","hmac","getCanonicalHeaders","unsignableHeaders","signableHeaders","canonical","headerName","canonicalHeaderName","getPayloadHash","hashConstructor","hashCtor","cloneRequest","cloneQuery","prepareRequest","iso8601","toDate","SignatureV4","applyChecksum","uriEscapePath","regionProvider","normalizeRegionProvider","credentialProvider","normalizeCredentialsProvider","presign","originalRequest","signingDate","unhoistableHeaders","formatDate","longDate","lname","moveHeadersToQuery","canonicalHeaders","getCanonicalHeaderList","getSignature","getSigningKey","createCanonicalRequest","toSign","signString","signEvent","signRequest","priorSignature","hashedPayload","hashedHeaders","stringToSign","requestToSign","payloadHash","soughtHeader","hasHeader","signature","sortedHeaders","getCanonicalPath","serialized","getCanonicalQuery","createStringToSign","credentialScope","canonicalRequest","hashedRequest","keyPromise","sha256Constructor","credsHash","signable","resolveAwsAuthConfig","signer","normalizedCreds","normalizeProvider","signingEscapePath","systemClockOffset","signingName","getSkewCorrectedDate","awsAuthMiddleware","dateHeader","serverTime","newServerTime","awsAuthMiddlewareOptions","getAwsAuthPlugin","resolveUserAgentConfig","customUserAgent","USER_AGENT","UA_ESCAPE_REGEX","escapeUserAgent","prefixSeparatorIndex","uaName","getUserAgentMiddlewareOptions","getUserAgentPlugin","normalUAValue","section","CognitoIdentityClient","_config_0","__ClientDefaultValues","_config_1","_config_3","_config_6","__Client","BASE_USER_AGENT","Platform","isReactNative","getAmplifyUserAgent","createCognitoIdentityClient","middlewareArgs","CredentialsClass","_gettingCredPromise","_refreshHandlers","getCredSource","_credentials_source","refreshHandlers","_storage","storage","_storageSync","_pickupCredentials","_getCognitoIdentityIdStorageKey","_keepAlive","cred","_credentials","_isExpired","_isPastTTL","currentUserCredentials","currentUserPoolUser","user_1","currentSession","session","refreshToken_1","refreshToken","refreshSession","refreshFederatedToken","federatedInfo","user","identity_id","getFullYear","_setCredentialsFromFederation","_providerRefreshWithRetry","refreshHandler","_nextCredentialsRefresh","_setCredentialsForGuest","mandatorySignIn","_getGuestIdentityId","_identityId","cognitoClient","credentialsProvider","credentialsFromCognitoIdentity","_loadCredentials","_removeGuestIdentityId","google","facebook","amazon","developer","_setCredentialsFromSession","idToken","getIdToken","getJwtToken","userPoolId","guestIdentityId","generatedOrRetrievedIdentityId","primaryIdentityId","authenticated","_setGuestIdentityId","e_1","e_2","shear","parseMobileHubConfig","storageConfig","amplifyConfig","AWSPinpoint","appId","userPoolWebClientId","identityPoolRegion","signUpVerificationMethod","AWSS3","bucket","dangerouslyConnectToHttpEndpointForTesting","Logging","geo","AmazonLocationService","parseMobilehubConfig","readCookie","cleanupCookieValue","doNotParse","isParsingCookie","changeListeners","HAS_DOCUMENT_COOKIE","parseCookies","_updateBrowserValues","parseOptions","_emitChange","getAll","name_1","finalOptions","addChangeListener","removeChangeListener","UniversalStorage","getLocalItem","getUniversalItem","removeLocalItem","removeUniversalItem","setLocalItem","setUniversalItem","AuthenticationDetails","ValidationData","Username","Password","AuthParameters","ClientMetadata","validationData","authParameters","clientMetadata","_proto","getUsername","getPassword","getValidationData","getAuthParameters","getClientMetadata","hexStringify","BigInteger","nbi","dbits","inBrowser","appName","am","DB","DM","DV","FV","F1","F2","BI_RC","int2char","intAt","nbv","fromInt","nbits","Montgomery","invDigit","mpl","mph","um","mt2","dlShiftTo","divRemTo","compareTo","subTo","revert","copyTo","u0","drShiftTo","mulTo","multiplyTo","sqrTo","squareTo","lShiftTo","cbs","bm","rShiftTo","pm","nsh","d1","addTo","km","modPow","g2","HEX_MSB_REGEX","AuthenticationHelper","PoolName","hexHash","padHex","smallAValue","generateRandomSmallA","getLargeAValue","infoBits","poolName","getSmallAValue","largeAValue","calculateA","hexRandom","getRandomPassword","randomPassword","getSaltDevices","SaltToHashDevices","getVerifierDevices","verifierDevices","generateHashDevice","deviceGroupKey","combinedString","hashedString","verifierDevicesNotPadded","calculateU","UHexHash","hashHex","computehkdf","ikm","salt","infoBitsWordArray","ikmWordArray","saltWordArray","prk","getPasswordAuthenticationKey","serverBValue","UValue","usernamePassword","usernamePasswordHash","xValue","calculateS","sValue","hkdf","gModPowXN","err2","getNewPasswordRequiredChallengeUserAttributePrefix","bigInt","isNegative","invertedNibbles","invertedNibble","CognitoJwtToken","jwtToken","decodePayload","getExpiration","getIssuedAt","iat","CognitoAccessToken","_CognitoJwtToken","_temp","AccessToken","CognitoIdToken","IdToken","CognitoRefreshToken","RefreshToken","getToken","CognitoUserSession","ClockDrift","clockDrift","calculateClockDrift","getRefreshToken","getAccessToken","getClockDrift","adjusted","monthNames","weekNames","DateHelper","getNowString","weekDay","day","hours","minutes","seconds","CognitoUserAttribute","Name","Value","getName","setName","CognitoUser","Pool","pool","Session","signInUserSession","authenticationFlowType","keyPrefix","getClientId","userDataKey","setSignInUserSession","clearCachedUserData","cacheTokens","getSignInUserSession","getAuthenticationFlowType","setAuthenticationFlowType","initiateAuth","authDetails","USERNAME","clientMetaData","jsonReq","AuthFlow","ClientId","getUserContextData","UserContextData","challengeName","ChallengeName","challengeParameters","ChallengeParameters","customChallenge","getCognitoUserSession","AuthenticationResult","authenticateUser","authenticateUserPlainUsernamePassword","authenticateUserDefaultAuth","authenticationHelper","getUserPoolName","dateHelper","deviceKey","DEVICE_KEY","errOnAValue","SRP_A","CHALLENGE_NAME","USER_ID_FOR_SRP","SRP_B","SALT","getCachedDeviceKeyAndPassword","errOnHkdf","dateNow","SECRET_BLOCK","signatureString","challengeResponses","PASSWORD_CLAIM_SECRET_BLOCK","TIMESTAMP","PASSWORD_CLAIM_SIGNATURE","jsonReqResp","ChallengeResponses","respondToAuthChallenge","challenge","challengeCallback","errChallenge","dataChallenge","clearCachedDeviceKeyAndPassword","errAuthenticate","dataAuthenticate","authenticateUserInternal","PASSWORD","authResult","mfaRequired","selectMFAType","mfaSetup","totpRequired","userAttributes","rawRequiredAttributes","requiredAttributes","userAttributesPrefix","newPasswordRequired","getDeviceResponse","newDeviceMetadata","NewDeviceMetadata","DeviceGroupKey","DeviceKey","errGenHash","deviceSecretVerifierConfig","Salt","PasswordVerifier","DeviceSecretVerifierConfig","DeviceName","errConfirm","dataConfirm","cacheDeviceKeyAndPassword","UserConfirmationNecessary","completeNewPasswordChallenge","newPassword","requiredAttributeData","finalUserAttributes","NEW_PASSWORD","errAValue","errHkdf","confirmRegistration","confirmationCode","forceAliasCreation","ConfirmationCode","ForceAliasCreation","sendCustomChallengeAnswer","answerChallenge","_this7","ANSWER","sendMFACode","mfaType","_this8","SMS_MFA_CODE","mfaTypeSelection","SOFTWARE_TOKEN_MFA_CODE","changePassword","oldUserPassword","newUserPassword","PreviousPassword","ProposedPassword","enableMFA","mfaOptions","DeliveryMedium","AttributeName","MFAOptions","setUserMfaPreference","smsMfaSettings","softwareTokenMfaSettings","SMSMfaSettings","SoftwareTokenMfaSettings","disableMFA","deleteUser","_this9","clearCachedUser","updateAttributes","_this10","UserAttributes","getUserData","bypassCache","getUserAttributes","userData","attributeList","userAttribute","getMFAOptions","createGetUserRequest","promisifyRequest","refreshSessionIfPossible","_this11","refresh","_this12","getUserDataFromCache","isFetchUserDataAndTokenRequired","fetchUserData","_ref$bypassCache","_this13","cacheUserData","deleteAttributes","_this14","UserAttributeNames","resendConfirmationCode","getSession","idTokenKey","accessTokenKey","refreshTokenKey","clockDriftKey","cachedSession","_this15","wrappedCallback","wrapRefreshSessionCallback","REFRESH_TOKEN","lastUserKey","deviceKeyKey","authenticationResult","clearCachedTokens","randomPasswordKey","deviceGroupKeyKey","forgotPassword","inputVerificationCode","confirmPassword","getAttributeVerificationCode","verifyAttribute","getDevice","forgetSpecificDevice","forgetDevice","_this16","setDeviceStatusRemembered","DeviceRememberedStatus","setDeviceStatusNotRemembered","listDevices","paginationToken","requestParams","Limit","PaginationToken","globalSignOut","_this17","signOut","revokeTokenCallback","_this18","_session","revokeTokens","cleanClientData","isSessionRevocable","revokeToken","origin_jti","requestWithRetry","Token","sendMFASelectionAnswer","_this19","associateSoftwareToken","_this20","associateSecretCode","SecretCode","verifySoftwareToken","totpCode","friendlyDeviceName","_this21","UserCode","FriendlyDeviceName","errRespond","dataRespond","UserAgent","CognitoError","fetchOptions","BASE_TIME_MS","JITTER_FACTOR","__type","retryIn","CognitoUserPool","UserPoolId","AdvancedSecurityDataCollectionFlag","advancedSecurityDataCollectionFlag","getUserPoolId","signUp","cognitoUser","returnData","userConfirmed","UserConfirmed","userSub","UserSub","codeDeliveryDetails","CodeDeliveryDetails","getCurrentUser","lastAuthUser","AmazonCognitoAdvancedSecurityData","amazonCognitoAdvancedSecurityDataConst","advancedSecurityData","getData","EncodedData","CookieStorage","numKeys","launchUri","windowProxy","dispatchAuthEvent","OAuth","cognitoClientId","scopes","_urlOpener","urlOpener","_cognitoClientId","isValidScopes","_scopes","oauthSignIn","customState","Cognito","generatedState","_generateState","padStart","sessionStorage","oAuthStorage","private_key","pkce_key","_generateRandom","code_challenge","_generateChallenge","scopesString","redirect_uri","response_type","client_id","identity_provider","code_challenge_method","_handleCodeFlow","currentUrl","pairings","accum","currentUrlPathname","redirectSignInPathname","oAuthTokenEndpoint","clientID","redirectUri","code_verifier","ouath_pkce_key","oAuthTokenBody","grant_type","access_token","refresh_token","_handleImplicitFlow","handleAuthResponse","urlParams","error_description","_validateState","savedState","oauth_state","returnedState","oAuthLogoutEndpoint","signout_uri","redirectSignOut","returnTo","logout_uri","oAuth","_base64URL","_bufferToString","CHARSET","AuthErrorStrings","AuthError","authErrorMessages","NoUserPoolError","noConfig","DEFAULT_MSG","missingAuthConfig","emptyUsername","EMPTY_USERNAME","invalidUsername","INVALID_USERNAME","emptyPassword","EMPTY_PASSWORD","emptyCode","EMPTY_CODE","signUpError","SIGN_UP_ERROR","noMFA","NO_MFA","invalidMFA","INVALID_MFA","emptyChallengeResponse","EMPTY_CHALLENGE","noUserSession","NO_USER_SESSION","deviceConfig","DEVICE_CONFIG","networkError","NETWORK_ERROR","autoSignInError","AUTOSIGNIN_ERROR","USER_ADMIN_SCOPE","AuthClass","userPool","oAuthFlowInProgress","autoSignInInitiated","currentCredentials","conf","cookieStorage","_isValidAuthStorage","ssr","userPoolData","cognitoHostedUIConfig","awsCognito","cognitoAuthParams","_oAuthHandler","usedResponseUrls_1","urlListener","_handleAuthResponse","isTrueStorageValue","AutoSignInError","restOfAttrs","rejectNoUserPool","autoSignIn","enabled","autoSignInValidationData","autoSignInClientMetaData","phone_number","rejectAuthError","SignUpError","attrs_1","validationDataObject_1","handleAutoSignIn","EmptyPassword","EmptyUsername","signInAfterUserConfirmed","handleLinkAutoSignIn","handleCodeAutoSignIn","listenEvent","autoSignInPollingIntervalId","createCognitoUser","authCallbacks","error_1","confirmSignUp","EmptyCode","resendSignUp","signIn","usernameOrSignInOpts","pw","InvalidUsername","signInWithPassword","signInWithoutPassword","challengeParam","pendingSignIn","getPreferredMFA","isSessionInvalid","cleanUpInvalidSession","cleanUpError_1","_getMfaTypeFromUserData","preferredMFA","PreferredMfaSetting","mfaList","UserMFASettingList","_getUserData","cleanUpError_2","setPreferredMFA","mfaMethod","totpMfaSettings","PreferredMfa","Enabled","currentMFAType","InvalidMFA","NoMFA","cleanUpError_3","disableSMS","enableSMS","setupTOTP","secretCode","verifyTotpToken","challengeAnswer","confirmSignIn","e_3","completeNewPassword","e_4","EmptyChallengeResponse","deleteUserAttributes","userSession","e_5","isSignedInHostedUI","cleanUpError_4","cleanCachedItems","oAuthSignOutRedirect","updateUserAttributes","verifiedContact","attributesToObject","unverified","verified","isErrorWithMessage","isTokenRevokedError","isRefreshTokenRevokedError","isUserDisabledError","isUserDoesNotExistError","isRefreshTokenExpiredError","isOAuthInProgress","timeoutId","hostedUISignCallback","cleanUpError_5","cleanUpError_6","currentAuthenticatedUser","federatedUser","e_7","e_8","NoUserSession","cleanUpError_7","e_9","verifyUserAttribute","success","verifyUserAttributeSubmit","verifyCurrentUserAttribute","verifyCurrentUserAttributeSubmit","cognitoIdentitySignOut","e_10","cleanUpError_8","oAuthSignOutRedirectOrReject","oAuthSignOutAndResolve","oldPassword","forgotPasswordSubmit","currentUserInfo","userAttrs","e_12","federatedSignIn","providerOrOptions","hasCustomState","customProvider","loggedInUser","hasCodeOrError","hasTokenOrError","isCustomStateIncluded","urlSafeDecode","err_2","essentialCredentials","isTruthyString","noUserPoolErrorHandler","NoConfig","MissingAuthConfig","rememberDevice","currUser","error_2","DeviceConfig","NetworkError","error_3","fetchDevices","error_4","deviceList","Devices","device","deviceName","DeviceAttributes","clientInfo","language","operaMatch","ieMatch","cfMatch","sMatch","awkMatch","anyMatch","browserType","timezone","tzMatch","browserTimezone","make","appVersion","browserClientInfo","ClientDevice","DateUtils","clockOffset","getDateWithClockOffset","getClockOffset","getHeaderStringFromDate","getDateFromHeaderString","hour","minute","second","isClockSkewed","serverDate","setClockOffset","DEFAULT_ALGORITHM","jsSha256","signed_headers","canonical_request","url_info","key_val","reencoded_val","key_a","key_b","parse_service_info","credential_scope","d_str","string_to_sign","dt_str","get_signing_key","secret_key","service_info","k_date","k_region","k_service","get_signature","signing_key","str_to_sign","Signer","access_info","session_token","request_str","serviceInfo","authorization_header","access_key","get_authorization_header","signUrl","urlOrRequest","accessInfo","urlToSign","today","parsedUrl","signedHeaders","sessionTokenRequired","queryParams","additionalQueryParams","GetJourneyDateRangeKpiRequest","JourneyDateRangeKpiResponse","GetJourneyDateRangeKpiResponse","GetJourneyExecutionActivityMetricsRequest","JourneyExecutionActivityMetricsResponse","GetJourneyExecutionActivityMetricsResponse","GetJourneyExecutionMetricsRequest","JourneyExecutionMetricsResponse","GetJourneyExecutionMetricsResponse","GetPushTemplateRequest","PushNotificationTemplateResponse","GetPushTemplateResponse","GetRecommenderConfigurationRequest","GetRecommenderConfigurationResponse","GetRecommenderConfigurationsRequest","ListRecommenderConfigurationsResponse","GetRecommenderConfigurationsResponse","GetSegmentRequest","GetSegmentResponse","GetSegmentExportJobsRequest","GetSegmentExportJobsResponse","GetSegmentImportJobsRequest","GetSegmentImportJobsResponse","GetSegmentsRequest","SegmentsResponse","GetSegmentsResponse","GetSegmentVersionRequest","GetSegmentVersionResponse","GetSegmentVersionsRequest","GetSegmentVersionsResponse","GetSmsChannelRequest","GetSmsChannelResponse","GetSmsTemplateRequest","SMSTemplateResponse","GetSmsTemplateResponse","GetUserEndpointsRequest","GetUserEndpointsResponse","GetVoiceChannelRequest","GetVoiceChannelResponse","GetVoiceTemplateRequest","VoiceTemplateResponse","GetVoiceTemplateResponse","JourneysResponse","JourneyStateRequest","ListJourneysRequest","ListJourneysResponse","TemplateResponse","TemplateVersionResponse","ListTagsForResourceRequest","TagsModel","ListTemplatesRequest","TemplatesResponse","ListTemplatesResponse","ListTemplateVersionsRequest","TemplateVersionsResponse","ListTemplateVersionsResponse","MessageResult","MessageRequest","MessageResponse","NumberValidateRequest","NumberValidateResponse","PhoneNumberValidateRequest","PhoneNumberValidateResponse","PutEventsRequest","PutEventsResponse","WriteEventStream","PutEventStreamRequest","PutEventStreamResponse","UpdateAttributesRequest","RemoveAttributesRequest","RemoveAttributesResponse","SendMessagesRequest","SendMessagesResponse","SendUsersMessageRequest","SendUsersMessagesRequest","SendUsersMessageResponse","SendUsersMessagesResponse","TagResourceRequest","UntagResourceRequest","UpdateAdmChannelRequest","UpdateAdmChannelResponse","UpdateApnsChannelRequest","UpdateApnsChannelResponse","UpdateApnsSandboxChannelRequest","UpdateApnsSandboxChannelResponse","UpdateApnsVoipChannelRequest","UpdateApnsVoipChannelResponse","UpdateApnsVoipSandboxChannelRequest","UpdateApnsVoipSandboxChannelResponse","WriteApplicationSettingsRequest","UpdateApplicationSettingsRequest","UpdateApplicationSettingsResponse","UpdateBaiduChannelRequest","UpdateBaiduChannelResponse","UpdateCampaignRequest","UpdateCampaignResponse","UpdateEmailChannelRequest","UpdateEmailChannelResponse","UpdateEmailTemplateRequest","UpdateEmailTemplateResponse","UpdateEndpointRequest","UpdateEndpointResponse","UpdateEndpointsBatchRequest","UpdateEndpointsBatchResponse","UpdateGcmChannelRequest","UpdateGcmChannelResponse","UpdateJourneyRequest","UpdateJourneyResponse","UpdateJourneyStateRequest","UpdateJourneyStateResponse","UpdatePushTemplateRequest","UpdatePushTemplateResponse","UpdateRecommenderConfigurationShape","UpdateRecommenderConfigurationRequest","UpdateRecommenderConfigurationResponse","UpdateSegmentRequest","UpdateSegmentResponse","SMSChannelRequest","UpdateSmsChannelRequest","UpdateSmsChannelResponse","UpdateSmsTemplateRequest","UpdateSmsTemplateResponse","TemplateActiveVersionRequest","UpdateTemplateActiveVersionRequest","UpdateTemplateActiveVersionResponse","VoiceChannelRequest","UpdateVoiceChannelRequest","UpdateVoiceChannelResponse","UpdateVoiceTemplateRequest","UpdateVoiceTemplateResponse","deserializeAws_restJson1PutEventsCommandError","deserializeAws_restJson1BadRequestExceptionResponse","deserializeAws_restJson1ForbiddenExceptionResponse","deserializeAws_restJson1InternalServerErrorExceptionResponse","deserializeAws_restJson1MethodNotAllowedExceptionResponse","deserializeAws_restJson1NotFoundExceptionResponse","deserializeAws_restJson1PayloadTooLargeExceptionResponse","deserializeAws_restJson1TooManyRequestsExceptionResponse","deserializeAws_restJson1UpdateEndpointCommandError","RequestID","serializeAws_restJson1EndpointDemographic","AppVersion","Locale","Make","Model","ModelVersion","PlatformVersion","Timezone","serializeAws_restJson1EndpointLocation","City","Country","Latitude","Longitude","PostalCode","Region","serializeAws_restJson1EndpointRequest","Address","serializeAws_restJson1MapOfListOf__string","ChannelType","Demographic","EffectiveDate","EndpointStatus","Location","Metrics","serializeAws_restJson1MapOf__double","OptOut","RequestId","User","serializeAws_restJson1EndpointUser","UserId","serializeAws_restJson1EventsRequest","BatchItem","serializeAws_restJson1MapOfEventsBatch","serializeAws_restJson1ListOf__string","serializeAws_restJson1MapOf__string","serializeAws_restJson1MapOfEvent","AppPackageName","AppTitle","AppVersionCode","ClientSdkVersion","EventType","SdkName","serializeAws_restJson1Session","Timestamp","serializeAws_restJson1Event","Endpoint","serializeAws_restJson1PublicEndpoint","serializeAws_restJson1EventsBatch","Duration","StartTimestamp","StopTimestamp","deserializeAws_restJson1EndpointItemResponse","StatusCode","deserializeAws_restJson1EventsResponse","Results","deserializeAws_restJson1MapOfItemResponse","deserializeAws_restJson1MapOfEventItemResponse","deserializeAws_restJson1EventItemResponse","EndpointItemResponse","EventsItemResponse","deserializeAws_restJson1ItemResponse","deserializeAws_restJson1MessageBody","PutEventsCommand","resolvedPath","ApplicationId","__extendedEncodeURIComponent","EventsRequest","serializeAws_restJson1PutEventsCommand","EventsResponse","deserializeAws_restJson1PutEventsCommand","UpdateEndpointCommand","EndpointId","EndpointRequest","serializeAws_restJson1UpdateEndpointCommand","MessageBody","deserializeAws_restJson1UpdateEndpointCommand","PinpointClient","capacityInBytes","itemMaxSize","defaultTTL","defaultPriority","warningThreshold","getByteLength","getCurrTime","_isInteger","CacheObject","StorageCache","cacheCurSizeKey","checkConfig","fillCacheItem","visitedTime","byteSize","BrowserStorageCacheClass","cacheConfig","_decreaseCurSizeInBytes","amount","curSize","getCacheCurSize","_increaseCurSizeInBytes","_refreshItem","prefixedKey","_removeItem","itemSize","_setItem","setItemErr","_sizeToPop","spaceItemNeed","cacheThresholdSpace","_isCacheFull","_findValidKeys","keyInCache","_popOutItems","sizeToPop","remainedSize","cacheItemOptions","validKeys","keysToRemove","getAllKeys","BrowserStorageCache","RETRYABLE_CODES","ACCEPTED_CODES","EventsBuffer","_pause","_buffer","_sendBatch","_startLoop","bufferSize","bufferElement","eventId","updateClient","_interval","flushInterval","flushSize","batchSize","bufferSubset","_putEvents","eventMap","_bufferToMap","batchEventParams","_generateBatchEventParams","_processPutEventsSuccessResponse","_handlePutEventsFailure","metrics","endpointId","batchItem","retryableEvents","_retry","responses","eventObject","eligibleEvents","resendLimit","curVal","dispatchAnalyticsEvent","UPDATE_ENDPOINT","SESSION_STOP","BEACON_SUPPORTED","sendBeacon","AWSPinpointProvider","_endpointGenerating","_endpointUpdateInProgress","_endpointBuffer","_clientInfo","getCategory","category","getProviderName","providerName","_getEndpointId","_flushBuffer","_getCredentials","_initClients","_generateSession","_send","_putToBuffer","_sendEndpointUpdate","endpointObject","_updateEndpoint","_sessionId","_sessionStartTimestamp","stopTimestamp","_pinpointSendStopSession","_pinpointPutEvents","_generateBatchItemContext","eventParams","endpointObj","pinpointClient","_eventError","requestUrl","eventName","_endpointRequest","update_params","_resumeBuffer","failureData","_handleEndpointUpdateFailure","_handleEndpointUpdateForbidden","_retryEndpointUpdate","retryable","exponential","_bufferExists","_updateBufferClient","_initBuffer","_customizePinpointClientReq","clientContext","defaultEndpointConfig","demographicByClientInfo","modelVersion","demographicByClientContext","appTitle","appVersionName","appVersionCode","appPackageName","channelType","address","effectiveDate","demographic","userId","err_3","lists","MethodEmbed","_originalMethod","methodOverride","getInstance","PREV_URL_KEY","defaultOpts","getUrl","PageViewTracker","tracker","_tracker","_hasEnabled","_trackFunc","_pageViewTrackSPA","_pageViewTrackDefault","_isSameUrl","customAttrs","nativeMatches","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","selector","ancestor","eventType","delegateTarget","composedPath","shouldCheckSelf","parentElements","ele","selectorPrefix","EventTracker","_delegates","selector_1","evt","composed","useCapture","localName","initialEventSent","SessionTracker","_trackBeforeUnload","_envCheck","hidden","_hidden","_visibilityChange","visibilityState","_sendInitialEvent","trackers","pageView","_instance","AnalyticsClass","_disabled","_trackers","providerConfig","autoSessionRecord","getPluggable","removePluggable","startSession","_sendEvent","stopSession","providerOrAttributes","updateEndpoint","autoTrack","trackerType","endpointUpdated","authConfigured","analyticsConfigured","authEvent","storageEvent","analyticsEvent","recordAuthEvent","sendEvents","AuthContext","AuthProvider","setUser","setAuthenticated","loadingAuthState","setLoadingAuthState","userEmail","_jsx","isNum","isBool","isStr","isFn","parseClassName","isToastIdValid","toastId","canUseDom","canBeRendered","POSITION","TOP_LEFT","TOP_RIGHT","TOP_CENTER","BOTTOM_LEFT","BOTTOM_RIGHT","BOTTOM_CENTER","TYPE","WARNING","DARK","cssTransition","exit","appendPosition","_ref$appendPosition","collapse","_ref$collapse","collapseDuration","_ref$collapseDuration","preventExitTransition","nodeRef","isIn","enterClassName","exitClassName","baseClassName","animationStep","onEntered","onExited","duration","scrollHeight","minHeight","collapseToast","onEnter","onExit","React__default","eventManager","emitQueue","cancelEmit","timers","useKeeper","reducer","staleId","useToastContainer","_useReducer","_useReducer2","containerRef","toastCount","toastKey","displayedToast","isToastActive","getToast","clearWaitingQueue","removeToast","dequeueToast","appendToast","_queue$shift","toastContent","toastProps","buildToast","updateId","enableMultiContainer","isNotValid","closeToast","isNotAnUpdate","toastAutoClose","containerAutoClose","closeButton","rtl","toastClassName","bodyClassName","toastStyle","bodyStyle","pauseOnHover","pauseOnFocusLoss","draggablePercent","draggableDirection","closeOnClick","progressClassName","progressStyle","autoClose","hideProgressBar","progress","deleteToast","queueLen","freeSlot","toDequeue","removeFromCollection","onOpen","onClose","getToastToRender","toastToRender","toastList","newestOnTop","_toast","getX","getY","useToast","isRunning","_useState","setIsRunning","_useState2","setPreventExitTransition","toastRef","drag","removalDistance","canCloseOnClick","canDrag","boundingRect","syncProps","onDragStart","offsetWidth","offsetHeight","onDragTransitionEnd","_drag$boundingRect","pauseToast","playToast","onDragMove","onDragEnd","hasFocus","bindFocusEvents","eventHandlers","onMouseUp","onTouchEnd","onMouseEnter","onMouseLeave","CloseButton","ariaLabel","_ref$ariaLabel","viewBox","fillRule","ProgressBar","userStyle","controlledProgress","animationDuration","animationPlayState","defaultClassName","_cx","animationEvent","_animationEvent","Toast","_useToast","Transition","cssClasses","isProgressControlled","renderCloseButton","Bounce","ToastContainer","_useToastContainer","getClassName","containerStyle","pointerEvents","latestInstance","containerDomNode","containerConfig","generateToastId","getToastId","dispatchToast","mergeOptions","createToastByType","dark","dismiss","oldOptions","oldContent","nextOptions","containerInstance","toastError","toastSuccess","useAuth","NavBarItem","activeImg","currentItem","pageName","nettwerkImg","active","NavBar","_jsxs","community","communityActive","nettwerkActive","alt","mappingType","_Fragment","RestClient","_region","_service","_custom_header","_cancelTokenMap","ajax","urlOrApiInfo","custom_header","parsed_url","_parseUrl","libraryHeaders","initParams","isAllResponse","cancellableToken","signerServiceInfo","custom_header_obj","queryStringParameters","_request","_signed","responseDate","requestDate","patch","post","del","hasCancelToken","getCancellableToken","updateRequestToBeCancellable","cancelTokenSource","apiName","cloud_logic_array","endpoints","signerServiceInfoParams","otherParams","endpoint_region","endpoint_service","creds","endpointInfo","signed_params","RestAPIClass","_api","otherOptions","apiInfo","getEndpointInfo","responsePromise","apiConfig","RestAPI","SYMBOL_TO_STRING_TAG","getLocation","lineRegexp","printLocation","printSourceLocation","sourceLocation","firstLineColumnOffset","locationOffset","whitespace","lineIndex","lineOffset","lineNum","columnOffset","locationStr","locationLine","subLineIndex","subLineColumnNum","subLines","printPrefixedLines","subLine","existingLines","padLen","GraphQLError","originalError","_nodeLocations","_nodeLocations2","_nodeLocations3","undefinedIfEmpty","nodeLocations","_i2","_this$nodes","locations","originalExtensions","captureStackTrace","_i4","_error$nodes2","_i6","_error$locations2","printError","syntaxError","Kind","NAME","DOCUMENT","OPERATION_DEFINITION","VARIABLE_DEFINITION","SELECTION_SET","FIELD","ARGUMENT","FRAGMENT_SPREAD","INLINE_FRAGMENT","FRAGMENT_DEFINITION","VARIABLE","STRING","BOOLEAN","NULL","ENUM","LIST","OBJECT","OBJECT_FIELD","DIRECTIVE","NAMED_TYPE","LIST_TYPE","NON_NULL_TYPE","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","OBJECT_TYPE_DEFINITION","FIELD_DEFINITION","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","UNION_TYPE_DEFINITION","ENUM_TYPE_DEFINITION","ENUM_VALUE_DEFINITION","INPUT_OBJECT_TYPE_DEFINITION","DIRECTIVE_DEFINITION","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","defineInspect","classObject","nodejsCustomInspectSymbol","startToken","endToken","maybeNode","TokenKind","SOF","EOF","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","EQUALS","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","BLOCK_STRING","formatValue","seenValues","previouslySeenValues","customInspectFn","getCustomFn","customValue","formatArray","getObjectTag","formatObject","formatObjectValue","devAssert","Source","DirectiveLocation","QUERY","MUTATION","SUBSCRIPTION","SCHEMA","SCALAR","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","dedentBlockStringValue","rawString","commonIndent","_commonIndent","isFirstLine","isEmptyLine","getBlockStringIndentation","startLine","isBlank","endLine","Lexer","startOfFileToken","lastToken","lineStart","advance","_token$next","readToken","printCharCode","lexer","bodyLength","_line","_col","readComment","readBlockString","readNumber","readName","unexpectedCharacterMessage","firstCode","isFloat","readDigits","isNameStart","chunkStart","uniCharCode","invalidSequence","char2hex","parseDocument","sourceObj","isSource","_lexer","parseName","expectToken","definitions","many","parseDefinition","parseOperationDefinition","parseFragmentDefinition","parseTypeSystemDefinition","parseTypeSystemExtension","peekDescription","unexpected","variableDefinitions","directives","selectionSet","parseSelectionSet","parseOperationType","parseVariableDefinitions","parseDirectives","operationToken","optionalMany","parseVariableDefinition","variable","parseVariable","parseTypeReference","expectOptionalToken","parseValueLiteral","selections","parseSelection","parseFragment","parseField","alias","nameOrAlias","parseArguments","isConst","parseConstArgument","parseArgument","hasTypeCondition","expectOptionalKeyword","parseFragmentName","typeCondition","parseNamedType","_this$_options","expectKeyword","experimentalFragmentVariables","parseList","parseObject","parseStringLiteral","fields","parseObjectField","parseDirective","keywordToken","parseSchemaDefinition","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseDirectiveDefinition","parseDescription","operationTypes","parseOperationTypeDefinition","interfaces","parseImplementsInterfaces","parseFieldsDefinition","_this$_options2","allowLegacySDLImplementsInterfaces","delimitedMany","_this$_options3","allowLegacySDLEmptyFields","parseFieldDefinition","parseArgumentDefs","parseInputValueDef","parseUnionMemberTypes","parseEnumValuesDefinition","parseEnumValueDefinition","parseInputFieldsDefinition","parseSchemaExtension","parseScalarTypeExtension","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionTypeExtension","parseEnumTypeExtension","parseInputObjectTypeExtension","repeatable","parseDirectiveLocations","parseDirectiveLocation","_this$_options4","noLocation","getTokenKindDesc","getTokenDesc","atToken","openKind","parseFn","closeKind","delimiterKind","isPunctuatorTokenKind","QueryDocumentKeys","OperationDefinition","VariableDefinition","Variable","SelectionSet","Field","Argument","FragmentSpread","InlineFragment","FragmentDefinition","IntValue","FloatValue","StringValue","BooleanValue","NullValue","EnumValue","ListValue","ObjectValue","ObjectField","Directive","NamedType","ListType","NonNullType","SchemaDefinition","OperationTypeDefinition","ScalarTypeDefinition","ObjectTypeDefinition","FieldDefinition","InputValueDefinition","InterfaceTypeDefinition","UnionTypeDefinition","EnumTypeDefinition","EnumValueDefinition","InputObjectTypeDefinition","DirectiveDefinition","SchemaExtension","ScalarTypeExtension","ObjectTypeExtension","InterfaceTypeExtension","UnionTypeExtension","EnumTypeExtension","InputObjectTypeExtension","BREAK","getVisitFn","visitor","isLeaving","kindVisitor","kindSpecificVisitor","specificVisitor","specificKindVisitor","print","ast","visitorKeys","inArray","edits","ancestors","newRoot","isEdited","_Object$keys2","editOffset","editKey","editValue","_visitorKeys$node$kin","visitFn","printDocASTReducer","varDefs","argsLine","indentation","preferMultipleLines","isSingleLine","hasLeadingSpace","hasTrailingQuote","printAsMultipleLines","printBlockString","_ref17","_ref18","_ref19","addDescription","_ref20","_ref21","_ref22","_ref23","_ref24","hasMultilineItems","_ref25","_ref26","_ref27","_ref28","_ref29","_ref30","_ref31","_ref32","_ref33","_ref34","_ref35","_ref36","_ref37","_ref38","maybeArray","_maybeArray$filter$jo","maybeString","isMultiline","INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER","INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER","zenObservable","CONTROL_MSG","ConnectionState","AbstractPubSubProvider","ReachabilityNavigator","networkMonitor","netInfo","online","globalObj","onLine","notifyOnline","notifyOffline","_observers","_observerOverride","MESSAGE_TYPES","SUBSCRIPTION_STATUS","SOCKET_STATUS","CONNECTION_CHANGE","KEEP_ALIVE_MISSED","keepAliveState","KEEP_ALIVE","CONNECTION_ESTABLISHED","connectionState","CONNECTION_FAILED","intendedConnectionState","CLOSING_CONNECTION","OPENING_CONNECTION","CLOSED","ONLINE","networkState","OFFLINE","ConnectionStateMonitor","_networkMonitoringSubscription","_linkedConnectionState","_linkedConnectionStateObservable","connectionStateObserver","_linkedConnectionStateObserver","enableNetworkMonitoring","Reachability","disableNetworkMonitoring","connectionStatesTranslator","toInclude","statusUpdates","newSocketStatus","ConnectedPendingNetwork","ConnectedPendingDisconnect","ConnectionDisruptedPendingNetwork","ConnectionDisrupted","ConnectedPendingKeepAlive","Connecting","Disconnected","Connected","NON_RETRYABLE_CODES","CONNECTION_STATE_CHANGE","AWS_APPSYNC_REALTIME_HEADERS","accept","DEFAULT_KEEP_ALIVE_TIMEOUT","ClientsQueue","clientFactory","cachedPromise","newPromise","topicSymbol","MqttOverWSProvider","_clientsQueue","connectionStateMonitor","_topicObservers","_clientIdObservers","connectionStateObservable","connectionStateChange","aws_pubsub_endpoint","aws_appsync_dangerously_connect_to_http_endpoint_for_testing","getTopicForValue","onDisconnect","topicsToDelete_1","clientIdObservers","observerForTopic","observerTopic","newClient","Paho","payloadString","_onMessage","isSSLEnabled","clientsQueue","targetTopics","matchedTopicObservers_1","filterArray","topicArray","mqttTopicMatch","parsedMessage_1","observersForTopic","observersForClientId","AWSAppSyncProvider","_topicClient","_topicAlias","_cleanUp","_cleanUpForTopic","topicsForClient","obs","mqttConnections","newSubscriptions","newAliases","connectionInfoForTopic","origKey","_lang","_dict","setLanguage","getByLanguage","lang_dict","putVocabulariesForLanguage","vocabularies","putVocabularies","_i18n","I18nClass","Constants","GraphQLAuthError","dispatchApiEvent","standardDomainPattern","AWSAppSyncRealTimeProvider","socketStatus","keepAliveTimeout","subscriptionObserverMap","promiseArray","getNewWebSocket","_topics","_msg","isCustomDomain","appSyncGraphqlEndpoint","subscriptionId_1","_startSubscriptionWithAWSAppSyncRealTime","subscriptionId","REALTIME_SUBSCRIPTION_INIT_ERROR","_waitForSubscriptionToBeConnected","subscriptionState","CONNECTED","_sendUnsubscriptionMessage","_removeSubscriptionObserver","authenticationType","variables","apiKey","graphql_headers","additionalHeaders","PENDING","startAckTimeoutId","dataString","_awsRealTimeHeaderBasedAuth","canonicalUri","headerObj","subscriptionMessage","GQL_START","stringToAWSRealTime","_initializeWebSocketConnection","subscriptionFailedCallback_1","subscriptionFailedCallback","subscriptionReadyCallback","_timeoutStartSubscriptionAck","awsRealTimeSocket","OPEN","READY","unsubscribeMessage","GQL_STOP","_closeSocketIfRequired","bufferedAmount","keepAliveTimeoutId","keepAliveAlertTimeoutId","tempSocket","_handleIncomingSubscriptionMessage","GQL_DATA","GQL_START_ACK","SUBSCRIPTION_ACK","GQL_CONNECTION_KEEP_ALIVE","_errorDisconnect","TIMEOUT_DISCONNECT","GQL_ERROR","FAILED","CONNECTING","headerString","headerQs","payloadQs","discoverableEndpoint","awsRealTimeUrl","_initializeRetryableHandshake","_initializeHandshake","newSocket","ackOk_1","connectionTimeoutMs","GQL_CONNECTION_ACK","CONNECTION_CLOSED","GQL_CONNECTION_ERROR","gqlInit","GQL_CONNECTION_INIT","err_4","headerHandler","API_KEY","_awsRealTimeApiKeyHeader","AWS_IAM","_awsRealTimeIAMHeader","OPENID_CONNECT","_awsRealTimeOPENIDHeader","AMAZON_COGNITO_USER_POOLS","_awsRealTimeCUPHeader","AWS_LAMBDA","_customAuthHeader","dtStr","_ensureCredentials","PubSubClass","_awsAppSyncProvider","_awsAppSyncRealTimeProvider","getProviderByName","awsAppSyncProvider","awsAppSyncRealTimeProvider","getProviders","providers","GraphQLAPIClass","_headerBasedAuth","defaultAuthenticationType","aws_appsync_authenticationType","aws_appsync_apiKey","NO_API_KEY","NO_CREDENTIALS","NO_FEDERATED_JWT","NO_CURRENT_USER","NO_AUTH_TOKEN","getGraphqlOperationType","graphql","paramQuery","authMode","authToken","userAgentSuffix","operationType","createInstanceIfNotCreated","_graphql","_graphqlSubscribe","aws_appsync_region","aws_appsync_graphqlEndpoint","customGraphqlEndpoint","graphql_endpoint","customEndpointRegion","graphql_endpoint_iam_region","GraphQLAPI","APIClass","_restApi","_graphqlApi","restAPIConfig","graphQLAPIConfig","convertDate","temp_date","useComponentVisible","initialIsVisible","isComponentVisible","setIsComponentVisible","handleClickOutside","DateSuggestionPopUp","datePages","currentPage","currentVersion","select","increment","decrement","arrowRight","setShowDatePicker","setCurrentVersion","useFetchVersions","setData","setError","isLoading","setIsLoading","requestInfo","pages","pageCount","dateCount","getPages","fetchData","setCurrentPage","getPageFromDate","namespace","isNetworkError","isRetryAllowed","SAFE_HTTP_METHODS","IDEMPOTENT_HTTP_METHODS","isRetryableError","isIdempotentRequestError","_error$config2","isNetworkOrIdempotentRequestError","retries","retryCondition","retryDelay","shouldResetTimeout","onRetry","setCurrentState","currentState","getRequestOptions","retryCount","lastRequestTime","axiosRetry","axiosInstance","requestInterceptorId","responseInterceptorId","shouldRetryOrPromise","_err","agent","httpAgent","httpsAgent","fixConfig","lastRequestDuration","isSafeRequestError","_error$config","exponentialDelay","retryNumber","delayFactor","randomSum","getSpotifyAccessToken","getArtistAlbumsEndpoint","artistId","market","getAlbumTracksEndpoint","albumId","getSeveralAlbums","albumIds","getSeveralAlbumsEndpoint","getArtistAlbums","getAlbumTracks","setArtist","artistSuggestions","setArtistSuggestions","seeMore","setSeeMore","getSearchArtistsEndpoint","searchArtists","artists","artist","onClickHandler","backgroundImage","images","placeholder","setInput","newArtist","setNewArtist","SearchSuggestion","toggle","setToggle","objectInObjectArray","objKey","objValue","arrayOfObjects","caseSensitive","sortArrayOfObjects","sortKey","ConnectionAddTargets","artistSelection","ConnectionPopUp","setDegrees","setArtistSelection","isPopUpVisible","addArtist","removeArtist","newSelection","clearArtistSelection","ConnectionArtistSelect","setSearch","versionDate","onSubmit","degreesOfFreedom","startName","ToggleOuter","InputBox","DatePicker","searchbarIcon","_dynamicSearch","setGenre","genres","useFetchGenres","dynamicSearch","filteredGenres","toLocaleLowerCase","genre","newGenre","setNewGenre","InputSearch","graphType","ConnectionSearch","CommunitySearch","NettwerkSearch","GenreSearch","ArtistGraphHeader","listView","setListView","GraphTitle","nodeLight","listLight","borderRadius","borderTopColor","getClusterColor","subcluster","Cluster","nonNettwerkAffinity","isNettwerk","pct_affinity","artistDetail","showCluster","setShowCluster","backgroundColor","followers","followerGrowth","releases","popularity","GenreItem","Checkbox","onChangeFilter","checkbox","filterType","isChecked","followersScale","onChangeFilterFollowerScale","DisplayCheckboxes","filters","selectAll","showCheckboxes","setShowCheckboxes","upArrow","downArrow","resetFilters","resetArrow","FilterFollowerRange","ArtistDetail","FilterContainer","overview","SummaryTitle","SummaryPoint","avgFollowers","totalFollowers","avgPopularity","avgReleases","mainText","toolTipText","visible","setVisible","onMouseOut","handleOnMouseOut","onMouseOver","handleOnMouseOver","getCommunitySummary","genreDict","objIndex","numberOfArtists","getArtistSummary","artistsDict","getOverviewSummary","getAverageFollowers","getAverageReleases","getTotalFollowers","getAveragePopularity","averageFollowers","averageReleases","lastReleases","averagePopularity","getClusterName","TopArtists","legend","TopArtistsListView","sortedNodes","filteredNodes","uniqueColors","cleanLegend","legendItem","nodesWithCluster","setSrc","downloadArrow","downloadArrowActive","countKey","countValue","ArtistColor","nettwerk","fontColor","countValueInArrayOfObjects","ToolTip","graphSummary","Overview","TopGenres","objectInFilter","isFilterActiveType","useGraph","setFilters","checkFilterConditions","setUnsignedArtists","setActiveArtists","useFilter","setFollowersScale","isFiltered","setIsFiltered","activeArtists","unsignedArtists","unsigned","updateFilter","newFilters","checkFilter","filterFollowers","filterGenre","currentFilters","incomingGraphData","graphDataIsLoading","useFetchGraphData","handleErrors","setGraphSummary","setArtistDetail","setFilteredNodes","setIncomingFilters","setIncomingSummary","setIncomingStartArtist","newFilter","sortedFilter","nameA","nameB","getUnsignedArtists","filterGraph","updateSummary","newNodes","newFilteredNodes","getEvents","shouldBegin","shouldEnd","keydown","unbind","Behavior","registerBehavior","behavior","behaviorOption","eventsToBind","wrapBehavior","hasBehavior","getBehavior","wildcardEvents","doEmit","getConnectedComponents","relatedEdges","minIndexId","getCentroid","centroid","defaultClusterInfo","allPropertiesWeightUniq","finalK","centroids","centroidIndexList","randomIndex","maxDistanceNodeIndex","totalDistance","avgDistance","minDistanceIndex","minDistance","centroidsEqualAvg","totalVector","avgVector","targetItem","targetItemVector","targetNodeNorm2","itemVector","itemNorm2","norm2Product","cosineSimilarity","seedNode","similarNodes","seedNodeIndex","seedNodeProperties","allCosineSimilarity","nodeProperties","cosineSimilarityValue","gSpan","Stack","maxStep","isMaxStack","iLouvain","kCore","kMeans","nodesCosineSimilarity","isBetween","getLineIntersect","p3","D0","D1","kross","invertKross","getRectIntersectByPoint","getCircleIntersectByPoint","circle","getEllipseIntersectByPoint","ellipse","applyMatrix","invertMatrix","inversedMatrix","getCircleCenterByPoints","animateCfg","getMatrix","getCanvasBBox","dx_1","dy_1","lastX_1","lastY_1","newX_1","newY_1","movedMatrix","setMatrix","scaleXY","onSegment","isPointInPolygon","isHit","dcmp","intersectBBox","box1","box2","isPolygonsIntersect","points1","points2","getBBox","xArr","yArr","parseToLines","bbox1","bbox2","lines1","lines2","isIntersect","lineIntersectPolygon","Line","getBBoxBoundLine","fractionAlongLineA","uaT","ubT","uB","itemIntersectByLine","directions","countIntersections","intersections","fractionToLine","testDistance","getPointsCenter","points_1","squareDist","pointLineSquareDist","projlenSq","px","py","dotprod","lenSq","isPointsOverlap","pointRectSquareDist","isLeft","isRight","isTop","isBottom","pointLineDistance","vec2","lerpArray","subjectColor","textColor","activeFill","nodeMainFill","comboFill","disabledFill","edgeMainStroke","edgeInactiveStroke","highlightStroke","rootContainerClassName","nodeContainerClassName","edgeContainerClassName","comboContainerClassName","delegateContainerClassName","defaultLoopPosition","textAlign","textBaseline","lineWidth","stroke","linkPoints","nodeStateStyles","shadowColor","shadowBlur","inactive","defaultEdge","lineAppendWidth","edgeStateStyles","comboLabel","refY","refX","defaultCombo","comboStateStyles","delegateStyle","lineDash","windowFontFamily","getComputedStyle","getPropertyValue","SELF_LINK_SIN","SELF_LINK_COS","leftTop","rightBottom","lx","ly","getLoopCfgs","containerMatrix","keyShape","getKeyShape","loopCfg","Global","startPoint","endPoint","halfOfHeight","halfOfWidth","rstart","rend","sinDeltaStart","cosDeltaStart","sinDeltaEnd","cosDeltaEnd","shapeType","defaultPointPadding","maxPointPadding","pointPadding","startVec","scaleRateStart","scaleRateEnd","startExtendVec","controlPoint1","endVec","endExtendVec","controlPoint2","getLabelPosition","pathShape","TAN_OFFSET","getPoint","getStartTangent","getEndTangent","offsetPoint","traverse","traverseTree","getLetterWidth","letterAspectRatio","getTextSize","truncateLabelByLength","plainCombosToTrees","addedMap","modelMap","mappedObj","mappedParent","parent_2","oriNodeModel","reconstructTree","trees","subtreeId","newParentId","subtree","brothers","comboChildsMap","foundSubTree","oldParentId","removed","found_1","newParentDepth_1","currentDepth_1","getComboBBox","comboBBox","getModel","useFixSize","childItem","findById","isVisible","childBBox","shouldRefreshEdge","refreshEdge","cloneBesidesImg","clonedObj","key1","obj2","clonedObj2_1","key2","getAnimateCfgWithCallback","animateConfig","animateCfgCallback_1","dataValidation","validated_1","nonNode","comboIds","ids","nonEdges","ModeController","modes","formatModes","currentBehaves","setMode","setBehaviors","behave","behaviors","behaves","BehaviorInstance","mergeBehaviors","modeBehaviors","filterBehaviors","getMode","manipulateBehaviors","isAdd","currentMode","updateBehavior","newCfg","behaviorSet","length_2","SPACES","PATH_COMMAND","PATH_VALUES","parsePathString","pathString","paramCounts","catmullRomToBezier","crp","ellipsePath","pathToAbsolute","pathArray","pa0","dots","mx","my","crz","l2c","q2c","_13","_23","a2c","large_arc_flag","sweep_flag","recursive","f1","f2","_120","rx2","ry2","f2old","x2old","y2old","hx","hy","newres","pathToCurve","path2","pcoms1","pcoms2","pfirst","pcom","processPath","nx","ny","fixArc","fixM","path1","seg","seg2","seglen","seg2len","p2s","parsePathArray","base3","p4","bezlen","x4","y4","Tvalues","Cvalues","xbase","ybase","comb","curveDim","tvalues","bounds","b2ac","sqrtb2ac","jlen","px2","py2","isPointInsideBBox","rectPath","r0","bezierBBox","p1x","p1y","c1x","c1y","c2x","c2y","p2x","p2y","findDotsAtSegment","t13","t12","interHelper","bez1","bez2","justCount","isBBoxIntersect","dots1","dots2","di1","dj1","intersection","x1m","y1m","x2m","y2m","intr","segment1","segment2","interPathHelper","decasteljau","recurse","middlePoints","splitSegment","segments","leftSegments","cmd","splitCurve","fillPath","sourceLen","targetLen","segmentsToFill","filled","obj1","getMinDiff","modify","fillPathByDiff","diffMatrix","sourceSegment","targetSegment","levenshteinDistance","changes","minPos","_splitPoints","former","formerEnd","_getSegmentPoints","formatPath","fromPath","toPath","GraphEvent","delegateObject","propagationStopped","fromShape","toShape","propagationPath","originalEvent","save","removeFromArray","isParent","isCanvas","isAllowCapture","EE","BrowserInfo","NodeInfo","SearchBotDeviceInfo","bot","BotInfo","ReactNativeInfo","SEARCHBOT_OS_REGEX","userAgentRules","operatingSystemRules","detect","parseUserAgent","getNodeVersion","matchUserAgent","uaMatch","matchedRule","versionParts","createVersionParts","detectOS","searchBotMatch","multiplyMatrix","multiplyVec2","MATRIX","CLONE_CFGS","RESERVED_PORPS","getFormatFromAttrs","toAttrs","fromAttrs","getFormatToAttrs","checkExistedAttrs","animations","onFrame","getDefaultAttrs","initAttrs","initAnimate","getDefaultMatrix","onCanvasChange","changeType","isGroup","setAttr","afterAttrsChange","isClipped","clip","getClip","originValue","onAttrChange","targetAttrs","isClipShape","applyTo","show","setZIndex","toFront","toBack","resetMatrix","getTotalMatrix","totalMatrix","currentMatrix","parentMatrix","applyToMatrix","invertFromMatrix","setClip","clipCfg","clipShape","Cons","getShapeBase","upperFirst","originAttrs","_cloneArrayAttr","cons","cfgName","isAnimatePaused","timeline","initTimer","pauseCallback","resumeCallback","easing","formatToAttrs","pathFormatted","addAnimator","stopAnimate","toEnd","pauseAnimate","pauseTime","_paused","_pauseTime","resumeAnimate","emitDelegation","eventObj","relativeShape","subName","emitDelegateEvent","translateX","translateY","targetX","targetY","moveTo","ratioX","ratioY","rotateAtStart","rotateAtPoint","SHAPE_MAP","INDEX","setCanvas","setTimeline","Container","_applyChildrenMarix","preTotalMatrix","addShape","ShapeBase","addGroup","groupClass","tmpCfg","TmpGroupClass","getGroupBase","getShape","ev","_findShape","preParent","_applyElementMatrix","getComparer","getFirst","getChildByIndex","getLast","getCount","contain","findAll","findByClassName","findAllByName","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","color_formatHex","formatHex","color_formatRgb","formatRgb","rgbn","Rgb","rgbConvert","rgb_formatHex","rgb_formatRgb","Hsl","hslConvert","hsl2rgb","basis","displayable","formatHsl","linear","nogamma","rgbGamma","colorRgb","rgbSpline","spline","isNumberArray","genericArray","setTime","reA","reB","one","numberArray","quadIn","quadOut","quadInOut","cubicIn","cubicOut","cubicInOut","polyIn","exponent","polyOut","polyInOut","halfPi","sinIn","sinOut","sinInOut","tpmt","expIn","expOut","expInOut","circleIn","circleOut","circleInOut","bounceIn","bounceOut","bounceInOut","overshoot","backIn","backOut","backInOut","elasticIn","amplitude","period","elasticOut","elasticInOut","EASING_MAP","IDENTITY_MATRIX","elapsed","easeFn","d3Ease","cProps","interf","PathUtil","toPathPoint","fromPathPoint","cPathPoint","interpolate","_update","Timeline","animators","d3Timer","removeAnimator","draw","isAnimating","stopAllAnimations","animator","emitTargetEvent","bubbleEvent","isOverEvent","EventController","draggingShape","dragging","currentShape","mousedownShape","mousedownPoint","_eventCallback","_triggerEvent","_onDocumentMove","pointInfo","_getPointInfo","_emitEvent","_onDocumentMouseUp","_afterDrag","_bindEvents","_clearEvents","_getEventObj","_getShape","clientPoint","getClientByEvent","getPointByEvent","leaveCanvas","preShape","cursor","_onmousedown","mousedownTimeStamp","_emitMouseoverEvents","_emitDragoverEvents","isCanvasEmit","_onmouseup","_ondragover","_onmousemove","timeWindow","isFirefox","Canvas","initContainer","initDom","initEvents","initTimeline","getElementById","createDom","setDOMSize","eventController","changeSize","getRenderer","getCursor","setCursor","layerX","layerY","getPointByClient","getClientByPoint","removeDom","clearEvents","AbstractGroup","isEntityGroup","AbstractShape","_isInBBox","clearCacheBBox","calculateBBox","canvasBBox","calculateCanvasBBox","topLeft","topRight","bottomLeft","bottomRight","shadowOffsetX","shadowOffsetY","shadowLeft","shadowRight","shadowTop","shadowBottom","isInShape","isOnlyHitBox","startArrowShape","endArrowShape","inBBox","getBBoxByArray","piMod","pointAt","pointDistance","pointToLine","tangentAngle","nearestPoint","tCallback","segNum","increaseRate","quadraticAt","onet","extrema","derivativeAt","divideQuadratic","quadraticLength","iterationCount","quadratics","xExtrema","yExtrema","interpolationAt","cubicAt","discSqrt","extremas","disc","divideCubic","c23","cubicLength","totalLength","snapLength","cubics","xAt","xRotation","yAt","xDim","xAngle","yDim","yAngle","lengthOfSegment","mergeBBox","mergeArrowBBox","offScreenCtx","getOffScreenContext","getTextHeight","lineCount","spaceingY","getLineSpaceing","assembleFont","regexTags","regexDot","constraint","isLoop","pointList","cp1","cp2","controlPointList","smooth","prevPoint","nextPoint","nextCp0","cp0","cps","hasConstraint","d0","smoothBezier","REGEX_MD","toSymmetry","needProcess","preParams","upCmd","symetricT","symetricS","vMag","vRatio","vAngle","isSamePoint","point1","point2","getArcParams","arcFlag","sweepFlag","cxp","cyp","getSegments","currentPoint","nextParams","startMovePoint","lastStartMovePointIndex","prePoint","startTangent","endTangent","arcParams","preSegment","dx1","dy1","dx2","dy2","getExtraFromSegmentWithAngle","currentAndPre","currentAndNext","preAndNext","currentAngle","xExtra","yExtra","Util","textArr","subText","measureWidth","getTextWidth","segmentsWithAngle","QuadUtil","CubicUtil","EllipseArcUtil","getPathBox","path2Segments","G6GraphEvent","canvasX","canvasY","formatPadding","intPadding","cloneEvent","isViewportChanged","ORIGIN_MATRIX","calculationItemsBBox","processParallelEdges","offsetDiff","multiEdgeType","singleEdgeType","loopEdgeType","cod","loopPosition","reverses","sourceTarget","sedge","arcEdges","curveOffset","ViewController","getViewCenter","getFormatPadding","fitCenter","maxX_1","maxY_1","transMinX","transMinY","transMaxX","transMaxY","viewCenter","groupCenter","animatedFitView","startMatrix","zoomToFit","translatedMatrix","minZoom","maxZoom","realRatio","zoomedMatrix","animationConfig","animationConfig_1","fitView","minX_2","minY_2","maxX_2","maxY_2","fitViewByRules","rules","onlyOutOfViewPort","ratioRule","minX_3","minY_3","maxX_3","maxY_3","wRatio","hRatio","endZoom","getZoom","zoomTo","focusPoint","modelCenter","getPointByCanvas","viewportMatrix","canvasPoint","getCanvasByPoint","sourceMatrix","getSource","targetMatrix","getTarget","focusItems","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","itemBBox","positionInit","looseJSONParse","safeParse","firstAttempt","objectStack","syntaxStack","isLastPair","syntaxes","syntax","nowChar","isInString","isLastTranslate","isInObject","isInArray","isWaitingValue","tempArr","parseXML","getAttributeNames","keyshape","generateTarget","lastOffset","defaultBbox","marginTop","chilrenBBox","shapeHeight","shapeWidth","marginLeft","compareTwoTarget","nowTarget","formerTarget","formerChilren","nowChilren","formerKeys","nowKeys","createNodeFromXML","compileXML","xmlDataRenderer","xmlParser","resultTarget","renderTarget","getContainer","newTarget","diffResult","delShape","targetShape","updateTarget","originAttr","getOriginStyle","getAnchorPoints","ucfirst","ShapeFactoryBase","defaultShapeType","afterDraw","baseUpdate","updateType","mergeStyle","getOptions","afterUpdate","getControlPoints","ShapeFramework","drawShape","defaultAnchorPoints","Shape","registerFactory","factoryType","factoryBase","shapeFactory","getFactory","registerNode","nodeDefinition","extendShapeType","shapeObj","autoNodeDefinition","extendShape","registerEdge","edgeDefinition","registerCombo","comboDefinition","Combo","CACHE_BBOX","CACHE_CANVAS_BBOX","ItemBase","_cfg","optimize","states","stateStyles","deepMix","drawInner","changeVisibility","getShapeCfg","setOriginStyle","restoreStates","keyShapeName","styles_1","currentStatesStyle_1","getCurrentStatesStyle","name_2","shapeAttrs","shapeStateStyle_1","getShapeStyleByName","shapeAttrs_1","keyShapeStateStyles_1","styleKey","subStyle","originStyles","keyShapeStyle","shapeName","clearCache","beforeDraw","styles_2","newModel","getStateStyle","getStates","stateName","filterStateName","newStates","isBoolean","filterStates","clearStates","originStates","setOptimize","enableOptimize","getID","isItem","hasState","updateShape","getUpdateType","oriVisible","cfgVisible","originPosition","enableCapture","END_MAP","ITEM_NAME_SUFFIX","POINT_NAME_SUFFIX","linkCenter","pointName","itemName","preItem","getLinkPoint","anchorName","getPrePoint","anchorIndex","getLinkPointByAnchor","oppositeName","getEndPoint","getControlPointsByCenter","sourcePoint","targetPoint","getEndCenter","setSource","setTarget","sourceItem","Item","CACHE_ANCHOR_POINTS","getNearestPoint","curPoint","dis","getInEdges","getOutEdges","intersectPoint","linkPoint","bbox_1","shapeCfg","pointArr","unlock","hasLocked","existX","existY","runWithBBoxAffected","bboxAffectedStyleKeys","beforeAttrs","bboxAffectedStyleBefore","afterAttrs","CACHE_SIZE","cacheSize","cacheBBox","oriX","oriY","getCombos","addCombo","removeCombo","EDGE","VEDGE","COMBO","MAPPER_SUFFIX","STATE_SUFFIX","ItemController","edgeToBeUpdateMap","throttleRefresh","throttle","edgeValues","addItem","vType","upperType","defaultModel","mapper","mappedModel_1","isComboEdge","bboxX","bboxY","updateComboSucceeds","comboGroup","comboModel_1","updateItem","mappedModel","edges_1","updateCombo","followCombo","updateComboEdges","combEdges","collapseCombo","hideItem","kids","subTree","childModel","expandCombo","edgeSet","showItem","itemModel","vitems","itemId","brothers_1","bidx","comboInTree_1","found_2","setItemState","autoPaint","priorityState","clearItemStates","refreshItem","addCombos","comboModels","comboModel","changeItemVisibility","id_1","children_1","found_3","StateController","updateState","graphStates","itemInState","updateStates","substitute","getSpline","spliePath","catmullRom2Bezier","getControlPoint","tangent","perpendicular","pointsToPolygon","pathToPoints","getClosedSpline","lastSecond","closedPath","cp1x","cp1y","cp2x","cp2y","vecScaleTo","unitNormal","nLength","vecFrom","roundedHull","polyPoints","roundedHull1","offsetVector","invOffsetVector","roundedHull2","segmentIndex","arcData","pathFragment","paddedHull","pointCount","smoothHull1","extensionVec","extension0","extension1","tangentHalfLength","controlDelta","invControlDelta","control0","control1","control3","smoothHull2","hullPoints","pNext","priorIndex","getStarPath","outerR","innerR","genConvexHull","pointMap","lower","upper","defaultOps","maxRoutingIterations","maxMarchingIterations","pixelGroupSize","edgeR0","edgeR1","nodeR0","nodeR1","morphBuffer","nodeInfluenceFactor","edgeInfluenceFactor","negativeNodeInfluenceFactor","MarchingSquares","contour","potentialArea","marched","getVal","getState","squareVal","doMarch","xPos","yPos","prevX","march","getIntersectItem","closestItem","getRoute","nonMembers","optimalNeighbor","closestNeighbour","minCost","neighbourItem","itemP","neighbourItemP","directLine","numberObstacles","pickBestNeighbor","checkedLines","linesToCheck","hasIntersection","pointExists","isPointInNonMembers","_nonMembers","_nonMembers_1","itemContour","intersections_1","testReroute","isFirst","tempMorphBuffer","virtualNode","rerouteLine","pointInside","computeRoute","finalRoute","line1","line2","mergeLine","mergeLines","genBubbleSet","members","virtualEdges","activeRegion","bboxes","bboxes_1","getActiveRregion","scaleWidth","scaleHeight","initGridCells","hull","fillPotentialArea","marchedPath","members_1","isContourValid","memberInfluenceFactor","nonMemberInfluenceFactor","pos2GridIx","gridIx","gridIx2Pos","nodeInfA","edgeInfA","getAffectedRegion","thresholdR","addItemInfluence","influenceFactor","startX","endX","endY","tempX","tempY","distanceSq","minDistanceSq","mdr","addEdgeInfluence","wrapNormal","topIntersect","leftIntersect","bottomIntersect","rightIntersect","cornerPos","totalArea","calcHalfArea","intersect1","intersect2","Hull","setPadding","setType","calcPath","bubbleCfg","addMember","updateData","addNonMember","removeMember","removeNonMember","updateStyle","nodeItem","shapePoints","shapeBBox","AbstractGraph","sortCombos","debounce","comboSorted","depthMap","dataDepthMap","edgeItem","sourceDepth","targetDepth","animating","enabledStack","undoStack","redoStack","initCanvas","viewController","modeController","itemController","stateController","initLayoutController","initEventController","initGroups","initPlugins","edgeGroup","nodeGroup","delegateGroup","renderer","plugins","fitViewPadding","groupByTypes","itemMap","tooltips","optimizeThreshold","getGroup","getMinZoom","setMinZoom","getMaxZoom","setMaxZoom","nodeFn","comboFn","findAllByState","additionalFilter","addBehaviors","removeBehaviors","currentZoom","targetZoom","finalRatio","failed","aniMatrix_1","initialRatio_1","targetRatio_1","toRatio","focusItem","isAnimate","curAniamteCfg","paint","getGraphCenterPoint","getViewPortCenterPoint","pushStack","setAutoPaint","auto","deletedModel","updateComboTree","newComboTrees","innerAddItem","singleDataValidation","itemMap_1","foundParent_1","newCombo","parentCombo","itemMap_2","foundParent_2","foundNode_1","cloneNode","sortCombo","currentComboSorted","addedModel","addItems","returnItems","returnItem","unupdatedModel","stackEnabled","afterModel","clearStack","layoutController","diffItems","changeData","propsData","removeHulls","localRefresh","combosData","comboItems","getLayoutType","positionsAnimate","createCombo","childrenIds","comboConfig","shouldStack","childrenParentCache","childId","childType","childrenIdsSet","pulledComboTreesById","parentTreeNode","parentItem","newChildrenParent","elementId","cItem","uncombo","comboItem","treeToBeUncombo","edgeIds","childrenParentCache_1","childNewParent_1","updateCombos","uItem","itemSubTree_1","valid_1","beforeData","afterData","vedge","getComboChildren","referComboModel","toNodes","refreshPositions","updatedNodes","updateItems","sourceModel","targetModel","getCurrentMode","avoidEmit","updateLayout","alignPoint","toPoint_1","forceTypes","layoutType","bboxPoint","oriLayoutCfg","layoutCfg","isLayoutTypeSame","gpuEnabled","updateLayoutCfg","changeLayout","destroyLayout","layoutMethods","relayout","cNodesCombos","addedVEdgeMap","isVEdge","otherEndIsSource","otherEnd","otherEndModel","otherEndPId","otherEndCId","otherEndParentId","otherEndId","vEdgeInfo","edgeInfo","sourceId","selfEnd","selfEndModel","selfEndPId","selfEndCId","selfEndParentId","selfEndId","vedgeId","collapseExpandCombo","parentModel","getNodeDegree","nodeDegrees","getUndoStack","getRedoStack","getStackData","stackType","stackData","currentAdjMatrix","getAdjacentMatrix","getShortestPathMatrix","currentShourtestPathMatrix","createHull","hullMap","getHulls","getHullById","hullId","removeHull","hullInstance","hulls","CLS_SHAPE_SUFFIX","CLS_LABEL_SUFFIX","ARROWS","SHAPE_DEFAULT_ATTRS","SHAPES_DEFAULT_ATTRS","startArrow","endArrow","CLS_LABEL_BG_SUFFIX","shapeBase","labelCfg","descriptionCfg","getCustomConfig","drawLabel","labelStyle","getLabelStyle","labelRelated","labelBBox","labelMatrix","rotateCenter","drawLabelBg","labelBgClassname","defaultLabelCfg","getLabelBgStyleByPosition","getLabelStyleByPosition","calculateStyle","defaultStyle","getShapeStyle","updateShapeStyle","updateLabel","shapeStyle","subShape","labelClassName_1","labelBgClassname_1","labelBg","cfgStyle","rotateMatrix","calculateBgStyle","newLabel","shapeStateStyle","itemStateStyle","keptAttrs","enableStatesStyle","originStyle_1","keyShapeName_1","keyShapeStyles_1","filtetDisableStatesStyle","subShape_1","subShapeStyles_1","value_1","value_2","value_3","enableStyle","originstyles","keyShapeSetted","originKey","value_4","modelStateStyle","singleNode","labelPosition","getSize","labelMaxLength","backgroundStyle","backgroundWidth","backgroundHeight","updateLinkPoints","currentLinkPoints","defaultLinkPoints","markLeft","markRight","markTop","markBottom","markFill","markStroke","borderWidth","markSize","isAnchorPoint","name_3","name_4","hasIcon","updateIcon","icon","iconShape","iconConfig","name_5","labelShape","singleNodeDef","CLS_SHAPE","singleEdge","labelAutoRotate","strokeStyle","getPathPoints","currentAttr","previousStyle","routeCfg","lineWdith","pointPercent","autoRotate","offsetStyle","_getTextAlign","revertAlign","singleEdgeDef","arcPoint","midPoint","edgeAngle","curvePosition","minCurveOffset","yDist","xDist","singleCombo","collapsedSubstituteIcon","updateCollapsedIcon","subsitututeIconConfig","collapsedIconShape","iconShapeExist","sizeAttr","singleComboDef","itemCacheSize","shapeMap","drawClip","rectX","rectY","shapeClassName","triangle","vee","diamond","triangleRect","tWidth","tLength","rWidth","rLength","gap","rectBegin","expand","upTriangle","downTriangle","defaultSubjectColors","isForce","BaseUtil","GraphicUtil","MathUtil","ColorUtil","LayoutUtil","LayoutController","initLayout","getLayoutCfgType","preHasPipies","currentHasPipes","refreshLayout","isDefaultAnimateLayout","forceAnimate","disableTriggerLayout","otherCfgs","destoryLayoutMethods","destroyedLayoutTypes","layoutMethod","setDataFromGraph","nodeItems","edgeItems","comboLength","initPositions","currentCfg","relayoutPromise","execLayoutMethod","onAllLayoutEnd","filterLayoutData","nodesFilter","edegsFilter","fNodes","edgesFilter","nodesMap_1","graphGroupNodes","groupNodes","layoutAnimate","moveToZero","nodesToInit","initWithPreset","horiNum","horiGap","vertiGap","beginX","beginY","allHavePos","BaseGlobal","inBox","regexLG","regexRG","regexPR","regexColorStop","addStop","steps","gradient","itemArr","addColorStop","parseStyle","gradientStr","tanTheta","tanTheta2","createLinearGradient","parseLineGradient","createRadialGradient","parseRadialGradient","patternStr","createPattern","Image","crossOrigin","parsePattern","CanvasPattern","_addDefaultArrow","isStart","arrowShape","Path","isArrowShape","_addCustomizedArrow","arrowAttrs","arrowFill","arrowStroke","arrowLineWidth","restAttrs","getShortenOffset","addStartArrow","addEndArrow","SHAPE_ATTRS_MAP","applyAttrsToContext","setLineDash","globalAlpha","drawChildren","skipDraw","checkRefresh","refreshElements","setChildrenRefresh","checkChildrenRefresh","hasChanged","checkElementRefresh","clearChanged","cacheCanvasBBox","isInView","drawPath","arcParamsCache","beginPath","ArrowUtil","lineTo","quadraticCurveTo","bezierCurveTo","scaleX","scaleY","arc","closePath","refreshElement","_cacheCanvasBBox","getRefreshRegion","region1","region2","cacheBox","validCache","validBBox","Group","_applyClip","_afterDraw","viewRange","getViewRange","allowDraw","getHitLineWidth","getBBoxMethod","bboxMethod","halfLineWidth","isFill","isStroke","getCanvasViewBox","strokeAndFill","afterDrawPath","isInStrokeOrPath","Circle","absDistance","ellipseDistance","squareX","squareY","Ellipse","halfLineWith","dom","ImageShape","_setImage","_afterLoading","image_1","swidth","sheight","drawImage","inLine","LineUtil","setArrow","startArrowDistance","endArrowDistance","getTotalLength","Symbols","square","diffY","Marker","_resetParamsCache","_getR","_getPath","path2Absolute","isPointInPath","isInPolygon","hasArc","extractPolygons","polygons","polylines","isPointInStroke","inArc","isInPolygons","_setPathArr","extractResutl","_calculateCurve","_setTcache","subt","tCache","curve","nextSeg","segmentT","segmentL","segmentN","tempLength","inPolyline","isClose","Polygon","PolyLine","_resetCache","PolylineUtil","Rect","inRectWithRadius","inRect","parseRadius","Text","_assembleFont","_setText","_getSpaceingY","_drawTextArr","subY","fillText","strokeText","_drawText","getRefXY","preTest","curShape","getPixelRatio","devicePixelRatio","_clearFrame","clearRect","_getRefreshRegion","viewRegion","minXArr","minYArr","maxXArr","maxYArr","getMergedRegion","mergeView","drawFrame","clearAnimationFrame","_startDraw","_drawAll","_drawRegion","AbstractCanvas","SHAPE_TO_TAGS","marker","polyline","polygon","SVG_ATTR_MAP","fillStyle","lineCap","lineJoin","lineDashOffset","miterLimit","class","preserveAspectRatio","createSVGElement","sortDom","sorter","childList","fragment","createDocumentFragment","setTransform","addClip","parentChildren","clipPathEl","defsEl","targetIndex","siblings","currentIndex","targetNext","canFill","canStroke","shadow","_setColor","addGradient","addPattern","blur","addShadow","setShadow","elementFromPoint","isEqualNode","Dom","toDataURL","ImageData","putImageData","addArrow","getDefaultArrow","triangleDown","_assembleMarker","symbolsFactory","_formatPath","getPointAtLength","Polyline","completed","pathRelatedAttrs","_assembleRect","BASELINE_MAP","alphabetic","BASELINE_MAP_FOR_FIREFOX","ANCHOR_MAP","_setFont","baseline","textLen_1","arr_1","stops","Gradient","ATTR_MAP","shadowOpacity","SHADOW_DIMENSION","Shadow","_parseShadow","Arrow","_setDefaultPath","_setMarker","Clip","shapeEl","Pattern","Defs","defaultArrow","arrow","autoDraw","trimLeft","trimRight","tinycolor","names","matchers","hsva","hex8","parseIntFromHex","convertHexToDecimal","hex6","hex4","hex3","stringInputToObject","isValidCSSUnit","bound01","rgbToRgb","convertToPercentage","hsvToRgb","hue2rgb","hslToRgb","boundAlpha","inputToRGB","_originalInput","_roundA","_format","_gradientType","gradientType","_ok","rgbToHsl","rgbToHsv","rgbToHex","allow3Char","pad2","rgbaToArgbHex","convertDecimalToHex","toHsl","clamp01","greyscale","brighten","toRgb","spin","complement","polyad","splitcomplement","analogous","slices","monochromatic","toHsv","modification","getBrightness","getOriginalInput","getFormat","getAlpha","getLuminance","RsRGB","GsRGB","BsRGB","setAlpha","toHsvString","toHslString","toHexString","toHex8","allow4Char","rgbaToHex","toHex8String","toRgbString","toPercentageRgb","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex8String","secondHex8String","formatSet","formattedString","hasAlpha","_applyModification","_applyCombination","triad","tetrad","fromRatio","newColor","rgb1","rgb2","readability","isReadable","wcag2","wcag2Parms","parms","validateWCAG2Parms","mostReadable","baseColor","colorList","includeFallbackColors","bestColor","bestScore","burntsienna","isOnePointZero","processPercent","isPercentage","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","darkColorMap","getHue","light","getSaturation","saturation","pColor","_hsv","_colorString","theme","presetPrimaryColors","volcano","geekblue","presetPalettes","presetDarkPalettes","primary","mixColor","backColor","frontColor","frontAlpha","getColorsWithSubjectColor","disableColor","subjectColor005","subjectColor01","subjectColor02","subjectColor04","disableColor002","disableColor005","disableColor01","disableColor02","disableColor03","paletteFromSubject","subjectHex","subjectIdx","deeperSubject","mainStroke","mainFill","activeStroke","inactiveStroke","inactiveFill","selectedStroke","selectedFill","highlightFill","disableStroke","disableFill","edgeActiveStroke","edgeSelectedStroke","edgeHighlightStroke","edgeDisableStroke","comboMainStroke","comboMainFill","comboActiveStroke","comboActiveFill","comboInactiveStroke","comboInactiveFill","comboSelectedStroke","comboSelectedFill","comboHighlightStroke","comboHighlightFill","comboDisableStroke","comboDisableFill","getColorsWithDefaultTheme","subjectColor03","subjectColor06","subjectColor08","disableColor025","disableColor04","disableColor05","getColorsWithDarkTheme","getColorSetsBySubjectColors","subjectColors","sets","sColor","colorSet","textWaterMarkerConfig","compatible","imageWaterMarkerConfig","waterMarkerImage","extendEvents","mousedown","canvasHandler","originHandler","wheelHandler","resetHandler","getItemRoot","onCanvasEvents","itemShape","onExtendEvents","onWheelEvent","emitCustomEvent","resetStatus","AbstractEvent","buildTextureDataWithOneEdgeAttr","radialLayout","rScale","radScale","avgRad","radDiff","gpuDetector","CanvasRenderingContext2D","webgl","WebGLRenderingContext","workers","Worker","fileapi","FileList","getWebGLErrorMessage","addGetWebGLMessage","GpuUtil","layoutData","Hierarchy","oRegisterLayout","workerScirptURL","LayoutWorker","workerScriptURL","layoutWorker","WebWorker","isLayoutMessage","layoutMethod_1","LayoutClass","handleLayoutMessage","mockRaf","mockCaf","reqId","helper","GPU_LAYOUT_NAMES","LAYOUT_PIPES_ADJUST_NAMES","workerData","getWorker","stopWorker","requestId2","reslove","onTick_1","animate_1","isDefaultAnimateLayout_1","onTick_2","isGPU","hasGPUVersion","addLayoutOrder","isCustomLayout","updateLayoutMethod","prevHasNodes","preLayoutTypes","tweakInit","enableGPU","layoutEndFormatted","adjustPipesBox","layoutWithWorker","hasLayout","positionMap","sourcePosition","targetPosition","currentTickData","runWebworker","allData","offScreenCanvas","gpuWorkerAbility","filteredLayoutCfg","filterObject","offscreen","transferControlToOffscreen","handleWorkerMessage","eventData","updateLayoutPosition","updateGPUWorkerLayoutPosition","otherCfg","preNodes","layoutName","AbstractLayout","TABLE_TR","FRAGMENT_REG","CONTAINERS","tbody","thead","tfoot","$1","clientWidth","clientHeight","GSVGCanvas","canvasCfg","GCanvas","initPlugin","downloadImageWatermark","watermarker","watermarkStr","watermarkbase64","pat","asyncToDataUrl","widths","vCanvasEl","canvasDom","dataURL","svgDocType","svgDoc","svgData","compositeOperation","createDocumentType","createDocument","replaceChild","XMLSerializer","serializeToString","getImageData","globalCompositeOperation","fillRect","toFullDataURL","imageConfig","vContainerDOM","vHeight","vWidth","canvasOptions","quickHit","vCanvas","vGroup","downloadFullImage","wmWidth","wmHeight","dataURLToImage","initEvent","downloadImage","bstr","u8arr","blobObj_1","addPlugin","removePlugin","destroyPlugin","setImageWaterMarker","imgURL","waterMarkerConfig","setTextWaterMarker","texts","displayTexts","tooltipDOMs","parentElement","TreeGraph","layoutAnimating","getLayout","indexOfChild","innerAddChild","treeData","origin_1","childrenList","innerUpdateChild","innerRemoveChild","parentData","findDataById","updateChildren","updateChild","origin_2","ease","stopLayoutAnimate","isLayoutAnimating","modifyCSS","PluginBase","cfgs","_cfgs","getDefaultCfgs","bindEvents","_extendStatics","GRID_PNG","follow","graphContainer","gridContainer","gridContainerWidth","gridContainerHeight","viewportchange","updateGrid","isFollow","handleMenuClick","getContent","onHide","itemTypes","trigger","click","touchend","contextmenu","menu","visibility","onMenuShow","onMenuHide","menuDom","outerHTML","removeMenuEventListener","handleMenuClickWrapper","graphTop","offsetTop","graphLeft","offsetLeft","triggeredByFirstClick","MiniMap","handleUpdateCanvas","updateCanvas","viewportClassName","hideEdge","beforepaint","beforeanimate","afteranimate","disableRefresh","enableRefresh","disableOneRefresh","initViewport","containerDOM","isFireFox","dragstartevent","setDragImage","dragListener","dragendListener","dragendevent","updateViewport","totaldx","totaldy","graphCanvasEl","graphWidth","scrollWidth","graphHeight","updateGraphShapes","clonedGroup","graphGroup","updateVisible","updateKeyShapes","updateOneEdgeKeyShape","updateOneNodeKeyShape","comboGroup_1","updateOneComboKeyShape","clearDestroyedShapes","mappedItem","cKeyShape","updateDelegateShapes","updateOneNodeDelegateShape","comboGroup_2","graphBBox","graphZoom","getViewport","getEucliDis","projectPointToEdge","Bundling","edgeBundles","edgePoints","divRate","cycles","iterRate","bundleThreshold","bundling","isTicking","nodeIdMap","divideEdges","getEdgeBundles","getEdgeForces","updateBundling","divisionLength_1","getEdgeLength","currentDivisonLength_1","newEdgePoints_1","ep","oriDivisionLength","edgePoint","iSource","iTarget","jSource","jTarget","getBundleScore","getAngleScore","getScaleScore","getPositionScore","getVisibilityScore","dotProduct","getDotProduct","vij","getEdgeVisibility","vji","pMid","iMid","eidx","kp","edgePointForces","spring","getSpringForce","electrostatic","getElectrostaticForce","pidx","edgeBundle","resForce","getSimulation","lensDelegateStyle","Fisheye","showLabel","minD","scaleRBy","scaleDBy","showDPercent","mousemove","createDelegate","lensDelegate","magnify","scaleDByWheel","scaleRByWheel","mousePos","maxR","minR","scaleRByDrag","dragPrePos","newD","lensCenter","scaleDByDrag","restoreCache","cachedMagnifiedModels","cachedOriginPositions","molecularParam","mCenter","delegateCenterDiff","updateDelegate","dist2","magnifiedDist","shapes","shapeLength","cacheLength","ori","textLength","updateParams","dPercentText","textY","ToolBar","zoomSensitivity","toolBar","toolBarDOM","getEventPath","handleDefaultOperator","bindUndoRedo","undoDom","undoDomIcon","redoDom","redoDomIcon","undoStackLen","redoStackLen","currentData","afterCombos","createdCombo","targetCombo_1","redo","data_2","beforeCombos","targertCombo","zoomOut","ratioOut","zoomIn","ratioIn","realZoom","autoZoom","Tooltip","fixToNode","afterremoveitem","hideTooltip","showTooltip","onMouseMove","clearContainer","methodCache","registerTickMethod","Scale","isCategory","isLinear","isContinuous","isIdentity","ticks","__cfg__","initCfg","getTicks","getText","tickValue","getConfig","setDomain","calculateTicks","tickMethod","getTickMethod","rangeMin","calcPercent","calcValue","Category","buildIndexMap","translateIndexMap","scaledValue","domainRange","twoDigitsOptional","twoDigits","word","literal","shorten","sLen","monthUpdate","arrName","i18n","lowerCaseArr","origObj","args_1","dayNames","monthNamesShort","defaultI18n","dayNamesShort","amPm","DoFn","dayOfMonth","globalI18n","setGlobalDateI18n","regexEscape","pad","formatFlags","dateObj","getDate","DD","getDay","ddd","dddd","getMonth","MM","MMM","MMMM","YY","YYYY","getHours","HH","mm","SS","SSS","ZZ","getTimezoneOffset","monthParse","emptyDigits","emptyWord","timezoneOffset","parseFlags","globalMasks","mediumDate","fullDate","isoDate","isoDateTime","shortTime","mediumTime","longTime","setGlobalDateMasks","masks","literals","$0","combinedI18nSettings","dateStr","dateInfo","millisecond","isPm","parseInfo","newFormat","specifiedFields","requiredFields","requiredField","dateTZ","validateFields","FORMAT_METHOD","timeFormat","fecha1","fecha","toTimeStamp","SECOND","MINUTE","HOUR","DAY","MONTH","YEAR","intervals","getTickInterval","tickCount","_lo","_hi","mid","TimeCat","tickIndex","Continuous","getScalePercent","firstTick","lastTick","minLimit","maxLimit","getRange","nice","getInvertPercent","Linear","calBase","getLogPositiveMin","positiveMin","Log","appendPercent","Pow","Time","numberValue","minConfig","maxConfig","timeStamps_1","secondMin_1","minTickInterval","Quantize","minTick","minIndexPercent","Quantile","registerClass","cls","getClass","Identity","calculateCatTicks","tickInterval","showLast","ticks_1","lastValue","e10","e5","e2","D3Linear","_domain","i0","i1","tickIncrement","d3ArrayTicks","power","LN10","snapMultiple","snapType","intervalTicks","maxTick","fixedBase","availableInterval","strictLimit","defaultMin","defaultMax","tickMin","tickMax","prettyNumber","DEFAULT_Q","simplicity","lmax","lstep","simplicityMax","density","dMin","dMax","lMin","lMax","densityMax","coverage","coverageMax","span","half","extended","onlyLoose","step_1","score","dm","cm","minStart","maxStart","i_1","lStep","quantileSorted","getYear","createYear","creatMonth","cat","catTicks","minYear","maxYear","yearInterval","monthInterval","mmMoth","dMonths","minMonth","diffMonth","mday","ddays","diffDay","dHours","diffHour","dMinus","diffMinus","minSecond","dSeconds","d3Linear","registerScale","getLinePath","pointsToPath","dataToPath","pathUtil","getSmoothLinePath","dataToRectPath","barWidth","rectPoints","rectPoint","getRectPoints","isClosed","getRectPath","linePathToAreaPath","areaPath","lineYPx","lineY","getAreaLineY","yMin","yMax","xMin","xMax","LINE_STYLE","AREA_STYLE","Trend","isArea","lineStyle","areaStyle","intervalConfig","renderLine","trendGroup","destory","DEFAULT_STYLE","highLightFill","SIMPLE_DEFAULT_STYLE","Handler","handleType","renderHandle","setX","setXY","setY","updateXY","handleGroup","verticalLine","topCircle","bottomCircle","bindTrendEvents","bindSimpleEvents","TIMELINE_START","TIMELINE_END","VALUE_CHANGE","TIMEBAR_CONFIG_CHANGE","PLAY_PAUSE_BTN","NEXT_STEP_BTN","PRE_STEP_BTN","Button","updateElement","renderMarker","initElement","buttonGroup","startMarkerGroup","startMarker","getStartMarkerPath","pauseMarkerGroup","pauseLeftMarker","pauseRightMarker","isPlay","sideLength","DEFAULT_PLAYBTN_STYLE","DEFAULT_PREBTN_STYLE","DEFAULT_NEXTBTN_STYLE","DEFAULT_SPEED_CONTROLLER_STYLE","pointer","scroller","DEFAULT_TIMETYPE_CONTROLLER_STYLE","DEFAULT_CONTROLLER_CONFIG","hideTimeTypeController","preBtnStyle","nextBtnStyle","playBtnStyle","speedControllerStyle","timeTypeControllerStyle","TOGGLE_MODEL_OFFSET","TIME_TYPE","ControllerBtn","controllerCfg","controllerGroup","speedAxisY","currentSpeed","currentType","defaultTimeType","renderPlayButton","getNextMarkerPath","getPreMarkerPath","realY","playButton","prePaddingX","prePaddingY","preR","nxtPaddingX","nxtPaddingY","nxtR","renderSpeedBtn","renderToggleTime","bindEvent","currentBBox","speedGroup","speedNum","axisY","speedText","speedPoint","getPointerPath","toggleGroup","checkedIcon","checkedText","timeRangeControllerText","timePointControllerText","currentPointerY","pointerMatrix","currentYIdx","targetYIdx","minDist_1","BACKGROUND_STYLE","SIMPLE_BACKGROUND_STYLE","FOREGROUND_STYLE","HANDLER_STYLE","TEXT_STYLE","TICK_LABEL_STYLE","TICK_LINE_STYLE","TrendTimeBar","currentHandler","offsetXRange","adjustOffsetRange","updateStartEnd","updateUI","trendCfg","foregroundStyle","handlerStyle","textStyle","minText","maxText","tickLabelStyle","tickLineStyle","tickLabelFormatter","timeBarType","renderSlider","setText","minTextShape","maxTextShape","trendComponent","sliderGroup","textGroup","silent","foregroundShape","handlerWidth","handlerHeight","minHandleGroup","minHandlerShape","maxHandleGroup","maxHandlerShape","tickData","tickPosList","textList","lastX","textX","controllerBtnGroup","minHandleShapeGroup","maxHandleShapeGroup","changePlayStatus","adjustTickIndex","timeSelectX","offsetRange","dodgeText","minAttrs","maxAttrs","minBBox","maxBBox","startPlay","playHandler","isSync","TimeBarTooltip","parentHeight","parentWidth","backgroundDOM","arrowDOM","arrowWidth","arrowHeight","DEFAULT_SELECTEDTICK_STYLE","DEFAULT_UNSELECTEDTICK_STYLE","TimeBarSlice","frameCount","selectedTickStyle","unselectedTickStyle","tooltipBackgroundColor","tooltipFomatter","sliceGroup","renderSlices","realWidth","ticksAreaHeight","ticksLength","tickWidth","tickRects","startTickId","endTickId","startTickRectId","endTickRectId","tickStyle","pickRect","rectBBox","lineStartY","labelStartY","textBBox","targetRect","tickRects_1","unselectedTickStyle_1","tickRect","previousEndTickRectId","TimeBar","afterrenderListener","filterData","valueChangeListener","cacheGraphData","trend","filterEdge","filterItemTypes","containerCSS","timeBarContainer","timeBarGroup","renderTrend","play","togglePlay","timebar","defaultHeight","getValue_1","timebarInstance","draggingHandler","type_1","trendData","rangeChange","getDate_1","shouldIgnore_1","minDate_1","maxDate_1","originNodes","originEdges","currentNodeExistMap_1","currentEdgeExistMap_1","hitRange","shouldShow","endsExist","sourceVisible","targetVisible","ImageMiniMap","cWidth","cHeight","aspectRatio","graphCanvasBBox","graphCanvasBBoxMean","graphCanvasBBoxSize","expandedGraphCanvasBBox","graphMatrix","invertGraphMatrix","minXY","vpToMc","updateImgSize","imgDOM","naturalSize","nWidth","nHeight","naturalWidth","naturalHeight","getImgNaturalDimension","updateGraphImg","EdgeFilterLens","showNodeLabel","showEdgeLabel","hitNodesMap","fCenter","vShapes","hitEdges","vShape","alignLineStyle","SnapLine","itemAlignType","tolerance","horizontalLines","verticalLines","alignLines","initBoxLine","onDrag","originPoint","itemAlign","horizontalDis","verticalDis","alignCfg","clearAlignLine","getLineDisObject","horizontals","verticals","addAlignLine","refLine","refPoint","lineCenterX","lineAttrs","lineCenterY","lineAtts","ALLOW_EVENTS","Legend","flipPage","horiSep","vertiSep","getContainerPos","posIdxMap","marginValue","clearFilter","clearActiveLegend","activateLegend","shapeGroup","findLegendItemsByState","subGroup","legendStateStyles","legendInactive","legendTextInactive","legendActive","legendTextActive","itemGroup","filterFunctions","activeState","graphActiveState","inactiveState","graphInactiveState","activeNodeLegend","activeEdgeLegend","activeCount","typeFuncs","typeFunc","graphItem","processData","itemsData","getShapeSize","oriAttrs","keyShapeBBox","titleShape","titleGroup","titleGroupBBox","defaultTitleStyle","titleConfig","layoutItems","lcBBox","nodeGroupBBox","nodeGroupBeginX","nodeGroupBeginY","nodeGroupMatrix","titleGroupMatrix","edgeGroupMatrix_1","edgeGroupMatrix_2","edgeGroupMatrix","edgeGroupBBox","beginPos","nodeLegendSize","rowMaxY","cNodeGroup","keyShapeWidth","keyShapeHeight","curHeight","nw","edgeLegendSize","ew","widthDiff","movement_1","CANVAS_ANNOTATION_ID","Annotation","editable","itemHighlightState","linkHighlightStyle","cardCfg","collapseType","closeType","maxTitleLength","getDOMContent","collapseExpandDOM","contentDOM","graphCantainer","createContainer","graphContainerBBox","linkCanvas","resizeCanvas","linkGroup","defaultData","containerCfg","gLeft","gRight","gTop","graphContainerHeight","graphContainerWidth","otherStyle","containerPosition","overflow","updateLinks","resizeTimer","cBBox","newWidth","newHeight","updateOutsideCards","selfObj","cardInfoMap","graphLeftTopCanvas","graphRightBottomCanvas","graphRight","graphBottom","cardInfo","card","px2Num","newLeft","newTop","showAnnotation","toggleAnnotation","hideCards","hideCard","minWidth","propsX","propsY","propsTitle","propsContent","defaultBegin","otherCardCfg","getTitle","getContentPlaceholder","getTitlePlaceHolder","contentPlaceholder","titlePlaceholder","newCard","minHeightPx","containerBBox","containerTop","beginLeft","propsBeginRight","propsBeginTop","beginBottom","beginRight","beginTop","cardWidth","currentRow","lastCardBBox","cusor","bindListener","cardBBox","getPathItem2Card","linkStyle","updateCardPositionsInConatainer","hasPropsPosition","containerBottom","updateCardSize","onAnnotationChange","containerWidth","computeStyle","sidePadding","handleExpandCollapseCard","removeCard","iconType","onMouseEnterIcon","onMouseLeaveIcon","onClickIcon","targetClass","inputWrapper","blurEvt","unmovableClasses","draggingCard","top_1","rowItems","getElementsByClassName","sideMargin","titleWidth","marginRight","updateLink","onGraphDataChange","onGraphItemVisibilityChange","saveData","saveClosed","annotationCanvas","itemLinkPoints","clientPos","cardTop","cardLeft","cardRight","cardBottom","cardLinkPoints","startPoints","endPoints","skey","spos","ekey","epos","xdist","ydist","controlPoint","Minimap","ImageMinimap","defaultIcon","iconName","drawLinkPoints","markR","markStyle","defaultDirection","iconW","iconH","topPos","bottomPos","existLinkPoint","preRect","logoIcon","stateIcon","preRectShow","preRectStyle","drawLogoIcon","drawStateIcon","logoIconStyle","iconStyle","descriptionStyle","descriptionPaddingTop","logoIconShape","currentLogoIconAttr","preRectShape","logoW","logoOffset","stateIconShape","currentStateIconAttr","stateW","stateOffset","stateIconStyle","leftBottom","defaultInnerR","markLeftBottom","markRightBottom","FAN_NAME_PREFIX","drawFans","updateFans","donutAttrs","donutColorMap","attrNum","getDonutConfig","configs","totalValue","getDonutSize","arcR","arcBegin","beginAngle","drawFan","fanIndex","drawWhole","fanConfig","arcEnd","isBig","visitMap","fanKeys","keyShapeR","getBBoxFromPoint","filterConnectPoints","simplifyPolyline","getExpandedBBox","getExpandedBBoxPoint","anotherPoint","isHorizontalPort","getPointsFromBBox","isPointOutsideBBox","heuristicCostEstimate","_costByPoints","reconstructPath","pathPoints","pointById","cameFrom","currentId","isSegmentsIntersected","v1x","v1y","v2x","v2y","v3x","v3y","v4x","v4y","isSegmentCrossingBBox","getNeighborPoints","getPathWithBorderRadiusByPolyline","pathSegments","isBending","getBorderRadiusPoints","getPolylinePoints","sNode","tNode","sBBox","tBBox","sKeyShapeBBox","tKeyShapeBBox","sxBBox","txBBox","sPoint","tPoint","lineBBox","getBBoxFromPoints","sMixBBox","tMixBBox","connectPoints","centerPoint","getBBoxXCrossPoints","getBBoxYCrossPoints","getBBoxCrossPointsByPoint","goal","closedSet","openSet","gScore","fScore","sortedOpenSet","SortedArray","minId","tentativeGScore","pathFinder","_innerAdd","idxRange","midIdx","_clearAndGetMinId","_findFirstId","maxAllowedDirectionChange","maximumLoops","stepX","stepY","penalties","distFunc","fallbackRoute","endNode","getDirectionAngle","getAngleDiff","angle1","angle2","directionChange","estimateCost","cost","getBoxPoints","oriPoint","isInside","expandBBox","directions_1","boundLine","insterctP_1","insterctP","getDirectionChange","scaleStartPoint","directionAngle","currentCameFrom","prevDirectionAngle","scaleEndPoint","pointZero","currentX","currentY","routerCfg","obstacles","getObstacleMap","firstStep","neighborCost","costFromStart","remainLoops","curCost","endPointMap","directionPenalties","neighborGScore","defaultRouteCfg","simple","pathArray_1","polylinePoints","beginPoint","continueSameX","continueSameY","removeIdx","removeRedundantPoint","scalableRange","allowDragOnItem","expandWidth","expandHeight","event1","event2","dragstart","targetIsCanvas","nodeLen","self_1","handleDOMContextMenu","onTouchMove","zoomCanvas","optimizeZoom","oriVis","children_2","endDrag","dragbegin","updateEdge","enableDelegate","onlyChangeComboSize","comboActiveState","selectedState","enableDebounce","enableStack","validationCombo","currentShouldEnd","cachedCaptureItems","targetCombo","currentNodeId","dragNodes","beforeDragNodes_1","hidenEdge","debounceUpdate","delegateRect","stackData_1","onDropCombo","targetComboModel_1","onDropCanvas","onDropNode","newParentCombo","nodeModel","onDragEnter","onDragLeave","updateFunc","calculationGroupPosition","resetSelected","setOnTouchStart","setAllItemStates","clearOnTouchStart","clearActiveState","throttleSetAllItemStates","throttleClearActiveState","vEdges","vEdgeLength","inactiveItems","activeItems","hasSelected","vEdge","vEdgeId","rEdges","rEdgeLegnth","DEFAULT_TRIGGER","brushStyle","onSelect","onDeselect","includeEdges","includeCombos","selectedNodes","selectedCombos","brush","createBrush","updateBrush","getSelectedNodes","selectedItems","isBBoxCenterInRect","selectedIds","triggerLowerCase","codeLowerCase","selectNode","selectEdge","selectCombo","keyup","selectedItem","onCanvasClick","sensitivity","fixSelectedItems","fixAll","fixLineWidth","fixLabel","fixState","wheel","touchstart","touchmove","moveable","originScale","currentScale","onWheel","optimizeZoom_1","optimized","nodesLength_1","edgesLength_1","childrenLength","destoryed","edgeIndex","fixNodes","fixEdges","fixNodesLength","originStyle","groupMatrix","itemStyle","itemFontSize","shapeFontSize","oriFontSize","oriLineWidth","fixEdgesLength","createTooltip","formatText","onNodeClick","sourceData","traverseCombo","currentCombo","dragCombos","beforeDragItems","currentItemChildCombos","model_1","sourceBBox","centerX_1","centerY_1","width_1","calcCombos","cmodel","onDrop","endComparison","onNodeDrop","droppedCombo","getParentCombo","comboDropedOn","delegateShape","stack_1","edgesToBeUpdate","updateSingleItem","paramItem","paramEdgesMap","onComboClick","shouldDeselect","dragend","lasso","createLasso","updateLasso","getSelectedItems","getLassoPath","lassoContour","isItemIntersecPolygon","DEFAULT_KEY","ALLOW_KEYS","edgeConfig","getEdgeConfig","cancelCreating","addingEdge","updateEndPoint","currentEdge","combinedKey","functionName","functionParams","triggerKeydown","combinedKeyLowerCase","zoomKey","zoomKeys","DragCanvas","ZoomCanvas","DragNode","ActivateRelations","BrushSelect","ClickSelect","LassoSelect","EdgeTooltip","CollapseExpand","DragCombo","CollapseExpandCombo","CreateEdge","ShortcutsCall","ScrollCanvas","Algorithm","AlgorithmSync","AlgorithmAsync","Plugin","G6","expandGraph","setExpandGraph","isHovered","setIsHovered","minimize","GraphLegendPoint","filteredData","setTicking","clearNodes","_graph$getEdges","_graph$getNodes","hover","transformAntVData","ResizeObserver","highlightNeighbourNodes","_graph$getNodes2","filterEvents","Loading","ExpandGraph","GraphLegend","ArtistGraphContainer","antvData","setAntvData","onClickNodeArtist","imgUrl","SummaryContainer","SettingsContainer","APP_NAME","CommunityContainer","searchParams","GenreContainer","ConnectionContainer","endName","NettwerkContainer","ServiceWorkerClass","_logger","_serviceWorker","filePath","serviceWorker","registration","installing","waiting","_registration","_setupListeners","enablePush","publicKey","_publicKey","pushManager","getSubscription","userVisibleOnly","applicationServerKey","_urlB64ToUint8Array","base64String","rawData","outputArray","AbortIncompleteMultipartUpload","AbortMultipartUploadOutput","AbortMultipartUploadRequest","NoSuchUpload","AccelerateConfiguration","Grantee","Grant","Owner","AccessControlPolicy","AccessControlTranslation","CompleteMultipartUploadOutput","CompletedPart","CompletedMultipartUpload","CompleteMultipartUploadRequest","CopyObjectResult","CopyObjectOutput","CopyObjectRequest","ObjectNotInActiveTierError","BucketAlreadyExists","BucketAlreadyOwnedByYou","CreateBucketOutput","CreateBucketConfiguration","CreateBucketRequest","CreateMultipartUploadOutput","CreateMultipartUploadRequest","DeleteBucketRequest","DeleteBucketAnalyticsConfigurationRequest","DeleteBucketCorsRequest","DeleteBucketEncryptionRequest","DeleteBucketIntelligentTieringConfigurationRequest","DeleteBucketInventoryConfigurationRequest","DeleteBucketLifecycleRequest","DeleteBucketMetricsConfigurationRequest","DeleteBucketOwnershipControlsRequest","DeleteBucketPolicyRequest","DeleteBucketReplicationRequest","DeleteBucketTaggingRequest","DeleteBucketWebsiteRequest","DeleteObjectOutput","DeleteObjectRequest","DeletedObject","DeleteObjectsOutput","ObjectIdentifier","Delete","DeleteObjectsRequest","DeleteObjectTaggingOutput","DeleteObjectTaggingRequest","DeletePublicAccessBlockRequest","GetBucketAccelerateConfigurationOutput","GetBucketAccelerateConfigurationRequest","GetBucketAclOutput","GetBucketAclRequest","Tag","AnalyticsAndOperator","AnalyticsFilter","AnalyticsS3BucketDestination","AnalyticsExportDestination","StorageClassAnalysisDataExport","StorageClassAnalysis","AnalyticsConfiguration","GetBucketAnalyticsConfigurationOutput","GetBucketAnalyticsConfigurationRequest","CORSRule","GetBucketCorsOutput","GetBucketCorsRequest","ServerSideEncryptionByDefault","ServerSideEncryptionRule","ServerSideEncryptionConfiguration","GetBucketEncryptionOutput","GetBucketEncryptionRequest","IntelligentTieringAndOperator","IntelligentTieringFilter","Tiering","IntelligentTieringConfiguration","GetBucketIntelligentTieringConfigurationOutput","GetBucketIntelligentTieringConfigurationRequest","SSEKMS","SSES3","InventoryEncryption","InventoryS3BucketDestination","InventoryDestination","InventoryFilter","InventorySchedule","InventoryConfiguration","GetBucketInventoryConfigurationOutput","GetBucketInventoryConfigurationRequest","LifecycleExpiration","LifecycleRuleAndOperator","LifecycleRuleFilter","NoncurrentVersionExpiration","NoncurrentVersionTransition","LifecycleRule","GetBucketLifecycleConfigurationOutput","GetBucketLifecycleConfigurationRequest","GetBucketLocationOutput","GetBucketLocationRequest","TargetGrant","LoggingEnabled","GetBucketLoggingOutput","GetBucketLoggingRequest","MetricsAndOperator","MetricsFilter","MetricsConfiguration","GetBucketMetricsConfigurationOutput","GetBucketMetricsConfigurationRequest","GetBucketNotificationConfigurationRequest","FilterRule","S3KeyFilter","NotificationConfigurationFilter","LambdaFunctionConfiguration","QueueConfiguration","TopicConfiguration","NotificationConfiguration","OwnershipControlsRule","OwnershipControls","GetBucketOwnershipControlsOutput","GetBucketOwnershipControlsRequest","GetBucketPolicyOutput","GetBucketPolicyRequest","PolicyStatus","GetBucketPolicyStatusOutput","GetBucketPolicyStatusRequest","DeleteMarkerReplication","EncryptionConfiguration","ReplicationTimeValue","ReplicationTime","Destination","ExistingObjectReplication","ReplicationRuleAndOperator","ReplicationRuleFilter","ReplicaModifications","SseKmsEncryptedObjects","SourceSelectionCriteria","ReplicationRule","ReplicationConfiguration","GetBucketReplicationOutput","GetBucketReplicationRequest","GetBucketRequestPaymentOutput","GetBucketRequestPaymentRequest","GetBucketTaggingOutput","GetBucketTaggingRequest","GetBucketVersioningOutput","GetBucketVersioningRequest","ErrorDocument","IndexDocument","RedirectAllRequestsTo","Condition","RoutingRule","GetBucketWebsiteOutput","GetBucketWebsiteRequest","GetObjectOutput","GetObjectRequest","InvalidObjectState","NoSuchKey","GetObjectAclOutput","GetObjectAclRequest","ObjectLockLegalHold","GetObjectLegalHoldOutput","GetObjectLegalHoldRequest","DefaultRetention","ObjectLockRule","ObjectLockConfiguration","GetObjectLockConfigurationOutput","GetObjectLockConfigurationRequest","ObjectLockRetention","GetObjectRetentionOutput","GetObjectRetentionRequest","GetObjectTaggingOutput","GetObjectTaggingRequest","GetObjectTorrentOutput","GetObjectTorrentRequest","PublicAccessBlockConfiguration","GetPublicAccessBlockOutput","GetPublicAccessBlockRequest","HeadBucketRequest","NoSuchBucket","HeadObjectOutput","HeadObjectRequest","ListBucketAnalyticsConfigurationsOutput","ListBucketAnalyticsConfigurationsRequest","ListBucketIntelligentTieringConfigurationsOutput","ListBucketIntelligentTieringConfigurationsRequest","ListBucketInventoryConfigurationsOutput","ListBucketInventoryConfigurationsRequest","ListBucketMetricsConfigurationsOutput","ListBucketMetricsConfigurationsRequest","Bucket","ListBucketsOutput","CommonPrefix","Initiator","MultipartUpload","ListMultipartUploadsOutput","ListMultipartUploadsRequest","_Object","ListObjectsOutput","ListObjectsRequest","ListObjectsV2Output","ListObjectsV2Request","DeleteMarkerEntry","ObjectVersion","ListObjectVersionsOutput","ListObjectVersionsRequest","Part","ListPartsOutput","ListPartsRequest","PutBucketAccelerateConfigurationRequest","PutBucketAclRequest","PutBucketAnalyticsConfigurationRequest","CORSConfiguration","PutBucketCorsRequest","PutBucketEncryptionRequest","PutBucketIntelligentTieringConfigurationRequest","PutBucketInventoryConfigurationRequest","BucketLifecycleConfiguration","PutBucketLifecycleConfigurationRequest","BucketLoggingStatus","PutBucketLoggingRequest","PutBucketMetricsConfigurationRequest","PutBucketNotificationConfigurationRequest","PutBucketOwnershipControlsRequest","PutBucketPolicyRequest","PutBucketReplicationRequest","RequestPaymentConfiguration","PutBucketRequestPaymentRequest","Tagging","PutBucketTaggingRequest","VersioningConfiguration","PutBucketVersioningRequest","WebsiteConfiguration","PutBucketWebsiteRequest","PutObjectOutput","PutObjectRequest","PutObjectAclOutput","PutObjectAclRequest","PutObjectLegalHoldOutput","PutObjectLegalHoldRequest","PutObjectLockConfigurationOutput","PutObjectLockConfigurationRequest","PutObjectRetentionOutput","PutObjectRetentionRequest","PutObjectTaggingOutput","PutObjectTaggingRequest","PutPublicAccessBlockRequest","ObjectAlreadyInActiveTierError","RestoreObjectOutput","GlacierJobParameters","Encryption","SSEKMSKeyId","SSEKMSEncryptionContext","SSECustomerKey","CopySourceSSECustomerKey","Prefix","And","$unknown","Filter","KMSMasterKeyID","ApplyServerSideEncryptionByDefault","Rules","KeyId","S3BucketDestination","AnalyticsConfigurationList","InventoryConfigurationList","MetricsConfigurationList","LifecycleConfiguration","KMSKeyId","escapeAttribute","XmlNode","withName","addAttribute","addChildNode","hasChildren","xmlText","XmlText","escapeElement","deserializeAws_restXmlAbortMultipartUploadCommandError","loadRestXmlErrorCode","deserializeAws_restXmlNoSuchUploadResponse","deserializeAws_restXmlCompleteMultipartUploadCommandError","deserializeAws_restXmlCopyObjectCommandError","deserializeAws_restXmlObjectNotInActiveTierErrorResponse","deserializeAws_restXmlCreateMultipartUploadCommandError","deserializeAws_restXmlDeleteObjectCommandError","deserializeAws_restXmlGetObjectCommandError","deserializeAws_restXmlInvalidObjectStateResponse","deserializeAws_restXmlNoSuchKeyResponse","deserializeAws_restXmlListObjectsV2CommandError","deserializeAws_restXmlNoSuchBucketResponse","deserializeAws_restXmlListPartsCommandError","deserializeAws_restXmlPutObjectCommandError","deserializeAws_restXmlUploadPartCommandError","AccessTier","StorageClass","serializeAws_restXmlCompletedMultipartUpload","bodyNode","__XmlNode","Parts","serializeAws_restXmlCompletedPartList","ETag","__XmlText","PartNumber","serializeAws_restXmlCompletedPart","deserializeAws_restXmlCommonPrefixList","deserializeAws_restXmlCommonPrefix","deserializeAws_restXmlCopyObjectResult","LastModified","deserializeAws_restXmlInitiator","ID","DisplayName","deserializeAws_restXmlObjectList","Key","Size","deserializeAws_restXmlOwner","deserializeAws_restXml_Object","deserializeAws_restXmlParts","deserializeAws_restXmlPart","isSerializableHeaderValue","parsedObj","xmlParse","parsedObjToReturn","__getValueFromTextNode","DOMAIN_PATTERN","IP_ADDRESS_PATTERN","DOTS_PATTERN","DOT_PATTERN","S3_HOSTNAME_PATTERN","S3_US_EAST_1_ALTNAME_PATTERN","AWS_PARTITION_SUFFIX","getPseudoRegion","isFipsRegion","getRegionalSuffix","isEqualRegions","regionA","regionB","validateDNSHostLabel","tlsCompatible","bucketHostname","dualstackEndpoint","baseHostname","accelerateEndpoint","bucketName","isBucketNameOptions","getEndpointFromBucketName","getEndpointFromArn","clientRegion","hostnameSuffix","pathStyleEndpoint","useArnRegion","clientPartition","clientSigningRegion","validateArnEndpointOptions","resource","validateService","validatePartition","validateAccountId","validateRegion","resourceType","accesspointName","outpostId","getArnResources","endpointRegion","validateOutpostService","validateNoDualstack","validateNoFIPS","bucketEndpoint","validateS3Service","isDnsCompatibleBucketName","bucketEndpointMiddleware","replaceBucketInPath","validateArn","bucketArn","arn","parseArn","useAccelerateEndpoint","useDualstackEndpoint","forcePathStyle","modifiedSigningRegion","bucketEndpointMiddlewareOptions","getBucketEndpointPlugin","validateBucketNameMiddlewareOptions","getValidateBucketNamePlugin","unused","validateBucketNameMiddleware","useRegionalEndpointMiddlewareOptions","getUseRegionalEndpointPlugin","useRegionalEndpointMiddleware","throw200ExceptionsMiddlewareOptions","getThrow200ExceptionsPlugin","bodyBytes","bodyString","throw200ExceptionsMiddleware","ssecMiddlewareOptions","getSsecPlugin","properties_1","properties_1_1","valueView","md5","ssecMiddleware","CopyObjectCommand","ACL","CacheControl","ContentDisposition","ContentEncoding","ContentLanguage","ContentType","CopySource","CopySourceIfMatch","CopySourceIfModifiedSince","__dateToUtcString","CopySourceIfNoneMatch","CopySourceIfUnmodifiedSince","Expires","GrantFullControl","GrantRead","GrantReadACP","GrantWriteACP","MetadataDirective","TaggingDirective","ServerSideEncryption","WebsiteRedirectLocation","SSECustomerAlgorithm","SSECustomerKeyMD5","BucketKeyEnabled","CopySourceSSECustomerAlgorithm","CopySourceSSECustomerKeyMD5","RequestPayer","ObjectLockMode","ObjectLockRetainUntilDate","ObjectLockLegalHoldStatus","ExpectedBucketOwner","ExpectedSourceBucketOwner","Metadata","serializeAws_restXmlCopyObjectCommand","CopySourceVersionId","RequestCharged","VersionId","deserializeAws_restXmlCopyObjectCommand","GetObjectCommand","IfMatch","IfModifiedSince","IfNoneMatch","IfUnmodifiedSince","Range","ResponseCacheControl","ResponseContentDisposition","ResponseContentEncoding","ResponseContentLanguage","ResponseContentType","ResponseExpires","versionId","partNumber","serializeAws_restXmlGetObjectCommand","AcceptRanges","ContentLength","ContentRange","DeleteMarker","MissingMeta","PartsCount","ReplicationStatus","Restore","TagCount","deserializeAws_restXmlGetObjectCommand","DeleteObjectCommand","MFA","BypassGovernanceRetention","serializeAws_restXmlDeleteObjectCommand","deserializeAws_restXmlDeleteObjectCommand","ListObjectsV2Command","Delimiter","EncodingType","MaxKeys","ContinuationToken","FetchOwner","StartAfter","serializeAws_restXmlListObjectsV2Command","CommonPrefixes","Contents","IsTruncated","KeyCount","NextContinuationToken","__getArrayIfSingleItem","deserializeAws_restXmlListObjectsV2Command","formatUrl","createRequest","interceptMiddleware","StorageErrorStrings","AWSS3ProviderMultipartCopierErrors","AWSS3ProviderUploadErrorStrings","S3RequestPresigner","resolvedOptions","SEND_UPLOAD_PROGRESS_EVENT","SEND_DOWNLOAD_PROGRESS_EVENT","normalizeHeaders","reactNativeRequestTransformer","AxiosHttpHandler","httpOptions","axiosRequest","UPLOAD_PAUSED_MESSAGE","hasErrorResponse","SET_CONTENT_LENGTH_HEADER","UPLOADS_STORAGE_KEY","dispatchStorageEvent","Int64","fromNumber","negative","HEADER_VALUE_TYPE","HeaderMarshaller","formatHeaderValue","chunks_1","chunks_1_1","shortView","setInt16","intView","setInt32","longBytes","binView","setUint16","binBytes","utf8Bytes","strView","strBytes","tsBytes","UUID_PATTERN","uuidBytes","fromHex","nameLength","getUint8","BOOLEAN_TAG","BYTE_TAG","getInt8","SHORT_TAG","getInt16","INT_TAG","getInt32","LONG_TAG","binaryLength","getUint16","BINARY_TAG","stringLength","STRING_TAG","TIMESTAMP_TAG","UUID_TAG","EventStreamMarshaller","headerMarshaller","marshall","rawHeaders","unmarshall","PRELUDE_LENGTH","messageLength","getUint32","headerLength","expectedPreludeChecksum","PRELUDE_MEMBER_LENGTH","expectedMessageChecksum","checksummer","splitMessage","formatHeaders","eventMarshaller","EventMarshaller","utfEncoder","chunkedStream","currentMessageTotalLength","currentMessagePendingLength","currentMessage","messageLengthBuffer","allocateMessage","sourceIterator","chunkLength","currentOffset","bytesRemaining","numBytesForTotal","numBytesToWrite","getChunkedStream","unmarshalledStream","source_1","source_1_1","messageType","unmodeledError","deserializedException","getUnmarshalledStream","input_1","input_1_1","universalMarshaller","UniversalEventStreamMarshaller","bodyIterable","isReadableStream","readableStream","releaseLock","readableStreamtoIterable","serialziedIterable","ReadableStream","asyncIterable","pull","controller","iterableToReadableStream","blobReader","onChunk","fileReader","totalBytesRead","Md5","cmn","eventStreamSerdeProvider","streamHasher","MetadataEntry","S3Location","OutputLocation","FileHeaderInfo","CSVInput","JSONType","JSONInput","ParquetInput","InputSerialization","QuoteFields","CSVOutput","JSONOutput","OutputSerialization","SelectParameters","RestoreRequestType","RestoreRequest","RestoreObjectRequest","ContinuationEvent","EndEvent","Progress","ProgressEvent","RecordsEvent","Stats","StatsEvent","SelectObjectContentEventStream","SelectObjectContentOutput","RequestProgress","ScanRange","SelectObjectContentRequest","UploadPartOutput","UploadPartRequest","CopyPartResult","UploadPartCopyOutput","UploadPartCopyRequest","addExpectContinueMiddlewareOptions","getAddExpectContinuePlugin","Expect","addExpectContinueMiddleware","S3Client","resolveBucketEndpointConfig","_config_7","_config_8","eventStreamMarshaller","INVALID_CRED","getPrefix","resolvedCustomPrefix","customPrefix","resolvedIdentityId","privatePath","private","protectedPath","protected","publicPath","public","createPrefixMiddleware","clonedInput","autoAdjustClockskewMiddleware","ServerTime","autoAdjustClockskewMiddlewareOptions","prefixMiddlewareOptions","createS3Client","localTestingConfig","s3client","PutObjectCommand","ContentMD5","serializeAws_restXmlPutObjectCommand","deserializeAws_restXmlPutObjectCommand","CreateMultipartUploadCommand","uploads","serializeAws_restXmlCreateMultipartUploadCommand","AbortDate","AbortRuleId","UploadId","deserializeAws_restXmlCreateMultipartUploadCommand","S3","Records","Cont","End","Payload","AWSS3UploadTaskState","TaskEvents","UploadPartCommand","uploadId","serializeAws_restXmlUploadPartCommand","deserializeAws_restXmlUploadPartCommand","CompleteMultipartUploadCommand","serializeAws_restXmlCompleteMultipartUploadCommand","deserializeAws_restXmlCompleteMultipartUploadCommand","AbortMultipartUploadCommand","serializeAws_restXmlAbortMultipartUploadCommand","deserializeAws_restXmlAbortMultipartUploadCommand","ListPartsCommand","MaxParts","PartNumberMarker","serializeAws_restXmlListPartsCommand","NextPartNumberMarker","deserializeAws_restXmlListPartsCommand","AWSS3ProviderManagedUpload","minPartSize","queueSize","completedParts","bytesUploaded","totalBytesToUpload","_createNewS3Client","validateAndSanitizeBody","putObjectCommand","createMultiPartUpload","numberOfPartsToUpload","createParts","uploadParts","finishMultiPartUpload","bodyStart","bodyEnd","bodyPart","_lastUploadedBytes","createMultiPartUploadCommand","setupEventListener","allResults","completeUploadCommand","progressChanged","incrementalUpdate","isGenericObject","comparePartNumber","AWSS3UploadTask","s3Client","prefixPromise","partSize","queued","totalBytes","storageSync","fileId","_getFileId","_validateParams","IN_PROGRESS","_listSingleFile","listObjectRes","lastModified","_findCachedUploadParts","_listCachedUploadTasks","uploadRequests","cachedUploadFileData","lastTouched","tasks","fileMetadata","_isCached","_removeFromCache","_onPartUploadCompletion","eTag","UPLOAD_PROGRESS","job","uploadPartInput","PAUSED","_startNextPart","_isDone","_completeUpload","_verifyFileSize","UPLOAD_COMPLETE","COMPLETED","_makeUploadPartRequest","CANCELLED","nextPart","s3Request","valid","_createParts","_initCachedUploadParts","cachedParts","uploadedPartNumSet","_initMultipartUpload","_initializeUploadTask","_startUpload","_cancel","removedInProgressReq","DEFAULT_STORAGE_LEVEL","AWSS3Provider","CATEGORY","PROVIDER_NAME","startResumableUpload","addTaskInput","progressCallback","completeCallback","errorCallback","INVALID_BLOB","task","_isWithCredentials","acl","cacheControl","serverSideEncryption","srcLevel","srcIdentityId","srcKey","destLevel","destKey","NO_SRC_KEY","NO_DEST_KEY","srcPrefix","_prefix","destPrefix","finalSrcKey","finalDestKey","s3","contentDisposition","contentEncoding","contentLanguage","final_key","getObjectCommand","fileSize","resumable","tagging","uploader","accessLevel","deleteObjectCommand","_list","nextToken","listObjectsV2Command","final_path","listResult","error_5","error_6","DEFAULT_PROVIDER","_cancelTokenSourceMap","storageKeysFromConfig","storageArrayKeys","isInStorageArrayKeys","checkConfigKeysFromArray","getCancellableTokenSource","isUploadTask","prov","isCancelError","vault","old_configure","vaultConfig","MappingTitle","VerificationForm","confirmUsername","setConfirmUsername","verificationCode","setVerificationCode","SignupForm","setUsername","setEmail","setPassword","isSignedUp","setIsSignedUp","LoginForm","isLogin","HomeFooter","logo","RouteComponent","routeProps","prevPath","UnknownPage","JSONToCSVConvertor","JSONData","ReportTitle","ShowLabel","arrData","CSV","alert","getArtistTracks","albums","getAlbums","getAllArtistAlbums","fullMetaDataAlbums","album","getFullMetaDataAlbums","allTrackIds","tracks","getTracks","getAllTracks","trackIdChunks","chunkArray","trackDetailsPromises","trackIds","getSeveralTracksEndpoint","getSeveralTracks","mergeAlbumsAndTracks","flatMap","albumTracks","trackNumber","createHeading","useScheduleA","scheduleA","setScheduleA","metaData","setMetaData","copyrightData","setCopyRightData","trackList","setTrackList","trackListIsLoading","setTrackListIsLoading","albumList","setAlbumList","saveIsrcs","setSaveIsrcs","incomingData","dataIsLoading","useFetchScheduleAHandler","artistID","artistName","getTrackList","checkScheduleA","generateFiles","createScheduleA","albumIndex","release_date","localeCompare","groupTracksByAlbum","tracksWithUniqueIsrc","external_ids","isrc","rowNumber","doc","scheduleAInput","table","albumName","generateScheduleA","atLeastOneTrackSelected","refObj","Explanation","onClickComponentVisible","clsx","QandA","question","answer","solution","handoffState","isServer","isClient","handoff","isHandoffComplete","HTMLButtonElement","Open","Closed","Closing","Opening","HTMLFieldSetElement","HTMLLegendElement","previousElementSibling","None","RenderStrategy","Static","Unmount","Hidden","ourProps","theirProps","slot","defaultTag","mergeRefs","refName","_len3","_key3","fromEntries","_len4","_key4","Event","Space","Enter","Escape","Backspace","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","Home","PageUp","PageDown","ToggleDisclosure","CloseDisclosure","SetButtonId","SetPanelId","LinkPanel","UnlinkPanel","disclosureState","linkedPanel","buttonId","panelId","defaultOpen","buttonRef","panelRef","Panel","ScheduleABuilder","instructionsRef","instructionsIsComponentVisible","setInstructionsIsComponentVisible","handleIsComponentVisible","formValidation","isAllSelected","isAllSelectedOnAlbum","selectedTracks","getNumberOfTracksSelectedOnAlbum","Modal","StepHeader","ScheduleASearchArtist","newTrackList","handleSelectAll","Disclosure","total_tracks","handleSelectAllOnAlbum","album_type","_trackList$find","_trackList$find2","track_number","handleTrackChange","trackIndex","ScheduleAPopUp","readOnly","albIdx","atLeastOneTrackNotSelected","albumType","trackIdx","awsconfig","MappingRoutes","AuthRoutes","AnRRoutes","PrivateRoute","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","App","reportWebVitals"],"sourceRoot":""}